如何识别Stripe账户ID?Stripe Connect转账报错求助
嘿,我来帮你搞定这两个Stripe相关的问题~
1. 如何识别你的Stripe账户ID以创建支付意向?
- 登录你的Stripe后台管理界面(Dashboard)
- 如果你要找自己的主账户ID:
- 点击页面右上角的账户头像,选择「设置」(Settings)
- 在「账户信息」板块里,就能看到格式为
acct_xxxxxxxxxxxxxx的「账户ID」
- 如果你要找Stripe Connect关联的子账户ID:
- 切换到左侧菜单栏的「Connect」板块
- 在「关联账户」列表里找到目标账户,点击进入详情页即可看到它的账户ID
- 重点提醒:一定要区分测试模式(Test Mode)和生产模式(Live Mode)!页面顶部有个切换开关,两个模式下的账户ID完全不同,测试时必须用测试模式的ID,上线时再换成生产模式的ID
2. 解决转账时「No such destination」错误的问题
这个错误说明Stripe找不到你指定的目标账户ID acct_1Hlb6NQn2qN1lHlc,我帮你梳理几个排查方向和解决办法:
先排查最常见的原因
- 环境不匹配:你是不是在测试模式下用了生产环境的账户ID?或者反过来?
- 打开Stripe Dashboard,确认顶部的模式开关和你代码里使用的账户ID所属环境一致
- 账户ID拼写错误:手动输入ID很容易出错,去Connect的关联账户列表里直接复制正确的ID替换掉代码里的内容
- 目标账户未关联:检查这个账户是不是真的已经和你的主账户建立了Connect关联?
- 去Connect板块的关联账户列表搜索这个ID,确认它存在且状态正常(没有被禁用或未完成入驻流程)
顺便优化你的代码逻辑
看你提供的代码,还有两个小问题需要调整:
- 没有错误捕获,导致出现
UnhandledPromiseRejectionWarning,建议加上try/catch - 转账操作和Payment Intent创建是并行执行的,按照Stripe的逻辑,最好等Payment Intent创建成功后再触发转账,同时要注意转账金额不能超过Payment Intent的金额(还要考虑手续费)
优化后的代码参考:
const clientController = { createPayementIntent: async (req, res) => { try { const amountInCents = parseFloat(req.body.amount) * 100; // 先创建支付意向 const paymentIntent = await stripe.paymentIntents.create({ amount: amountInCents, currency: "eur", metadata: { integration_check: "accept_a_payment" }, transfer_group: "ORDER_95", }); // 确认支付意向创建成功后,执行转账 await stripe.transfers.create({ amount: amountInCents, // 注意:实际转账金额可能需要扣除手续费,根据你的需求调整 currency: "eur", destination: "acct_1Hlb6NQn2qN1lHlc", // 替换为正确的账户ID transfer_group: "ORDER_95", }); res.status(200).json({ paymentIntent }); } catch (error) { // 捕获并返回错误信息,方便调试 res.status(400).json({ error: error.message }); } } };
内容的提问来源于stack exchange,提问作者Wendy Montagnon
相关产品推荐
相关产品推荐

