ToB企服应用市场:ToB评测及商务社交产业平台

标题: 支付宝 v3 自签名如何实现 [打印本页]

作者: 莫张周刘王    时间: 2024-2-29 00:45
标题: 支付宝 v3 自签名如何实现
今天在看文档的时候,发现支付宝新出了一个 v3 版本的接口调用方式,感觉有点意思,花了点时间研究了下这个版本要怎么实现自签名,大家有兴趣可以看看。

 
什么是支付宝 API v3 版本?

官网上给的解释是基于 OAS3.0 API 规范,支付宝做了相应的 API 升级(v3),在开发体验上进行了重点优化。
与之前支付宝 API 的主要区别有几条:
更多内容及详细介绍可直接参考 v3 协议简介
其实之前也没有 v2 的概念,不过根据对文档整体的理解来看,v2 版本的概念应该就是之前调用的 通用版本 Easy 版本 。
两个版本的差异可以参考下方表格:
 

 
顺便提一句,通用版目前是我用的最多的方式,主要是用习惯了不想改(可不是因为偷懒_(:з」∠)_不过新版方式后面也可以试一下看看。
PS:通用版自签名的方法可以参考:[SDK 如何实现签名],SDK 接口调用方式参考:[代码示例]。
 
如何对接v3版本

v3 版本比起 v2 版本来说 改变的地方还是挺多的,最大的改变就是请求的方式,由原本的 RPC 风格切换成了RESTful
下面我们就来看看 v3 版本自签名是如何调用的。
下面以 统一收单交易支付接口 为例。
 
步骤一:构造 authString

authString 也就是 v3 版本新加的身份鉴权信息。
需要用到的参数有:
组装示例
  1. long Unix=date.getTime();
  2. String authString= "app_id="+app_id+",timestamp="+Unix+",nonce=3246658768654544";
复制代码
authString生成内容
  1. app_id=2014111111111122,timestamp=1702452177941,nonce=3246658768654544
复制代码
 
 
步骤二:拼接待签名字符串

需要用到的参数有:
注意:下方代码示例中的 \n 千万不能丢!!!不然验签通过不了的QAQ
组装示例
  1. String httpMethod="POST";
  2. String httpReuqestUrl=    "/v3/alipay/trade/precreate";
  3. String httpRequestBody="{"out_trade_no":"20181128763521373251698","total_amount":"1","subject":"123","body":"body"}";
  4. String content=authString+"\n"+httpMethod+"\n"+httpReuqestUrl+"\n"+httpRequestBody+"\n";
  5. System.out.println("content:"+"\n"+content);
复制代码
返回内容
  1. app_id=2021111111111122,timestamp=1702452177941,nonce=3246658768654544
  2. POST
  3. /v3/alipay/trade/precreate
  4. {"out_trade_no":"20181128763521373251698","total_amount":"1","subject":"123","body":"body"}
复制代码
 
步骤三:生成 sign

需要用到的参数有:

加签方式这边我想吐槽下:文档上加密方式说是支持 SHA256withRSA 和 SM3WithSM2 两种,但是能用国密加签方式为什么不给我国密配置入口哇,不给入口说支持都是耍流氓啊
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4