使用Stripe收集信用数据,接收令牌,然后开始并支付订阅费用

时间:2016-12-09 16:05:43

标签: stripe-payments credit-card subscription

我开始使用Stripe的自定义表单开发我们订阅网站的付款系统:https://stripe.com/docs/custom-form。我有开发网站工作,当有人选择订阅时,它弹出一个表单来收集信用卡数据,数据被提交给Stripe,条带发回一个令牌。

在"后续步骤"在底部,它似乎表明我可以使用此令牌来签署用户订阅。但是,subscription page并未显示在创建订阅时如何使用该令牌。从该页面看,创建订阅时,Stripe将创建发票并通过电子邮件发送给用户。

我真的很想直接在网站上处理第一笔付款,而不是在电子邮件流中丢失用户。我认为可以做到,但我无法找到一个例子。如何使用收集的信用卡中的Stripe令牌在订阅的第一个期间向用户收费?创建订阅的唯一代码是:

Stripe::Subscription.create(
  :customer => customer.id,
  :plan => "basic-monthly",
)

哪个没有传递令牌。我在哪里传递令牌?

2 个答案:

答案 0 :(得分:1)

您需要将令牌用于create a customer object,然后您可以将生成的客户对象用于create the subscription

本教程使用Stripe解释订阅流程:https://stripe.com/docs/subscriptions/quickstart

答案 1 :(得分:0)

创建订阅时,令牌可以作为source属性传递:

Stripe::Subscription.create(
  :customer => customer.id,
  :plan => "basic-monthly",
  :source => token,
)

我最终为现有客户做到了这一点。由于我再次收集他们的信用卡信息,这允许Stripe使用他们刚刚输入的任何内容。

对于新客户,请在创建客户时设置源字段。与客户一起存储的支付源最终在创建订阅时被使用。

您无法使用源令牌创建客户,也无法在订阅上使用相同的令牌。我发现Stripe认为这是重用令牌,它会引发异常。您必须在一个地方或另一个地方有条件地使用它,具体取决于客户是否是新创建的。