示例#1
0
文件: notify.php 项目: lughong/test
 public function NotifyProcess($data, &$msg)
 {
     $log = Log::factory(NT_LOGS_PATH . 'wxpay_saoma/');
     $log->write('wxpay_saoma_notify', "call back:\n" . json_encode($data) . "\n");
     $notfiyOutput = array();
     if (!array_key_exists("transaction_id", $data)) {
         $msg = "输入参数不正确";
         $log->write('wxpay_saoma_notify_transaction_id', "输入参数不正确\n" . json_encode($data) . "\n");
         return false;
     }
     //查询订单,判断订单真实性
     if (!$this->Queryorder($data["transaction_id"])) {
         $msg = "订单查询失败";
         $log->write('wxpay_saoma_notify_Queryorder', "订单" . $data['out_trade_no'] . "查询失败\n" . json_encode($data) . "\n");
         return false;
     }
     /******************************查询订单正确后start*****************************************/
     //把订单中的支付改为微信支付
     $order_sn = $data['out_trade_no'];
     $order_info = OrderInfo::get_by_sn($order_sn);
     if ($order_info) {
         //检查支付钱数是否被修改过
         $total_fee = $data["total_fee"] / 100;
         $money_paid = $order_info['order_money'] + $order_info['shipping_fee'] - $order_info['bonus'];
         if ($total_fee != $money_paid) {
             $log->write('wxpay_saoma_money', "支付钱数对不上, 订单号为:" . $order_info . ", 微信返回总钱数" . $total_fee . "!=订单总钱数" . $money_paid . "\n" . json_encode($data) . "\n" . json_encode($order_info) . "\n");
             return false;
         }
         //支付成功,改变支付状态为yes
         $order_id = $order_info['order_id'];
         if ($order_info['pay_status'] == 'no') {
             $order = new OrderInfo($order_id);
             $modify = $order->wxsaoma_pay_status();
             $log->write('wxpay_saoma_changepay', $modify);
             $log->write('wxpay_saoma_success', "【支付成功】:\n" . json_encode($data) . "\n" . json_encode($order_info) . "\n");
         }
     } else {
         $log->write('wxpay_saoma_not_exists_order', "订单" . $order_sn . "不存在\n" . json_encode($data) . "\n");
         return false;
     }
     /******************************查询订单正确后end*****************************************/
     return true;
 }