微信小程序支付在好久之前写过一次,后来再写的话也是用别人的 SDK 了,之前写的文章好像留了一点坑

博客有发过一篇关于微信小程序支付的文章,见PHP完成微信小程序在线支付功能

贴了代码没有检查,也给 Github 上传了一份,同样也是没有检查,最近就有人留言说使用的时候报错:mch_id参数格式错误

不应该啊,按理说我用的时候是好的啊,微信小程序的支付调用还是很麻烦的,不想写伪代码于是就远程看一下吧

微信小程序调用微信支付时,需要先向微信商户平台”统一下单”接口发起请求,获得prepay_id后,才可以调用小程序的requestPayment接口进行下一步的操作

但是在调用获取得prepay_id之前就已经出问题了,打印一下看看

截图就直接用问问题的同学的吧,如下图所示

这种提示可能就会想到是前后可能有空格吧,看着mch_id都是数字,先来去掉一下两头的空格吧

trim($mch_id);

不过很明显不是这里的问题,打印出来的 xml 数据中mch_id是紧挨着 xml 标签的

找啊找啊,也没发现到底是哪里的问题,随便改几个参数,写错也是提示mch_id参数格式错误

认真的同学就会发现 16-26 的 xml 数据开始结尾外层并没有包裹

仔细看文档就会发现外层应该是需要包裹的

转 xml 数据是封装好的方法,不应该出这种问题,又返回头去看之前的文章

//数组转换成xml

private function arrayToXml($arr) {

$xml = "";

foreach ($arr as $key => $val) {

if (is_array($val)) {

$xml .= "" . arrayToXml($val) . "" . $key . ">";

} else {

$xml .= "" . $val . "" . $key . ">";

}

}

$xml .= "";

return $xml;

}

发现 $xml 的地方居然是空字符串,此处应该是的

//数组转换成xml

private function arrayToXml($arr) {

$xml = "";

foreach ($arr as $key => $val) {

if (is_array($val)) {

$xml .= "" . arrayToXml($val) . "" . $key . ">";

} else {

$xml .= "" . $val . "" . $key . ">";

}

}

$xml .= "";

return $xml;

}

可能是之前复制代码的时候没注意,将xml外边的左右括号没有转实体符,编辑器自动去掉了

此时如果直接向接口发起请求会返回mch_id参数格式错误的提示,所以解决mch_id参数格式错误的方法是

请求时加上最外层的即可

