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

如何在Laravel中动态获取Stripe Connect ID及处理支付客户字段问题

问题一:动态获取Stripe Connect ID

Stripe Connect ID(acct_xxx格式)是平台关联商户账户的唯一标识,动态获取需按以下步骤操作:

  • 在用户/商户数据表中新增字段(例如stripe_connect_id),用于存储商户授权后Stripe返回的Connect ID。
  • 商户通过Stripe Connect授权平台时,Stripe会返回包含stripe_user_id的响应,该值即为目标acct_xxx,需存入数据库对应字段。
  • 创建Charge时,从数据库读取对应商户的Connect ID,替换硬编码值。

修改后的控制器代码示例:

Stripe\Stripe::setApiKey(config('services.stripe.secret')); // 建议用config替代直接调用env,更安全

// 假设当前操作的商户为登录用户,从数据库读取Connect ID
$stripeConnectId = auth()->user()->stripe_connect_id;

$charge = Stripe\Charge::create(
    [
        "amount" => 100 * 100,
        "currency" => "AUD",
        "source" => $request->stripeToken,
        "description" => "This is test payment",
    ],
    ['stripe_account' => $stripeConnectId]
);
问题二:填充Stripe支付板块的客户名称

当前代码直接用source创建Charge,Stripe不会自动生成Customer记录,导致客户字段为空。解决方式是先创建Stripe Customer并传入名称,再基于该Customer创建Charge:

修改后的代码示例:

Stripe\Stripe::setApiKey(config('services.stripe.secret'));

// 1. 先创建Customer,传入客户名称等信息
$customer = Stripe\Customer::create(
    [
        'name' => $request->customer_name, // 从请求参数获取客户名称
        'source' => $request->stripeToken,
    ],
    ['stripe_account' => auth()->user()->stripe_connect_id] // 对应商户的Connect ID
);

// 2. 基于Customer ID创建Charge
$charge = Stripe\Charge::create(
    [
        "amount" => 100 * 100,
        "currency" => "AUD",
        "customer" => $customer->id, // 用Customer ID替代source参数
        "description" => "This is test payment",
    ],
    ['stripe_account' => auth()->user()->stripe_connect_id]
);

完成后,Stripe支付板块会显示该Customer的名称。若不想创建Customer,也可在Charge的description字段拼接客户名称,但仅能在描述中显示,无法填充专门的客户字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 12:05:02