微信 收付通 开发几个注意点汇总(也可能是WechatPay-API-v3相关的几个自己踩到的坑记录)

本文主要是介绍微信 收付通 开发几个注意点汇总(也可能是WechatPay-API-v3相关的几个自己踩到的坑记录),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先给上收付通开发文档的地址https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pages/ecommerce.shtml 

其次是WechatPay-API-v3相关的文档地址https://wechatpay-api.gitbook.io/wechatpay-api-v3/

和原先xml请求方式的区别  微信的原话

 

1.证书和秘钥相关

      首先要注意,证书有2份,一份是在微信后台下载的那个证书 (这个是用来RSA签名用的),另一份叫 平台证书 (获取方式是通过http请求获取 请求内容看https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/ecommerce/applyments/chapter3_3.shtml),平台证书的主要作用是 加密微信要求处理的敏感数据 身份证号手机号之类的,还有就是验证微信的签名。  这是两个证书的作用,看微信的意思好像平台证书会有新的更新,所以需要注意要做好证书及时更新获取的逻辑。

      接着就是秘钥相关的,收付通服务商的后台有两个地方可以配置秘钥。收付通主要用到的是APIV3那个,也就是下面那个,这个秘钥目前发现主要用户获取平台证书后,他给你的内容你需要通过APIV3的秘钥去解密出来,才能得到证书秘钥内容。具体怎么转换也可以参考他的 案例(https://github.com/wechatpay-apiv3/wechatpay-apache-httpclient)

 

遇到过的问题:

{"code":"PARAM_ERROR","message":"HTTP header缺少微信支付平台证书序列号(Wechatpay-Serial)"}
{"code":"PARAM_ERROR","message":"平台证书序列号Wechatpay-Serial错误"}
{"code":"PARAM_ERROR","message":"平台私钥解密失败"}

第一个错误 有敏感信息需要证书加密的请求中,httpheader 需要加上平台证书序列号(Wechatpay-Serial),

第二个和第三个 就是要检查你加密使用的证书 是不是平台证书

 

2.签名相关

       签名的内容以及如何构造 其实微信文档这部分已经很详细了,纯文字看的不太懂得话其实 下面也给了例子了,内容的构造完全可以照着改改写写。我觉得最主要的就是注意 GET请求的签名内容最后一行没有请求报文时候,也要加上一个\n

      签名方式就是采用了最常见的SHA256 with RSA  所以也没遇到太多坑,如果出现验签错误或者签名错误,记得对比一下构造的内容有没有缺失

 

3.小程序支付

       从合单支付的文档里面是看不出 收付通支不支持小程序,不过之前在某个地方看到过 小程序支付和h5一样走”js调起支付" 这个接口。 其实确实是可以使用的,但是他文档有一处是有问题的,看下图

在执行完下单接口后,你会拿到prepay_id 这个值,接下来你要构造 "JS调起支付" 需要用到的参数,文档里面 他的意思签名内容是 prepay_id的内容,其实最后一行的是 prepay_id=wx201410272009395522657a690389285100 这整个内容 。试出来成功的签名内容为:

wx8888888888888888
1414561699
5K8264ILTKCH16CQ2502SI8ZNMTM67VS
prepay_id=wx201410272009395522657a690389285100

签名方式就是 证书的rsa签名

 

4.退款

      光是微信的直接退款,基本上是正常的,主要是涉及到分账退款的时候,先看一个微信分账退款的逻辑

 

5.下载账单接口的签名

      账单申请接口就是和其他接口一样的请求方式,请求完成后会返回给你三个值

     

{"hash_type": "SHA1","hash_value": "79bb0f45fc4c42234a918000b2668d689e2bde04","download_url": " https://api.mch.weixin.qq.com/v3/billdownload/file?token=xxx"
}

 这一步还只是申请,下载文件要调用后面的“下载账单”接口。按微信文档的意思,针对download_url签名 但是没有明确说怎么签名,在这边尝试了不少次数,后来发现签名构造内容如下:

GET
/v3/billdownload/file?token=xWONwSNyQENF_Sgromg6y8s_8oU3RRADfz0&tartype=gzip
1584676192
TYSLfO3swtC27JEtLcu0dqj48XU5Vo3W

 

最后发自内心想吐槽微信支付的文档。。还有一堆的{"code":"SYSTEM_ERROR","message":"系统繁忙,请稍后重试"}  这个错误好多还都是业务上出错!但是又无法真正明确是什么原因。

以上内容也只是自己调试时候遇到发现的。不确定后面会不会有变动,仅供参考!!!

这篇关于微信 收付通 开发几个注意点汇总(也可能是WechatPay-API-v3相关的几个自己踩到的坑记录)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1077494

相关文章

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi

PyQt5 GUI 开发的基础知识

《PyQt5GUI开发的基础知识》Qt是一个跨平台的C++图形用户界面开发框架,支持GUI和非GUI程序开发,本文介绍了使用PyQt5进行界面开发的基础知识,包括创建简单窗口、常用控件、窗口属性设... 目录简介第一个PyQt程序最常用的三个功能模块控件QPushButton(按钮)控件QLable(纯文本

基于Python开发一个图像水印批量添加工具

《基于Python开发一个图像水印批量添加工具》在当今数字化内容爆炸式增长的时代,图像版权保护已成为创作者和企业的核心需求,本方案将详细介绍一个基于PythonPIL库的工业级图像水印解决方案,有需要... 目录一、系统架构设计1.1 整体处理流程1.2 类结构设计(扩展版本)二、核心算法深入解析2.1 自

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤

Spring Boot 结合 WxJava 实现文章上传微信公众号草稿箱与群发

《SpringBoot结合WxJava实现文章上传微信公众号草稿箱与群发》本文将详细介绍如何使用SpringBoot框架结合WxJava开发工具包,实现文章上传到微信公众号草稿箱以及群发功能,... 目录一、项目环境准备1.1 开发环境1.2 微信公众号准备二、Spring Boot 项目搭建2.1 创建

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

在Spring Boot中集成RabbitMQ的实战记录

《在SpringBoot中集成RabbitMQ的实战记录》本文介绍SpringBoot集成RabbitMQ的步骤,涵盖配置连接、消息发送与接收,并对比两种定义Exchange与队列的方式:手动声明(... 目录前言准备工作1. 安装 RabbitMQ2. 消息发送者(Producer)配置1. 创建 Spr

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试