有关授权的常见问题,请参见 三方业务 授权 FAQ。
授权通知示例
说明:实际收到的是 POST 请求,参数在 Post Body 中。
ISV_GATEWAY_URL?****&Data={"headers":{"User-Agent":"Mozilla/4.0","Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"},"data":{"notify_type":"open_app_auth_notify","charset":"UTF-8","biz_content":"{\\"notify_context\\":{\\"trigger\\":\\"appstore\\"},\\"detail\\":{\\"app_auth_token\\":\\"202004BB9d3901a7d39d4350a49fb00000000001\\",\\"user_id\\":\\"20881200000000002\\",\\"re_expires_in\\":32140800,\\"auth_time\\":1587573752655,\\"app_refresh_token\\":\\"202004BB81e2730b7ecc4295a551e00000000001\\",\\"auth_app_id\\":\\"20210000002\\",\\"app_id\\":\\"20190000000\\",\\"expires_in\\":31536000,\\"app_auth_code\\":\\"fa861f9d7032404bae53f54247000001\\"},\\"error\\":{}}","notify_time":"2020-04-23 00:42:32","sign":"****","auth_app_id":"2021000000000002","app_id":"2019000000000000","version":"1.0","sign_type":"RSA2","notify_id":"2020042300222004232009800000000007","status":"execute_auth"},"method":"POST","pid":"2088500000000002","url":"https://*****/gateway.do","timeout":16000}
整理 data 参数,按行显示如下:
"data": {"notify_type":"open_app_auth_notify", "charset":"UTF-8", "biz_content":"{ \\"notify_context\\":{\\"trigger\\":\\"appstore\\"}, \\"detail\\":{ \\"app_auth_token\\":\\"202004BB9d3901a7d39d4350a49fb00000000001\\", \\"user_id\\":\\"20881200000000002\\", \\"re_expires_in\\":32140800, \\"auth_time\\":1587573752655, \\"app_refresh_token\\":\\"202004BB81e2730b7ecc4295a551e00000000001\\", \\"auth_app_id\\":\\"20210000002\\", \\"app_id\\":\\"20190000000\\", \\"expires_in\\":31536000, \\"app_auth_code\\":\\"fa861f9d7032404bae53f54247000001\\" }, \\"error\\":{} }", "notify_time":"2020-04-23 00:42:32", "sign":"****", "auth_app_id":"2021000000000002", "app_id":"2019000000000000", "version":"1.0", "sign_type":"RSA2", "notify_id":"2020042300222004232009800000000007", "status":"execute_auth" }
授权通知字段详解
公共通知字段
若 notify_type=open_app_auth_notify 且 status=execute_auth 表示开放平台应用授权发生了重新授权。
字段名 | 字段说明 | 是否必传 | 备注 |
notify_id | 通知校验 ID,唯一标识一笔通知 | 是 | 相同 notify_id 称之为同一笔通知 |
notify_type | 通知类型 | 是 | 授权变更时的notify_type值为:open_app_auth_notify |
status | 业务状态 | 否 | 授权变更时的status值为:execute_auth |
notify_time | 通知发送时间 | 是 | 通知发送时间 UTC+8,格式为yyyy-MM-dd HH:mm:ss。若为其它时区的服务器时间请自行转换 |
charset | 字符集 | 是 | 该字符集和支付宝发送Http报文的Content-Type的字符集一致,所有涉及字符集的地方均会 用于做urldecode,签名验签 |
version | 版本号 | 是 | 目前固定为1.0,商家仅应该识别version参数为空或者version=1.0的通知报文,其它应该拒绝 |
app_id | 第三方应用的 APPID | 是 | APPID 是通知接收方(不一定对应业务方) |
auth_app_id | 授权小程序的 APPID | 否 | 主动通知的场景下不会有该参数 |
sign | 签名 | 是 | 支付宝对发出的通知进行的 RSA 签名 |
sign_type | 签名类型 | 是 | 目前支持RSA2(推荐使用)和RSA,该参数不参与签名 |
biz_content | 该笔通知的业务内容 | 是 | 针对应用授权变更通知,应用授权变更通知的内容参考以下表格 |
biz_content
detail:授权详情
字段名 | 字段说明 | 是否必传 | 示例 |
app_id | 被授权方应用 ID(一般指第三方应用的 APPID) | 是 | 20190000000 |
auth_app_id | 授权方的应用 ID(一般指商家小程序应用的 APPID) | 是 | 20210000002 |
auth_time | 授权发生时间,通知接受方需要根据auth_time 做令牌幂等 | 是 | 1491746302568 |
app_auth_code | 应用授权码(兼容用),该参数提供给通知接收方用于复用之前的换码逻辑,新接入方推荐直接使用报文中的 app_auth_token 即可 | 是 | 252a889e49af4e6cbtests17ae053X80 |
app_auth_token | 应用授权令牌 | 是 | 201603BB6e8df928test473d9d4c94d57d5c0X00 |
expires_in | 应用授权令牌失效时间,单位到秒 | 是 | 123456 |
app_refresh_token | 刷新令牌 | 是 | 201603BBdeb7d0ab1testbe898432a6490dfbX00 |
re_expires_in | 刷新令牌失效时间,单位到秒 | 是 | 123456 |
user_id | 授权商家的 user_id | 是 | 20881200000000002 |
notify_context:授权通知上下文信息
字段名 | 字段说明 | 是否必传 | 示例 |
trigger | 授权触发者 | 是 | 比如服务市场的服务订购通知,trigger为 appstore |
trigger_context | 授权触发者相关联的上下文,具体取值和trigger 有关 | 否 | 目前值为空 |
error:相关的业务错误提示
字段名 | 字段说明 | 是否必传 | 示例 |
appstore_online_pay | 若系统服务商(ISV)签约了特殊的产品,且该产品的授权前置条件不满足则会有该值。目前仅有签约了口碑的“在线购买/口碑商品”产品的系统服务商(ISV)可能会收到该错误码 | 否 | LACK_FACE_TO_FACE |
appstore_online_pay 的错误码
错误码 | 说明 | 解决方案 |
FAIL | 系统错误,由于未知原因导致的系统错误 | 建议系统服务商(ISV)联系并引导商家重新授权解决来解决 |
UNEXPECTED_CERTIFY_GRADE | 商家的个人认证等级不够 | 通知联系引导商家完成实名认证,再重新授权。 说明:个人用户完成个人实名认证,企业用户完成企业实名认证,参看 企业支付宝、个体工商户认证。 |
MERCHANT_DISCARD | 商家已经被清退;被清退的商家无法进行签约和发布商品 | - |
LACK_FACE_TO_FACE | 商家未签约当面付 | 建议联系引导商家完成口碑开店流程之后,再重新授权。 |