ToB企服应用市场:ToB评测及商务社交产业平台
标题:
支付宝 v3 自签名如何实现
[打印本页]
作者:
莫张周刘王
时间:
2024-2-29 00:45
标题:
支付宝 v3 自签名如何实现
今天在看文档的时候,发现支付宝新出了一个 v3 版本的接口调用方式,感觉有点意思,花了点时间研究了下这个版本要怎么实现自签名,大家有兴趣可以看看。
什么是支付宝 API v3 版本?
官网上给的解释是基于 OAS3.0 API 规范,支付宝做了相应的 API 升级(v3),在开发体验上进行了重点优化。
与之前支付宝 API 的主要区别有几条:
使用 RESTful 设计风格,并通过 OpenAPI 规范(OAS)描述接口。
使用 JSON 作为数据交互的格式,不再使用 XML 和表单格式。
简化加验签逻辑,对 HTTP 报文整体进行签名。
简化加解密、文件上传等规范。
更多内容及详细介绍可直接参考
v3 协议简介
。
其实之前也没有 v2 的概念,不过根据对文档整体的理解来看,v2 版本的概念应该就是之前调用的
通用版本
和
Easy 版本 。
两个版本的差异可以参考下方表格:
顺便提一句,通用版目前是我用的最多的方式,主要是用习惯了不想改(可不是因为偷懒_(:з」∠)_不过新版方式后面也可以试一下看看。
PS:通用版自签名的方法可以参考:[
SDK 如何实现签名
],SDK 接口调用方式参考:[
代码示例
]。
如何对接v3版本
v3 版本比起 v2 版本来说 改变的地方还是挺多的,最大的改变就是请求的方式,
由原本的 RPC 风格切换成了RESTful
。
下面我们就来看看 v3 版本自签名是如何调用的。
下面以
统一收单交易支付接口
为例。
步骤一:构造 authString
authString 也就是 v3 版本新加的身份鉴权信息。
需要用到的参数有:
app_id:开放平台颁发的应用 id。
timestamp:Unix 时间戳,精确到毫秒。
nonce:自定义参数,自己生成唯一性字符串,每次请求要保证唯一。
组装示例
long Unix=date.getTime();
String authString= "app_id="+app_id+",timestamp="+Unix+",nonce=3246658768654544";
复制代码
authString生成内容
app_id=2014111111111122,timestamp=1702452177941,nonce=3246658768654544
复制代码
步骤二:拼接待签名字符串
需要用到的参数有:
authString:上一步返回。
httpMethod:本次请求的 http 方法,例如 GET\POST\PUT。
httpReuqestUrl:这个从对应接口文档请求 url 中拿,不包含域名值。
httpRequestBody:本次请求的 body 内容;GET方式请求时,入参空字符串。
注意:
下方代码示例中的
\n
千万不能丢!!!不然验签通过不了的QAQ
组装示例
String httpMethod="POST";
String httpReuqestUrl= "/v3/alipay/trade/precreate";
String httpRequestBody="{"out_trade_no":"20181128763521373251698","total_amount":"1","subject":"123","body":"body"}";
String content=authString+"\n"+httpMethod+"\n"+httpReuqestUrl+"\n"+httpRequestBody+"\n";
System.out.println("content:"+"\n"+content);
复制代码
返回内容
app_id=2021111111111122,timestamp=1702452177941,nonce=3246658768654544
POST
/v3/alipay/trade/precreate
{"out_trade_no":"20181128763521373251698","total_amount":"1","subject":"123","body":"body"}
复制代码
步骤三:生成 sign
需要用到的参数有:
content:上一步返回。
privateKey:应用私钥,如何获取参考[
如何获取商户私钥
]。
charset:编码格式。
加签方式这边我想吐槽下:文档上加密方式说是支持 SHA256withRSA 和 SM3WithSM2 两种,但是能用国密加签方式为什么不给我国密配置入口哇,不给入口说支持都是耍流氓啊
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4