关于Garden沙箱调用Consumer API /cards端点的问题咨询
Garden沙箱调用/cards端点返回null的解决方法
一、给沙箱账户添加测试卡片
- 登录Garden沙箱后台,进入你正在测试的用户账户页面
- 找到卡片管理入口(通常在「账户」或「测试数据」菜单下)
- 选择添加测试卡片,使用沙箱支持的标准测试卡号(比如4111111111111111这类通用测试卡,无需真实卡信息)
- 提交后等待1-2分钟,让沙箱完成数据同步
二、确认配置与调用正确性
- 你配置的两个权限范围是对的,但要确认获取accessToken时,这两个scope确实被包含在内——可以用JWT解析工具解码token,查看payload里的权限列表
- 检查请求路径:确保
consumerApiPath末尾带有斜杠,或者拼接时补全users/路径(比如${consumerApiPath}users/${userId}/cards),避免路径拼接错误 - 确认
userId是沙箱中已激活的有效用户ID,不要用错误的测试ID
三、关于未掩码卡片详情
目前Garden沙箱中,未掩码卡片的获取需要额外的cardcontrols.full权限,且这个权限一般需要在正式环境中通过合规申请才能开放,沙箱测试阶段通常只提供掩码卡片的接口支持,相关细节可以在Garden的开发者后台权限说明里找到
代码优化建议(可选)
给你的代码加上错误处理,方便排查问题:
// Cards: /users/{userId}/cards async function getCards(consumerApiPath, userId, accessToken) { try { // 补全users路径,避免拼接错误 const requestUrl = `${consumerApiPath.replace(/\/$/, '')}/users/${userId}/cards`; const cardApiResponse = await fetch(requestUrl, { method: 'GET', headers: { 'Authorization': `Bearer ${accessToken}` } }); if (!cardApiResponse.ok) { throw new Error(`请求失败: ${cardApiResponse.status} - ${cardApiResponse.statusText}`); } const cardApiJson = await cardApiResponse.json(); // 返回空数组替代null,避免后续逻辑报错 return cardApiJson.cards || []; } catch (err) { console.error('获取卡片出错:', err); throw err; } }
内容的提问来源于stack exchange,提问作者Bryan Sauve
相关产品推荐
相关产品推荐

