微信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 ...
最新文章
- 【组队学习】【27期】青少年编程(Turtle)
- Hash+哈希表+HashMap+HashSet
- 智能车大赛AI视觉组培训第一弹——基础篇
- OpenSAP网址收藏
- python数据分析之pandas里的Series
- Unity3D笔记 愤怒的小鸟二 实现Play界面
- 如何用Java构建json对象
- 研磨java系列_研磨设计模式 之 工厂系列(一)简单工厂模式
- 磁力计椭球拟合使用篇 IMU 加速度、电子罗盘校准
- 原型工具 axure 使用
- 胧月初音未来计算机,胧月歌词 初音未来
- python的print与sys.stdout
- iphonex蓝牙打不开转圈_多人反应iPhone X蓝牙连接时遇到问题
- 浅显易懂的理解SQL各种锁(基于MYSQL 8.0.28)
- 【好题分享】适合C++初学者(数组的定义与初始化)
- 谁将成为中国版底特律?
- 怎么用python画房子_python绘图作业:使用pygame库画房子
- batchnorm原理及代码详解
- uCOSIII移植stm32c8t6
- matlab中fprintf写入txt文件\n无法换行
热门文章
- 消息队列系列(二):.Rabbitmq的使用及Web监控工具使用
- 【DFS/BFS】NYOJ-58-最少步数(迷宫最短路径问题)
- Struts2 method=get方法乱码
- 陈天桥:欣赏360保护隐私 用户安全永远第一
- Visual C#创建Windows服务程序
- golang 字符串 去除最后一个字符
- python 获取 程序运行时间
- docker逃逸漏洞复现 cve-2019-5736
- c/c++ 避免重复包含 pragma once 和 #ifndef 的区别
- python3 转换json数据的单引号双引号注意点