当前位置:首页 > 资讯 > 正文

java公众号微信支付校验服务器

java公众号微信支付校验服务器



白嫖之微信支付V3 java restful

  • 前言
  • 新版支付核心概念-非对称加密
  • 第一步:获取自己的公私钥,把公钥给微信,设置APIv3密钥
  • 第二步:准备微信支付所需参数
  • 第三步:工具类WxPayUtil准备
  • 第四步:签名、token、测试下载证书接口
  • 第五步:下单,返给前端签名信息
  • 附录


疫情创业失败,回来打工了。。最近所在公司新做了一个小程序,涉及到支付功能,一看文档,居然出了新的v3 restful的API(原谅我很久没写代码了),记得很久之前写过v2的xml格式的,很是痛苦。最后决定用新的方式调用,搞了两天,终于通了,确实比老版的简单,但网上的整体代码文档很少,在这里跟大家分享下,供大家白嫖。

从未写过的同学,一步一步跟着走即可实现小程序微信支付V3统一下单、支付回调、验签功能。
微信支付调用流程很简单,大家看文档学习即可。
官方文档

为啥要加密,这里不解释了。。大家应该都知道。

大家只要记住下面八个概念即可
1、四个动作,加密解密,签名验签(签名也是加过密的)
2、四个钥匙,我的公私钥,微信的公私钥

公钥是我给大家的,私钥是我自己保存好的,两个钥匙是一对,负责双方的加解密

我方加密为了加密传输信息,对方解密为了解密传输信息
我方签名是在我的请求上,签个名,为了证明来源是我本人
对方验签就是验证我的签名对不对,不对的话说明请求是别人假冒的

对应关系为
我的私钥用来签名,微信用我的公钥验证签名
我用微信的公钥加密传输信息,微信用自己的私钥解密信息
反之
微信用私钥签名,我用微信的公钥验证签名
微信用我得公钥加密信息,我用自己私钥解密信息

所以,我们和微信双方,都各自需要有3个钥匙,自己的私钥,自己的公钥,对方的公钥

大家可能发现了,公钥要发送给别人的公开的,被伪造了怎么办?
于是有了CA,主要作用就是给我们的证书做保证,保证是真。CA也是有更上一层机构去保证,大家有兴趣可以自行阅读。

以上信息请大家仔细阅读并理解,个人认为其为微信支付的关键,搞懂加密流程,其余就是并发与业务处理,暂不在本文章讨论范围。

概念说完了
我们要进入正式的微信支付了

我已经默认大家注册了商户号与小程序
登陆商户后台,上面账户中心,左侧API安全
下载微信证书工具,按照步骤即可下载自己的公私钥和证书信息,压缩包如下

然后将生成的公钥,复制粘贴到微信商户后台。至此
我们有了自己的公私钥,微信有自己公私钥和我们的公钥,我们还差一个微信的公钥,后面再讲。

1、将下载的证书apiclient_cert.p12,随便放在项目里,我这里放在了src/main/resources
2、准备以下参数
商户id
自己证书id
小程序appid
支付后微信回调地址
自己设置的apiV3Key

以上参数都可以在小程序后台或者商户后台获取到

开始白嫖代码,懒得看直接复制即可

整体工具类在附录

1、加载证书获取公私钥,即我们复制在src/main/resources下的apiclient_cert.p12

2、随机串

3、时间戳

4、请求参数body体,封装了三个DTO,大家可自行修改增加字段

至此我们基本上是准备完成了

签名规则请仔细阅读文档,个人觉得这个文档还是很详细的。
签名生成

1、签名方法

我们最后需要的是token

2、用签名生成token(规则请参考微信文档)

3、先用get方法试一下,ok不ok
试下这个接口,下载证书

将生成的token,放在header里,如果返回401说明签名失败,如果配置没有问题,则200

java公众号微信支付校验服务器_微信

官方文档

剩下的就是前端的事情啦

微信支付我只写了两天,比较匆忙,希望能给大家帮助