之前写了两篇文章都不是关于技术类的,这个号主要还是以分享技术为主,第三篇必须得上技术类的文章,不然会对不起大家的,所以就有了今天的文章。
现在微信支付开发很火,也不是特别难,网上也很多别人整理的教程,也有官方开发文档。主要是每个人在开发的过程中常常会遇到一些不同的小问题,然后怎么去解决这才是最关键的。作为web开发者,尤其是后端开发者,不会微信支付开发的话就真的很low。
最近做了一个在线租车的微信项目,项目其中正好有微信支付这个功能,我在做的过程中也遇到了一些小问题,虽说之前也做过,但之前都没遇到过这些问题。最后经过自己的思考和网上查资料,一个一个方法的去调试,最后完美的解决了。
以下是我做微信支付功能的相关效果截图:
以下是我的开发步骤:
注明:我用的是Thinkphp框架搭的项目,所以这个微信支付功能是在TP的基础上实现的。
第一步:需要以下资料
‘WX_APPID‘ => ‘微信公众号应用ID‘
‘APPSECRET‘ => ‘微信公众号应用密钥‘
‘MCHID‘ => ‘微信商户ID‘
‘KEY‘ => ‘微信商户密钥‘
微信商户密钥如何设置:
第二步:支付目录授权配置
第三步:上传类库
路径:/Libs/ThinkPHP/Library/Vendor/WxPayPubHelper
微信支付-JSAPI模式没有用到证书,也可以不用上传证书。
路径:/Libs/ThinkPHP/Library/Vendor/SendMessage
这个是微信公众号主动给用户推送消息的类,当订单支付完成时执行这个方法,给用户推一个消息,通知用户订单支付成功,此功能我主要是为了用户体验而加的。
第四步:配置文件
第五步:控制器
第六步:支付页面
到此为止,微信JSAPI支付功能就全部做好了。
我在做微信支付的过程中出现了一个比较麻烦的问题,耗费了我半天的时间才解决的,就是在支付过程中回调通知地址的URL不规则,导致虽然支付成功了,但获取不到订单信息以及对订单信息的处理。微信支付要求回调通知URL必须不能带参数,如:“http://你的域名/index.php/home/WxJsAPI/notify/”。因为我用的是Thinkphp的路由模式3,此路由带了参数,如:“http://你的域名/index.php?s=/home/WxJsAPI/notify/”。(凡是URL里带有“?”的,都算是带了参数)
我最后的解决方法是,重写服务器的URL,让Thinkphp的三种模式都兼容。所以我就在Nginx的配置文件里rewrite了URL,如:
当然,如果你是第一次做,肯定会遇到各种问题,如果你是新手,遇到的问题都不知道为什么,即使你做过了再做我相信还是可能由于细节上的疏忽会出现问题的,不过不要烦躁,耐心的去发现问题,耐心的去调试,最后一定可以解决的。
完整代码包下载:http://pan.baidu.com/s/1i5rn3w
现在是信息大爆炸时代,信息泛滥,在这样的社会环境下,好的原创文章是最需要的,最不应该被淹没的,所以我就开始写文章了。这是我写的第三篇文章,是一篇关于微信支付的技术类文章,目的是分享给有需要的朋友,大家可以一起交流进步。可能很多地方写的不好,请大家多多指出。
我一直认为写文章是最好的思考方式,不光在分享,也在沉淀自己。张德Talk上的文章主要是分享技术、产品、创业和生活的相关有趣故事和经历。