PayNotifyCallBack.php 2.33 KB
<?php

require_once IA_ROOT.'/addons/zh_cjdianc/inc/Log.php';
require_once IA_ROOT.'/addons/zh_cjdianc/inc/wxlib/WxPay.Notify.php';
require_once IA_ROOT.'/addons/zh_cjdianc/inc/class/GroupOrder.php';
require_once IA_ROOT.'/addons/zh_cjdianc/inc/class/Order.php';
class PayNotifyCallBack extends WxPayNotify
{
    //查询订单
    public function Queryorder($data)
    {
        $input = new WxPayOrderQuery();
        $input->SetTransaction_id($data['transaction_id']);
        $input->SetMch_id($data['mch_id']);
        $input->SetAppid($data['appid']);
        $result = WxPayApi::orderQuery($input, 2, $data['wxkey']);
        Log::debug("Queryorder:" . json_encode($result));
        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)
    {
        global $_W;
        Log::debug("NotifyProcess:".json_encode($data));
        $notfiyOutput = array();

        if(!array_key_exists("transaction_id", $data)){
            $msg = "输入参数不正确";
            return false;
        }

        $_W['uniacid']      = $_W['weid'] = intval($data['attach']);
        $paySettings        = pdo_get('cjdc_pay', ['uniacid' => $_W['uniacid']]);

        if ($paySettings) {
            $data['wxkey']  = $paySettings['wxkey'];
        }

        //查询订单,判断订单真实性
        if (!$this->Queryorder($data)) {
            $msg = "订单查询失败";
            return false;
        }

        //load()->web('common');
        //load()->model('mc');
        //load()->func('communication');

        //$_W['uniaccount']   = $_W['account'] = uni_fetch($_W['uniacid']);
        //$_W['acid']         = $_W['uniaccount']['acid'];
        //$paySetting         = uni_setting($_W['uniacid'], array('payment'));

        $out_trade_no = $data['out_trade_no'];
        //拼团订单
        $groupResult = GroupOrder::afterOrderPay($out_trade_no, $data);
        // 正常订单
        $orderResult = Order::afterOrderPay($out_trade_no, $data);

        if (!$groupResult and !$orderResult) {
            return false;
        }

        return true;
    }
}