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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 16:13:20