微信支付专题——微信平台证书的两种下载方式,亲测成功
hello,大家好呀,好久没整理笔记了,今天抽时间整理了一下最近在研究的技术。
梦梦最近在做微信支付的模块,由于做的是服务商模块的,商户进件功能需要使用微信平台的公钥对敏感信息加密,而且传送的http头部需要把微信平台证书序列号携带在“Wechatpay-Serial”信息,官网上是这样标注的:
所以,就需要下载微信平台证书,使用平台公钥对敏感信息加密,这样把商户信息上送到微信支付平台时,微信平台使用自己的公钥对我们上送的加密数据进行解密。同时,微信给我们下行的数据使用我们自己的公钥进行加密,我们接收到微信下行的加密数据,用自己的私钥进行解密。
先解释两个概念:平台证书和商户证书。
商户证书:是商户自己申请的,包含公司名称、商户号、公钥信息等内容,生成商户证书的时候,同时也会生成商户私钥文件apiclient_key.pem,妥善保存好,不要上传到gitlab上,或者写在客户端代码上。
平台证书:是由微信支付负责申请的,包含微信支付平台标识、公钥信息等内容,可以用证书平台中 的公钥进行验签,或者对上送的文件进行加密等等。
话不多说,下面梦梦结合官网文档写一下获取微信平台的两种方式,一切还是以官方文档为主,如果梦梦有的部分说的不太妥当的,可以在下面评论部分指出来。
第一种:通过工具下载平台证书
1,打开官方文档:https://github.com/wechatpay-apiv3/CertificateDownloader
注意:建议大家还是先看一遍官方文档上的说明,文档说的也是比较详细的,然后再来看梦梦写的。
2,下载CertificateDownloader.jar工具:既然是通过工具下载,肯定要先把工具下载下来,这个工具也就是CertificateDownloader.jar 一个jar包。点击蓝色字体“release”跳转到一个新的窗口,如下图。选择一个版本下载即可,梦梦选择的是1.0版本的,如果需要的也可以下载1.1版本的。
3,打开cmd窗口。把刚刚下载好的jar包放到一个没有中文的目录里,然后在jar的目录的上行路径框里输入cmd打开命令窗口。
4,执行命令:把官网上的命令复制下来,把里面的参数换成自己的即可。然后在cmd窗口上执行这段命令即可。
注:官网上有参数的说明,即:-k 商户自己的APIv3密钥 -m 商户号 -f 商户私钥保存位置 -s 证书序列号 -o 微信平台证书存放的位置
5,执行结束之后,看到命令窗口下面截图红色字样的部分就已经是下载完成了,就可以自己上面自己设置的存储路径上查找即可。平台证书是以“wechantpay_证书序列号”命令的。
第一种方式下载起来比较方便,不用写代码,但是由于微信平台证书是不断的再更新的,如果每次都通过工具去下载的话,会很麻烦,也不够友好,所以还是建议大家使用下面这种方式,也就是通过API的方式获取平台证书,第一种方式适合首次下载平台证书的时候使用。
第二种:通过API下载证书
1,打开官方文档(获取平台证书):https://pay.weixin.qq.com/wiki/doc/apiv3_partner/wechatpay/wechatpay5_1.shtml
2,获取签名认证信息。打开获取平台证书的官方文档之后,可以看到获取平台证书的接口没有query或者path的参数,只需要在请求的头部设置一些信息即可,也就是上面图片的三部分。Accept是枚举参数,在v3中直接写application/json即可,User-Agent 用户代理,随便打开浏览器一个网页,F12粘贴复制一个即可。主要就是第一个参数Authorization的获取,需要生成签名,然后获取认证信息。生成签名官方文档也有给说明,下面有demo,梦梦就不举例子了。
3,生成签名。打开官方文档:https://pay.weixin.qq.com/wiki/doc/apiv3_partner/wechatpay/wechatpay4_0.shtml
上面这张图是从官方文档上截取的,可以看到参数Authorization的value值由两部组成的,认证类型和签名信息,并且二者中间用空格隔开。
由上图可以看出,签名信息由五部分组成的,前四项比较好获取,最后一项签名值的获取可能需要麻烦一点点,通过看官方文档上面的阐述(梦梦没有截图,自己看官方文档即可),可以看出签名值是使用商户私钥对签名串进行一个签名算法(SHA256 with RSA签名)之后再进行Base64编码之后获取的,所以要理解一些专有名词吧。
4,复制文档demo获取平台证书。官方文档最后有demo,如下图,代码一共是三个方法,最后一个是生成签名串的,中间的方法是使用商户私钥对签名串进行SHA256 with RSA签名,再Base64之后的结果,即签名值,第一个方法是获取签名信息的,即Authorization 的value值的。梦梦已经测试过了,可以准确的获取到平台证书的,只不过此时获取的平台证书是加密之后的,需要解密。
5,解密平台证书的密文。官方文档:https://pay.weixin.qq.com/wiki/doc/apiv3_partner/wechatpay/wechatpay4_2.shtml
解密平台证书的demo在官方文档上也有,直接copy就可以使用的。只是传参的时候需要注意一下,官方给的方法入参是byte[] ,所以要注意把我们获取到的信息转换一下。如果还是不太明白的小可爱们,可以参考一下下面的转化方式。
爱学习的小伙伴呢,可以两种方式都尝试一下,然后对比一下两次拿到的平台证书内容是否一致,如果一致,说明方式是对的,如果不一致的话,那就要好好找bug了。
好了,上边这些便是获取微信平台证书的大概知识点了,有可能还是不太全面,有问题或有意见的的小伙伴们,可以在评论下方留下你的足迹,我们一起来讨论、纠正。
微信支付专题——微信平台证书的两种下载方式,亲测成功相关推荐
- DSP一个程序如何实现RAM和Flash两种下载方式,CCS9
我们都知道,DSP在进行程序调试时有两种运行模式,一种是程序在RAM中运行调试,另一种是在Flash中运行调试,在RAM中的Debug时间特别短,板子一旦掉电程序将不复存在:在Flash中下载程序特别 ...
- 由微信指数联想到大数据的两种应用方式
(国足的一场胜利催生了微信指数的诞生·开玩笑) 火车快不快全靠车头带,抛开现象看本质,其实大数据也就是所谓的巨大的信息,将这些信息汇总然后整理,得出一系列有利于商业营销的指导性意见. 大数据之前讲究的 ...
- 微信支付V3 生成平台证书
微信支付V3里必须有平台证书文件,才能唤起唤醒支付 平台证书生成前提需要提前下载好设置apikey3后下载的证书3个证书文件 apiclient_key.pem apiclient_cert.pem ...
- 怎么制作微信表情包?这两种方法,亲测好用
分享两种微信表情包制作方法,一种是用微信自带的表情包制作工具,另一种是将视频转换成GIF表情包. 一.微信小程序自制 1.首先我们打开微信,点击底部的[发现],进入[小程序]界面,在上方的搜索框里输入 ...
- 微信支付V3生成平台证书
composer require wechatpay/wechatpay //引入依赖包 composer exec -l //检测是否存在可执行的命令文件 composer exec Certif ...
- 恢复出厂设置的两种方法,亲测可行
方法1 参照系统"设置"应用 1.在AndroidManifest.xml配置 <manifest xmlns:android="http://schemas.an ...
- 解决Github下载慢的两种方法,亲测!
News: 我的编程学习笔记仓库已经出炉,正在快速维护中-- 地址:https://github.com/Github-Programer/LeetCode-Notes 欢迎大家光临,大家可以配合着博 ...
- java 庖丁解牛api_Java 微信支付 APIv3 平台证书的命令行下载工具
Certificate Downloader Certificate Downloader 是 Java 微信支付 APIv3 平台证书的命令行下载工具.该工具可从 https://api.mch.w ...
- 浅析微信支付:商户平台代金券或立减优惠开通、指定用户代金券发放、查询等
本文是[浅析微信支付]系列文章的第十四篇,主要讲解在如何开通商户平台的代金券或立减优惠功能,商家向指定用户发送代金券,查询发送记录,代金券信息等. 浅析微信支付系列已经更新十四篇了哟-,没有看过的朋友 ...
最新文章
- 嵌入式开发之工具---比开发手册更重要的一个命令 man page
- python开发环境wingide的安装与破解
- 电动力学每日一题 2021/10/15 Fourier变换法计算均匀电流密度产生的磁场
- pytorch离线安装(探索尝试版本)
- 关于selenium+java,实现部分截图功能,-针对单个元素的截图
- DataView对象的用法 1207
- FreeMarker 基础语法教程
- 9个Console命令
- android html文字加中间横线_HTML 语法简要总结
- 验证堆表(heap table)存储方式
- 高通about.html 文件,关于高通校准调用文件的说明文档
- 淘宝SKU组合查询算法实现
- 诺基亚n1平板电脑刷机教程_诺基亚N1 完整包线刷升级或救砖教程(不分台版;国行)...
- 关于验证码错误的解决办法
- 统计字符串中含指定字符个数
- 以人为本 体验至上(三)
- Excel 行高列宽与图片像素的关系
- Revit结合Dynamo建立某大桥下部结构-承台
- Netfilter 内核数据包过滤框架
- CSS进阶-Less