【问题标题】:Using the API, how do I know a customer has a credit card on file?使用 API,我如何知道客户有信用卡在档?
【发布时间】:2017-10-22 05:48:57
【问题描述】:

当某人当前注册服务器时,他们点击一个计划并显示一个带有条带结帐弹出窗口的弹出窗口(询问信用卡信息等)

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

【问题讨论】:

    标签: ruby-on-rails stripe-payments


    【解决方案1】:

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

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

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

    接下来,您将需要运行迁移以将字符串列添加到名为 stripe_customer_idusers 表中。

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

    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 创建新费用的更多详细信息。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-11-24
        • 1970-01-01
        • 1970-01-01
        • 2016-08-08
        • 1970-01-01
        • 2010-09-11
        • 2015-03-23
        相关资源
        最近更新 更多