checkOrder($attach,$amount)){ log_message('订单不存在或订单金额不一致,orderid='.$orderid,'error',LOG_PATH . '../complexPaylog/'); die('订单不存在或订单金额不一致'); } $polyChannelGameModel = new PolychannelGame; $param = $polyChannelGameModel->where(['game_id'=>$this->payInfo['gameid'],'channel_id'=>$this->payInfo['channel_id']])->value('param'); if(empty($param)){ log_message('后台渠道游戏中,用于该游戏的验签参数还未设置,orderid='.$orderid,'error',LOG_PATH . '../complexPaylog/'); die('用于验签的参数还未设置'); } $gameid = $this->payInfo['gameid']; $param = unserialize($param); $appkey = $param[$gameid]; $str = $orderid.$amount.$pay_status.$attach; $str.= $appkey; $thisSign = md5($str); if ($sign != $thisSign) { log_message('签名校验失败,参数:'.$str.' 生成的签名thisSign='.$thisSign.' 对方的签名:'.$sign,'error',LOG_PATH . '../complexPaylog/'); die('签名校验失败 ' . $thisSign); } $paytime = time(); // 启动事务 Db::startTrans(); try{ $this->updateOrder($attach,$orderid,$paytime); // 提交事务 Db::commit(); } catch (\Exception $e) { // 回滚事务 Db::rollback(); die('订单生成失败'.$e->getMessage()); } // 【产品确认:测试阶段暂时不用通知CP】通知CP,支付成功 (new PayCallback())->callBackToCp($attach); die('success'); } }