使用API​​,我如何知道客户的信用卡存档?

时间:2017-10-21 21:07:48

标签: ruby-on-rails stripe-payments

当有人正在注册服务器时,他们点击一个计划,弹出一个带有条纹结账弹出窗口的弹出窗口(要求提供信用卡信息等)

如果有人正在更新他们的计划,我不需要显示条带结帐弹出窗口。我如何确定客户不仅存在条纹,而且他们在条带系统中有信用卡,因此我可以更新/更改他们的计划,而无需要求他们重新输入他们的信用卡详细信息。

2 个答案:

答案 0 :(得分:1)

我建议创建一个Stripe Customer并将Stripe客户ID存储在users表中。在这里,我假设您的客户/用户是User模型的一部分,并在数据库的users表中进行跟踪。

Stripe文档有一个recipe用于创建Stripe客户。我们将在此处借鉴。

首先,您需要将Stripe gem添加到Gemfile中。

接下来,您需要运行迁移,将字符串列添加到名为users的{​​{1}}表中。

接下来,将以下内容添加到您的用户模型中:

stripe_customer_id

来自处理付款的控制器,您可以致电

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

这将创建一个新的Stripe客户或检索Stripe客户ID。注意:在此代码示例中,current_user.get_or_create_stripe_customer! params[:stripe_token], params[:stripe_email] 是表示登录用户的变量。

您只需查询current_user即可确定客户是否有信用卡存档。您还可以使用current_user.stripe_customer_id.present?创建未来费用。

Stripe Charges documentation可以向您介绍有关创建Stripe客户的详细信息(即保留信用卡信息)以及使用Stripe客户ID创建新费用。

答案 1 :(得分:0)

您可以在customers表中添加一个值为true或false的列,并且在创建客户时,它可以创建默认值false。当确认客户卡存档时,该值可以更改为true。