微信公众平台开发[4] —— 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的配合

  • html 文件:/M/View/Cart/pay.html

6).回调函数的编辑

【提示】

  1. 该路径必须要与配置文件中的回调路径一致
  2. 个人测试发现,此处 sessioncookie 的设置都失效,仅做参考
  3. 建议逻辑处理类不要做多余的初始化、构造方法的判断,容易造成回调失灵
  • 此回调函数,是根据微信是否真正完成支付后的数据更新,一般此处进行订单状态的修改,比如,我在此处异步执行的是将订单号的支付状态参数 由 0 置为 1.

【注意】

  1. 先前发现,因为微信服务的设计,会多次回调 notify() 以判断是否真正的支付成功,而简单的update操作是无法检测的。
  2. 为了同自己的平台相关联,同理需要进行状态的判断,否则不可避免的会多次执行 notify_wx() 中的逻辑处理**

7).增加 curl_get_contents()

  • 如果是整合到自己的项目中则需要在自己的公共函数中增加 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).运行结果截图

  • 在信息配置正确的情况下,功能结果如图所示

四.附录

1. 源代码参考 >>>

2. 提醒:

  1. 注意微信配置的正确性,如果有误,微信支付会有报错,二维码则会无法生成.
  2. 多参考官方文档加深理解也是不错的选择.
phpWechat 是由一个具有多年行业开发经验的前端 UI 设计师、PHP开发工程师组成的团队设计、研发的一套的微信公众平台管理系统,您可以瞬间完成一个公共号或者PC站或者两者皆有的平台搭建。 phpWeChat 微信+网站开发框架功能亮点: 1、100%开源,没有任何加密文件 phpWeChat核心文件100%开源,没有任何加密文件,开发者可以放心使用而无需担心留有后门程序等。 2、程序轻量级,一天读完所有代码 核心框架压缩包只有2.66M,十分利于开发者迅速阅读全部代码。 3、代码严谨,结构清晰 phpWeChat使用MVC开发模式,各个功能模块之间独立并目录结构统一。开发者可迅速掌握phpWeChat的框架结构。 4、二次开发文档十分完善 我们提供了完善的phpWeChat二次开发文档,便于开发者学习与查阅。 5、高度集成微信接口 phpWeChat高度集成了微信公共号的自动回复、菜单管理、素材管理、模板消息、粉丝管理、微信支付等常用接口,您只需一个函数或2/3行代码即可实现原本需要很费时费力才能开发的功能。 6、phpWeChat也是一个PC(网站)开发框架和CMS 慢慢您会发现,phpWeChat是一个更接近CMS功能的框架。 7、高度封装常用开发功能 只需一两行固定的代码,您便可以写出列表分页、微信支付、文件上传、邮件发送、短信发送等功能。 8、数据结构合理,负载强劲 phpWeChat集成了常见的内存级缓存(MemCache)、文件缓存处理方案,使得系统更符合大数据、大并发的公共号或网站使用。 9、集成应用市场,功能拓展一瞬间 phpWeChat集成了应用市场并在线安装应用的功能,您可以在一瞬间安装完成其他开发开发的功能模块。 phpWeChat安装方法: 将下载的程序压缩包(zip格式)解压后,将全部文件和文件夹上传至网站根目录。然后输入域名/install.php 即可进入安装程序。 注意:安装phpWeChat前请先创建好phpWeChat所需的数据库。 phpWeChat 目录结构: addons 功能模块目录 admin 公用后台目录 api 插件目录 data 数据缓存目录 install 安装程序目录,安装后请改名或删除 include 公用操作类目录 statics 静态文件目录 template 视图(模板)目录 upload 上传文件存放目录 phpWeChat 更新日志: 新版v1.0.3发布: phpWeChat PC+微信公众开发核心框架v1.0.3针对v1.0.2版本出现的问题,主要修复了和增加了以下功能: 1、优化自定义模块操作; 2、优化安装过程; 3、修复一处在线支付的PHP版本兼容问题; 4、修复一处自定义模块的问题; 5、修复后台模块管理显示未知版本的bug; 6、修复粉丝行为IP报错的Bug; 7、删除一些冗余代码; 8、修复消息模板不存在时,一直提示[同步中]的bug。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值