使用Stripe受限密钥为Express关联账户添加银行账户遇权限错误
问题描述
尝试将通过stripe.tokens.create()创建的银行账户Token作为外部账户,添加到指定的Express关联账户中。已生成包含对应权限的受限密钥,执行以下代码:
await stripe.accounts.createExternalAccount( acctId, { external_account: bTokId, } );
在Postman中收到权限错误:
{ "status": 0, "message": "This application does not have the required permissions for this endpoint on account 'acct_12345'." }
日志中同时出现oauth_not_supported错误:
rawType: 'invalid_request_error', code: 'oauth_not_supported',
已在创建测试Express账户时开启OAuth,需要解决该问题。
排查与解决方案
- 确认受限密钥权限:受限密钥必须包含
account_external_accounts_write权限,且是针对目标Express账户(acct_12345)单独生成的,不能使用平台主账户的通用受限密钥。 - 补全OAuth授权流程:若Express账户是手动在平台后台创建的,即使开启OAuth也无法绑定权限,必须通过完整的OAuth授权流程让用户关联账户,才能正常使用OAuth相关API。
- 验证银行账户Token有效性:确保
bTokId是通过stripe.tokens.create()生成的银行账户类型Token(生成时需传入bank_account参数),而非信用卡Token,且Token未过期。 - 切换API调用凭证:OAuth授权的Express账户需使用OAuth流程返回的
access_token作为API密钥,而非平台的受限密钥。示例代码如下:const stripe = require('stripe')('USER_OAUTH_ACCESS_TOKEN'); // 替换为用户授权返回的access_token await stripe.accounts.createExternalAccount( acctId, { external_account: bTokId, } ); - 检查账户状态:确认目标Express账户已完成必要的KYC验证,未完成验证的账户会限制外部账户添加操作;同时检查账户
settings.payouts配置是否允许添加银行账户。
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

