Laravel Cashier - $ stripeToken来自哪里?

时间:2018-06-13 11:20:53

标签: php laravel stripe-payments billing laravel-cashier

Laravel Cashier上的documentation非常模糊,错过了一些非常重要的细节,例如$stripeToken是什么以及它来自哪里?

因此,要创建新订阅,请执行以下操作:

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

这是用户第一次订阅,$stripeToken来自哪里?

在文档中说:

  

create方法,接受Stripe信用卡/源令牌,   将开始订阅以及使用更新您的数据库   客户ID和其他相关的结算信息。

这是否意味着我必须首先在Stripe中手动创建客户对象,然后将客户ID作为$stripeToken传递?它提到卡的详细信息,但我如何通过它们?什么是格式,我期待什么回报?

如果$stripeToken是Stripe中的客户ID,则Cashier假设我们已经在Stripe中创建了客户,而我们第一次没有这样做。

任何人都可以对此有所了解吗?

2 个答案:

答案 0 :(得分:3)

事实证明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);

答案 1 :(得分:0)

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

使用两种方式在javascript中获取stripeToken,然后您必须将此标记传递给REST API以进行进一步处理。