开发者社区
社区提问意见反馈
开发者钉组织
扫描二维码
加入支付宝开发者钉组织
文档中心
凯发app官方网站的技术支持 & 案例 faq 
接入指南 > 接入准备 > 签名验签 > rsa2和公钥证书签名验签的区别
收藏
我的文档
设置
背景
目前支付宝推出了新的签名方式,除了使用 rsa2 普通公钥方式签名外,新增了公钥证书的签名方式,本文从公钥设置方式、sdk 版本、sdk 签名方式、sdk 验签方式分别介绍二者区别。
接口加签方式
根据应用中 接口加签方式选择加签模式,进行对应的模式签名。
rsa2 普通公钥
rsa2 普通公钥签名需选择 选择加签模式 公钥 模式。
普通公钥设置密钥方式详见 如何设置普通公钥
公钥证书
公钥证书签名需选择选择加签模式 公钥证书 模式。
公钥证书设置密钥方式详见 如何设置公钥证书
image.png

sdk 版本
目前新版的 sdk 都是支持 rsa2 普通公钥和公钥证书,但是低版本的 sdk 是只支持 rsa2 普通公钥的签名方式。
证书签名 sdk 版本 java 版 sdk 支持 4.4.5.all 及以上版本。
证书签名 sdk 版本 php 版 sdk 支持 alipay- sdk -php-4.1.0 及以上版本。
证书签名 sdk 版本 .net 版 sdk 支持 alipay- sdk -net-4.0.0 及以上版本。
证书签名 sdk 版本 nodejs 版 sdk 支持 3.1.1 及以上版本。
注意:python 还未出证书签名 sdk 版本,待后续更新。
签名验签方式
不同语言的 rsa2 普通公钥和公钥证书签名验签方法不同。
rsa2 普通公钥签名验签方法详见
公钥证书验签签名验签方法详见
注意事项
签名:公钥证书签名相较 rsa2 普通公钥签名多了应用公钥证书 sn(app_cert_sn)和支付宝根证书 sn(alipay_root_cert_sn)参与签名,详见
验签详见
同步返回验签:支付宝公钥证书由于证书到期等原因,会重新签发新的证书(alipay_cert_sn 不同,但证书中密钥内容不变),公钥证书签名相较 rsa2 普通公钥验签需额外检查当前使用的支付宝公钥证书 sn 与网关响应报文中的 sn 是否一致。
异步通知验签:针对普通公钥、公钥证书两种模式下,异步通知验签方式一样(公钥证书模式只需将支付宝公钥证书解析成支付宝数据,即可按照普通公钥验签模式验签)。
sdk 封装签名方式
目前服务端 sdk 分为 alipay sdk(老版)和 alipay easy sdk(新版)。
alipay easy sdk(新版)
alipay easy sdk(新版)中的方法已经涵盖公钥证书和普通公钥签名方式,在对应位置设置数据即可。
alipay easy sdk(新版)文档中 java 语言为例,如下图。

alipay sdk(老版)
老版 sdk 由于第三步的签名验签方法未讲述 sdk 封装方法类请求的方式,rsa2 普通公钥和公钥证书签名方式主要在于初始化方式不同,但是请求参数设置是相同的。
注意:实例化具体 api 对应的 request 类和 response 类,类名称和接口名称对应。
如接口名称:alipay.trade.pay,request 类:alipaytradepayrequest,response 类:alipaytradepayresponse
如接口名称:alipay.trade.app.pay,request 类:alipaytradeapppayrequest,response 类:alipaytradeapppayresponse
java 语言
rsa2 普通公钥签名
请求示例
公钥证书签名
请求示例
请求方法
php 语言
普通公钥签名
公钥证书签名
请求方法
.net 语言
rsa2 普通公钥签名
公钥证书签名
请求方法
python 语言
python 的 sdk 由于未封装公钥证书加签代码,公钥证书加签需商家自行实现。
普通公钥签名
请求方法
内容没有解决您的问题?您还可以前往 或 寻求帮助
凯发k8官方网娱乐官方 copyright © 2022 支付宝(杭州)信息技术有限公司  | icp证浙b2-20160559
该文档对你是否有帮助?
当前页面目录
网站地图