Skip to Content

权限范围

Scope 决定应用能请求哪些平台能力。申请客户端时选择的是能力上限,用户授权时只能在这个上限内授权。

用户身份 Scope

Scope能力是否需要商户
openid获取成对主体标识和 ID Token否
profile读取用户名与昵称,不包含邮箱否
email读取邮箱地址与邮箱验证状态否

邮箱接入需申请并获批 email,授权请求使用 openid email 或 openid profile email。现有客户端不会自动增加权限;管理员可在 准入审核 → 应用审核 → 调整权限 补批。权限变更会撤销旧用户授权和令牌,用户需重新同意。

请求 openid 时必须同时提供 nonce。只做“使用三狗云服务登录”的应用通常申请 openid profile 即可。

商户与交易 Scope

Scope能力可用主体
merchant.profile.read读取绑定商户公开资料用户授权、Client Credentials
products.write创建与更新绑定商户的外部 API 商品仅 Client Credentials
inventory.write更新绑定商户的虚拟库存仅 Client Credentials
merchant_payments.create按金额创建本商户通用收款单、补发失败通知仅 Client Credentials
merchant_payments.read查询本商户收款单、可用渠道与通知投递记录仅 Client Credentials
products.read读取绑定商户已启用商品用户授权、Client Credentials
orders.create代表已授权用户在绑定商户下单仅用户授权
orders.read读取属于授权用户与绑定商户的订单仅用户授权
payments.create为可访问订单发起支付仅用户授权
payments.read查询可访问订单的支付状态仅用户授权

强制商户绑定

只要申请中包含任何商户或交易 Scope,平台会忽略客户端提交的商户编号,并自动绑定申请人自己已审核通过且处于启用状态的商户。

因此:

  • 没有商户也可以申请统一登录客户端;
  • 没有启用中的商户时不能申请店铺 Scope;
  • 客户端不能填写其他人的商户编号跨店访问;
  • 绑定商户被停用后,相关 OpenAPI 调用会被拒绝;
  • 被驳回的申请或已签发应用提交变更为纯登录权限后,审核通过时不再绑定商户;审核期间已签发应用的原配置继续生效。

商户收款权限的申请与审核

在开放平台的原应用资料中选择机密客户端,勾选 merchant_payments.create、merchant_payments.read,提交申请或变更审核。未入驻或商户未启用时不能申请商户权限。管理员在 准入审核 → 应用审核 批准申请,也可通过 调整权限 和审核说明为符合条件的现有客户端补批。

公共客户端不能申请或获批服务端专用的 merchant_payments.*、products.write、inventory.write;先提交机密客户端类型变更。批准后重新获取令牌,新权限不会追加到旧令牌,也不会由管理员身份自动授予。

merchant_payments.* 是商户服务端收款能力,payments.* 是用户商品订单支付能力,两者不能替代。接入步骤见 通用商户收款。

Client Credentials 的限制

只有“机密客户端 + 已绑定商户”才能使用 client_credentials。当前该流程只允许:

允许的 Scope
merchant.profile.read products.read products.write inventory.write merchant_payments.create merchant_payments.read

商品订单的 orders.*、payments.* 仍要求用户授权。merchant_payments.* 专用于商户服务端通用收款,不要求买家拥有 TDCloud 账号;具体登录要求由商户策略和渠道决定,见 通用商户收款。以上为客户端可申请的范围,只请求实际获批且需要的权限。

Client Credentials
curl -X POST "{TOKEN_ENDPOINT}" \ -H "Content-Type: application/x-www-form-urlencoded" \ --data-urlencode "grant_type=client_credentials" \ --data-urlencode "client_id={CLIENT_ID}" \ --data-urlencode "client_secret={CLIENT_SECRET}" \ --data-urlencode "scope=merchant.profile.read products.read"
最后更新于