开发者社区
社区提问意见反馈
开发者钉组织
扫描二维码
加入支付宝开发者钉组织
文档中心
开发文档(v3版) 
规则说明
密钥与签名
应用开发配置
常见问题
接口规则 >  > 签名规则
收藏
订阅更新
我的文档
设置
签名机制
支付宝开放平台的应用管理体系,使用了公私钥的机制对请求进行加签,防止数据篡改,以此来保障商家应用和支付宝交互的安全性。没有携带签名或者签名验证不通过,支付宝 api v3 将会拒绝处理请求,并返回 401 unauthorized。
签名生成流程
1构造认证串 authstring。
2构造待签名内容。
3计算签名。
4将签名信息添加到请求。
构造认证串 authstring
authstring 为认证字符串,其中包括认证身份信息和必要的安全信息,支付宝将根据该字段中的信息对请求进行身份认证和安全检查,校验失败则支付宝会拒绝处理请求。
规则说明
authstring 由 key=value 形式组成, 多组 keyvalue 通过逗号隔开,对参数顺序无要求。支付宝会按上述格式解析该字符串,获取必要的认证参数。对于非必选 key,若未使用到则不需要传递对应的 key。
内容说明
plain text
复制代码
app_id=${app_id},app_cert_sn=${app_cert_sn},nonce=${nonce},timestamp=${timestamp}
参数说明
app_id,必传参数,开放平台颁发的应用id,参考 应用介绍
app_cert_sn,可选参数,证书的序列号,使用证书模式时必须指定该参数,参考下述代码。
timestamp,必传参数,请求发起时间,使用unix时间戳,精确到毫秒。支付宝会拒绝处理过期10分钟后的请求,请保持商家自身系统的时间准确性。
nonce,必传参数,随机字符串,每次请求需要保持唯一。支付宝使用字段值用于防重放,nonce 值重复的请求很有可能被拒绝处理。
authstring 示例
构造待签名内容
普通请求
content 内容 :
按照下述拼接规则,将需要签名的数据拼接为字符串。
参数说明
authstring:步骤1中生成的认证串 authstring。
httpmethod:本次请求的 http 方法,例如 get\post\put 等。
httprequesturl: 本次请求的 uri 信息,包括 querystring,不包括域名,例如 /v3/alipay/marketing/activity/ordervoucher/get?id=123。
httprequestbody:本次请求的 body 内容。当使用get等请求时,body 为空,该值传入空字符串,即""。
appauthtoken:应用授权令牌,和 header 参数中 alipay-app-auth-token 值保持一致。可选参数,不使用代调用模式时,不需要传入该字段。
请求签名串示例
body 为空示例
代调用示例
文件上传请求
文件上传请求,不需要对文件内容做签名计算,但是需要对其他业务参数加签。
具体格式同普通请求,其中 httprequestbody 使用 multpart 中的 data 参数,具体参考 文件上传
计算签名
目前支持的签名算法为 sha256withrsa 和 sm3withsm2 两种,计算逻辑为: 使用签名算法对上文中得到的 content 计算签名,得到 byte 数组,然后将 byte 数组通过 base64 方法编码得到字符串。
java 计算 rsa 签名示例
注意若参数信息需要 aes 加密处理,需先对上文中得到的 httprequestbody body 加密后再进行计算签名。
计算结果示例
将签名信息添加到请求
在上述步骤,完成签名计算后,需要将身份及签名信息填充到请求头中,来实现认证鉴权信息的传递。
具体请求头及对应值规则如下:
注意签名算法和 authstring 之间为空格分隔,authstring 和 sign 使用逗号分隔。
签名算法,计算签名时使用的算法,目前支持 alipay-sha256withrsaalipay-sm3withsm2
authstring构造认证串 authstring 中生成的认证串 authstring。
signature计算签名 中生成的签名值。
alipayrootcertsn,支付宝根证书序列号,使用证书模式时,需要传递该值。计算逻辑参考示例代码:
完整请求示例
内容没有解决您的问题?您还可以前往 或 寻求帮助
凯发k8官方网娱乐官方 copyright © 支付宝(杭州)信息技术有限公司  | icp证浙b2-20160559
该文档对你是否有帮助?
当前页面目录
网站地图