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了。
        好了,上边这些便是获取微信平台证书的大概知识点了,有可能还是不太全面,有问题或有意见的的小伙伴们,可以在评论下方留下你的足迹,我们一起来讨论、纠正。

微信支付专题——微信平台证书的两种下载方式,亲测成功相关推荐

  1. DSP一个程序如何实现RAM和Flash两种下载方式,CCS9

    我们都知道,DSP在进行程序调试时有两种运行模式,一种是程序在RAM中运行调试,另一种是在Flash中运行调试,在RAM中的Debug时间特别短,板子一旦掉电程序将不复存在:在Flash中下载程序特别 ...

  2. 由微信指数联想到大数据的两种应用方式

    (国足的一场胜利催生了微信指数的诞生·开玩笑) 火车快不快全靠车头带,抛开现象看本质,其实大数据也就是所谓的巨大的信息,将这些信息汇总然后整理,得出一系列有利于商业营销的指导性意见. 大数据之前讲究的 ...

  3. 微信支付V3 生成平台证书

    微信支付V3里必须有平台证书文件,才能唤起唤醒支付 平台证书生成前提需要提前下载好设置apikey3后下载的证书3个证书文件 apiclient_key.pem apiclient_cert.pem ...

  4. 怎么制作微信表情包?这两种方法,亲测好用

    分享两种微信表情包制作方法,一种是用微信自带的表情包制作工具,另一种是将视频转换成GIF表情包. 一.微信小程序自制 1.首先我们打开微信,点击底部的[发现],进入[小程序]界面,在上方的搜索框里输入 ...

  5. 微信支付V3生成平台证书

    composer require wechatpay/wechatpay  //引入依赖包 composer exec -l //检测是否存在可执行的命令文件 composer exec Certif ...

  6. 恢复出厂设置的两种方法,亲测可行

    方法1 参照系统"设置"应用 1.在AndroidManifest.xml配置 <manifest xmlns:android="http://schemas.an ...

  7. 解决Github下载慢的两种方法,亲测!

    News: 我的编程学习笔记仓库已经出炉,正在快速维护中-- 地址:https://github.com/Github-Programer/LeetCode-Notes 欢迎大家光临,大家可以配合着博 ...

  8. java 庖丁解牛api_Java 微信支付 APIv3 平台证书的命令行下载工具

    Certificate Downloader Certificate Downloader 是 Java 微信支付 APIv3 平台证书的命令行下载工具.该工具可从 https://api.mch.w ...

  9. 浅析微信支付:商户平台代金券或立减优惠开通、指定用户代金券发放、查询等

    本文是[浅析微信支付]系列文章的第十四篇,主要讲解在如何开通商户平台的代金券或立减优惠功能,商家向指定用户发送代金券,查询发送记录,代金券信息等. 浅析微信支付系列已经更新十四篇了哟-,没有看过的朋友 ...

最新文章

  1. 嵌入式开发之工具---比开发手册更重要的一个命令 man page
  2. python开发环境wingide的安装与破解
  3. 电动力学每日一题 2021/10/15 Fourier变换法计算均匀电流密度产生的磁场
  4. pytorch离线安装(探索尝试版本)
  5. 关于selenium+java,实现部分截图功能,-针对单个元素的截图
  6. DataView对象的用法 1207
  7. FreeMarker 基础语法教程
  8. 9个Console命令
  9. android html文字加中间横线_HTML 语法简要总结
  10. 验证堆表(heap table)存储方式
  11. 高通about.html 文件,关于高通校准调用文件的说明文档
  12. 淘宝SKU组合查询算法实现
  13. 诺基亚n1平板电脑刷机教程_诺基亚N1 完整包线刷升级或救砖教程(不分台版;国行)...
  14. 关于验证码错误的解决办法
  15. 统计字符串中含指定字符个数
  16. 以人为本 体验至上(三)
  17. Excel 行高列宽与图片像素的关系
  18. Revit结合Dynamo建立某大桥下部结构-承台
  19. Netfilter 内核数据包过滤框架
  20. CSS进阶-Less

热门文章

  1. PS教程:仙气十足的摄影后期技巧
  2. 恒压板框过滤实验数据处理_求购二手板框压滤机现金回收 回收二手板框压滤机回收价格...
  3. 网页二维码,App 扫码登录实现原理
  4. manor的博客导航,大数据の蜕变之路
  5. PEG/g-C3N4量子点复合荧光纳米微球(g-cnqds-peg)的制备方法
  6. 燕十八mysql基础复习
  7. DBA还是一份好工作吗?
  8. 【评测】常规PCR(终点法,跑胶)的多重PCR的试剂
  9. 字节码:ASCII编码:单字节编码,ANSI编码:多字节编码,UNICODE编码:宽字节编码
  10. 小梅哥FPGA学习笔记