php微信支付获取订单号,微信支付的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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值