【发布时间】:2019-09-20 10:43:47
【问题描述】:
我一直在尝试使用通过订阅模型附加到用户的卡信息来实现购物车的付款方式。虽然后者工作正常,但每当我尝试为购物车创建费用时,我都会收到“必须提供来源或错误”。
这里有一些代码可以开始。如果您需要更多,请告诉我。
checkouts_controller.rb
def create
customer = Stripe::Customer.create(
source: params[:stripeToken],
email: 'paying.user@example.com',
)
charge = Stripe::Charge.create(
amount: current_cart.total,
currency: 'usd',
description: "Order ##{current_cart.id}"
)
end
来自 Stripe Post Body 的错误日志
{
"amount": "9500",
"currency": "usd",
"description": "Order #1"
}
来自响应正文
{
"error": {
"code": "parameter_missing",
"doc_url": "https://stripe.com/docs/error-codes/parameter- missing",
"message": "Must provide source or customer.",
"type": "invalid_request_error"
}
}
我使用的是标准的 4242 4242 4242 4242 卡,它通过我的订阅模式实际记录并附加到我的用户。当我去添加不同的卡时,诸如品牌、最后四位数字、到期月份和年份之类的卡信息都会出现在我的视图中。当我签入控制台时,stripe_id 也存在。
我检查了条带文档,并从https://stripe.com/docs/checkout/rails 的创建操作中复制了 sn-p,但这只会触发错误“无法向没有活动卡的客户收费”,尽管这张卡目前正在用于订阅。
那么我在哪里犯错了?
【问题讨论】:
-
嗨@Grasshopper27,您正在创建一个客户,但没有在您的收费请求中传递它。您需要在 Charge 创建请求 [0] 中将 customer.id 作为
customer参数传递。source是 Charge 创建的必需参数,除非您传入具有附加源的 Stripe Customer。 [0] stripe.com/docs/api/charges/create#create_charge-customer -
感谢您的快速响应,但现在我出现“无法向没有活动卡的客户收费”错误。这很奇怪,因为它是用于该用户订阅的同一张卡。
-
嗨@Grasshopper27,看起来您创建的客户不是使用源创建的。您应该查看 Dashboard -> Logs 以查看 /customer 创建请求的请求正文,看看是否正在传递令牌。我还想指出,这个 Rails 文档有点过时,您应该尝试更新结帐以真正简化您的集成:stripe.com/docs/payments/checkout
-
欣赏那里的两个指针,hmunoz。至少我对问题所在有了更好的了解,这比我之前能说的要多。我会做更多的挖掘,尝试一些事情,然后在早上重新开始。再次感谢。
-
@hmunoz,我能够利用结帐来解决使用源创建客户的问题。既然您的建议为我指明了正确的方向,我想为此感谢您。如果您愿意发表您的评论作为答案,我可以将其标记为正确的
标签: ruby-on-rails ruby-on-rails-5 stripe-payments