微信notify mysql_微信支付的notify.php中如何获取订单号(php版)
不要直接使用demo中的notify.php,重写notify.php,继承WxPayNotify(可参考微信api),具体如下:
require_once "WxPay.Api.php";
require_once 'WxPay.Notify.php';
class PayNotifyCallBack extends WxPayNotify
{
//查询订单
public function Queryorder($transaction_id)
{
$input = new WxPayOrderQuery();
$input->SetTransaction_id($transaction_id);
$result = WxPayApi::orderQuery($input);
if (array_key_exists("return_code", $result)
&& array_key_exists("result_code", $result)
&& $result["return_code"] == "SUCCESS"
&& $result["result_code"] == "SUCCESS"
) {
return true;
}
return false;
}
//重写回调处理函数
public function NotifyProcess($data, &$msg)
{
$notfiyOutput = array();
if (!array_key_exists("transaction_id", $data)) {
$msg = "输入参数不正确";
return false;
}
//查询订单,判断订单真实性
if (!$this->Queryorder($data["transaction_id"])) {
$msg = "订单查询失败";
return false;
}
//$data中各个字段在return_code为SUCCESS的时候有返回 SUCCESS/FAIL
//此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断
//成功后写入自己的数据库
if ($data['return_code'] == 'SUCCESS' && $data['result_code'] == 'SUCCESS') {
//自己的业务逻辑
$out_trade_no = $data['out_trade_no'];
$transaction_id = $data['transaction_id'];
$bank_type = $data['bank_type'];
$fee_type = $data['fee_type'];
$time_end = $data['time_end'];
$amount = $data['total_fee'];
}
return true;
}
}
$notify = new PayNotifyCallBack();
$notify->Handle(false);
自己的代码改写:将微信支付成功后,获取他的微信生成的订单号 trade_no,然后保存到数据库中,为以后退款做准备,微信退款就是根剧这个订单号来退款
不要直接使用demo中的notify.php,重写回调页面notify.php,继承WxPayNotify(可参考微信api),具体如下:然后用它自带的方法查询出订单跟订单号保存到数据库中去
require_once dirname(dirname(__FILE__)) . "/lib/WxPay.Api.php";
require_once dirname(dirname(__FILE__)) . '/lib/WxPay.Notify.php';
/**
* 微信支付回调类
* Class notify
*/
class notify extendsWxPayNotify
{
/**
* 重写父类异步验证
* @param array $data
* @param string $msg
* @return bool
*/
public function NotifyProcess($data, &$msg)
{
$bool = false;
//返回状态码、业务结果
if (array_key_exists("return_code", $data) && array_key_exists("result_code", $data) && $data['return_code'] == 'SUCCESS' && $data['result_code'] == 'SUCCESS')
{
//查询订单
if (isset($data["out_trade_no"]) && $data["out_trade_no"] != "")
{
$input = new WxPayOrderQuery();
$input->SetOut_trade_no($data["out_trade_no"]);//商户订单号
$result = WxPayApi::orderQuery($input);//订单查询
$tip = '信息:微信公众号交易,订单金额与实际支付不一致';
//这里针对微信订单号作特殊处理,去掉后面的16位字符
$ordersn = substr($data['out_trade_no'],0,strlen($data['out_trade_no'])-16);
if (isset($result['total_fee']) && Common::total_fee_confirm($ordersn, $result['total_fee'] / 100, $tip))
{
$bool = true;
$method = Common::C('mobile');
Common::pay_success($ordersn, $method['method']['8']['name']);
$online_transaction_no = array('source'=>'wxpay','transaction_no'=>$data['transaction_id']);
//写入微信订单号
DB::update('member_order')->set(array('online_transaction_no'=>json_encode($online_transaction_no)))
->where('ordersn','=',$ordersn)
->execute();
}
}
else
{
new Pay_Exception("信息:微信公众号下单,未会返回商品订单号");
}
}
else
{
new Pay_Exception("信息:微信公众号交易错误(msg_{$data['return_msg']})");
}
return $bool;
}
}
支付地址
payment+application-classes-pay-mobile-wxpay.php submit
回调地址:获取微信生成的订单号
payment-application-vendor-mobile-wzpay-jsapi-notify.php
引入的类文件在vendor-mobile-wxpay-lib里面
微信支付宝退款操作方法:
tools-classes-pay-online-refund.php
链接: https://pan.baidu.com/s/18uSJf8fkDPo41zn-m74ObQ 密码: 18cg
微信notify mysql_微信支付的notify.php中如何获取订单号(php版)相关推荐
- Vue项目中常见问题(55)提交订单、获取订单号、展示支付信息
目录 gitee仓库地址:https://gitee.com/CMD-UROOT/sph-project/commits/master 业务需求:完成提交订单的业务 1.支付静态组件先完成 Pay静态 ...
- java微信小程序调用支付接口
简介:微信小程序支付这里的坑还是有的,所以提醒各位在编写的一定要注意!!! 1.首先呢,你需要准备openid,appid,还有申请微信支付后要设置一个32位的密钥,需要先生成一个sign,得到pre ...
- Spring-Boot整合微信登陆、微信支付、邮箱发送、支付宝支付和阿里云短信
Spring-Boot整合 1. 发送邮件 2. 支付宝支付 3. 阿里云短信 4. 微信登陆 5. 微信支付 6. Swargger2 前后端API接口信息文档 7. ehcache缓存缓存 8. ...
- 微信jsapi支付获取code_微信开发之微信公众平台开发之JSAPI公众号支付
本文将带你了解微信开发微信公众平台开发之JSAPI公众号支付,希望本文对大家学微信有所帮助. 一:配置参数 申请成功后,获取接口文件, 将所有文件放入项目根目录weixin下,在WxPay.ub.co ...
- C# ASP.NET MVC 微信和支付宝H5支付开发及Demo
微信和支付宝H5支付 最近开发任务遇到了一个要在手机浏览器里面调起微信和支付宝去支付的开发需求,以前都是做的扫码支付或者JSAPI都是在软件内部支付的,没遇到过在自己浏览器内唤醒微信或者支付宝的支付这 ...
- 微信开发 ━━ 微信商户v3微信支付回调之php篇
开发内容都在这里: 微信支付API v3 证书和回调报文解密 在微信支付时提供一个回调地址,支付完成后微信会向这个回调地址发送一个json格式的报文,将报文内容解密后获取订单号等数据 报文内容: {& ...
- 支付宝、微信、银联移动支付集成
一.支付宝移动支付 SDK开放平台:https://b.alipay.com/order/productDetail.htm?productId=2013080604609654&tabId= ...
- 微信开发 ━━ 微信商户v3微信支付H5方式开发之php篇
native方式开发纪要:<微信开发 ━━ 微信商户native方式支付v3开发之php篇> 一.流程 流程是必须要弄懂的,弄懂之后遇到问题也能知道出在哪里. 官方说明:<H5支付统 ...
- Java支付宝二维码支付和退款,微信二维码支付
在蚂蚁金服开发平台下载demo 打开 TradePayDemo 项目,里面的main可以直接运行,在配置文件zfbinfo.properties中改为自己支付宝的信息 # 支付宝网关名.partner ...
最新文章
- Nature指数发榜:中科院总榜夺冠,北大、清华列学术机构Top 10
- es重建字段类型_关于elasticsearch中更新数据的几种方式
- python爬虫加密空间_Python爬虫进阶必备 | XX同城加密分析
- 猎豹浏览器怎么收藏网页 网页收藏方法简述
- 巧用Squid的ACL和访问列表实现高效访问控制
- OpenGL:编译glfw并配置
- Nobody can go back and start a new beginning, but anyone can start now and make a new ending.
- Graphics Driver 的编写
- 初学者python笔记(内置函数_1)
- 架构师的职责都有哪些?
- 【推荐】 Neutralizer 安卓上特殊的均衡器
- cad安装日志文件发生错误_CAD安装不正确怎么办?CAD发生错误安装过早结束的解决方法...
- 【CSS】相对长度单位 绝对长度单位,vw/vh , rem等
- highcharts制作3D饼图渐变效果
- 【Android 10 源码】healthd 模块 BatteryService 初始化
- 怎么在抖音中一键复制微信号打开微信引流
- 京东2019年春暑期实习笔试
- win10 VMware 虚拟机 实现桥接模式 校园wifi上网
- 【Visual C++】游戏开发笔记十七 游戏基础算法(一) 游戏随机系统初步
- qt运行编译按钮居然是灰色的
热门文章
- 自动释放池autoreleasepool
- 项目发布: error CS0103: 当前上下文中不存在名称“*****”
- Java中Split函数的用法技巧
- nsis使用汇总(一)
- linux ssh远程登录 配置文件 sshd_config 介绍
- linux ubuntu 开机自动启动 fixfox 并打开指定网站
- linux内存管理基本概念
- linux alpine 中telnet转移至busybox-extras
- golang x509包 数字证书相关介绍
- A definition for the symbol 'symbolName' could not be located