You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel结合Braintree创建客户ID及存储信用卡用于后续支付

当然可以实现!

Laravel Cashier 对 Braintree Vault 的支持其实已经内置了,你完全可以把客户的信用卡信息存在 Vault 里,之后用客户ID快速完成后续支付,不用再重复收集卡信息。我给你捋捋具体怎么操作:

  • 首次创建客户并存储支付方式
    当你用 Cashier 处理用户的首次支付(不管是一次性付款还是订阅),只要你通过 Braintree 的前端组件(比如 Drop-in UI)拿到了合法的支付令牌(payment method token),Cashier 会自动帮你在 Braintree 侧创建客户账户,把支付方式存入 Vault,同时把 Braintree 客户ID关联到你的 Laravel User 模型上。
    举个例子,处理订阅的代码大概是这样:

    $user->newSubscription('main', 'monthly')
         ->create($paymentMethodToken);
    

    这一步完成后,用户的 Braintree 客户ID就存在$user->braintreeId里了,支付方式也已经存在 Vault 中。

  • 用客户ID完成后续支付
    之后你要发起支付时,根本不需要再收集信用卡信息,直接用用户关联的支付方式就行:

    1. 一次性付款可以这样写:
      // 使用用户的默认支付方式扣款10美元(金额单位是分)
      $user->charge(1000, $user->defaultPaymentMethod());
      
    2. 如果你需要指定某个特定的支付方式(用户可能存了多张卡),可以先获取用户的所有支付方式,再选择使用:
      $paymentMethods = $user->paymentMethods();
      // 用第一个支付方式扣款
      $user->charge(1000, $paymentMethods->first());
      
    3. 要是你想直接通过 Braintree 客户ID操作底层 API,Cashier 也提供了便捷方法:
      $braintreeCustomer = $user->braintreeCustomer();
      // 这里可以调用 Braintree 原生的客户相关方法
      
  • 额外的支付方式管理
    你还可以给用户添加新的支付方式到 Vault:

    $user->addPaymentMethod($newPaymentMethodToken);
    

    或者更新默认支付方式:

    $user->updateDefaultPaymentMethod($paymentMethod);
    

⚠️ 重要提醒:一定要用 Braintree 的前端组件(比如 Drop-in、Hosted Fields)来收集支付信息,绝对不能把信用卡号直接传到你的服务器,这样才能符合 PCI 合规要求,Cashier 和 Braintree 的集成也是基于这个前提设计的。

内容的提问来源于stack exchange,提问作者Webtect

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:19:40