我正在构建一个应用程序(基于在线资源)。您可以使用设计注册或登录。然后,您可以购买产品。或者制作自己的清单并销售产品。
我正在整合Stripe。当我创建Charge时,我在控制台中收到此错误: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
当然,我在这里查看Stripe API文档:Charge documentation example并在此处:Charge full API Reference
我不确定如何处理:resource
或customer
。我在网络上的其他材料中看到有些人创造了一个客户。在其他网站上,它说:card
已被弃用,所以我有点困惑。
我将离开我项目的github存储库,随时查看。我也试图处理转账和收款人。 Project Repository
感谢。
答案 0 :(得分:9)
如docs中所述,条带要求在创建费用时提及客户或来源。所以,你需要
从您收到的令牌创建条带客户(如果您希望将来也向该客户收费),并在创建费用时提及该客户,
customer = Stripe::Customer.create(source: params[:stripeToken])
charge = Stripe::Charge.create({
:amount => 400,
:currency => "usd",
:customer => customer.id,
:description => "Charge for test@example.com"
})
或者,如果您不想创建客户,请直接提及收到的令牌作为来源,
Stripe::Charge.create({
:amount => 400,
:currency => "usd",
:source => params[:stripeToken],
:description => "Charge for test@example.com"
})
答案 1 :(得分:0)
对于经历Stripe docs的任何人,您可能会有这样的事情(使用现有帐户)
account_links = Stripe::AccountLink.create({
account: 'acct_1032D82eZvKYlo2C',
refresh_url: 'https://example.com/reauth',
return_url: 'https://example.com/return',
type: 'account_onboarding',
})
如果是这样,只需将其更改为如下所示(即包括您在上一步中创建的实际account.id
):
account_links = Stripe::AccountLink.create({
account: account.id,
refresh_url: 'https://example.com/reauth',
return_url: 'https://example.com/return',
type: 'account_onboarding',
})