【发布时间】:2017-10-22 05:48:57
【问题描述】:
当某人当前注册服务器时,他们点击一个计划并显示一个带有条带结帐弹出窗口的弹出窗口(询问信用卡信息等)
如果有人正在更新他们的计划,我不需要显示条带结帐弹出窗口。我如何确定客户不仅存在于 Stripe 中,而且他们在 Stripe 系统中有一张信用卡,这样我就可以更新/更改他们的计划,而无需要求他们重新输入信用卡详细信息。
【问题讨论】:
标签: ruby-on-rails stripe-payments
当某人当前注册服务器时,他们点击一个计划并显示一个带有条带结帐弹出窗口的弹出窗口(询问信用卡信息等)
如果有人正在更新他们的计划,我不需要显示条带结帐弹出窗口。我如何确定客户不仅存在于 Stripe 中,而且他们在 Stripe 系统中有一张信用卡,这样我就可以更新/更改他们的计划,而无需要求他们重新输入信用卡详细信息。
【问题讨论】:
标签: ruby-on-rails stripe-payments
我建议创建一个 Stripe 客户并将 Stripe 客户 ID 存储在您的用户表中。在这里,我假设您的客户/用户是 User 模型的一部分,并在您的数据库中的 users 表中进行跟踪。
Stripe 文档有一个 recipe 用于创建 Stripe 客户。我们将在这里借鉴。
首先,您需要将Stripe gem 添加到您的 Gemfile。
接下来,您将需要运行迁移以将字符串列添加到名为 stripe_customer_id 的 users 表中。
接下来将以下内容添加到您的用户模型中:
def get_or_create_stripe_customer!(stripe_token, stripe_email = nil)
return self.stripe_customer_id if self.stripe_customer_id.present?
stripe_email = self.email if stripe_email.nil?
customer = customer = Stripe::Customer.create(
:email => stripe_email,
:source => stripe_token,
)
self.update_attribute(:stripe_customer_id, customer.id)
return customer.id
end
从处理付款的控制器中,您可以调用
current_user.get_or_create_stripe_customer! params[:stripe_token], params[:stripe_email]
这将创建一个新的 Stripe 客户或检索 Stripe 客户 ID。注意:在此代码示例中,current_user 是一个变量,代表已登录的用户。
您只需查询current_user.stripe_customer_id.present? 即可确定客户是否有信用卡存档。您还可以使用stripe_customer_id 来创建未来的费用。
Stripe Charges documentation 可以引导您了解有关创建 Stripe 客户(即保存信用卡信息存档)和使用 Stripe 客户 ID 创建新费用的更多详细信息。
【讨论】:
您可以在客户表中添加一个值为 true 或 false 的列,并且在创建客户时,它可以创建一个默认值 false。当确认客户卡已存档时,该值可以更改为 true。
【讨论】: