【发布时间】:2022-01-05 00:06:33
【问题描述】:
我正在开发 Ruby on Rails 中的 CheckOutSession,现在我可以使用 Checkout 流程,我正在努力识别我的用户。
因此,用户必须先通过 Devise 登录,然后才能启动到 Stripe 的结帐会话。我有这部分:
customer_email: current_user.email
在代码中。然后一旦用户支付成功,我可以从成功操作中捕获 JSON 并获取 Stripe 创建的客户 ID,并将其存储为 current_user.stripe_ip(我在这里不小心将我的虚拟应用程序中的字段 ip 命名为应该是id)
customer: current_user.stripe_ip
问题是:Stripe 只允许您将customer_email 或customer 传递给结帐会话。如果是我这边的新用户,他们在条带那边还没有Customer ID。
如何为该参数设置条件?这是我尝试过的:
def create_checkout_session
session = Stripe::Checkout::Session.create({
[if current_user.stripe_ip.nil?
customer_email: current_user.email
else
customer: current_user.stripe_ip
end],
line_items: [{
price_data: {
currency: 'usd',
product_data: {
name: 'T-shirt S Black',
},
unit_amount: 2000
},
adjustable_quantity: {
enabled: true,
maximum: 10
},
quantity: 1,
},
mode: 'payment',
# These placeholder URLs will be replaced in a following step.
success_url: "http://localhost:3000/success?session_id={CHECKOUT_SESSION_ID}",
cancel_url: "http://localhost:3000/"
})
redirect_to session.url
end
【问题讨论】:
-
嗨帕特里克。有时间请过去stackoverflow.com/help/someone-answers。注意到您问了几个问题,但没有选择任何答案作为接受。谢谢。
-
谢谢,有人在另一个线程上指出了这一点,所以我只是想出了如何做到这一点并浏览了我最近的一些。
-
没问题,感谢您浏览它们。
标签: ruby-on-rails stripe-payments