如何在Laravel Cashier中不使用原生create方法创建PaymentIntent?
基于Laravel Cashier创建PaymentIntent的实现方案
Cashier已经内置了Stripe客户端鉴权逻辑,无需手动调用Stripe原生SDK并传入密钥完成身份验证,你可以选择以下两种方式实现:
- 通用无绑定用户的创建方式
直接通过Cashier门面获取已完成鉴权的Stripe客户端,调用支付意图创建接口即可,Cashier会自动读取.env中配置的STRIPE_SECRET等密钥信息完成鉴权:
$paymentIntent = \Laravel\Cashier\Facades\Cashier::stripe()->paymentIntents->create([ 'amount' => 1000, // 金额单位为对应货币的最小单位,如人民币为分 'currency' => 'cny', // 其他你需要传入的PaymentIntent参数 ]);
- 绑定Billable用户的创建方式
如果你的用户模型引入了Billabletrait,可以直接在用户实例上调用封装好的创建方法,底层会自动将支付意图和用户关联:
// 快速创建支付 $paymentIntent = $user->pay(1000, [ 'currency' => 'cny', ]); // 自定义程度更高的创建方法(Cashier v12及以上版本支持) $paymentIntent = $user->createPaymentIntent(1000, [ 'payment_method_types' => ['card'], // 其他自定义参数 ]);
如果你使用的Cashier版本低于v12,建议先升级到符合你Laravel版本适配的Cashier稳定版,即可使用上述封装方法。
内容的提问来源于stack exchange,提问作者HelloThere
相关产品推荐
相关产品推荐

