# ThinkPHP 5 & 微信扫码支付模式2
类库是基于微信扫码支付模式2结合ThinkPHP 5 修改部分内容,仅适配 ThinkPhP 5
个人博客主页: http://www.loveteemo.com
## 安装方法
composer安装:
``` bash
composer require loveteemo/wxnative
```
添加公共配置:
``` php
// 微信扫码支付
'weixinpay' => [
'appid' => 'wx426b3015555a46be',
'mchid' => '1900009851',
'key' => '8934e7d15453e97507ef794cf7b0519d',
'notifyurl' => 'http://www.xx.com/index/weixinpay/notify'
],
```
## 示例
### 微信支付控制器:
```
<?php
/**
* Created by PhpStorm.
* User: 隆航
* Date: 2016/12/11 0011
* Time: 17:21
*/
namespace app\index\controller;
use think\Controller;
use loveteemo\wxnative\Native;
class Weixinpay extends Controller
{
// 此控制器的回调地址需要没有权限验证
// 远程请求支付接口的时候ajax返回微信支付的URL地址
public function dowithpay()
{
// 过滤请求
// todo 根据传递的订单号,信息查询 状态为 未支付 微信支付
$info = "我是订单信息";
// todo 判断订单是否存在 且支付是否超时
// 测试支付假数据 实际项目自己替换
$order = array(
// 订单主体
'body' => "测试支付",
// 订单金额 单位是分
'total_fee' => 1,
// 商品订单号
'out_trade_no' => time(),
// 商品ID 扫码支付必须的参数!
'product_id' => 1,
// 支付方式 模式2 扫码支付
'trade_type' => 'NATIVE',
// 订单支付结束时间
'time_expire' => date("YmdHis",time()+1800)
);
$config_weixin = config("auth.weixinpay");
$Native1 = new Native($config_weixin);
$result = $Native1->unifiedOrder($order);
// todo 把微信返回的第三方订单号存入数据库
// 返回前端扫码支付的URL地址和订单号
$arr['url'] = urldecode($result['code_url']);
$arr['out_trade_no'] = $order['out_trade_no'];
return json(['err' => 0 ,"result" => $arr ]);
}
}
```
以上的todo逻辑需要自己完善,建议数据库操作添加事务
异步操作
``` php
//微信异步地址
public function notify()
{
$config_weixin = config("weixinpay");
$Native = new Native($config_weixin);
$result=$Native->notify();
// 异步验签通过
if ($result) {
// 返回 result_code 值为业务结果 return_code 为通信结果
if($result['result_code'] == 'SUCCESS'){
$info = "我是订单信息"; //订单号 微信支付 未支付
if(!empty($info)){
// todo 订单存在 修改状态
return json(["err" =>0 ,"msg" => "修改订单完成"]);
}else{
// todo 订单不存在 或者订单已修改
return json(["err" => 1,"msg" => "订单不存在 或者订单已修改"]);
}
}else{
// 异步收到订单".$result['out_trade_no']."支付失败通知,错误代码:".$result['err_code'].",错误描述:".$result['err_code_des']
}
}else{
// 异步验证不通过
}
}
```
订单查询
``` php
// 订单状态查询
public function orderquery()
{
$out_trade_no = $_POST['out_trade_no'];
//检测必填参数
if(empty($out_trade_no)) {
return json(["err" => 1,"msg" => "查询订单号不能为空"]);
}
$config_weixin = config("weixinpay");
$Native = new Native($config_weixin);
$result = $Native->orderquery($out_trade_no);
// return_code 为通信结果
if($result['return_code']== 'SUCCESS'){
// result_code 值为业务结果
if($result['result_code'] == 'SUCCESS'){
if($result["trade_state"] == "SUCCESS" ){
// 支付完成
$info = "我是订单信息"; // 微信支付 未支付 订单号
if(!empty($info)){
// todo 支付完成 修改数据库状态
return json(["err" => 0,"msg" => "支付完成 修改数据库状态"]);
}else{
// todo 支付完成 数据库状态已经改了
return json(["err" => 0,"msg" => "支付完成 修改数据库状态"]);
}
}elseif ($result['trade_state'] == "REFUND"){
return json(["err" => 0,"msg" => "查询完成 订单转入退款"]);
}elseif ($result['trade_state'] == "NOTPAY"){
return json(["err" => 0,"msg" => "查询完成 订单未支付"]);
}elseif ($result['trade_state'] == "CLOSED"){
return json(["err" => 0,"msg" => "查询完成 订单已关闭"]);
}elseif ($result['trade_state'] == "USERPAYING"){
return json(["err" => 0,"msg" => "查询完成 订单正在支付中"]);
}elseif ($result['trade_state'] == "PAYERROR"){
return json(["err" => 0,"msg" => "查询完成 订单支付失败"]);
}
}else{
return json(["err" => 0,"msg" => "查询失败,错误代码".$result['err_code'].",错误描述:".$result['err_code_des']]);
}
}else {
return json(["err" => 0,"msg" => "查询时,通信失败"]);
}
}
```
获取到的微信返回数据
``` html
array(10) {
["return_code"] => string(7) "SUCCESS"
["return_msg"] => string(2) "OK"
["appid"] => string(18) "wx426b3015555a46be"
["mch_id"] => string(10) "1900009851"
["nonce_str"] => string(16) "Z8xR7Nkayk4KtZkM"
["sign"] => string(32) "0A94E6CFE436AD8EE18763E129AECA2C"
["result_code"] => string(7) "SUCCESS"
["prepay_id"] => string(36) "wx2017010415123488a12f9e590574695206"
["trade_type"] => string(6) "NATIVE"
["code_url"] => string(35) "weixin://wxpay/bizpayurl?pr=ijomHdL"
}
```
返回给前段的微信支付二维码需要用JS或者PHP生成出来,手机扫码支付。同时轮询请求查询订单接口。
查询到支付完成后,数据处理,且返回支付完成提示。
没有合适的资源?快使用搜索试试~ 我知道了~
20200504最新基于ThinkPHP5.0框架开发的自适应WAP手机端响应式界面博客系统PHP源码.zip
共685个文件
php:265个
png:93个
gif:83个
需积分: 5 17 下载量 191 浏览量
2020-05-04
16:56:52
上传
评论 2
收藏 2.96MB ZIP 举报
温馨提示
源码介绍 分享一款基于ThinkPHP5.0框架开发的自适应WAP手机端响应式界面博客系统PHP源码 查看更多关于 博客系统PHP源码 的文章 ,前端界面采用BootStrap框架设计,使得博客系统界面能自适应区分PC端和WAP手机端界面,针对不同尺寸设备响应不同的界面布局,后台系统基于ThinkPHP框架开发,程序运行速度更快,适合正在学习ThinkPHP框架拿来学习研究之用! 适用范围 博客系统PHP源码 查看更多关于 博客系统PHP源码 的文章 、TP5博客系统 查看更多关于 TP5博客系统 的文章 运行环境 PHP+MYSQL
资源详情
资源评论
资源推荐
收起资源包目录
20200504最新基于ThinkPHP5.0框架开发的自适应WAP手机端响应式界面博客系统PHP源码.zip (685个子文件)
bootstrap.css 124KB
bootstrap.min.css 99KB
bootstrap.min.css 99KB
loveteemo.main.css 33KB
unicorn.main.css 33KB
wangEditor.css 18KB
my.css 18KB
select2.css 18KB
select2.css 18KB
bootstrap-responsive.min.css 16KB
bootstrap-responsive.min.css 16KB
wangEditor.min.css 15KB
layer.css 14KB
loveteemo.css 11KB
uniform.css 11KB
fullcalendar.css 8KB
laydate.css 6KB
datepicker.css 4KB
loveteemo.blue.css 4KB
unicorn.blue.css 4KB
loveteemo.red.css 4KB
unicorn.red.css 4KB
laydate.css 3KB
laydate.css 3KB
laydate.css 3KB
loveteemo.grey.css 3KB
unicorn.grey.css 3KB
style.css 3KB
jquery.gritter.css 2KB
colorpicker.css 2KB
unicorn.login.css 2KB
solarized_light.css 2KB
webuploader.css 515B
weiboemotions.data 33KB
qqemotions.data 30KB
iconfont.eot 16KB
icomoon.eot 15KB
hiddeninput.exe 9KB
err404.gif 26KB
bg-foot.gif 13KB
59.gif 10KB
22.gif 10KB
24.gif 8KB
13.gif 7KB
16.gif 7KB
39.gif 6KB
64.gif 6KB
63.gif 6KB
50.gif 6KB
loading-0.gif 6KB
4.gif 6KB
1.gif 5KB
42.gif 5KB
71.gif 5KB
21.gif 5KB
20.gif 5KB
29.gif 5KB
70.gif 4KB
5.gif 4KB
17.gif 4KB
27.gif 4KB
9.gif 4KB
44.gif 4KB
11.gif 4KB
8.gif 4KB
3.gif 4KB
23.gif 4KB
34.gif 4KB
41.gif 4KB
38.gif 4KB
65.gif 3KB
32.gif 3KB
45.gif 3KB
7.gif 3KB
12.gif 3KB
26.gif 3KB
60.gif 3KB
2.gif 3KB
40.gif 3KB
25.gif 3KB
19.gif 3KB
66.gif 3KB
18.gif 3KB
46.gif 3KB
10.gif 3KB
28.gif 3KB
51.gif 3KB
57.gif 3KB
67.gif 3KB
0.gif 3KB
48.gif 3KB
43.gif 3KB
30.gif 2KB
61.gif 2KB
33.gif 2KB
69.gif 2KB
14.gif 2KB
47.gif 2KB
36.gif 2KB
49.gif 2KB
共 685 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
live_136
- 粉丝: 11
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- PLC立体车库智能仿真 博途V15 3×2立体车库 西门子1200PLC 触摸屏仿真 不需要实物 自带人机界面 小车上下行有电梯效果 每一个程序段都有注释 FC块标准化编写 自带变频器输出也可以仿真
- 配电网有功电压控制的多智能体强化学习(代码) 针对电压主动控制问题的不同场景,采用7种最先进的MARL算法进行了大规模实验,将电压约束转化为势垒函数,并从实验结果中观察到设计合适的电压势垒函数的重要性
- COMSOL 远场偏振通用计算方法,包含远场偏振图,能带,matlab 程序 展示包含仿真文件截图,所见即所得
- 西门子V90效率倍增-伺服驱动功能库详解-简易非循环功能库之绝对值编码器校准.mp4
- 运输工具检测17-YOLO(v5至v9)、COCO、CreateML、Paligemma、TFRecord数据集合集.rar
- 储能选址定容,33节点,matpower潮流计算,计算目标函数 考虑储能SOC、储能额定容量、功率约束 NSGA2多目标:储能投资费用和电压偏差最小 熵权TOPSIS确定最优解
- 六轴,scara机器人运动学分析,建模和运动控制 matlab,simulink,simscape.机器人工具箱,DH建模 Pd控制,滑模控制,模糊控制等等
- 车辆,汽车检测1-YOLO(v5至v11)、COCO、CreateML、Paligemma、TFRecord、VOC数据集合集.rar
- 美国旧金山28R粗糙跑道数据
- mp3转换器小程序-音频20241222115740.mp3
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0