ThinkPHP5 整合微信扫码支付
来源:互联网 发布:淘宝搞笑收货人名字 编辑:程序博客网 时间:2024/06/03 17:35
摘要
- 为了便于微信开发,此处在ThinkPHP5.0 框架下整合了微信扫码支付的功能,测试需要外网项目部署.
- 对于TP3的集成,可参考之前写的文章 ThinkPHP 框架下微信支付
功能开发
微信支付SDK整理移植
- 一般会进行原生开发,那么就可以直接下载开发文档中的PHP-SDK,此处的代码进行了整理。
- 需要将 ..\application\extend 目录下的 wxpay 对应移植到自己的项目目录中.
配置 WxPayConfig
- 定位到 ..\application\extend\wxpay\WxPayConfig.php 文件,配置微信支付的四个重要数据.
- 注意:NOTIFY_URL 要写绝对路径
/** * 微信公众号信息配置 * * APPID:绑定支付的APPID(必须配置,开户邮件中可查看) * * MCHID:商户号(必须配置,开户邮件中可查看) * * KEY:商户支付密钥,参考开户邮件设置(必须配置,登录商户平台自行设置) * 设置地址:https://pay.weixin.qq.com/index.php/account/api_cert * * APPSECRET:公众帐号secert(仅JSAPI支付的时候需要配置, 登录公众平台,进入开发者中心可设置), * 获取地址:https://mp.weixin.qq.com/advanced/advanced?action=dev&t=advanced/dev&token=2005451881&lang=zh_CN * @var string */
生成二维码 url
- 以参考项目为例,在 ..\application\index\controller\Wxpay.php 中添加了index()方法,用于业务处理(例如获取post/get请求数据,并进行商品信息的获取等)以及调用微信接口生成二维码.
- 得到的qrCode_url 需要赋值到前端页面标签的url
- 注意外网可访问的要求.
public function index() { //TODO 进行业务处理 //TODO 生成二维码 $product_id = time()+1; $notify = new NativePay(); $input = new WxPayUnifiedOrder(); $input->setBody("product_name"); $input->setAttach("xxx"); //$input->setOutTradeNo(WxPayConfig::MCHID.date("YmdHis")); $input->setOutTradeNo($product_id); $input->setTotalFee("1");//以分为单位 $input->setTimeStart(date("YmdHis")); $input->setTimeExpire(date("YmdHis", time() + 600)); $input->setGoodsTag("test"); $input->setNotifyUrl(wxPayConfig::NOTIFY_URL); $input->setTradeType("NATIVE"); //$product_id 为商品自定义id 可用作订单ID $input->setProductId($product_id); $result = $notify->getPayUrl($input); if (empty($result['code_url'])){ $qrCode_url = ''; }else{ $qrCode_url = $result["code_url"]; } return $this->fetch('',[ 'qrCode_url' => $qrCode_url, ]);}
回调函数的编辑
- 以参考项目为例,对应于NOTIFY_URL 的设置,本人在 ..\application\index\controller\Wxpay.php 中添加了notify()方法。
- 用于异步接收微信支付后的逻辑处理
- file_put_contents(‘/tmp/2.txt’,$wxData,FILE_APPEND); 代码是为了将微信支付的反馈信息写入本地文件,便于分析处理.
/** * 微信支付 回调逻辑处理 * @return string */public function notify(){ $wxData = file_get_contents("php://input"); //file_put_contents('/tmp/2.txt',$wxData,FILE_APPEND); try{ $resultObj = new WxPayResults(); $wxData = $resultObj->Init($wxData); }catch (\Exception $e){ $resultObj ->setData('return_code','FAIL'); $resultObj ->setData('return_msg',$e->getMessage()); return $resultObj->toXml(); } if ($wxData['return_code']==='FAIL'|| $wxData['return_code']!== 'SUCCESS'){ $resultObj ->setData('return_code','FAIL'); $resultObj ->setData('return_msg','error'); return $resultObj->toXml(); } //TODO 根据订单号 out_trade_no 来查询订单数据 $out_trade_no = $wxData['out_trade_no']; //此处为举例 $order = model('order')->get(['out_trade_no' => $out_trade_no]); if (!$order || $order->pay_status == 1){ $resultObj ->setData('return_code','SUCCESS'); $resultObj ->setData('return_msg','OK'); return $resultObj->toXml(); } //TODO 数据更新 业务逻辑处理 $order }
附录
- 源代码下载(Github)
- 参考慕课网视频
- 可参考 ThinkPHP3.2.3 框架下微信支付
阅读全文
0 0
- ThinkPHP5 整合微信扫码支付
- thinkphp5 的微信支付整合
- thinkphp5使用easywechat集成微信扫码支付
- thinkphp5 生成条形码整合
- thinkphp5.0整合七牛云
- thinkphp整合系列之微信扫码支付
- thinkphp5+easywechat开发小程序支付
- ThinkPHP5之app第三方支付宝支付
- ThinkPHP5 支付宝支付扩展库(超简单,超好用~)
- thinkphp5.0调用支付宝接口(扫码支付)
- thinkphp5 整合plupload实现图片批量上传
- thinkphp5整合phpexcel 数据导入导出操作
- thinkphp5整合PHPMailer批量发送邮件
- 整合微信支付
- 微信支付V3微信公众号支付PHP教程/thinkPHP5公众号支付
- ThinkPHP5微信支付扩展库(超级简单, 超级超好用!)
- thinkphp5+easywechat:微信公众号内支付
- 最新thinkphp5整合webuploader,可预览拖拽搜索删除
- tf.summary
- Spring 注解@Value详解
- Suggestion: add 'tools:replace="android:value"' to <meta-data> element 报错解决方案
- 【转载】MyBatis学习
- 关于Label中文字的居中
- ThinkPHP5 整合微信扫码支付
- poj-3744
- gpio子系统之2440
- 网络营销实战课-文案实操1
- rpm包创建以及yum仓库的创建应用简单版
- python 区分对象和字典
- JavaScript 严格模式(use strict)
- Web前端初学总结
- 详解Oracle临时表的几种用法及意义