Laravel Cashier上的documentation非常模糊,错过了一些非常重要的细节,例如$stripeToken
是什么以及它来自哪里?
因此,要创建新订阅,请执行以下操作:
$user->newSubscription('main', 'premium')->create($stripeToken);
这是用户第一次订阅,$stripeToken
来自哪里?
在文档中说:
create方法,接受Stripe信用卡/源令牌, 将开始订阅以及使用更新您的数据库 客户ID和其他相关的结算信息。
这是否意味着我必须首先在Stripe中手动创建客户对象,然后将客户ID作为$stripeToken
传递?它提到卡的详细信息,但我如何通过它们?什么是格式,我期待什么回报?
如果$stripeToken
是Stripe中的客户ID,则Cashier假设我们已经在Stripe中创建了客户,而我们第一次没有这样做。
任何人都可以对此有所了解吗?
答案 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以进行进一步处理。