Laravel Cashier - $stripeToken从哪里来?

6

Laravel Cashier的文档相当模糊,并且缺少一些非常重要的细节,比如$stripeToken是什么以及它来自哪里?

因此,我们这样创建新的订阅:

$user->newSubscription('main', 'premium')->create($stripeToken);

这是用户第一次订阅,那么$stripeToken究竟从哪里来呢?
文档中说:
“create”方法接受Stripe信用卡/来源令牌,将开始订阅,并更新您的数据库与客户ID和其他相关的计费信息。
这是否意味着我必须手动在Stripe中创建客户对象,然后将客户ID作为$stripeToken传递?它提到了卡片详细信息,但是我该如何传递它们?格式是什么,期望得到什么返回?
如果$stripeToken是Stripe中的客户ID,则Cashier假定我们已经在Stripe中创建了客户,而我们第一次没有。
有人能解释一下吗?

如果您使用Stripe Checkout JS,它将自动向表单添加一个隐藏的输入stripeToken - thefallen
@thefallen 如果您没有使用Stripe JS呢?假设您正在使用基本的REST API驱动的结帐表单? - user3574492
2个回答

5

事实证明,stripeToken通常是由stripe.js表单在提交时生成的。

由于我正在使用API驱动的结账表单而不是标准的HTML提交表单,因此我需要使用Stripe API从提供的卡片详细信息创建令牌。

$stripeToken = Token::create(array(
                       "card" => array(
                           "number"    => $request->get('number'),
                           "exp_month" => str_before($request->get('expiry'), '/'),
                           "exp_year"  => str_after($request->get('expiry'), '/'),
                           "cvc"       => $request->get('cvc'),
                           "name"      => $request->get('name')
                       )
                   ));

然后我使用$stripeToken->id并将其传递:

$user->newSubscription('main', 'premium')->create($stripeToken->id);

你从哪里获取这个 Token (Token::create())? - Yasir Ijaz
我正在使用Braintree,但是我无法找到关于Braintree的解决方案。关于Braintree的$token信息非常有限。请问有人能够解释一下吗? - Husnain Ahmed
@YasirIjaz Token来自Stripe API命名空间。 - user3574492

0

您可以使用Stripe JS来获取stripeToken,但如果您正在使用自定义表单,则可以使用Stripe checkout方法。

使用这两种方式,您都将在JavaScript中获得stripeToken,然后必须将此令牌传递给您的REST API以进行进一步处理。


不,我没有使用 Stripe JS。我正在使用 API 驱动的结账方式,因此它不是可以使用 JS 的标准结账表单。在这种情况下,JS 库是多余的,并且可能会增加不必要的资源。请查看我的答案,了解适用于 API 驱动表单的更合适的解决方案。 - user3574492

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接