侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

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

微信(小程序)  /  管理员 发布于 3年前   217

本文实例讲述了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 ,同时调用微信生成二维码,在该页面的 标签中显示出来,具体代码见后面的附录

5).补充 wechatpaymenter 方法。



6).注意:

    模式二生成的二维码也是有时间限制的,同时,不能有权限拦截,并且,二维码的生成是根据订单号唯一确定的,如果生成一次,那么很可能第二次就不显示,建议可用 time()代替测试。

扫码支付模式参考

7).运行结果截图

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


四.附录

1.源代码参考 >>>

2.提醒:

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

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

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

您可能感兴趣的文章:

  • PHP远程连接oracle数据库操作实现方法图文详解
  • ThinkPHP5.0框架使用build 自动生成模块操作示例
  • PHP生成随机码的思路与方法实例探索
  • PHP实现网站应用微信登录功能详解
  • PHP之认识(二)关于Traits的用法详解
  • ThinkPHP框架下微信支付功能总结踩坑笔记
  • 微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
  • ThinkPHP框架实现的微信支付接口开发完整示例
  • 在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法
  • PHP中str_split()函数的用法讲解


  • 上一条:
    微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
    下一条:
    浅析JSONP解决Ajax跨域访问问题的思路详解
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 小程序开发之跳转微信直播示例api(0个评论)
    • 在uni_app中开发小程序之常用功能示例代码汇总(0个评论)
    • 小程序开发之多端框架:taro(0个评论)
    • 微信小程序前端使用七牛云官方SDK上传七牛云代码示例(0个评论)
    • 百度小程序审核未通过,真机审核存在点击返回键退出小程序...解决方式之一tabBar(0个评论)
    • 近期文章
    • 在laravel框架中的5个HTTP客户端技巧分享(0个评论)
    • 在go语言中使用FFmpeg库实现PCM音频文件编码为mp3格式文件流程步骤(0个评论)
    • gopacket免安装Pcap实现驱动层流量抓包流程步骤(0个评论)
    • 在laravel项目中实现密码强度验证功能推荐扩展包:password-strength(0个评论)
    • 在go语言中用filepath.Match()函数以通配符模式匹配字符串示例(0个评论)
    • Laravel Response Classes 响应类使用优化浅析(0个评论)
    • mysql中sql_mode的各模式浅析(0个评论)
    • 百度文心一言今天发布,个人第一批内测体验记录,不好别打我(0个评论)
    • 嘿加密世界让我们谈谈在共识中将中本聪主流化(0个评论)
    • 在go语言中寻找两个切片或数组中的相同元素/共同点/交集并集示例代码(0个评论)
    • 近期评论
    • 博主 在

      2023年国务院办公厅春节放假通知:1月21日起休7天中评论 @ xiaoB 你只管努力,剩下的叫给天意;天若有情天亦老,..
    • xiaoB 在

      2023年国务院办公厅春节放假通知:1月21日起休7天中评论 会不会春节放假后又阳一次?..
    • BUG4 在

      你翻墙过吗?国内使用vpn翻墙可能会被网警抓,你需了解的事中评论 不是吧?..
    • 博主 在

      go语言+beego框架中获取get,post请求的所有参数中评论 @ t1  直接在router.go文件中配就ok..
    • Jade 在

      如何在MySQL查询中获得当月记录中评论 Dear zongscan.com team, We can skyroc..
    • 2017-10
    • 2018-01
    • 2020-03
    • 2021-06
    • 2021-10
    • 2022-03
    • 2023-02
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客