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;
     }
 }
Example #2
0
 /**
  * 支付宝回调地址
  * @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');
     }
 }