public function NotifyProcess($data, &$msg) { // Log::DEBUG("call back:" . json_encode($data)); $notfiyOutput = array(); if (!array_key_exists("transaction_id", $data)) { $msg = "输入参数不正确"; return false; } //查询订单,判断订单真实性 if (!($result = $this->Queryorder($data["transaction_id"]))) { $msg = "订单查询失败"; return false; } // TODO:: 更新订单信息失败的处理 try { if (isset($result['out_trade_no']) && $result['out_trade_no']) { $order_sn = $result['out_trade_no']; $order = new Order(); $transaction_id = isset($result['transaction_id']) ? $result['transaction_id'] : ''; $turnover = isset($result['total_fee']) ? $result['total_fee'] : 0; $relt = $order->setOrderPaySucc($order_sn, $transaction_id); if ($relt) { if ($relt['transaction_id'] && $transaction_id && $relt['transaction_id'] != $transaction_id) { $paymentConflict = new PaymentConflict(); if (!$paymentConflict->existsTransactionId($transaction_id)) { $payRecord = ['rel_id' => $order->getOrderId(), 'order_sn' => $order_sn, 'pay_type' => PaymentConflict::WX_PAYMENT, 'transaction_id' => $transaction_id, 'turnover' => $turnover / 100, 'create_time' => time(), 'update_time' => time(), 'pay_status' => Order::ORDER_PAID_STATUS]; // TODO:: 记录新增失败处理 $paymentConflict->addConflictRecord($payRecord); } } return true; } } return false; } catch (Exception $ex) { return false; } }
/** * 支付宝回调地址 * @return bool */ public function actionAliNotify() { if (isset($_POST['trade_status']) && $_POST['trade_status'] == 'TRADE_SUCCESS') { try { $order = new Order(); $trade_no = isset($_POST['trade_no']) ? $_POST['trade_no'] : ''; $order_sn = isset($_POST['out_trade_no']) ? strval($_POST['out_trade_no']) : ''; $turnover = isset($_POST['total_fee']) ? $_POST['total_fee'] : 0; $result = $order->setOrderPaySucc($order_sn, $trade_no); if ($result) { if (is_array($result)) { if ($result['transaction_id'] && $trade_no && $result['transaction_id'] != $trade_no) { $paymentConflict = new PaymentConflict(); if (!$paymentConflict->existsTransactionId($trade_no)) { $payRecord = ['rel_id' => $order->getOrderId(), 'order_sn' => $order_sn, 'pay_type' => PaymentConflict::ALI_PAYMENT, 'transaction_id' => $trade_no, 'turnover' => $turnover, 'create_time' => time(), 'update_time' => time(), 'pay_status' => Order::ORDER_PAID_STATUS]; // TODO:: 记录新增失败处理 $paymentConflict->addConflictRecord($payRecord); } } } die('success'); } die('fail'); } catch (Exception $ex) { die('fail'); } } else { die('fail'); } }