如何通过Stripe API识别Standard类型连接账户的入驻完成状态?
Stripe Standard连接账户入驻状态API查询实现方案
一开始找不到直接对应控制面板状态的枚举字段是正常的——Stripe针对Standard类型连接账户,本身就没有设置独立的account_status枚举字段,所有状态判断都依赖Account对象内置的固定字段组合实现,和你在控制面板看到的complete、pending、restricted状态完全一一对应。
核心字段映射逻辑
- 完全入驻完成(对应面板complete状态)
当同时满足以下三个字段条件时,代表用户已经走完全部入驻流程、通过Stripe审核,可以开放对应网站操作权限:charges_enabled值为true(具备合法收款能力)payouts_enabled值为true(具备提现到绑定银行卡的能力)details_submitted值为true(已经提交全部必填的入驻资料)
- 入驻待处理/审核中(对应面板pending状态)
符合任意一个条件即属于该状态,需要限制用户操作:details_submitted值为false,代表用户还没完成Stripe托管的入驻表单跳转,未提交必填的身份、经营信息details_submitted为true,但charges_enabled或payouts_enabled为false,代表资料已提交但还在Stripe官方审核队列中
- 账户受限(对应面板restricted状态)
查看Account对象下的requirements字段组,只要满足任意一个条件即属于该状态:disabled_reason字段存在非空值currently_due数组存在未完成的必填校验项
这种状态下Stripe已经暂停了该账户的收款、提现能力,需要引导用户补全Stripe侧要求的缺失信息。
PHP环境下的实际调用代码
// 初始化Stripe SDK客户端 \Stripe\Stripe::setApiKey('你的Stripe服务端密钥'); // 拉取对应用户关联的Standard连接账户信息 $connectedAccount = \Stripe\Account::retrieve($userAssociatedStripeAccountId); // 分支判断用户操作权限 if ( $connectedAccount->charges_enabled && $connectedAccount->payouts_enabled && $connectedAccount->details_submitted && empty($connectedAccount->requirements->currently_due) ) { // 账户入驻完成,开放网站受限操作 } elseif ( !empty($connectedAccount->requirements->disabled_reason) || !empty($connectedAccount->requirements->currently_due) ) { // 账户处于受限状态,限制操作并提示用户补全Stripe侧要求的资料 } else { // 入驻流程未完成/审核中,限制操作并引导用户跳转Stripe完成入驻流程 }
落地注意事项
- 上述判断逻辑完全适配Standard类型连接账户,无需额外调整请求参数,默认拉取的Account对象就会返回所有需要的字段
- 不建议用户每次触发操作都实时调用Stripe API查询状态,建议结合
account.updated类型的Webhook事件本地同步存储账户状态,减少接口调用延迟和配额消耗 - 注意不要直接套用Custom/Express类型账户的状态判断逻辑,三类账户的入驻校验规则存在细节差异
内容的提问来源于stack exchange,提问作者Dave Wilkins
相关产品推荐
相关产品推荐

