Stripe Connect交易描述自定义问题:用户仪表盘未显示自定义内容
解决Stripe Connect自定义收款方交易描述的问题
你遇到的问题根源在于:当使用transfer_data创建Payment Intent时,收款方(关联账户)仪表盘显示的是自动生成的**转账(Transfer)或目标付款(Destination Payment)**记录,而非你设置的原始Payment Intent描述。原始Payment Intent的描述和元数据不会自动同步到这些关联记录上。
具体解决方案
方案1:更新自动生成的Transfer描述(适用于分离收费与转账模式)
当你创建带transfer_data的Payment Intent时,Stripe会自动生成Transfer对象。你可以在创建Payment Intent时展开关联的Transfer,然后修改它的描述:
const organizerStripeAccountId = await getOrganizerStripeAccountId(eventId) if (!organizerStripeAccountId) { return res.status(404).send({ error: 'Organizer account not found', }) } // 创建Payment Intent时展开关联的Transfer const paymentIntent = await stripe.paymentIntents.create({ amount: amount * 100, currency: currency, transfer_data: { destination: organizerStripeAccountId, }, description: `Payment from ${user.email || user.name}`, metadata: { userId: user._id.toString(), eventId: eventId, userEmail: user.email, userName: user.name, }, expand: ['transfer'] // 展开Transfer对象 }) // 更新Transfer的描述,收款方仪表盘会显示这个内容 await stripe.transfers.update(paymentIntent.transfer.id, { description: `Payment from ${user.email || user.name}` }) const payment = new Payment({ eventId: eventId, userId: user._id, amount: amount, currency: currency, paymentIntentId: paymentIntent.id, status: 'pending', metadata: paymentIntent.metadata, }) await payment.save()
方案2:更新目标付款(Destination Payment)描述(若收款方看到的是py_开头的Payment Intent ID)
如果收款方仪表盘显示的是目标付款(Destination Payment)的ID(即py_开头的字符串),你需要直接更新这个关联在收款方账户下的Payment Intent:
const organizerStripeAccountId = await getOrganizerStripeAccountId(eventId) if (!organizerStripeAccountId) { return res.status(404).send({ error: 'Organizer account not found', }) } const paymentIntent = await stripe.paymentIntents.create({ amount: amount * 100, currency: currency, transfer_data: { destination: organizerStripeAccountId, }, description: `Payment from ${user.email || user.name}`, metadata: { userId: user._id.toString(), eventId: eventId, userEmail: user.email, userName: user.name, }, expand: ['transfer.destination_payment'] // 展开目标付款对象 }) // 更新收款方账户下的目标付款描述 await stripe.paymentIntents.update( paymentIntent.transfer.destination_payment, { description: `Payment from ${user.email || user.name}` }, { stripeAccount: organizerStripeAccountId } // 指定操作收款方账户 ) const payment = new Payment({ eventId: eventId, userId: user._id, amount: amount, currency: currency, paymentIntentId: paymentIntent.id, status: 'pending', metadata: paymentIntent.metadata, }) await payment.save()
补充说明
- 分离收费与转账模式下,收款方默认看到的是Transfer记录,优先用方案1;
- 若你使用的是目标收费模式(直接在收款方账户创建Payment Intent),则需要在创建时指定
stripeAccount参数,并直接设置description即可; - 元数据同样可以同步到Transfer或目标付款中,只需在更新时添加
metadata字段。
内容的提问来源于stack exchange,提问作者Kamil Wolski
相关产品推荐
相关产品推荐

