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

Stripe创建Checkout Session时如何给关联收款账户同步添加metadata

解决方案

方法1:创建Checkout Session时直接传入参数(推荐,无需额外接口调用)

你只需要在当前的payment_intent_data.transfer_data配置块中新增metadata字段,传入你要同步的同一份数据即可,修改后的代码片段如下:

const session = await this._stripe.checkout.sessions.create({
       payment_method_types: ['card'],
       customer_email: email,
       line_items: [
          {
              price_data: {
              currency: ###,
              unit_amount_decimal: ###,
              product_data: {
                   name: ###,
                   description: ###
              }    
          },
          quantity: 1
        }
     ],
     payment_intent_data: {
         on_behalf_of: ###,
         transfer_data: {
             destination: ###,
             amount: ###,
             // 新增这一行,传入你要同步的metadata
             metadata: metadata
     },
     metadata,
     statement_descriptor: ###
  },
  mode: 'payment',
  success_url: successUrl,
  cancel_url: cancelUrl
});

这个参数会自动把metadata同步到两个位置:

  • 平台账户下对应的Transfer对象元数据
  • 关联账户下对应这笔转账收入的Payment(Charge)对象元数据,关联账户登录后台就能直接看到这些字段

方法2:事后更新关联账户的Charge记录(适合已经完成的交易)

如果你需要给已经完成的交易补加metadata,可以先拿到平台端Transfer对象的destination_payment字段值,这个值就是关联账户端对应的Charge ID,然后用Stripe的身份模拟参数stripe-account传入关联账户ID,调用Charge更新接口写入metadata即可,示例代码:

await this._stripe.charges.update(
  'ch_xxxxxx', // 这里填destination_payment对应的ID
  { metadata: metadata },
  { stripeAccount: 'acct_xxxxxx' } // 这里填目标关联账户ID
);

注意事项

  • 不要直接更新平台端的Transfer对象metadata,这个操作不会自动同步到关联账户的对应记录,必须在创建Transfer/配置transfer_data的时候就传入,或者单独调用关联账户身份的Charge更新接口
  • 关联账户的metadata和平台账户的metadata是独立存储的,后续两边更新不会互相同步

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:57:05