微信小程序支付问题解决
一、背景
有个微信小程序,新申请的商户号,新接入微信支付。自行处理小程序端和服务端(php)代码。
三年前有个小项目做过,当时也是踩了一遍这个坑,间隔久了这次又忘了,因为这个不太规律,遂记录一下。
二、问题描述
总共遇到两个问题:
1、小程序端调起微信支付后提示调用支付JSAPI缺少参数:total_fee"
2、小程序端调起微信支付后提示签名验证失败
先说明一下,这里用的是微信支付的v2接口,v3版本接口可能并不遇到。
(因为用的easywechat扩展包,5.x仅支持v2接口,而6.x需要php8,线上环境版本不够,所以只能踩v2的坑了)
2.1 问题1
问题1,一般是少参数或某个参数要求的值的格式/类型不对。而错误提示并不对应,所以需要按照文档逐一检查即可。
不过类型不对的话,一般fail方法里能看到对应的错误提示,比如timestamp应该是字符型,如果用的是int,会提示类型不对。
我这边是因为package
参数的值格式应该是prepay_id=xxxx
,我只设置了xxxx
,漏掉了前边的prepay_id=
。
比如服务端请求预支付接口后,拿到了prepay_id=wx123456
,返回给小程序后,package参数应该是package=preay_id=wx123456
2.2 问题2
问题2,实际就是签名计算的不对,不过这里主要是文档有点不太友好。先说两点提醒:
1、服务端请求预支付接口返回的sign值,不能直接返回给小程序端来用,因为参与签名的内容不一致。
2、小程序调起支付API的开发指引里,写的appId是大写Id。
但如果你是进入到签名算法文档里看,是小写的appid。很容易按小写id处理(服务端预支付接口返回的也是appid),但又忽略了这个问题(我就栽了两次,确实顺序看下来,很容易在详细流程的阅读这里翻车)。
这里其实签名算法是以预支付接口为例的,所以流程一致,但参数内容不一致
ps:paySign建议在服务端生成,前端不存储支付key
而这里用签名校验工具是不好找到的,因为自己本身没有意识到参数名不一致
三、总结
2019年第一次踩完这两个坑的时候,只是认为自己不熟悉微信支付,然后也有点马虎,连文档里写了的值格式和参数名都认不出,只觉得是自己的大意。
但时隔多年2023年又踩了一遍,感觉从正常阅读流程里很容易陷入到这个问题里来,所以感觉还是有必要记录下的。毕竟又白白花了我三四个小时排查这看似简单的失误…
同时我也注意到微信开发者社区有很多类似的问题,但都没有下文了,估计也都是解决完感觉自身原因占比较大,就没有同步结论。这里记录下,希望能够帮助到其他人~
微信小程序支付问题解决相关推荐
- 【问题排查与解决】ios调起微信小程序支付失败
ios调起微信小程序支付SDK失败 场景 排查方向(1. 支付规范导致2. 参数缺少导致3. sdk版本问题) 微信小程序支付规范 解决方式 调起微信小程序参数问题(需要传入当前小程序的appId) ...
- 微信小程序asp服务器架设,asp写的微信小程序支付demo-服务器端是asp+mdb的
这个微信小程序支付demo代码是我用asp写的,微信小程序端加上服务器端用的asp和mdb数据库,下面是代码分享: 订单说明:{{paydata.title}} 支付金额:分 支付 --------- ...
- 微信小程序支付最容易犯的坑notify_url(支付回调)
最近做了微信小程序支付,支付成功之后发现notify_url回调地址竟然没有访问. 检查了无数次代码,下单结果里面的回调地址看了又看,都没有错啊. 把回调地址复制出来到浏览器上面,外网也是可以访问的啊 ...
- 微信小程序php后台支付,微信小程序 支付功能实现PHP实例详解
微信小程序 支付功能实现PHP实例详解 前端代码: wx.request({ url: 'https://www.yourhost.com/weixin/WeiActivity/payJoinfee' ...
- .NET Core 微信小程序支付——(统一下单)
最近公司研发了几个电商小程序,还有一个核心的电商直播,只要是电商一般都会涉及到交易信息,离不开支付系统,这里我们统一实现小程序的支付流程(与服务号实现步骤一样). 目录 1.开通小程序的支付能力 2. ...
- python个人微信支付接口_Python实现微信小程序支付功能
正文 由于最近自己在做小程序的支付,就在这里简单介绍一下讲一下用python做小程序支付这个流程.当然在进行开发之前还是建议读一下具体的流程,清楚支付的过程. 1.支付交互流程 2.获取openid( ...
- 加入域时出现以下错误 登陆失败 该目标账户名称不正确_微信支付踩坑合集:微信小程序支付失败是什么原因?持续更新...
微信小程序开发的过程一定会遇到各种问题,最让人棘手的就是支付问题,因为没有支付做商城类似的小程序就没有办法完成最关键的一步.那么支付失败到底什么原因呢?一下子收集了几个错误类似,希望对你有帮助: No ...
- 微信小程序支付异常:requestPayment:fail no permission
微信小程序支付异常:requestPayment:fail no permission 参考文章: (1)微信小程序支付异常:requestPayment:fail no permission (2) ...
- 微信小程序支付-付款(Java后台)
微信小程序支付-付款(Java后台) 一.概述 接触微信小程序支付有一段时间,趁着项目上线空闲期,来总结一下付款.退款.提现到银行卡.查询流水等步骤过程,涉及到的知识,以及编程过程中需要注意的问题. ...
最新文章
- 为了解决伴随RIP协议的路由环路问题,可以采用水平分割法,这种方法的核心是(22),而反向毒化方法则是(23)。
- python drop函数_用python帮财务小姐姐自动生成财务报表
- fscanf简单使用
- 上海纳税百强2016,邢台2017纳税百强,深圳百强企业
- java.util.UnknownFormatConversionException: Conversion = ‘j‘ || Conversion = ‘D‘ || Conversion = ‘Y‘
- 最新阿里内推高级Java面试题
- centos 删除crontab_Centos 7 安装crontab及cron常用命令
- centos6.8 安装php7
- java调用javafx_Java代码调用JavaFX的例子(大力推荐)
- JavaScript 之 截取字符串函数
- ubuntu为python处理图片安装图片数据增强库imgaug
- Java 添加、验证PDF 数字签名
- android init重启service(进程)
- 让AngularJS兼容IE8及其以下浏览器版本的方法
- Subclipse安装
- 小楼一夜听春雨···
- Reflection conclusion
- 计算机课英语怎么读音标,英语的48个音标有哪些?英语的48个音标怎么读?
- 经典的测试开发面试题
- adjacent_difference 的使用