前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >微信公众平台开发[4] —— ThinkPHP 框架下微信支付

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

作者头像
泥豆芽儿 MT
发布于 2018-09-11 03:16:33
发布于 2018-09-11 03:16:33
2.8K00
代码可运行
举报
运行总次数:0
代码可运行

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1333668

【声明】:

  • 原文主要摘自 白俊遥博客 ,部分内容针对个人事例已作修改,主要用于自己的参考,欢迎指正。
  • 注意:微信公众号支付,强烈建议使用外网可访问的链接测试,否则即便代码正确也无法调出支付界面,可使用草料二维码生成可扫描图片,也可直接在微信中输入网址。
  • 使用框架: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
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
'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.

【注意】

代码语言:txt
AI代码解释
复制
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. 多参考官方文档加深理解也是不错的选择.
  3. 微信官方支付Demo的使用,可参考文章 微信公众平台开发[3] —— 微信公众号支付功能
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年09月16日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
thinkphp整合系列之微信扫码支付
thinkphp整合系列之微信扫码支付 一:导入sdk /ThinkPHP/Library/Vendor/Weixinpay 鹅厂的sdk那酸爽谁用谁知道;就不吐槽了;项目中的sdk是我根据官方文档重构精简打造而成的; 二:配置项 /Application/Common/Conf/config.php 'WEIXINPAY_CONFIG' => array(        'APPID'         => '', // 微信支付APPID        'MCHID'         => '
96php.cn
2018/04/28
1.4K0
ThinkPHP5 整合微信扫码支付
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/details/77453720
泥豆芽儿 MT
2018/09/11
2K0
ThinkPHP5 整合微信扫码支付
踩坑筆記 —— ThinkPHP 框架下微信支付
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/details/78757381
泥豆芽儿 MT
2018/09/11
8550
踩坑筆記 —— ThinkPHP 框架下微信支付
微信公众平台开发[5] —— 微信扫码支付介绍
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/details/53389629
泥豆芽儿 MT
2018/09/11
4.1K0
微信公众平台开发[5] —— 微信扫码支付介绍
ThinkPHP框架实现的微信支付接口开发完整示例
本文实例讲述了ThinkPHP框架实现的微信支付接口开发。分享给大家供大家参考,具体如下:
程序猿的栖息地
2022/04/29
2.3K0
ThinkPHP框架实现的微信支付接口开发完整示例
ThinkPHP 5.1 框架下引入官方微信支付,实现支付功能,代码详解
关于微信支付的教程,网上资源也是铺天盖地,知道了其中的原理,就能发现方法都是大同小异。微信支付 SDK 没有命名空间,那么要想将 SDK 放入到现有框架中,就需要修改一些代码。本文将演示 ThinkPHP 5.1 框架下引入微信支付。
程序猿的栖息地
2022/04/29
6670
ThinkPHP 5.1 框架下引入官方微信支付,实现支付功能,代码详解
微信支付使用入门教程
我们要完成微信支付,那么我们客户自己是付款方,那么收款方呢?所以在这里我们需要一个收款方。那么要能够成为微信扫码支付的收款方,我们需要去申请微信的服务号,然后去开通扫码支付。(这个服务号个人无法申请,在这里不做教程说明)
用户4283147
2022/10/08
3.1K0
微信支付使用入门教程
小程序微信支付 实例配置详解
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/details/80944832
泥豆芽儿 MT
2018/09/11
1.9K0
小程序微信支付 实例配置详解
微信支付之扫码、APP、小程序支付接入详解
做电商平台的小伙伴都知道,支付服务是必不可少的一部分,今天我们开始就说说支付服务的接入及实现。目前在国内,几乎90%中小公司的支付系统都离不开微信支付和支付宝支付。那么大家要思考了,为什么微信支付和支付宝支付能作为大多数公司接入的首选呢?其实这个问题大多小伙伴应该是很清楚的,说白了就是人家有庞大的用户流量,目前微信在国内的用户已突破10亿,支付宝也接近8亿左右,如此庞大的用户群体,你还会选择其他的第三方支付(微博钱包、财付通、快钱等)吗,作为普通客户,大家都希望能方便快捷,谁会为了在一个平台买点东西下载或开通其他服务呢,除非你给他有诱惑性的好处。今天我们先说说微信支付的接入及实现。
攻城狮的那点事
2019/08/26
2.1K0
微信支付之扫码、APP、小程序支付接入详解
Thinkphp5集成微信支付:公众号支付、小程序支付、扫码支付、账户转账、手机站支付、刷卡支付等
天分享了一篇Thinkphp5实现支付宝支付的功能,今天接着利用昨天的代码再分享一篇Thinkphp实现微信支付的功能,实现了如下功能:【公众号支付】、【手机站支付】、【APP支付】、【刷卡支付】、【扫码支付】、【账户转账】、【小程序支付】、【普通红包】、【裂变红包】
程序猿的栖息地
2022/04/29
2.6K0
整合ThinkPHP功能系列之微信公众号支付
微信公众号支付不同于H5支付,博客之前发过关于H5支付的,并且也在Github上开源单文件,前段时间也更新了一部分代码,今天来发一篇Thinkphp框架整合微信公众号支付 微信公众号支付是通过调用微信支付提供的JSAPI接口来调起微信支付模块从而来完成支付,多数情况都是在微信中开发商城所使用,因此页面必须是在微信中打开的,不然是不可能调起来支付的 导入SDK 第一步依旧是导入集成好的SDK,路径是/ThinkPHP/Library/Vendor/Weixin/WeChatPay 配置项 导入以后,主要的还是
沈唁
2018/06/19
1.3K0
JS交互微信之JSAPI支付
本篇为JS交互微信系列篇的第四篇微信JSAPI支付,记录在微信内置浏览器内用调用微信支付过程。
流眸
2020/03/06
5.8K0
微信扫码支付(模式一)遇到的那些坑
在这个二维码风起云涌的时代,在线支付已经成为潮流,没事扫一扫,打赏一下我也不介意。 timg.jpg 酝酿 谈坑之前先聊一聊模式一的大体流程,模式一的适用场景一般为自助售卖机或者固定价格的商品的线下交
小柒2012
2018/04/16
5K2
微信扫码支付(模式一)遇到的那些坑
金融项目-微信支付-思路
公众号接入支付: https://pay.weixin.qq.com/static/applyment_guide/applyment_detail_public.shtml
张哥编程
2024/12/07
2250
微信扫码支付、网站接入微信支付-java
如果你的网站想接入微信支付,那么你的有个公众号(微信公众平台),然后开通支付功能,在微信商户平台操作。仔细看哦,这是两个平台,商家平台有详细的接入流程,这里只介绍程序方面。 1、准备 准备商家帐户 下载证书,重置密钥(密钥重置后请妥善保管) 内网穿透软件(微信支付成功后会有回调) 2、代码 加入依赖 微信支付比较麻烦,所以我们采用第三方封装的jar包 compile group: 'com.github.binarywang', name: 'weixin-java-pay', version: '3.0.
用户2235302
2018/06/13
6.8K1
微信公众号开发之扫码支付
上一篇文章介绍了微信提供的那些支付方式以及公众号支付http://www.jianshu.com/p/cb2456a2d7a7
Javen
2018/08/21
3.2K0
微信公众号开发之扫码支付
SpringCloud(七) - 微信支付
1、开发文档 微信开发文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1 安全规范:https://pay.weixin.q
化羽羽
2022/11/16
3420
SpringCloud(七) - 微信支付
【java微信支付】微信支付之扫码支付相关代码
最近开发网站过程,需要引入支付过程,第三方支付中最火的莫过于支付宝支付和微信支付,下边借助微信支付官网上的文档,写一下接入微信支付之扫码支付的流程
用户5640963
2019/07/26
5.2K0
Win10环境前后端分离项目基于Vue.js+Django+Python3实现微信(wechat)扫码支付流程(2021年最新攻略)
    之前的一篇文章:mpvue1.0+python3.7+Django2.0.4实现微信小程序的支付功能,主要介绍了微信小程序内部支付的流程,然而实际上微信小程序有一定的局限性,也就是用户范围仅限于小程序内部生态圈,在生活中真正具有广泛性、高效性、使用方便性的支付方式还得是扫码支付,扫码的优点在于推广成本低,上至钓鱼台国宾馆,下至发廊地摊都能用,打印出来就完事了,而相比其他支付方式,现金的找零及假钞问题,信用卡的办理门槛、pos机的沉没成本,就算微信可集成的h5支付和小程序支付,奈何很多老年人根本不会用小程序和手机浏览器,更别说再进行支付操作了,所以基于二维码的扫码支付的确是非常符合国情的。
用户9127725
2022/08/08
6740
Win10环境前后端分离项目基于Vue.js+Django+Python3实现微信(wechat)扫码支付流程(2021年最新攻略)
java调用微信支付接口(调用微信支付)
前言百度搜了一下微信支付,都描述的不太好,于是乎打算自己写一个案例,希望以后拿来直接改造使用。 因为涉及二维码的前端显示,所以有前端的内容
全栈程序员站长
2022/07/28
6.8K0
java调用微信支付接口(调用微信支付)
推荐阅读
相关推荐
thinkphp整合系列之微信扫码支付
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验