内容简介:ThinkPHP 框架下微信支付
声明:
原文主要摘自 白俊遥博客 ,部分内容针对个人事例已作修改,主要用于自己的参考,欢迎指正。
注意:微信公众号支付,强烈建议使用外网可访问的链接测试,否则即便代码正确也无法调出支付界面,可使用草料二维码生成可扫描图片,也可直接在微信中输入网址。
使用框架: ThinkPHP 3.2.3
一.微信公众平台信息配置
1).进入微信公众平台
由左侧的“微信支付”进入配置界面,添加或修改正确的支付授权目录
注意该目录的要求,多建议精确到上一级目录,并加斜线 /
2).授权域名
[ 注意 :]域名的确定都是工信部备案过的
初次开发的很容易漏掉“www”,而截图中不加“www”是因为我们备案的原因,记得只去掉“http://”。
二.ThinkPHP框架,相应代码配置
公众号支付->场景参考
1).weixinpay.PHP文件处理
导入weixinpay.PHP 文件到 “/ThinkPHP/Library/Vendor/Weixinpay/”目录下
2).配置
在项目的配置文件中,添加类此如下的代码,,其中的值需要自己根据实际公众号的信息进行配置
注意:很多人会搞错MCHID而造成不必要的时间浪费,具体开发参照官方文档。
文件目录:/Application/Common/Conf/config.PHP
'WEIXINPAY_CONFIG' => array( 'APPID' => 'wxdxxxxxxx89', // 公众号APPID 微信支付APPID 'MCHID' => '1xxxxxxx2', // 微信支付MCHID 商户收款账号 'KEY' => 'MCxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxlW', // 微信支付KEY 'APPSECRET' => 'exxxxxxxxxxxxxxxxxxxxxxxxx7', // 公众帐号secert (公众号支付专用) 'NOTIFY_URL' => 'http://www.xxx.com/m/cartpay/notify_wx', // 接收支付状态的连接 'TOKEN' => 'zmxxx',//公众号设置的token值 ),
3).支付函数的编辑
即进行点击支付后的界面,其自动调用微信的默认支付框架。
[注意]:进行支付逻辑的处理,一定要记住,要求使用GET方式请求此页面,即使用get方式将总金额、订单号提交过来进行处理,$data可以接收
4).getParameters修改
上述文件,需要修改其中的getParameters()方法,其中标记的位置,是根据实际的业务情况而从数据库获取的。具体代码后面会有提供。
5).上述函数,需要HTML的配合:/M/View/Cart/pay.HTML
6).回调函数的编辑
注意: 该路径必须要与配置文件中的回调路径一致
此回调函数,是根据微信是否真正完成支付后的数据更新,一般此处进行订单状态的修改,比如,我在此处异步执行的是将订单号的支付状态参数由0置为1.
[个人测试发现,此处session和cookie的设置都失效,仅做参考]
[注意]:先前发现,因为微信服务的设计,会多次回调notify()以判断是否真正的支付成功,而简单的update操作是无法检测的。
为了同自己的平台相关联,同理需要进行状态的判断,否则不可避免的会多次执行notify_wx()中的逻辑处理**
7).如果是整合到自己的项目中则需要在自己的公共函数中增加 curl_get_contents()
8).补充:
提醒:所提供的源代码,剥离出了微信支付的核心,注意HTML页面中对Jquery.js的正确引用,pay.HTML基本是从微信公众号官网直接下载的demo页,同时使用代码前请配置微信支付url,且外网测试。
此功能开发中所遇到的各种坑!强烈建议参考、批评
三.微信扫码支付
1).场景分析
场景参考
一般的网站开发中,如果是手机端,多数使用上面提到的公众号支付方式,而扫码支付多数出现在PC端,当然也有部分手机网站有生成二维码的需求
但是由于微信浏览器的识别限制,一种情况是直接在微信端浏览的购物网站,通过长按二维码就可以识别;另一种情况是在另外的手机端浏览器,比如百度、头条。
如此一来除非用另一部手机进行扫码支付,或者将二维码截图保存后,再到微信中找到图片进行长按识别。显然后者用法过于繁琐,所以处分针对于微信浏览器开发,否则不建议使用扫码支付功能,而在PC端开发则适合使用该功能
2).功能开发
通用上文中介绍的功能开发步骤 1)、2)、3)、6)、7)
3).补充函数
在common/function.PHP中补充函数 weixinpay()和 qrcode()
4).设计显示微信扫码的页面
我定的页面为M/Order/mobilepayment.HTML,即通过访问Order/wechatpaymenter
同时调用微信生成二维码,在该页面的 <img/> 标签中显示出来,具体代码见后面的附录
5).补充wechatpaymenter方法。
6).注意:
模式二生成的二维码也是有时间限制的,同时,不能有权限拦截,并且,二维码的生成是根据订单号唯一确定的,如果生成一次,那么很可能第二次就不显示,建议可用time()代替测试。
扫码支付模式参考
7).运行结果截图
在信息配置正确的情况下,功能结果如图所示
四.附录
源代码参考 >>>
提醒:
注意微信配置的正确性,如果有误,微信支付会有报错,二维码则会无法生成.多参考官方文档加深理解也是不错的选择.
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- ThinkPHP实现支付宝接口功能 - ThinkPHP框架
- 浅谈Scrum 框架 推动易宝支付发展的“秘密”技术
- 支付宝客户端架构解析:Android 容器化框架初探
- 支付宝客户端架构解析:iOS 容器化框架初探
- 支付宝小程序框架浅析及如何在 mPaaS 内深度集成
- 小程序开发框架 Okam 0.3 发布,开始支持支付宝小程序
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Imperfect C++中文版
威尔逊 / 荣耀、刘未鹏 / 人民邮电出版社 / 2006-1 / 75.0
汇集实用的C++编程解决方案,C++虽然是一门非凡的语言,但并不完美。Matthew Wilson使用C++十年有余,其间发现C++存在一些固有的限制,需要一些颇具技术性的工作进行弥补。本书不仅指出了C++的缺失,更为你编写健壮、灵活、高效、可维护的代码提供了实用的技术和工具。Wilson向你展示了如何克服C++的复杂性,穿越C++庞大的范式阵列。夺回对代码的控制权,从而获得更理想的结果。一起来看看 《Imperfect C++中文版》 这本书的介绍吧!
URL 编码/解码
URL 编码/解码
HEX CMYK 转换工具
HEX CMYK 互转工具