首页 > 其他分享 >支付宝 v3 自签名如何实现

支付宝 v3 自签名如何实现

时间:2023-12-22 22:00:41浏览次数:56  
标签:支付宝 请求 content v3 签名 httpPost id String

今天在看文档的时候,发现支付宝新出了一个 v3 版本的接口调用方式,感觉有点意思,花了点时间研究了下这个版本要怎么实现自签名,大家有兴趣可以看看。

支付宝 v3 自签名如何实现_加签

什么是支付宝 API v3 版本?

官网上给的解释是基于 OAS3.0 API 规范,支付宝做了相应的 API 升级(v3),在开发体验上进行了重点优化。

与之前支付宝 API 的主要区别有几条:

  • 使用 RESTful 设计风格,并通过 OpenAPI 规范(OAS)描述接口。
  • 使用 JSON 作为数据交互的格式,不再使用 XML 和表单格式。
  • 简化加验签逻辑,对 HTTP 报文整体进行签名。
  • 简化加解密、文件上传等规范。

更多内容及详细介绍可直接参考 v3 协议简介

其实之前也没有 v2 的概念,不过根据对文档整体的理解来看,v2 版本的概念应该就是之前调用的 通用版本 Easy 版本 。

两个版本的差异可以参考下方表格:

支付宝 v3 自签名如何实现_加签_02

顺便提一句,通用版目前是我用的最多的方式,主要是用习惯了不想改(可不是因为偷懒_(:з」∠)_不过新版方式后面也可以试一下看看。

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 两种,但是能用国密加签方式为什么不给我国密配置入口哇,不给入口说支持都是耍流氓啊

标签:支付宝,请求,content,v3,签名,httpPost,id,String
From: https://blog.51cto.com/yjdmx/8918229

相关文章

  • vue项目中使用的移动端的签名组件,纯 js 写的
    <template><section><divclass="sign-wrap"><divclass="main"><divclass="box"style="width:100%;height:100%"><!--<vue-esignref="esign&qu......
  • 7、手签名放在文档里面—word
    1、在纸上写名字,然后拍照2、把图片插入word里面,右键【环绕文字】—>【浮于文字上方】3、用裁剪工具,把图片裁小点4、【设置图片格式】的参数就可以了 缺点:因为还是图片,所有它会覆盖文字的这个是没设置前的图片 ......
  • 一键在线获取APP公钥、包名、签名及备案信息方法介绍
    ​目录一键在线获取APP公钥、包名、签名及备案信息方法介绍摘要引言一键获取APP包信息操作步骤​编辑解析报告总结致谢关键词参考资料声明 摘要本文介绍了一款在线APP解析工具,可以一键获取APP的公钥、包名、签名等基础信息,同时提供了详细的操作步骤和使用示例,帮......
  • 支付宝 v3 自签名如何实现
    今天在看文档的时候,发现支付宝新出了一个v3版本的接口调用方式,感觉有点意思,花了点时间研究了下这个版本要怎么实现自签名,大家有兴趣可以看看。 什么是支付宝APIv3版本?官网上给的解释是基于OAS3.0API规范,支付宝做了相应的API升级(v3),在开发体验上进行了重点优化。与......
  • 微信小程序canvas实现人员签名
    这里使用获取canvas节点实现的小程序最新的api签字面板效果图        wxml部分:<view class="container" >  <view class="sig_txt">    <canvas type="2d" id="myCanvas"      style="width:{{width}}px;height:{{height}}p......
  • SNMPv3用户安全模型
    1.前言部分SNMPv3与SNMPv2相比有了很大的改进,主要体现在安全性方面:用户认证机制-SNMPv3改用基于用户的安全模型(USM),需要替换v2中的社区字符串认证机制(communitystrings),实现用户管理、认证和加密。加密与数据完整性检查-需要添加支持加密传输和数据完整性检查......
  • Codeforce Round 916(div3)
    CodeforcesRound916(div3)[Problem-A-Codeforces]:ProblemsolvingLogA.题直接看样例进行分析,发现每一次出现的字符代表着用了1分钟来看这道题,每道题都有固定的解题时间,只要达到了这个解题时间,就可以将这题解出来,答案就要加上1;同时要注意将解决过的问题要标记一下;#in......
  • Why Choose Noregon JPRO Professional Diagnostic 2023 v3 Software?
     Welcometotheworldofautomotivediagnostics,whereprecisionmeetsefficiency.WiththeNoregonJPROProfessionalDiagnostic2023v3software,mechanics,technicians,andautomotiveenthusiastscanrevolutionizethewaytheyapproachvehiclediagnost......
  • 手把手教你使用ArkTS中的canvas实现签名板功能
     一、屏幕旋转● 实现签名板的第一个功能就是旋转屏幕。旋转屏幕在各种框架中都有不一样的方式,比如:在H5端,我们一般是使用CSS中的transform属性中的rotate()方法来强制将网页横屏,然后实现一系列功能● 在嵌套第三方APP中,我们一般是调用对应的SDK提供的方法,即可实现旋转屏幕......
  • 如何在 Apple Pages 中插入自己的手写电子签名 All In One
    如何在ApplePages中插入自己的手写电子签名AllInOnesulotionApple的多设备协同能力非常强大,如果您有iPad或是iPhone的话就简单很多啦~选择最上方的“媒体(Media)”按钮->选择“添加速绘(AddSketch)”就可以在iPad或是iPhone上手写签名插入了。https://discussionschi......