Laravel Cashier - updateCard() - 指导

时间:2018-02-12 18:48:36

标签: laravel laravel-cashier stripe.js

我正在使用带有Stripe结帐的Laravel Cashier(以避免需要合规)。我无法理解如何允许客户更改其卡片详细信息。我知道收银员的语法是

$customer->updateCard($stripeToken)

但我们如何到达那里?有人能为我提供这些步骤吗?

2 个答案:

答案 0 :(得分:0)

收银员希望token to be created客户端使用stripe.js/elementscheckout。然后,将此令牌提交到您调用的服务器路由:

// grab the token from the request like this
// $stripeToken = request()->input('stripe_token');

$customer->updateCard($stripeToken);

Stripe API本身非常好用,易于使用,所以你也可以直接使用它:

\Stripe\Stripe::setApiKey("stripe_secret_test_key");

$customer = \Stripe\Customer::retrieve("cus_CFdeffeSfeefe");
$card = $customer->sources->retrieve("card_1sdafjkfsdD32f");
$card->name = "Joseph Jones";
$card->save();

答案 1 :(得分:0)

这是一个很好的起点,了解Stripe期望更新客户卡的内容。尽管这是针对vanilla PHP的,但它为您提供了一些关于什么是必需的以及幕后发生的事情的详细信息。 https://stripe.com/docs/recipes/updating-customer-cards

这进一步解释了updateCard https://github.com/laravel/cashier/blob/7.0/src/Billable.php#389

的内部工作原理

在您的情况下,您需要一个包含新卡详细信息表单的视图。视图应该实现Stripe的JS Checkout库,后者又生成条带令牌。在您的控制器中,您可以将该令牌传递给用户/客户模型实例上的updateCard方法。