예제 #1
0
    if ($notify->query_data['return_code'] == 'SUCCESS') {
        //$data['id'] = $orderId = substr($notify->query_data['out_trade_no'], 14);
        $data['id'] = $orderId = $notify->query_data['out_trade_no'];
        $data['pay_type'] = Config::ORDER_PAY_TYPE;
        $data['pay_status'] = Config::ORDER_PAY_FAILED_CODE;
        if ($notify->query_data['result_code'] == 'SUCCESS') {
            $data['pay_status'] = Config::ORDER_PAY_SUCCESS_CODE;
        }
        //$data['pay_discount'] = Config::ORDER_PAY_DISCOUNT;
        // 微信会轮训回调通知接口,更新订单支付状态前需要先查询订单是否已经更改
        $order_info = Order::get_order_by_id($data['id']);
        if ((int) $order_info['pay_status'] !== Config::ORDER_PAY_WAITTINT_CODE) {
            return;
        }
        if ($notify->request_data['attach'] !== PAY_ENV) {
            return;
        }
        $update_result = Order::update_order_status($data, $orderId);
        if ($update_result === true) {
            // 如果订单支付状态更新成功,则记录支付流水
            $update_suborder = Order::update_suborder_status($data['pay_status'], $orderId);
            $add_result = Trade::add_trade_bill($notify->request_data, $data);
        } else {
            throw new Exception('order pay status update failed');
        }
    } else {
        Log::DEBUG(sprintf('callback error|file:%s|line:%s|require_data:%s', __FILE__, __LINE__, json_encode($notify->request_data)));
    }
} catch (Exception $e) {
    Log::ERROR(sprintf('run exceptin:%s|file:%s|line:%s', $e->getMessage(), $e->getFile(), $e->getLine()));
}