文档章节

微信支付踩坑路过

吴小华
 吴小华
发布于 2016/05/12 17:27
字数 1039
阅读 48
收藏 0
  这段时间在做微信支付开发,在公司的公众号审批下来后,我这边的测试用例也已经开发完毕,于是拿着具体的数据来调试了,大段大段的代码就不贴了,demo里有,这里就说说调试过程中遇到的坑。

        第一坑:redirect_url参数错误。因为我选择的的“JS API”支付,这种支付需要网页授权,先获取code,再拿code去获取openid和prepay_id。这个网页授权需要登录微信公众平台,点击左侧菜单“开发者中心”,在右侧“权限列表”中找到“网页账号”,点击最右侧的修改,把测试的网址写进去,注意不要加http。填好后,这个坑就趟过去了。

        第二坑:invalide code。趟过第一坑后,会返回code,再拿此code去获取openid,但是每次到这步时微信那边都返回这个{"errcode":40029,"errmsg":"invalid code"},此坑卡了我整整半个下午。在周天的时候,我又仔细看了开发文档,没得要领,最后又仔细检查了下程序中每次回调的参数。这一检查,就发现要领了,先把回调地址写的最简单,啥参数都不带,成功;接着,一个一个参数带上去,直到带上token这个参数时,返回了invalid code。哈,我猜应该是此参数和微信那边有冲突吧,于是把此参数改成了其他的,此坑立马就过了,接下来支付就一下子调试成功。

        第三坑:系统繁忙,正在升级,请稍后再试。周末调试成功后,便把测试代码整合到项目中,开始支付。但是到了支付界面时,便出现了此问题,怎么找到都发现不了问题,点击周末的测试链接又是好的。下午时又仔细看了下上下游的的传递的参数,发现了问题所在。每次上游传递过来的支付金额total_fee都是“1.00”这种类型,因为微信支付的基本单位是分,于是把手动把1.00该为1,成功了。看来是微信支付那边total_fee不能接收小数点,于是我和上游的同事协调了下,传递过来的金额没有小数点,此坑也就过了。

        今天测试发现在iphone4上,支付不成功,于是进入测试机调试,发现问题出在第一坑中,把body参数去掉,就ok了,看来在微信支付时,最好少带参数。 

         下午,QA说微信支付又不成功了,提示“统一支付接口中,缺少必填参数openid!trade_type为JSAPI时,openid为必填参数!”。我进入测试机中调试,发现服务器中curl请求微信平台返回的都是NULL,提示不管用,接着又打印curl的报错信息,输出为77,去curl错误码查询了下,提示是SSL证书的问题,于是我在服务器重新安装了证书,并重启了php-fpm,之后便能支付了。
sudo yum install ca-certificates
service php-fpm restart

        今天支付接入了商城相关逻辑,写完后,我又测试了以前的会员卡支付的,发现在支付阶段提示失败,于是加上测试语句,提示“getBrandWCPayRequest:fail_no permission to execute”(注:iphone5s手机),后来找到了部小米的,进入支付提示“system:access_denied”,进入文档一查,原来是授权目录错误,改回来后就好了,应该是QA在年前改的,折腾。

        上午看到QA在禅道又提了个关于微信支付的bug,说是报“package中的参数partner或者prepay_id为空”的错误。于是我轻车熟路的进入到调试模式,经过几次测试,发现微信支付一旦超过十万便会出现上述提示,若是打上断点调试语句的话,会发现微信返回{"errcode":"FAIL","errmsg":"invalid total_fee"}。知道微信支付额度上限,那么只需在后台设置最大不超过十万即可。

本文转载自:http://www.henkuai.com/forum.php?mod=viewthread&tid=10884

共有 人打赏支持
吴小华
粉丝 10
博文 16
码字总数 3497
作品 0
长宁
项目经理
PHP 微信支付功能 实战讲解

原文地址:http://www.cleey.com/blog/single/id/766.html 使用微信支付,需要公众号开通支付功能,然后一步步配置,最后根据API调用完成支付。 这是个很深的坑,我来踩一踩吧,我这里介绍公...

Cleey
2015/12/29
3.9K
1
订餐系统之微信支付,踩了官方demo的坑

   最近一个项目要增加微信支付的功能,想来这个东西出来这么久了,按微信提供的应该可以很快搞定的,结果提供的demo( JS API网页支付)中各种坑,咨询他们的客服,态度倒是非常好,就是解...

jijunjian
2014/07/17
0
0
微信支付服务端开发

前言 最近应公司业务需求,把微信支付完成了,当然已经顺利上线。但是开发的过程是也是踩了很多坑,下面我就先说说开发流程,以及在开发中遇到的大大小小的坑。 开发流程 首先,看一下微信开...

Jansens
2016/10/26
26
0
关于微信H5公众号支付我们踩过的坑(get_brand_wcpay_request:fail)

最近公司有了一个新的需求,学生在购买课时的时候,需要让家长或者朋友代付。这样的话我首先想到的就是微信的H5支付(微信内置浏览器调用支付模块)。当时想用这个支付的原因因为是前端代码十...

天星ing
2017/10/19
0
0
微信中页面二次分享小图标丢失问题

每天踩点坑,每天成长一点点,这样工作才会变得有趣。微信JSSDK踩坑记录。 在我们有房APP1.1的版本中增加了房产资讯的功能,昨天晚上有同事在群里反馈从APP中分享的资讯到微信中,然后再次分...

尹吉欢
05/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

5whys分析法在美团工程师中的实践

前言 网站的质量和稳定性对于用户和公司来说至关重要,但是在网站的快速发展过程中,由于各种原因导致事故不可避免的发生,这些大大小小的事故对公司难免会造成一些负面的影响,为了避免同类...

Skqing
23分钟前
1
0
Android 接收监听开机完成,并且开机自启动

1,定义一个广播接收者的类 ,并重写抽象方法 public class BootCompleteReceiver extends BroadcastReceiver 2,在Androidmanifest 注册 <receiver android:name=".receiver.BootCompleteRece......

lanyu96
27分钟前
2
0
小程序记录

1、button的边框、角等需要在伪元素after修改去除

originDu
29分钟前
1
0
微博什么技术啊……还说支持八个明星并发出轨,结果…

是的,大家可能都知道了,女神张靓颖结婚了。。 我去,写错了,是————赵丽颖。 为什么我头脑一瞬间出现的是张靓颖,作为一个码农,技术宅,拼音缩小都是 ZLY,博主我真有点傻傻分不清楚了...

Java技术栈
29分钟前
10
0
模块化

1,什么是模块化? 模块化是指将一个复杂的系统分解为多个模块,方便编码。 2,为什么要用模块化? 降低复杂性,降低代码耦合度,部署方便,提高效率。 3,模块化的好处? a,避免命名冲突,减少...

羊皮卷
30分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部