Laravel Cashier - updateCard() - 指导

Posted

技术标签:

【中文标题】Laravel Cashier - updateCard() - 指导【英文标题】:Laravel Cashier - updateCard() - guidance 【发布时间】:2018-07-23 00:48:57 【问题描述】:

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

$customer->updateCard($stripeToken)

但是我们如何到达那里?请问哪位大神可以提供一下步骤?

【问题讨论】:

【参考方案1】:

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

这进一步解释了updateCardhttps://github.com/laravel/cashier/blob/7.0/src/Billable.php#389的内部工作

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

【讨论】:

【参考方案2】:

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

// 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();

【讨论】:

以上是关于Laravel Cashier - updateCard() - 指导的主要内容,如果未能解决你的问题,请参考以下文章

使用产品结账时如何用 laravel + cashier 生成发票

Laravel Cashier 未定义方法meteredPrice()

Laravel Cashier - $stripeToken 来自哪里?

Laravel Cashier - updateCard() - 指导

无需订阅即可使用 Laravel Cashier 一次性付款

Laravel Cashier 新订阅 Stripe 抛出“无法确定请求哪个 URL:”错误