如何在Plaid Sandbox更新模式下限制仅选择原关联账户?
问题描述
用户开发基于Plaid的API时遇到以下问题:
- 用户关联Chase等金融机构并选择活期、储蓄两个账户后,通过
/sandbox/item/reset_login端点触发LOGIN_ITEM_REQUIREDwebhook,需要用户重新关联该item。 - 创建新链接token的代码如下:
request = LinkTokenCreateRequest( client_name=CLIENT_NAME, language=PLAID_LANGUAGE, country_codes=COUNTRY_CODES, user=LinkTokenCreateRequestUser(client_user_id=user_id), access_token=access_token, webhook=WEBHOOK_URL, update={"account_selection_enabled": False}, )
- 但在Sandbox环境打开Plaid Link时,仍显示Chase所有可用账户,无论设置
update={"account_selection_enabled": False}还是True,结果一致。
需要解决的问题:
- 如何在更新模式下限制仅显示原关联账户?
- 这是否是Sandbox环境的限制?生产环境是否会符合预期?
解决方案
核心问题:
account_selection_enabled的作用误解
这个参数仅控制用户在更新流程中是否能修改已选账户,而非控制显示哪些账户。要限制显示范围,需要配合account_filters参数。具体实现步骤
- 先调用Plaid的
/accounts/get接口,传入该item的access_token,获取当前已关联的账户列表,提取所有account_id。 - 修改LinkToken创建代码,添加
account_filters参数,指定只包含已关联的账户ID:
from plaid.model.link_token_create_request_account_filters import LinkTokenCreateRequestAccountFilters from plaid.model.link_token_create_request_depository_filter import LinkTokenCreateRequestDepositoryFilter # 实际从/accounts/get接口获取已关联账户ID列表 existing_account_ids = ["acc_123", "acc_456"] request = LinkTokenCreateRequest( client_name=CLIENT_NAME, language=PLAID_LANGUAGE, country_codes=COUNTRY_CODES, user=LinkTokenCreateRequestUser(client_user_id=user_id), access_token=access_token, webhook=WEBHOOK_URL, update={"account_selection_enabled": False}, account_filters=LinkTokenCreateRequestAccountFilters( depository=LinkTokenCreateRequestDepositoryFilter( account_ids=existing_account_ids ) ) )配置完成后,更新模式下的Plaid Link只会显示指定的已关联账户,且
account_selection_enabled=False会阻止用户添加或移除账户。- 先调用Plaid的
Sandbox与生产环境的差异
Sandbox环境为测试便利,部分模拟机构可能默认展示全部账户,但正确配置account_filters后应该能生效。若仍不生效,可切换其他Sandbox模拟机构验证。生产环境中,该配置会严格按照account_filters指定的账户ID过滤显示,完全符合预期。
内容的提问来源于stack exchange,提问作者Matias Wajnman
相关产品推荐
相关产品推荐

