目前开放平台支持的签名方式有两种:普通的RSA2签名方式和公钥证书签名方式。 支付宝开放平台 SDK 封装了签名和验签过程,只需配置账号及密钥参数即可,强烈建议使用,点此可下载SDK。
一、普通RSA2签名
开放平台 SDK 封装了签名实现,只需在创建 DefaultAlipayClient 对象时,设置请求网关 (gateway),应用 id (app_id),应用私钥 (private_key),编码格式 (charset),支付宝公钥 (alipay_public_key),签名类型 (sign_type)即可,报文请求时会自动进行签名请求到支付宝,支付宝利用商户上传的商户公钥进行验签请求参数并处理,处理结果使用支付宝私钥进行签名,返回给商户服务器,商户利用配置到项目中的支付宝公钥进行验签。
AlipayClient alipayClient = new DefaultAlipayClient(gateway,app_id,private_key,"json",charset,alipay_public_key,sign_type);
此时涉及到以下几个密钥: rsa_private_key 商户私钥 : 适用开发语言php ,.net等。 rsa_private_key_pkcs8 商户pkcs8私钥 :适用开发语言java,安卓 ,IOS等。 rsa_public_key 商户公钥 : 上传到支付宝后台服务器,无需配置到程序代码内 alipay_public_key 支付宝公钥: 配置到商户项目中 密钥交互原理 说明:支付宝私钥是不对外开放的,商户自己的私钥也要注意保密不要对外展示,否则会影响账号安全!
密钥交互流程图
①:商户上传自己的商户公钥到支付宝服务器 ;
②:使用商户私钥请求签名参数 ;
③:签名以后的参数请求到支付宝;
④:支付宝服务器使用商户上传的商户公钥,验签商户请求参数,并处理支付结果;
⑤:对商户支付结果使用支付宝私钥签名 ;
⑥:商户使用支付宝公钥验签支付返回的回调数据结果 。
二、公钥证书签名方式
把以下内容配置在代码中,对请求内容进行签名,并对支付宝返回的内容进行验签:
APPID
应用私钥 (private key)
应用公钥证书(public key cert)
支付宝公钥证书(alipay public key cert)
支付宝根证书(alipay root cert)
开放平台 SDK 封装了签名实现,只需在创建 DefaultAlipayClient 对象时,设置请求网关 (gateway),应用 id (app_id),应用私钥 (private_key),应用公钥证书路径(app_cert_path 文件绝对路径),支付宝公钥证书文件路径(alipay_cert_path 文件绝对路径),支付宝CA根证书文件路径(alipay_root_cert_path 文件绝对路径),编码格式 (charset),签名类型 (sign_type)即可,报文请求时会自动进行签名。
//构造client CertAlipayRequest certAlipayRequest = new CertAlipayRequest(); certAlipayRequest.setServerUrl(gateway); certAlipayRequest.setAppId(app_id); certAlipayRequest.setPrivateKey(privateKey); certAlipayRequest.setFormat("json"); certAlipayRequest.setCharset(charset); certAlipayRequest.setSignType(sign_type); certAlipayRequest.setCertPath(app_cert_path); certAlipayRequest.setAlipayPublicCertPath(alipay_cert_path); certAlipayRequest.setRootCertPath(alipay_root_cert_path); DefaultAlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);
//发送API请求 AlipayRequest request = new AlipayTradeQueryRequest(); AlipayTradeQueryResponse response = alipayClient.certificateExecute(request);
更多详见【签名验签专区】。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。