上个月接到一个项目,做一个基于微信的众筹系统,只做移动端的,根据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整合微信遇到的一系列问题相关推荐

  1. 微信支付php详解 php,ThinkPHP框架整合微信支付之刷卡模式图文详解

    本文实例讲述了ThinkPHP框架整合微信支付之刷卡模式.分享给大家供大家参考,具体如下: 大家好,这篇文章是继微信支付之Native 扫码支付 模式二之后的微信支付系列教程第四篇:微信刷卡支付 本教 ...

  2. Springboot----项目整合微信支付(引入延迟队列实现订单过期取消以及商户主动查单)

    前言 目前更新的是Springboot项目整合微信支付系列的文章,可以在我的主页中找到该系列其他文章,这一系列的文章将会系统介绍如何在项目中引入微信支付的下单.关单.处理回调通知等功能.由于前面创作经 ...

  3. 微信公众号开发系列-13、基于RDIFramework.NET框架整合微信开发应用效果展示

    微信公众号开发系列-13.基于RDIFramework.NET框架整合微信开发应用效果展示 1.前言 通过前面一系列文章的学习,我们对微信公众号开发已经有了一个比较深入和全面的了解. 微信公众号开发为 ...

  4. java 微信api框架_Java架构学习(五十二)使用框架开发微信微信框架介绍整合微信开发框架WxJava使用微信返回消息模板接口使用WxJava框架发送模板消息http协议参数转义知识...

    一.微信框架介绍 1.access_token是公众号的全局唯一调用接口的凭证,它两个小时更新一次. 获取access_token方法: https请求方式: GET https://api.weix ...

  5. SpringBoot整合微信扫码登录

    SpringBoot整合微信扫码登录 准备工作 基本思路流程 搭建SpringBoot 引入依赖 加入配置文件 代码实现 工具类 controller层 结果 准备工作 1.登录官网了解到,学习者想本 ...

  6. 项目整合微信扫码登录功能

    项目整合微信登录功能 一.准备工作 https://open.weixin.qq.com 1.注册 2.邮箱激活 3.完善开发者资料 4.开发者资质认证 准备营业执照,1-2个工作日审批.300元 5 ...

  7. SpringBoot整合微信支付开发在线教育视频网站(完整版)

    目录 ├─code.zip ├─第 1 章项目介绍和前期准备 │  ├─1-1 SpringBoot整合微信支付开发在线教育视频站点介绍.TS │  ├─1-2 中大型公司里面项目开发流程讲解.TS ...

  8. 微信服务号开发-整合微信支付

    最近的项目在对接微信支付,所以抽出一些时间,将方法总结一下: 欢迎加群交流:724225958 官方开发文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi. ...

  9. 关于微店整合微信支付时出现的的各种问题的记录 php版

    由于公司项目的需要,需要在项目里整合微信支付,公司原有的项目中已有老版本的支付功能,在此不作讨论.我需要作的就是加入新版本的支付功能 让项目里可以支持新老两种版本的功能.在微信官方下载到了新版支付的p ...

最新文章

  1. 浅析操作系统和Netty中的零拷贝机制
  2. gramer法则matlab,东南大学几何与代数matlab实验报告(大一专用).doc
  3. android onattach方法,Java Fragment.onAttach方法代码示例
  4. 源码varnish安装
  5. c++ 模板类实现堆栈实验报告_编译原理——小型类C编译器的设计和实现(生成8086汇编代码)之1:问题定义以及总体功能...
  6. 工作总结:日志打印的15个建议
  7. c语言编程单片机网线,【C语言】直播一下单片机编程
  8. 厚积薄发 - 关于runtime的几个问题
  9. WordPress教程 – WordPress新手指南(2021)
  10. AUTOSAR基础篇之StbM
  11. 小孔子内容管理系统第一次更新
  12. 医学统计学笔记之设计
  13. 四.链式法则及高阶导数
  14. 计算最高分,最低分,平均分
  15. OpenCv--提取水平和垂直线(通过膨胀和腐蚀操作)
  16. Udesk作为国内SaaS客户服务领域的翘楚,将对标海外巨头Oracle丨Xtecher 封面
  17. 咸鱼半学期总结+老年人康复训练
  18. Intra-mart开发环境搭建
  19. 长尾分布之DECOUPLING REPRESENTATION AND CLASSIFIER FOR LONG-TAILED RECOGNITION
  20. Android 手机应用开发经验 之 通过Socket(TCP/IP)与PC通讯

热门文章

  1. Linux 网站心跳检测 + 通知 shell脚本
  2. 黄河科技学院重修计算机,黄河科技学院获批六个省级一流本科专业建设点
  3. Android手机 全面屏(18:9屏幕)适配指南
  4. Thrift语法参考
  5. Photoshop的功能
  6. 西工大NOJ数据结构理论——018.建立二叉树的二叉链表(严6.65)
  7. 四元数与矩阵欧拉角之间的相互转换
  8. 找优雅点(原点在圆心的圆上的整数点)
  9. 尚观第6天学习笔记高级命令篇
  10. MySQL连接字符串,可以自定义连接时字符集编码