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
相关产品推荐
相关产品推荐

