Stripe Connect:平台账户如何用自身API密钥获取关联账户的Checkout Session
解决Stripe Connect平台用平台API密钥查询关联账户Checkout Session的问题
核心原因
你创建的Checkout Session归属关联账户,因为发起请求时指定了StripeAccount参数,所以直接用平台API密钥查询会返回「No such checkout.session」——平台密钥默认只能查询自身账户下的Session,必须带上关联账户标识才能跨账户查询。
解决方案
1. 在SuccessUrl中额外传递关联账户ID
创建Checkout Session时,把关联账户的ID(格式如acct_xxxxxx)作为查询参数加入SuccessUrl模板,比如:
https://your-platform.com/success?session_id={CHECKOUT_SESSION_ID}&account_id=acct_123456
这里的acct_123456就是你创建Session时在RequestOptions里指定的关联账户ID,不需要传递密钥,仅账户ID即可。
2. 后端查询时携带关联账户ID参数
用平台API密钥发起查询请求时,在RequestOptions中再次指定StripeAccount为关联账户ID,示例代码(以Node.js为例):
const stripe = require('stripe')('平台API密钥'); // 从请求参数中获取session_id和account_id const sessionId = req.query.session_id; const connectedAccountId = req.query.account_id; // 携带关联账户ID查询Session const session = await stripe.checkout.sessions.retrieve( sessionId, { stripeAccount: connectedAccountId } ); // 后续处理:标记支付完成等逻辑
3. 安全验证
务必验证account_id的合法性,确认该账户是你平台下已关联的合法账户,避免恶意传入无效/非法账户ID导致的异常。
内容的提问来源于stack exchange,提问作者Brian
相关产品推荐
相关产品推荐

