微信 收付通 开发几个注意点汇总(也可能是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

相关文章

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

浅谈mysql的sql_mode可能会限制你的查询

《浅谈mysql的sql_mode可能会限制你的查询》本文主要介绍了浅谈mysql的sql_mode可能会限制你的查询,这个问题主要说明的是,我们写的sql查询语句违背了聚合函数groupby的规则... 目录场景:问题描述原因分析:解决方案:第一种:修改后,只有当前生效,若是mysql服务重启,就会失效;

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

JavaScript Array.from及其相关用法详解(示例演示)

《JavaScriptArray.from及其相关用法详解(示例演示)》Array.from方法是ES6引入的一个静态方法,用于从类数组对象或可迭代对象创建一个新的数组实例,本文将详细介绍Array... 目录一、Array.from 方法概述1. 方法介绍2. 示例演示二、结合实际场景的使用1. 初始化二

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

Spring Boot中定时任务Cron表达式的终极指南最佳实践记录

《SpringBoot中定时任务Cron表达式的终极指南最佳实践记录》本文详细介绍了SpringBoot中定时任务的实现方法,特别是Cron表达式的使用技巧和高级用法,从基础语法到复杂场景,从快速启... 目录一、Cron表达式基础1.1 Cron表达式结构1.2 核心语法规则二、Spring Boot中定

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并