微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解

本文实例讲述了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

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).补充:

(1).提醒:所提供的源代码,剥离出了微信支付的核心,注意html页面中对jquery.js的正确引用,pay.html基本是从微信公众号官网直接下载的demo页,同时使用代码前请配置微信支付url,且外网测试。

(2).此功能开发中所遇到的各种坑!强烈建议参考、批评.【重要

三.微信扫码支付

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.提醒:

注意微信配置的正确性,如果有误,微信支付会有报错,二维码则会无法生成.多参考官方文档加深理解也是不错的选择。

更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP微信开发技巧汇总》、《php curl用法总结》、《PHP网络编程技巧总结》、《php字符串(string)用法总结》、《PHP中json格式数据操作技巧汇总》及《PHP针对XML文件操作技巧总结》

希望本文所述对大家PHP程序设计有所帮助。

(0)

相关推荐

  • 微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解

    本文实例讲述了PHP实现微信公众号支付功能.分享给大家供大家参考,具体如下: 直言无讳,我就是一个初涉微信开发的小白,写这篇博客的原因:一是为了给自己做下备忘记录,以便以后能回忆这条程序猿的坎坷路:二是希望能帮助到同是自学开发的小白们:三是对那些不屑一顾于我等尘埃的大牛们的控诉,小白的道路坎坷,你们凭什么总要一副高高在上的样子?我等敬而不畏... 背景介绍: 随着智能手机的普及,移动支付下的微信.支付宝所提供的便利需求不言而喻,好吧,至少我周围连个小摊贩的早餐都可以微信支付,而且人家手机还比我高

  • ThinkPHP框架下微信支付功能总结踩坑笔记

    本文实例讲述了ThinkPHP框架下微信支付功能总结.分享给大家供大家参考,具体如下: 摘要 此文主要为个人解决 ThinkPHP3.2.3 下微信支付所遇到的一些坑的解决方案,仅供参考 详情请参考 原文 : 微信公众平台开发教程之ThinkPHP框架下微信支付功能 踩坑记录 为便于参考,此处附录部分 weixinpay.class代码截图 ①. 验证不严谨,损失教训 补充时间:[2017-01-02] 情况描述 [我尊重你,但不认同你] 恰逢元旦期间,遭到微信支付被大牛攻破的情况,损失近 80

  • ThinkPHP框架实现的微信支付接口开发完整示例

    本文实例讲述了ThinkPHP框架实现的微信支付接口开发.分享给大家供大家参考,具体如下: 微信支付接口开发很简单我们只需要在官方申请权限然后参考官方的文章即可实现支付开发了,下面来看一个简单的例子,具体如下. 最近有个微商城做了微信支付的接口,现在整理一下发上来. 首先是需要有已开通微信支付接口的公众号,这个相信大家都知道,开通之后微信会发一封邮件到你的邮箱,邮件的内容就是开发需要用到的一些接口信息了(包含账号密码之类的东西). 开发步骤 一.进入公众号平台,先设置几个参数,包括绑定域名.设置

  • PHP生成随机码的思路与方法实例探索

    本文实例讲述了PHP生成随机码的思路与方法.分享给大家供大家参考,具体如下: 背景 今天因为无聊,小伙伴让写一个生成5位随机码的函数,要求:可包含数字.字母大小写,代码尽量短. 解题思路 (1) . 第一思路 都是印象中匹配ASCII码进行随机读取的实现方法,此处可提供一个方法作为参考: function get_rand_ascii($pw_length = 5){ $randpwd = ''; for ($i = 0; $i < $pw_length; $i++) { $randpwd .=

  • PHP远程连接oracle数据库操作实现方法图文详解

    本文实例讲述了PHP远程连接oracle数据库操作实现方法.分享给大家供大家参考,具体如下: 一.以下是基于 wampServer 的php 访问oracle数据库的操作步骤: 1.第一步:让PHP支持OCI 首先,安装PHP的集成运行环境,网上有很多集成,我安装的是WampServer的(具体的安装方法也可以参考之前写的另一篇文章),安装好后,从安装目录中找到php.ini文件,比如我本地的路径是D:\wamp\bin\php\php5.3.3,将php.ini中的php_oci8.dll的;

  • ThinkPHP5.0框架使用build 自动生成模块操作示例

    本文实例讲述了ThinkPHP5.0框架使用build 自动生成模块操作.分享给大家供大家参考,具体如下: 提示: 首先,下载的完整框架或者 Composer 运行创建命令生成的框架中,build.php 文件默认存放于根目录下. 需要复制 build.php 文件到 application 目录,并对该文件进行修改,举例如下: return [ // 生成应用公共文件 '__file__' => ['common.php', 'config.php', 'database.php'], //

  • PHP之认识(二)关于Traits的用法详解

    PHP是单继承的语言,在PHP 5.4 Traits出现之前,PHP的类无法同时从两个基类继承属性或方法.Traits的出现解决了这一问题. 1.通过在类中使用use关键字声明要组合的Trait名称,而具体某个Trait的声明使用trait关键词,Trait不能直接实例化.具体用法: <?php trait Person{ public $name="person"; public function talk(){ echo "我是{$this->name}<

  • PHP中str_split()函数的用法讲解

    PHP str_split() 函数 实例 把字符串 "Hello" 分割到数组中: <?php print_r(str_split("Hello")); ?> 定义和用法 str_split()函数把字符串分割到数组中. 语法 str_split( _string,length_ ) 实例 1 使用 length 参数: <?php print_r(str_split("Hello",3)); ?> 总结 以上就是这篇文

  • 在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法

    PHP 7.3是PHP的最新版本,如果你想装指定版本的PHP,这篇文章对你有很大的帮助.本文将帮助你在Ubuntu 18.04,16.04上通过PPA的方式安装PHP 7.3 7.2和7.0. 安装PHP 7.3 通过下列命令安装PHP 7.3 $ sudo apt-get install software-properties-common $ sudo add-apt-repository ppa:ondrej/php $ sudo apt-get update $ sudo apt-get

  • PHP实现网站应用微信登录功能详解

    本文实例讲述了PHP实现网站应用微信登录功能.分享给大家供大家参考,具体如下: 背景 近期进行 PC 端的网站开发,需要用到微信授权登录,考虑到前期手机端已经获得了大量的微信用户群,现在想着进行资源整合,满足同一个微信用户的数据同步 一.开发须知 1.概念区分 因为接触到微信开发的知识,必然会接触 OpenID 与 UnionID 的使用,以下为微信官方文档的的介绍,请注意区分: 在关注者与公众号产生消息交互后,公众号可获得关注者的 OpenID(加密后的微信号,每个用户对每个公众号的 Open

随机推荐