更新时间:2025-09-10 19:00:00收藏订阅更新我的文档设置返回文档当未使用支付宝开放平台 sdk 时,开发者需自行实现接口请求的 签名 过程,以确保数据在传输过程中的完整性与安全性。签名机制基于非对称加密算法,可有效防止请求被篡改,并验证请求来源的合法性。开发者可与自己代码中请求生成的信息进行对比,了解数据是否正确。详情可查看 支付宝开放平台密钥工具 > 签名。支付宝现已推出符合 oas3.0 规范的api(v3版本),拥有更简洁的签名/验签处理逻辑,推荐无法使用sdk的用户,直接对接 v3版本的openapi。签名机制概述签名的作用●身份验证:确认请求来自合法的商户或应用。●数据完整性:防止请求参数在传输过程中被篡改。●安全传输:配合 https,保障数据安全。签名原理1对待签名数据进行摘要计算(如 sha256)。2使用商户私钥对摘要结果进行非对称加密,生成签名字符串。3支付宝使用对应的公钥进行验签,验证签名有效性。关于数字签名机制的更多介绍可以可查看 、支持的签名算法签名方案加密和摘要算法要求rsa2sha256withrsa必须使用长度 ≥ 2048 位的 rsa 密钥sm2sm3withsm2如有需要请联系支付宝凯发app官方网站的技术支持说明:●新建应用仅支持 rsa2。历史上已使用 rsa(sha1withrsa)的应用可继续调用,但建议升级至 rsa2方案。●协议参数:开放平台的报文标准中,sign_type 参数用于指定签名算法,若使用 sha256withrsa 签名算法则在报文中需要指定 sign_type=rsa2,若开发者使用开放平台 sdk,详情可查看 接口加签方式说明。自行实现签名如果未使用支付宝开放平台 sdk,开发者需要自行实现签名过程。步骤 1:参数筛选与排序1获取所有请求参数(公共参数 业务参数)。2排除:asign 字段。b值为空(包括 空白字符 和 null )的参数。c文件流、字节流等二进制数据。3按 参数名 ascii 升序 排序。示例参数(公钥模式):排序后:注意:是否使用 biz_content 作为业务参数整体,可以参考具体api 文档中 curl 代码样例是否包含biz_content 参数。步骤 2:拼接签名原文将排序后的参数按 key=value 格式拼接,并用 & 连接。示例:步骤 3:生成签名使用商户私钥调用签名函数(rsa2 为例):java 示例:注意:这里的字符集编码和 http 请求参数编码保持一致。步骤 4:拼接完整请求将签名加入请求参数中,并对一级参数值进行 url 编码。示例(编码后):步骤 5:构建http请求将编码后的请求数据发送至支付宝网关地址。说明:支付宝网关地址固定为 https://openapi.alipay.com/gateway.do。请求示例:注意:请将参数拆分两个部分,对于业务参数 (例如 biz_content) 部分请设置在 http body 中,对于其他平台参数 (特别是 charset) 请设置在 url 的 query 中。扩展场景公钥模式与证书模式区别公钥模式●仅需在支付宝开放平台配置应用公钥。●请求示例见上。证书模式●公钥证书方式下,开发者发送给开放平台网关请求参数中,需携带 应用公钥证书 sn(app_cert_sn)、支付宝根证书 sn(alipay_root_cert_sn),若不携带这两个参数,网关会拒绝请求(详情可查看 常见问题 )。●sn 值是通过解析 x.509 证书文件中签发机构名称(name)以及内置序列号(serialnumber),将二者拼接后的字符串计算 md5 值获取,可参考开放平台 java sdk 源码。○alipaysignature.getcertsn 实现 app_cert_sn 的提取。○antcertificationutil.getrootcertsn 实现 alipay_root_cert_sn 的提取。请求示例:文件上传如果请求api 是一个文件上传类接口,需要使用 multipart/form-data 格式。请求示例:注意:1文件内容不经过签名,filename 的后缀要满足具体接口的要求,name 字段和接口中字段对应。2如果业务参数需要设置在 body 中,请参考示例请求格式。