2015-10-06 14 views
5

私はアプリケーションを構築しています(オンラインリソースをベースにしています)。あなたはサインアップするか、deviseでログインすることができます。その後、製品を購入することができます。または、あなた自身のリストを作って、あなたの製品を売ってください。Rails - Stripe :: InvalidRequestError(ソースまたは顧客を指定する必要があります)

私はStripeを統合しています。チャージを作成すると、コンソールにこのエラーが表示されます:Stripe::InvalidRequestError (Must provide source or customer.)

ここチャージアクションのorders_controller.rbのコードです:もちろん

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

begin 
    charge = Stripe::Charge.create(
    :amount => (@listing.price * 100).floor, 
    :currency => "usd", 
    :card => token 
    ) 
    flash[:notice] = "Thanks for ordering!" 
rescue Stripe::CardError => e 
    flash[:danger] = e.message 
end 

私はここにストライプのAPIドキュメントで見て取っている:Charge documentation example、ここに:Charge full API Reference

私は:resourceまたはcustomerの処理方法がわかりません。ウェブの他の資料では、一部の人々が顧客を作り出しているのを見ました。他のサイトでは、:cardは推奨されていないと言われていますので、少し混乱しています。

私は自分のプロジェクトのgithubリポジトリを残しておきたいと思います。私は転送や受信者にも対処しようとしています。 Project Repository

ありがとうございます。

答えて

8

docsに記載されているように、ストライプは、請求を作成する際に顧客またはソースのいずれかが言及されることを期待しています。だから、あなたは、あなたが受信したトークンから、及び電荷を作成しながら、その顧客に言及(あなたも、将来的にその顧客を充電したい場合)ストライプに顧客を作成

  • に必要どちらか

    customer = Stripe::Customer.create(source: params[:stripeToken]) 
    
    charge = Stripe::Charge.create({ 
        :amount => 400, 
        :currency => "usd", 
        :customer => customer.id, 
        :description => "Charge for [email protected]" 
    }) 
    
  • それとも、あなたが顧客を作成したくない場合は、直接ソースとして受信したトークンに言及し、

    Stripe::Charge.create({ 
        :amount => 400, 
        :currency => "usd", 
        :source => params[:stripeToken], 
        :description => "Charge for [email protected]" 
    }) 
    
+0

ありがとうございました。あなたはリジッドです。しかし、今私は別のエラーがあります: 'stripe :: invalidrequesterror(デフォルトの支払い口座を持たない受取人には転送できません)' 私はドキュメントを見ています。私のアプリのプロセスは次のとおりです: ユーザーが歌う。次に、新しい製品を作成し、この製品を作成するときに銀行口座情報を追加します。 次に、アカウントを追加して購入することができます。 –

+0

エラーを見ると、あなたはある受取人に資金を移転しているようです。お振込みに使用している口座番号は何ですか? テストアカウント番号を持つStripeドキュメントの[testing](https://stripe.com/docs/testing)セクションを確認しましたか? –

関連する問題