php微信支付mch_id参数格式错误,再说一下微信支付踩到的坑 mch_id 参数格式错误...相关推荐

  1. 原生支付url参数错误_小程序支付

    下载微信JSAPI支付的 SDK : https://pay.weixin.qq.com/wiki/doc/api/download/WxpayAPI_php.zip :解压后放在extend 文件夹 ...

  2. 微信支付服务商,![CDATA[sub_mch_id与sub_appid不匹配],微信小程序支付,签名错误,CDATA[签名错误]解决方法,支付签名验证失败

    微信支付服务商,微信小程序支付,签名错误,CDATA[签名错误]解决方法 1:服务商和普通的商户支付在代码上没有太大差异(不同的是上传的参数,而且微信支付服务商参数上比较难找,官方文档又太简洁,所以很 ...

  3. 关于微信支付的一些错误总结、微信支付48001

    最近在一个项目中遇到了微信支付的一些问题,顺便写篇笔记记录一下. 1.errcode:48001 api unauthorized 这个问题属实很坑,刚刚收到这个错误的时候我百度了一下,网上很多网友都 ...

  4. 实例:用C#.NET手把手教你做微信公众号开发(20)--使用微信支付线上收款:jsapi方式

    在做线上.线下销售时,可以使用微信便捷支付,通过微信公众号收款有很多种收款方式,如下图: 今天我们来讲一下jsapi支付,场景就是在微信内打开某个页面,完成在线支付,同样一个网页,使用微信打开就是js ...

  5. 微信支付:支付流程分析、微信扫码支付(HttpClient)、微信支付二维码生成、检测支付状态、订单状态操作准备工作、支付信息回调、MQ处理支付回调状态、定时处理订单状态

    微信支付 微信支付开发的整体思路 生成支付二维码 查询支付状态(微信的服务器) 实现订单状态的修改.删除订单 支付状态回查->微信服务器将支付状态返回给支付微服务 MQ处理支付回调状态 Rabb ...

  6. php支付回调怎么写_php如何接入微信支付回调接口?PHP如何验证微信支付签名?PHP处理微信支付回调的函数...

    需求:  安卓,ios端集成微信支付,PHPer(我)要提供一个接口给微信调用,(支付完成后调用),若是成功,就返回success,若是失败就返回fail,php 环境说明:thinkphp 框架开发 ...

  7. PHP微信支付回调接口下单,如何验证微信支付签名 ,处理异步回调(验证的坑)

    在写这之前  看了好多文档,有好多坑在里面,通过多半天的努力终于把验证的问题搞出来了我也不理解微信官网文档写的那么不清晰,一个简单的介绍就能介绍明白,弄一大堆还没写明白,下面直接把我实操的验证贴上,供 ...

  8. 微信支付总结--小程序与H5页面微信支付

    项目开发过程中,涉及到了微信支付功能,这里做一个详细的记录. 小程序和H5的后端代码是通用的,前端调用不同的代码实现,这里不是重点,会简单的给出相关的代码. 微信支付,官方给了开发文档,但是其中还是有 ...

  9. 微信公众号支付php demo,200行代码实现微信支付-公众号支付,不再踩坑,附:demo...

    开发微信支付需要认证服务号并且已经开通微信支付,获得微信支付商ID,设置apikey了的. 官方给了公众号支付的php源码SDK 但是这个SDK文件非常多,源码乱七八糟的,真的一开始接触的人拿着官方的 ...

最新文章

  1. Apache MINA 2.0 用户指南
  2. SVN关于忽略xcuserdata目录
  3. 小分子蛋白Western blot 检测
  4. 中英文怎么算 字符长度_如何将混合了中英文及不同数量空格的文本,快速拆分成多列...
  5. ajax后台重定向会返回什么_第三十五天JavaScript中的ajax
  6. hibernate demo 搭建
  7. 【2018.5.12】模拟赛之二-ssl2414 简写单词【字符串】
  8. 前端学习(3059):vue+element今日头条管理-优化文章状态
  9. ClickHouse深度揭秘
  10. java对象组合_java并发编程(三): 对象的组合
  11. 文字 竖排居中_学会了这几招,瞬间就搞定PPT文字排版问题!
  12. Linux性能测试分析命令_sar
  13. Qt pri 创建使用.pri文件
  14. 图书馆管理系统5W1H分析
  15. java实现头脑王者辅助答题_头脑王者2答题神器app-头脑王者2答题辅助神器安卓版v1.0...
  16. 9.foreign key(外键)
  17. python汉字转换拼音
  18. 静态重定位和动态重定位
  19. 阿姆斯特朗数 matlab,c中阿姆斯特朗数
  20. 中国医科大学网络教育学院计算机应用基础,中国医科大学网络教育学院试卷.doc...

热门文章

  1. 饥荒服务器账号问题,求救,游侠平台的 饥荒服务器问题 请教高手指教下
  2. 电商基础知识:供应链产品介绍
  3. 51单片机开发实例 基于51单片机的万年历
  4. App逆向-安卓环境搭建-LineageOS刷机指南
  5. 计算机应用的时间识别的,计算机人工智能识别关键技术及运用
  6. mysql 中手动设置事务提交
  7. MacOS中图片的路径表示
  8. python语言的运行效率高吗_为什么Python效率这么低,还这么火?
  9. OLYMP‘ARTS 2023奥艺大会中国推介会在北京盛大举行
  10. 企业工商信息查询第三方软件/API查询原理分析