|
@@ -23,7 +23,7 @@ class deliveryLogic
|
|
|
return md5(self::$appkey . self::$appPassWord . $data);
|
|
|
}
|
|
|
|
|
|
- public function putOrder($pay_sn, $trade_no)
|
|
|
+ public function putOrder($pay_sn, $trade_no,$log_fail = true)
|
|
|
{
|
|
|
// 调试模式下不能推送到oms
|
|
|
if(defined('OMS_PUSH_OFF') && OMS_PUSH_OFF == true) {
|
|
@@ -107,13 +107,45 @@ class deliveryLogic
|
|
|
$headers = array('v_appkey: '.self::$appkey, 'v_sign: '.$sign, 'Content-Type: application/json');
|
|
|
$resp = http_post_data(self::oms_url,urlencode($body),$headers);
|
|
|
|
|
|
- if($resp === false) {
|
|
|
- //todo 需要放到定时任务去推送
|
|
|
+ if($resp === false)
|
|
|
+ { //网络出现异常时,后台重新推送
|
|
|
+ if($log_fail) {
|
|
|
+ $log = array();
|
|
|
+
|
|
|
+ $log['pay_sn'] = $pay_sn;
|
|
|
+ $log['order_sn'] = $order_sn;
|
|
|
+ $log['trade_no'] = $trade_no;
|
|
|
+ $log['push_time'] = time();
|
|
|
+ $log['order_status'] = 0;
|
|
|
+
|
|
|
+ Model('omsfail')->insert($log);
|
|
|
+ }
|
|
|
+
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
- Log::record("post data={$resp}",Log::DEBUG);
|
|
|
- return $this->check($pay_sn, $trade_no, $order_sn,$resp);
|
|
|
+ $success = $this->check($resp,$err_state,$reson);
|
|
|
+ if($success == false)
|
|
|
+ {
|
|
|
+ Log::record("post data={$resp}",Log::ERR);
|
|
|
+
|
|
|
+ if($log_fail) {
|
|
|
+ $log = array();
|
|
|
+
|
|
|
+ $log['pay_sn'] = $pay_sn;
|
|
|
+ $log['order_sn'] = $order_sn;
|
|
|
+ $log['trade_no'] = $trade_no;
|
|
|
+ $log['push_time'] = time();
|
|
|
+ $log['reson'] = $reson;
|
|
|
+ $log['order_status'] = $err_state;
|
|
|
+ $log['oms_response'] = $resp;
|
|
|
+
|
|
|
+ Model('omsfail')->insert($log);
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ } else {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
public function handleCallback($param)
|
|
@@ -141,16 +173,10 @@ class deliveryLogic
|
|
|
* @param $order_sn
|
|
|
* @return mixed
|
|
|
*/
|
|
|
- private function check($pay_sn,$trade_no,$order_sn,$resp)
|
|
|
+ private function check($resp,&$err_state,&$reson)
|
|
|
{
|
|
|
- $data = array();
|
|
|
- $data_log = array();
|
|
|
- $data['pay_sn'] = $pay_sn;
|
|
|
- $data['order_sn'] = $order_sn;
|
|
|
- $data_log['pay_sn'] = $pay_sn;
|
|
|
- $data_log['order_sn'] = $order_sn;
|
|
|
- $data_log['exception_time'] = time();
|
|
|
- $data_log['exception_state'] = 0;
|
|
|
+
|
|
|
+ $err_state = 0;
|
|
|
|
|
|
//1:成功 0 :失败
|
|
|
// 1:新订单 2:等待仓库处理 99:已拦截 90:库存不足 7:已发货
|
|
@@ -163,53 +189,24 @@ class deliveryLogic
|
|
|
if (!empty($result['data']) && is_array($result['data']) && count($result['data']) > 0)
|
|
|
{
|
|
|
// 填充错误理由
|
|
|
- $data_log['exception_reason'] = $result['data'][0]['errorMessge'];
|
|
|
- if (!empty($result['data'][0]['status']))
|
|
|
- {
|
|
|
+ $reson = $result['data'][0]['errorMessge'];
|
|
|
+ if (!empty($result['data'][0]['status'])) {
|
|
|
$status = intval($result['data'][0]['status']);
|
|
|
- if($status == 1 || $status == 2 || $status == 3 || $status == 7 || $status == 99) {
|
|
|
+ if ($status == 1 || $status == 2 || $status == 3 || $status == 7 || $status == 99) {
|
|
|
return true;
|
|
|
- } else {
|
|
|
- Log::record("PUSHOMS ERR has status: order_sn = {$order_sn},pay_sn={$pay_sn},trade_no = {$trade_no}", Log::WAIT_HANDLE);
|
|
|
- Model('order_exception_push')->insert($data);
|
|
|
- Model('order_exception_log')->insert($data_log);
|
|
|
- return false;
|
|
|
}
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
+ } else {
|
|
|
$msg = $result['data'][0]['errorMessge'];
|
|
|
- if(strstr($msg,'订单已存在')) {
|
|
|
+ if (strstr($msg, '订单已存在')) {
|
|
|
return true;
|
|
|
} else {
|
|
|
- // 技术债务, 未知问题, 不放入推送表, 确认后再放
|
|
|
- //Model('order_exception_push')->insert($data);
|
|
|
- Model('order_exception_log')->insert($data_log);
|
|
|
- return false;
|
|
|
+ $err_state = 2;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- else
|
|
|
- {
|
|
|
- // 填充错误理由
|
|
|
- $data_log['exception_reason'] = "$resp order_sn = {$order_sn},pay_sn={$pay_sn},trade_no = {$trade_no}";
|
|
|
- Log::record("$resp order_sn = {$order_sn},pay_sn={$pay_sn},trade_no = {$trade_no}", Log::WAIT_HANDLE);
|
|
|
- Model('order_exception_push')->insert($data);
|
|
|
- Model('order_exception_log')->insert($data_log);
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- } else {
|
|
|
- Log::record("PUSHOMS ERR have not data: order_sn = {$order_sn},pay_sn={$pay_sn},trade_no = {$trade_no}", Log::WAIT_HANDLE);
|
|
|
- Model('order_exception_push')->insert($data);
|
|
|
- Model('order_exception_log')->insert($data_log);
|
|
|
- return false;
|
|
|
}
|
|
|
- } else {
|
|
|
- Log::record("PUSHOMS ERR empty result: order_sn = {$order_sn},pay_sn={$pay_sn},trade_no = {$trade_no}", Log::WAIT_HANDLE);
|
|
|
- Model('order_exception_push')->insert($data);
|
|
|
- Model('order_exception_log')->insert($data_log);
|
|
|
- return false;
|
|
|
}
|
|
|
+
|
|
|
+ return false;
|
|
|
}
|
|
|
}
|