开发者社区
社区提问意见反馈
开发者钉组织
扫描二维码
加入支付宝开发者钉组织
文档中心
开放平台 
收藏
订阅更新
我的文档
设置
如果未使用支付宝开放平台 sdk,需要自行实现验签过程。支付宝开放平台密钥工具提供 同步验签异步验签 两种验签方式,可以核查自验签结果。详情可查看 同步验签异步验签 文档。
支付宝现已推出符合oas3.0规范的api(v3版本),拥有更简洁的签名/验签处理逻辑,推荐无法使用sdk的用户,直接对接 v3版本的openapi
此处主要介绍同步返回和异步通知下公钥与证书的验签方法。
同步返回验签
开发者只对支付宝返回的 json 中 xxx_response 的值做验签(xxx 代表接口名)。
说明:
xxx_response 的 json 值内容需要包含首尾的 { 和 } 两个尖括号,双引号也需要参与验签。
如果字符串中包含 http:// 的正斜杠,需要先将正斜杠做转义,默认打印出来的字符串是已经做过转义的。建议验签不通过时将正斜杠转义一次后再做一次验签。
针对公钥、公钥证书两种不同的签名模式,开放平台网关的响应报文有所区别,下面分别介绍两种模式下,如何验签。
公钥模式
1. 获取响应值
如当面付扫码支付获取二维码的返回内容为:
json
复制代码
{"alipay_trade_precreate_response":{
"code":"10000",
"msg":"success",
"out_trade_no":"6141161365682511",
"qr_code":"https:\/\/qr.alipay.com\/bax03206ug0kulveltqc80a8"
},
"sign":"vrgnnggrmnapb1qlnjimiot5ocgn4a4pbxjdoqjhtnymwpygx9as0elt8yikval6lpfsd7hjsygwgjwaayjjzh1mh7b2/t3he0klezuwhsikao2ktcjtrx0tmufomubcxkggudhtmasqi4yaodk ux7og1j5tl49ywiiwgajobe="
}
2. 待验签字段
3. 取出签名值 sign
4. 调用验签函数
使用各自语言对应的 sha256withrsa (对应 sign_type 为 rsa2) 或 sha1withrsa (对应 sign_type 为 rsa) 签名验证函数,传入待验签字段、支付宝公钥、签名内容(sign),验签方法(signtype)进行验签,根据返回结果判定是否验签通过。
证书模式
说明:
公钥证书模式下,开放平台网关的同步响应报文中,会多一个响应参数 alipay_cert_sn(支付宝公钥证书序列号),与 xxx_repsose、sign 平级,该参数表示开发者需要使用该 sn 对应的支付宝公钥证书验签。详情可查看
支付宝公钥证书由于证书到期等原因,会重新签发新的证书(证书中密钥内容不变),开发者在自行实现的验签逻辑中需要判断当前使用的支付宝公钥证书 sn 与网关响应报文中的 sn 是否一致。若不一致,开发者需先调用 下载对应的支付宝公钥证书,再做验签。
1. 获取响应值
如当面付扫码支付获取二维码的返回内容为:
2. 待验签字段
3. 取出签名值 sign
4. 调用验签函数
使用各自语言对应的 sha256withrsa (对应 sign_type 为 rsa2) 或 sha1withrsa (对应 sign_type 为 rsa) 签名验证函数,传入待验签字段、支付宝公钥证书存放路径、签名内容(sign),验签方法(signtype)进行验签,根据返回结果判定是否验签通过。
异步通知验签
公钥、证书两种模式下,异步通知验签方式相同。
1. 获取异步通知
某些情况下(例如扫码支付成功时),支付宝会给商家发送异步通知。如果某商家设置的通知地址为 https://api.xx.com/receive_notify.htm,对应接收到通知的示例如下:
2. 获取待验签参数
1在通知返回参数列表中,除去 signsign_type 两个参数外,凡是通知返回的参数皆是待验签的参数。 说明:生活号异步通知组成的待验签串里需要保留 sign_type 参数。
2将剩下参数进行 url_decode,然后进行字典排序,组成字符串,得到待签名字符串。
3. 获取签名值 sign
将签名参数(sign)使用 base64 解码为字节码串。
4. 调用验签函数
使用 rsa 的验签方法,通过签名字符串、签名参数(经过 base64 解码)及支付宝公钥验证签名,根据返回结果判定是否验签通过。 可查看 支付宝开放平台 sdk 源码中的 alipaysignature.verifyv1 方法:
内容没有解决您的问题?您还可以前往 或 寻求帮助
凯发k8官方网娱乐官方 copyright © 2022 支付宝(杭州)信息技术有限公司  | icp证浙b2-20160559
该文档对你是否有帮助?
当前页面目录
网站地图