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

相关文章

51单片机学习记录———定时器

文章目录 前言一、定时器介绍二、STC89C52定时器资源三、定时器框图四、定时器模式五、定时器相关寄存器六、定时器练习 前言 一个学习嵌入式的小白~ 有问题评论区或私信指出~ 提示:以下是本篇文章正文内容,下面案例可供参考 一、定时器介绍 定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。 定时器作用: 1.用于计数系统,可

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

[职场] 护理专业简历怎么写 #经验分享#微信

护理专业简历怎么写   很多想成为一名护理方面的从业者,但是又不知道应该怎么制作一份简历,现在这里分享了一份护理方面的简历模板供大家参考。   蓝山山   年龄:24   号码:12345678910   地址:上海市 邮箱:jianli@jianli.com   教育背景   时间:2011-09到2015-06   学校:蓝山大学   专业:护理学   学历:本科

C++工程编译链接错误汇总VisualStudio

目录 一些小的知识点 make工具 可以使用windows下的事件查看器崩溃的地方 dumpbin工具查看dll是32位还是64位的 _MSC_VER .cc 和.cpp 【VC++目录中的包含目录】 vs 【C/C++常规中的附加包含目录】——头文件所在目录如何怎么添加,添加了以后搜索头文件就会到这些个路径下搜索了 include<> 和 include"" WinMain 和

RecastNavigation之Poly相关类

Poly分成正常的Poly 和 OffMeshPoly。 正常的Poly 又分成 原始的Poly 和 Detail化的Poly,本文介绍这两种。 Poly的边分成三种类型: 1. 正常边:有tile内部的poly与之相邻 2.border边:没有poly与之相邻 3.Portal边:与之相邻的是外部tile的poly   由firstLink索引 得到第一个连接的Poly  通

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

大学湖北中医药大学法医学试题及答案,分享几个实用搜题和学习工具 #微信#学习方法#职场发展

今天分享拥有拍照搜题、文字搜题、语音搜题、多重搜题等搜题模式,可以快速查找问题解析,加深对题目答案的理解。 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试、组卷考试、赶快下载吧! 2.彩虹搜题 这是个老公众号了 支持手写输入,截图搜题,详细步骤,解题必备

uniapp接入微信小程序原生代码配置方案(优化版)

uniapp项目需要把微信小程序原生语法的功能代码嵌套过来,无需把原生代码转换为uniapp,可以配置拷贝的方式集成过来 1、拷贝代码包到src目录 2、vue.config.js中配置原生代码包直接拷贝到编译目录中 3、pages.json中配置分包目录,原生入口组件的路径 4、manifest.json中配置分包,使用原生组件 5、需要把原生代码包里的页面修改成组件的方

vcpkg安装opencv中的特殊问题记录(无法找到opencv_corexd.dll)

我是按照网上的vcpkg安装opencv方法进行的(比如这篇:从0开始在visual studio上安装opencv(超详细,针对小白)),但是中间出现了一些别人没有遇到的问题,虽然原因没有找到,但是本人给出一些暂时的解决办法: 问题1: 我在安装库命令行使用的是 .\vcpkg.exe install opencv 我的电脑是x64,vcpkg在这条命令后默认下载的也是opencv2:x6

通过高德api查询所有店铺地址信息

通过高德api查询所有店铺地址电话信息 需求:通过高德api查询所有店铺地址信息需求分析具体实现1、申请高德appkey2、下载types city 字典值3、具体代码调用 需求:通过高德api查询所有店铺地址信息 需求分析 查询现有高德api发现现有接口关键字搜索API服务地址: https://developer.amap.com/api/webservice/gui