Rails - Stripe :: InvalidRequestError(必须提供源或客户.)

Car*_*ana 6 ruby-on-rails heroku stripe-payments

我正在构建一个应用程序(基于在线资源).您可以使用设计注册或登录.然后,您可以购买产品.或者制作自己的清单并销售产品.

我正在整合Stripe.当我创建Charge时,我在控制台中收到此错误:Stripe::InvalidRequestError (Must provide source or customer.).

以下是charge_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
Run Code Online (Sandbox Code Playgroud)

当然,我在这里查看Stripe API文档:Charge文档示例和此处:收取完整的API参考

我不知道如何处理:resourcecustomer.我在网络上的其他材料中看到有些人创造了一个客户.在其他网站上它说它已:card被弃用,所以我有点困惑.

我将离开我的项目的github存储库,并随时查看.我也试图处理转账和收款人.项目存储库

谢谢.

小智 9

正如文档中所提到的,条带期望在创建费用时提及客户或来源.所以,你要么需要

  • 从您收到的令牌创建条带客户(如果您希望将来也向该客户收费),并在创建收费时提及该客户,

    customer = Stripe::Customer.create(source: params[:stripeToken])
    
    charge = Stripe::Charge.create({
      :amount => 400,
      :currency => "usd",
      :customer => customer.id,
      :description => "Charge for test@example.com"
    })
    
    Run Code Online (Sandbox Code Playgroud)
  • 或者,如果您不想创建客户,则直接提及收到的令牌作为来源,

    Stripe::Charge.create({
      :amount => 400,
      :currency => "usd",
      :source => params[:stripeToken],
      :description => "Charge for test@example.com"
    })
    
    Run Code Online (Sandbox Code Playgroud)