2017-07-28 90 views
1

爲了控制頁面條紋:: InvalidRequestError必須提供源或客戶

begin 
    Stripe.api_key = ENV["STRIPE_API_KEY"] 
    token = params[:stripeToken] 

     charge = Stripe::Charge.create(
     :amount => (@listing.price * 100).floor, 
     :currency => "usd", 
     :source => params[:stripeToken], 
     :destination => @seller.recipient 

    ) 
     flash[:notice] = "Thanks for ordering!" 
    rescue Stripe::CardError => e 
     flash[:danger] = e.message 
    end 

order.js.coffee

jQuery -> 
    Stripe.setPublishableKey($('meta[name="stripe-key"]').attr('content')) 
    payment.setupForm() 

payment = 
    setupForm: -> 
    $('#new_order').submit -> 
     $('input[type=submit]').attr('disabled', true) 
     Stripe.card.createToken($('#new_order'), payment.handleStripeResponse) 
     false 

    handleStripeResponse: (status, response) -> 
    if status == 200 
     $('#new_order').append($('<input type="hidden" name="stripeToken" />').val(response.id)) 
     $('#new_order')[0].submit() 
    else 
     $('#stripe_error').text(response.error.message).show() 
     $('input[type=submit]').attr('disabled', false) 

我不知道爲什麼來源=> PARAMS [:stripeToken ]當我檢查我的條紋帳戶中的日誌時不通過。該標記是否爲空?

+0

向我們顯示日誌。我懷疑'params [:stripeToken]'是'nil' – Pavan

回答

0

通常,當您收到此錯誤是因爲可發佈密鑰不在您的表單中,所以當您將表單發送到分條時,它不會識別您並且它不會將您發回的令牌。

收費客戶端的過程就是這樣。

1.-在您的網站上,您告訴用戶在窗體中鍵入他的卡片信息(本地託管或僅由條紋腳本創建)。

2.-一旦用戶提交表格。信息將通過您的可發佈密鑰提交給條帶服務器。您使用令牌從服務器收到響應。此令牌被轉發給您的控制器中的操作,並且由於已鏈接到您的帳戶,您可以創建客戶,收費或將用戶加入計劃。這是'params [:stripeToken]'。卡信息永遠不會到達您的控制器,您只會收到此令牌。

你可以做兩件事來爲你的客戶收費,第一種是創建自己的表單,第二種是將它委託給條紋腳本。

第一個更棘手,因爲條紋更新他們的API不時。它需要一些關於js和api的知識。例如Stripe v3與v2不同。允許更多的合理化,但需要更多的js知識。有關如何配置的信息和示例可在stripe elements中找到。

第二個很簡單。我建議它不要高級用戶。您可以按照鏈接using checkout and rails中的說明執行此操作。

我通常使用第二個選項,因爲它只需要5分鐘,而您將艱苦的工作委託給條帶。

相關問題