微信app支付签名错误
先放一下申请微信支付的百度经验文档,https://jingyan.baidu.com/article/02027811706ea61bcd9ce54c.html
最近在做微信app支付,调用微信的统一下单支付接口http://mch.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1时,老是返回“签名错误”。我在日志中打印出生成的字符串和签名,然后用相同的数据在微信支付提供的在线支付调试工具生成签名,地址为https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=20_1,发现生成的签名结果一样,能够校验通过,但接口就是返回
<xml><return_code><![CDATA[FAIL]]></return_code>
<return_msg><![CDATA[签名错误]]></return_msg>
</xml>
POST给微信的xml内容:
<xml>
<appid>我的app_id</appid>
<mch_id>就是我的商户id</mch_id>
<body>会员充值</body>
<spbill_create_ip>127.0.0.1</spbill_create_ip>
<total_fee>1</total_fee>
<out_trade_no>612ab716dc4b39970e8a7f6ee863266c</out_trade_no>
<nonce_str>wIFezB5xLcfaAtEgXQ4j2r6TyM8NbW9G</nonce_str>
<notify_url>我的回调地址</notify_url>
<trade_type>APP</trade_type>
<sign>4CD090AE9057E5983B6EEE8520B70C7D</sign>
</xml>
如果带上CDATA,这个时候,其实每个节点生成的数据都是空,解决办法是直接去掉CDATA。
这个时候就是签名错误的表演时间了,第一反应官网提供的路径去生成了一下签名做比较,结果发现签名算法是没错的(https://pay.weixin.qq.com/wiki/tools/signverify/),然后检查了下注意事项里的说明,这个时候我的情况就是注意事项的第一种咯,但是我的商户key是我刚用md5方式生成的啊,难不成这个还能复制错,不会的不会的。
注意事项:
(1)本工具只校验签名算法是否正确,无法校验商户KEY是否正确,如通过本工具校验通过,但实际接口返回签名失败,请检查:
1,当前商户KEY是否正确
2,加入签名的参数是否和接口提交的参数个数一致,字段名是否和接口文档一致
(1)如选择XML或deeplink校验,校验参数需包含sign字段
(2)注意参数名需区分大小写,必须与文档的参数名大小写一致
(3)暂不支付IE浏览器
然后就上网搜了下这个问题,发现遇到的还真不少呢,下面贴一段大家的解决办法:
找了各种方法 , 百度谷歌搜索了一下午 , 发现很多同行都遇到了一样的问题 , 得到了以下解决方法
1、确认公众号的appSecret和商户号的API密钥没有搞混。
2、重置商户API密钥。(本人亲测是这样解决了问题,tx真是个坑,我严重鄙视。)
3、确认公众号授权的域名和目录是正确的。
4、参数body含有中文字符,改换英文签名成功,那么就转换字符编码试试。
$dat = iconv('UTF-8','ISO8859-1',array2xml($package));
然而 , 并没有解决问题 , 先吐槽一下微信支付这个巨坑 , 不是说它的api水平有多烂,但你至少说明白一点啊,每次看微信api都头痛。比阿里差的不是一个数量级的。调阿里api都是,优雅、简单、舒服,效率高。调微信api的感觉是,愤怒、头痛、恶心,想打人。
后续问题解决后会在该随笔追加解决方案 .
追加: 问题已解决 , 重置了三次商户密钥.(....................)
在解决过程中又发现了一个较大的坑 , 在二维码支付模式中 , 本来的设计是生成二维码之后展示到页面上让用户去长按识别来支付 , 但是今天发现微信关闭了这个功能 , 只能是用另外一台手机去扫码支付 .
由于用户体验及其不好 , 后改用公众号支付模式。
wtf? 你们的解决办法,难道都是重置商户秘钥,刚设置好的再重置一遍?死马当作活马医吧,再次登上商户平台,找到设置秘钥的地方,看到了提示,32位的字符,要包括数字和大小写。那我第一次是md5生成的全部小写字符就不符合要求了,但是如果真的有这么个限制,为啥在设置秘钥的时候,不校验下呢?毕竟那么多人都踩在了这个坑上。重新md5生成一个32位的全部小写的字符串,然后随便改一个字符为大写,结果成功返回想要的结果。
最后吐槽下微信支付的申请,我妥妥的申请了一周(只申请),三个平台,开放平台,公众号平台(开发者认证),支付平台。申请完了,还要自己去绑定,我就呵呵了,我就想要个微信支付功能而已,光申请就申请了N久,然后有些资料填一遍再填一遍。对比支付宝支付,真的是一个天上,一个地下(支付宝app支付申请加上调试通过,一下午搞定)。在搜微信支付的这些问题时,看到那么多人骂这些文档和流程,我也就放心了。哦,对了,截止到目前,微信app支付服务端连个sdk或者demo都没有呢。
微信app支付签名错误相关推荐
- 微信app支付签名错误,但验证工具正确,如何解决
做微信APP支付支付的人,初次调起微信支付,肯定有遇见"签名错误"的问题,我在做微信APP支付之初,就碰见了这个错误,现在回想起来,当时,各种找文档,帖子,然而,很多都说的含糊不清 ...
- 微信小程序JSAPI支付和微信APP支付二次签名
如果之前开发过微信的东西,你能看明白微信官方提供的文档,其实实现这两个功能真的并不难! 难就难在,明明已经按照官方提供的文档写好程序,为什么就会提示这样那样的错误呢? 百度了一下,很多人都说这是微信官 ...
- 关于微信APP支付,提示支付验证签名失败
最近做微信APP支付,在"统一下单"里加签没有问题,调用成功,但是在 "调起支付"后却提示 支付验证签名失败. 先说一下请求的参数,参数一共有七个: prep ...
- 微信APP支付配置包名、keystore证书文件、签名
写在前面:根据项目的(应用)包名和编译使用的keystore,才可以通过工具在你的手机上生成一个签名. 1.生成一个keystore文件,供项目编译使用.具体可参考作者的另一篇文章:获取 Andrio ...
- JAVA微信APP支付接口整合
2019独角兽企业重金招聘Python工程师标准>>> 上次我们看到了支付宝的APP支付工具,那么这次就来封装封装微信的APP支付;如果已经清楚了支付宝的支付流程,那么微信支付也和它 ...
- php tp 微信支付,PHP实现的微信APP支付功能示例【基于TP5框架】
本文实例讲述了PHP实现的微信APP支付功能.分享给大家供大家参考,具体如下: 1.进行支付请求 他给的DEMO 用的时候有时候会报错 1)我遇到的情况 把 WxPay.Api.php这个文件的 p ...
- 微信APP支付的坑 - errorcode=-1
微信APP支付的坑 - errorcode=-1 关于微信App支付errorcode=-1的原因网上的大多数的说明和微信的官方文档差不多,不外乎app签名包名对应问题,这些原因都很好排除. 但最要命 ...
- 微信App支付全解析
简单介绍了微信移动支付的申请.接入.使用.确认支付结果等相关流程 0 系列文章 系列一 微信App支付全解析 系列二 支付宝App支付全解析 系列三 微信公众号支付全解析 系列四 微信扫码支付全解析 ...
- 微信app支付功能-服务端的实现-python3版
微信app支付功能-服务端的实现-python3版 一:需求说明 二:微信app支付处理流程 三:所需依赖 3.1 支付配置 四:接口开发 4.1 创建订单接口 4.2 微信异步回调接口 4.3 订单 ...
- 微信APP支付之IJpay的使用
写在开始:一个搬砖程序员的随缘记录 微信支付相对其他支付,比如支付宝支付坑比较多.一直报签名失败.签名参数顺序.数据类型,加密类型这些都需要注意,用第三方的比较省心. IJpay介绍: 聚合支付,IJ ...
最新文章
- 弹性布局,自动按比例居中
- python制作训练集_利用Tensorflow简单实现VGGNet,从数据集制作到训练完成测试
- 超干货 | 一线从业者实践案例大分享:3个tips实现用户增长
- Swing应用程序中的JavaFX 8 DatePicker
- ElmentUI Select 有个坑要注意下
- Controller接口控制器(3)
- DESCRIBE TABLE
- SQL注入漏洞与参数化查询
- 安装SVN及安装语言包
- 操作系统Clock算法
- 真机linux系统封装rhel7.6虚拟机
- 将16进制的字符串转换为对应的字符
- python系列之:字典update
- 5:实战2:微信自动加好友 JavaAppium
- 服务器 战地4 无限载入,战地4卡在loading界面无限载入的解决方法_快吧单机游戏...
- 华为手机无法安装ADB和HDB的处理
- sqlmap安装配置教程
- 抗去除花指令(一)——花指令基础
- u盘安装计算机系统,U盘系统_详细教您将系统安装到U盘
- matlab机器学习入门---大纲