更新时间:2023-04-06 15:04:52收藏我的文档设置返回文档背景目前支付宝推出了新的签名方式,除了使用 rsa2 普通公钥方式签名外,新增了公钥证书的签名方式,本文从公钥设置方式、sdk 版本、sdk 签名方式、sdk 验签方式分别介绍二者区别。接口加签方式根据应用中 接口加签方式 的 选择加签模式,进行对应的模式签名。rsa2 普通公钥rsa2 普通公钥签名需选择 选择加签模式 的 公钥 模式。普通公钥设置密钥方式详见 如何设置普通公钥。公钥证书公钥证书签名需选择选择加签模式 的 公钥证书 模式。公钥证书设置密钥方式详见 如何设置公钥证书。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 类:alipaytradeapppayresponsejava 语言rsa2 普通公钥签名请求示例公钥证书签名请求示例请求方法php 语言普通公钥签名公钥证书签名请求方法.net 语言rsa2 普通公钥签名公钥证书签名请求方法python 语言python 的 sdk 由于未封装公钥证书加签代码,公钥证书加签需商家自行实现。普通公钥签名请求方法