微信公众平台开发[4] —— ThinkPHP 框架下微信支付

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/details/53381076

    提示:文章布局尴尬症患者,请转移>>>MarkDown文章链接 <<<

    声明:原文主要摘自白俊遥博客 ,部分内容针对个人事例已作修改,主要用于自己的参考,欢迎指正。

    注意:微信公众号支付,强烈建议使用外网可访问的链接测试,否则即便代码正确也无法调出支付界面,可使用草料二维码生成可扫描图片,也可直接在微信中输入网址。

    使用框架: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.提醒:   注意微信配置的正确性,如果有误,微信支付会有报错,二维码则会无法生成.多参考官方文档加深理解也是不错的选择。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏阿杜的世界

Java Web项目中Maven使用经验

8710
来自专栏FreeBuf

利用Cobalt strike一步步教你发送钓鱼邮件

*本文原创作者:rj00,本文属FreeBuf原创奖励计划,未经许可禁止转载 前几天,在freebuf上就发表了新的Cobalt strike,提权利器Coba...

43050
来自专栏杨建荣的学习笔记

一个简单的MySQL参数导致的连接问题解惑(r7笔记第33天)

最近在做一套MySQL环境的数据迁移,需要把一部分数据从一个站点迁移到另外一个站点,新站点是一套全新的环境,对于MySQL的安装采用了同事建议的 二进制方式。当...

35170
来自专栏blackheart的专栏

[认证授权] 3.基于OAuth2的认证(译)

OAuth 2.0 规范定义了一个授权(delegation)协议,对于使用Web的应用程序和API在网络上传递授权决策非常有用。OAuth被用在各钟各样的应用...

416100
来自专栏拂晓风起

jira 3.13.5版 安装 配置 用户权限控制

13330
来自专栏FreeBuf

30秒攻破任意密码保护的PC:深入了解5美元黑客神器PoisonTap

近日,著名硬件黑客Samy Kamkar利用5美元设备打造的黑客工具PoisonTap,只需30秒,就可以攻破设置有任意密码的电脑系统,并实现长期后门安装。Po...

266100
来自专栏自由而无用的灵魂的碎碎念

老电脑如果从windows7升级到windows10不断重启进不了系统,还是想用windows10,怎么办?

先说一下我的配置:08年的acer aspire 5520g,很老的电脑,除了内存加到4g,其他都不变。官方只支持到windows7,并且官方说明该型号不在官方...

12510
来自专栏Seebug漏洞平台

GPON Home Gateway 远程命令执行漏洞分析

2018/04/30,vpnMentor公布了 GPON 路由器的高危漏洞:验证绕过漏洞(CVE-2018-10561)和命令注入漏洞(CVE-2018-105...

48180
来自专栏Java后端技术栈

Apache Kafka:下一代分布式消息系统

Apache Kafka是分布式发布-订阅消息系统。它最初由LinkedIn公司开发,之后成为Apache项目的一部分。Kafka是一种快速、可扩展的、设计内在...

11610
来自专栏tkokof 的技术,小趣及杂念

疑难杂症又一记

下了 OGRE 的 1.10.11 版本,使用 CMake 生成了相应的工程文件,遂而编译源码和示例,一切都挺顺利,但是当尝试 Debug 模式下执行 Samp...

6610

扫码关注云+社区

领取腾讯云代金券