文档章节

微信支付踩坑路过

吴小华
 吴小华
发布于 2016/05/12 17:27
字数 1039
阅读 42
收藏 0
点赞 2
评论 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
码字总数 3424
作品 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
基于Vue2.0仿lofter移动端Demo

一个仿lofte手机端的vue项目 项目描述 技术栈 Vue2.0全家桶 + axios + Vuex + Mint-ui + Mock.js + Stylus 预览效果 👉预览地址(PC端建议在Chrome下开启调试模式或移动端浏览) 👉源码地址...

zzr716
2017/10/24
0
0
小程序与支付(绝对干货,大量踩坑出来的血泪教训)

1、微信支付申请及类目 小程序目前只能接入微信支付,其他的支付方式不支持(支付宝、银联等)。 微信支付帐号的注册必须以公司的名义。 类目查询: http://kf.qq.com/faq/140225MveaUz15010...

charliesong
2017/11/01
0
0
微信支付2016开发调试过程记录

最近换了家公司,因为以前也是做支付的来这个公司直接让我从零开始搭建支付服务。首先是微信支付宝的第三方接入。我是做java开发的。支付宝有接入的sdk就是一个jar包。而且有沙箱环境测试帐号...

挨踢人生
2016/11/15
0
0
微信公众号开发小记——5.python微信红包

描述 有时候产品有这么一些需求,当用户满足一定条件时,给他发一定金额的红包。 微信各个服务是独立的,比较蛋疼,要用红包功能,首先你需要注册一个微信商户平台账号。 代码位置 分支pay-2...

D咄咄
2017/11/29
0
0
如何在自己的应用里发放微信与支付包优惠券

我想在自己的app里面给用户发放微信或支付宝的优惠券,用户使用微信支付宝支付时自动使用优惠券…… 搞不明白怎么接入微信和支付宝的卡卷功能…… 望路过的大大们指点一二

D2-Studio
03/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

IntelliJ IDEA 详细图解最常用的配置,适合刚刚用的新人。

刚刚使用IntelliJ IDEA 编辑器的时候,会有很多设置,会方便以后的开发,磨刀不误砍柴工。 比如:设置文件字体大小,代码自动完成提示,版本管理,本地代码历史,自动导入包,修改注释,修改...

kim_o
18分钟前
0
0
Google Java编程风格指南

目录 前言 源文件基础 源文件结构 格式 命名约定 编程实践 Javadoc 后记 前言 这份文档是Google Java编程风格规范的完整定义。当且仅当一个Java源文件符合此文档中的规则, 我们才认为它符合...

niithub
20分钟前
0
0
java.net.MalformedURLException异常说明

1.异常片段 Java代码中,在进行URL url = new URL(urllink)操作时,提示以下异常信息,该类异常主要问题出在参数urllink上面。 异常片段1 java.net.MalformedURLException at java.ne...

lqlm
20分钟前
0
0
CentOS7修改mysql5.6字符集

解决办法:CentOS7下修改MySQL数据库字符编码为UTF-8,UTF-8包含全世界所有国家所需要的字符集,是国际编码。 具体操作如下: 1.进入MySQL [root@tianqi-01 ~]# mysql -uroot -p Enter passw...

河图再现
22分钟前
0
0
DevExpress v18.1新版亮点——WPF篇(一)

用户界面套包DevExpress v18.1日前终于正式发布,本站将以连载的形式为大家介绍各版本新增内容。本文将介绍了DevExpress WPF v18.1 的新功能,快来下载试用新版本!点击下载>> Accordion Co...

Miss_Hello_World
25分钟前
0
0
Rancher 2.0集群与工作负载告警

Rancher 2.0操作指南。本文将step by step演示如何使用Rancher 2.0中集成的告警功能,包括设置通知程序、设置集群级别以及工作负载级别的告警。 在Rancher 1.x时期,告警功能是很多Rancher用...

RancherLabs
29分钟前
1
0
Python中字符串拼接的N中方法

python拼接字符串一般有以下几种方法: ①直接通过(+)操作符拼接 s = 'Hello'+' '+'World'+'!'print(s) 输出结果:Hello World! 使用这种方式进行字符串连接的操作效率低下,因为python中...

木头释然
31分钟前
9
0
JAVA排序之归并排序

归并排序思路就是不停拆分数组,直到拆成一个一个元素,之后将拆出来的元素按照拆分顺序反过来的顺序合并,出现前边值大于后边值,则换位置,放入临时数组,最后将临时数组覆盖原数组. public stat...

勤奋的蚂蚁
42分钟前
1
0
想要年薪20万,先看会不会这28个企业运维岗经典面试题

1、Linux如何挂载windows下的共享目录? mount.cifs //IP地址/server /mnt/server -o user=administrator,password=123456 linux 下的server需要自己手动建一个 后面的user与pass 是windows...

Py爱好
48分钟前
0
0
python的url分配

from django.conf.urls import url,include urlpatterns=[ url('xinwen/',include('xinwen.urls')) ] from django.urls import path from xinwen import views urlpatterns = [ path('login/......

南桥北木
50分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部