TP整合微信遇到的一系列问题
上个月接到一个项目,做一个基于微信的众筹系统,只做移动端的,根据XX老板描述貌似很简单,其实我也是我想的太简单,最多就是一个微信支付接口没做过,其他做起来都松松的。可不曾想,就是这支付接口,耗了我一差不多一半的工时。
第一个坑,文档坑。
开始的时候, 一想微信支付,腾讯的啊,BAT中的T啊,那肯定文档比中华大辞典还详细,迫不及待去官方网站把demo给下了下来,把里面的核心代码迁移到自己的框架(TP)里面,配置好配置信息(配置信息demo写的更不详细,有些没有标出是否是必要的,害我gg了半天),控制器OrderController.class.php,方法是addorder,把原来demo代码扒拉下来,原封不动,一跑,全是报错,其实最后发现文档好多地方都是错的。有些需要json_encode()包装下的没包装,有些接口函数压根就没echo等等等。。
第二个坑,调试坑。
想知道微信支付怎么调试的吗?就是在你手机上不断的用微信自带的啥子带有QQ浏览器内核的浏览器去预览,才会跳到支付界面,电脑上压根就不让你用,如果你用的话就是这样的
嗯,微信就是这么任性,用户体验做的超级牛叉,一个支付咋这么苦逼呢?害死我们这些搞开发的。
硬是要一边对着代码一边在那扣手机。扣。扣。手机。
好,既然是要到微信里面去调试,嗯,那就去!微!信!
开始我用的是native的原生二维码支付,因为至少可以在pc端的浏览器上看到二维码的样子,支付的形式呢通俗的说就是你买一个商品,然后每次生成一个二维码在网页上让你扫,开始我看到微信有个功能用户体验做的很棒,那就是长按二维码可以识别,我不知道知道这个功能的人多不多,我也是在我不断的扣手机的时候看到的。
好!最大的坑来了,我乖乖的生成了二维码,嗯,就像这样:
扫了扫,微信支付正常调用,当时差点喜得没从椅子上跳起来。
其实还不知道,这只是坑的开始,只是跳过了一个小坑而已,微信支付开发的时候都有一个 这个东西,
对就是这个NOTIFY_URL,这个东西相当坑,为啥坑呢?看demo给的下面的说明:
呵呵呵,30分钟8次,定期重新发起通知,但不能保证最终能成功,也就是说这玩意还是一个概率事件。
关键是调试啊,调试是异步啊,普通的异步还行,FF抓个包就哦了,关键是尼玛在微信客服端啊,抓个屁啊,他说默认生成一个XML数据导入到.log文件中,我把路径设定好,压根连XML数据的毛都没找到,这个方案在我调试到第四天的时候几乎绝望,故果断被我抛起了。
后面选用了jsapi形式,通俗的说也就是给你一个支付按钮,你点开就可以输入支付密码输入了。他的最大的好处就是能用一个js回调一个alert弹出一个消息提示你,这可以大大的降低调试的压力,因为看的到数据,麻麻在也不怕我不知道错在哪了。
开始我重新修改了配置了以后重新载入,就发现了这个问题:
然后在微信客户端老是弹出这个警告窗口:
我GG了一下,说是指的是支付目录设置错误,但是我看的教程和demo都是这么写的,而且我的路径可以在浏览器上面直接访问。
好了,就这么一遍遍的不断的改来改去,后来终于发现了错误,差点让我一口老血喷在显示屏上。
原来是http://后面要带www.要不然不识别。如果谁不带www而且成功了。那只能说明微信支付看我不爽
这个坑我跳出来花了2天不止。。。。。。。。。。。。
好了,终于可以开开心心的打开支付界面了,支付流程还是跟native原生支付一样,一气呵成,最终在支付完成以后显示出了这么一个回调提示
说明支付成功了。
可我却没这么高兴,难得还在后面呢。。。。
幸亏那时候学过js,看得懂一部分js,再加上gg查询,定位到代码端。
原来返回的是一个json格式的对象 ,在单独输出res发现没有我想要找的东西。
忽然发现上面有一个echo $jsApiparameters ,第六感告诉我我要找的东西就是这个,
果不其然,一输出发现是json格式的数组,并且带有prepay_id字段。。。
这个prepay_id 是干嘛的呢,这个玩意相当于你在支付的时候的一个独一无二的凭据,是微信端服务器响应后返回给你的,所以我就利用了这个字段进行了ajax回调。
代码给我改成了这样:
再在后台根据这个字段查找相应字段来修改支付状态。
看来我的想法有的时候还是太天真了。
因为没有细看代码,光顾着自己偷着乐了,发现前端表单传值传不过来了,百思不得其解啊,明明就,明明就。。。。
前端表单的值传不过来意味着就没法插入数据啊。
后面检查,又发现了一个坑。
卧槽这里居然有个Header,重定位啊。难怪表单的值全部给GG了。
嘿嘿嘿,那我就在你GG之前插入一部分数据好了。
索性在Header前面插入一部分数据,并设了一个状态flag防止重复插入。
在后面处理到末尾的时候用session和cookie不断的存入数据和调取数据。
到最后支付,那都是算行云流水了。
这是最后我改好的支付成功的界面
一共花费6天研究这玩意,测试200多次。。。。
一分一分的测试都花了2块多。
附上:TP框架整合微信支付。
http://pan.baidu.com/s/1kTxkvBL
在这里感谢帮助我的老师和学长。
TP整合微信遇到的一系列问题相关推荐
- 微信支付php详解 php,ThinkPHP框架整合微信支付之刷卡模式图文详解
本文实例讲述了ThinkPHP框架整合微信支付之刷卡模式.分享给大家供大家参考,具体如下: 大家好,这篇文章是继微信支付之Native 扫码支付 模式二之后的微信支付系列教程第四篇:微信刷卡支付 本教 ...
- Springboot----项目整合微信支付(引入延迟队列实现订单过期取消以及商户主动查单)
前言 目前更新的是Springboot项目整合微信支付系列的文章,可以在我的主页中找到该系列其他文章,这一系列的文章将会系统介绍如何在项目中引入微信支付的下单.关单.处理回调通知等功能.由于前面创作经 ...
- 微信公众号开发系列-13、基于RDIFramework.NET框架整合微信开发应用效果展示
微信公众号开发系列-13.基于RDIFramework.NET框架整合微信开发应用效果展示 1.前言 通过前面一系列文章的学习,我们对微信公众号开发已经有了一个比较深入和全面的了解. 微信公众号开发为 ...
- java 微信api框架_Java架构学习(五十二)使用框架开发微信微信框架介绍整合微信开发框架WxJava使用微信返回消息模板接口使用WxJava框架发送模板消息http协议参数转义知识...
一.微信框架介绍 1.access_token是公众号的全局唯一调用接口的凭证,它两个小时更新一次. 获取access_token方法: https请求方式: GET https://api.weix ...
- SpringBoot整合微信扫码登录
SpringBoot整合微信扫码登录 准备工作 基本思路流程 搭建SpringBoot 引入依赖 加入配置文件 代码实现 工具类 controller层 结果 准备工作 1.登录官网了解到,学习者想本 ...
- 项目整合微信扫码登录功能
项目整合微信登录功能 一.准备工作 https://open.weixin.qq.com 1.注册 2.邮箱激活 3.完善开发者资料 4.开发者资质认证 准备营业执照,1-2个工作日审批.300元 5 ...
- SpringBoot整合微信支付开发在线教育视频网站(完整版)
目录 ├─code.zip ├─第 1 章项目介绍和前期准备 │ ├─1-1 SpringBoot整合微信支付开发在线教育视频站点介绍.TS │ ├─1-2 中大型公司里面项目开发流程讲解.TS ...
- 微信服务号开发-整合微信支付
最近的项目在对接微信支付,所以抽出一些时间,将方法总结一下: 欢迎加群交流:724225958 官方开发文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi. ...
- 关于微店整合微信支付时出现的的各种问题的记录 php版
由于公司项目的需要,需要在项目里整合微信支付,公司原有的项目中已有老版本的支付功能,在此不作讨论.我需要作的就是加入新版本的支付功能 让项目里可以支持新老两种版本的功能.在微信官方下载到了新版支付的p ...
最新文章
- 浅析操作系统和Netty中的零拷贝机制
- gramer法则matlab,东南大学几何与代数matlab实验报告(大一专用).doc
- android onattach方法,Java Fragment.onAttach方法代码示例
- 源码varnish安装
- c++ 模板类实现堆栈实验报告_编译原理——小型类C编译器的设计和实现(生成8086汇编代码)之1:问题定义以及总体功能...
- 工作总结:日志打印的15个建议
- c语言编程单片机网线,【C语言】直播一下单片机编程
- 厚积薄发 - 关于runtime的几个问题
- WordPress教程 – WordPress新手指南(2021)
- AUTOSAR基础篇之StbM
- 小孔子内容管理系统第一次更新
- 医学统计学笔记之设计
- 四.链式法则及高阶导数
- 计算最高分,最低分,平均分
- OpenCv--提取水平和垂直线(通过膨胀和腐蚀操作)
- Udesk作为国内SaaS客户服务领域的翘楚,将对标海外巨头Oracle丨Xtecher 封面
- 咸鱼半学期总结+老年人康复训练
- Intra-mart开发环境搭建
- 长尾分布之DECOUPLING REPRESENTATION AND CLASSIFIER FOR LONG-TAILED RECOGNITION
- Android 手机应用开发经验 之 通过Socket(TCP/IP)与PC通讯