|
@@ -57,65 +57,71 @@ class RefillBase
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
- if ($order_id !== false)
|
|
|
- {
|
|
|
- $mod_order = Model('vr_order');
|
|
|
- $order_info = $mod_order->getOrderInfo(['order_id' => $order_id]);
|
|
|
- $order_state = intval($order_info['order_state']);
|
|
|
- if ($order_state != ORDER_STATE_SEND) {
|
|
|
- return false;
|
|
|
- }
|
|
|
+ if ($order_id !== false) {
|
|
|
+ return $this->proc_notify($order_id, $success, $can_try, $chname);
|
|
|
+ } else {
|
|
|
+ Log::record("系统无此订单ID:{$order_id}", Log::ERR);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ Log::record("{$chname} 签名失败.");
|
|
|
+ }
|
|
|
|
|
|
- $logic_vr_order = Logic("vr_order");
|
|
|
- $mod_refill = Model('refill_order');
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
+ private function proc_notify($order_id,$success, $can_try,$chname)
|
|
|
+ {
|
|
|
+ $mod_order = Model('vr_order');
|
|
|
+ $order_info = $mod_order->getOrderInfo(['order_id' => $order_id]);
|
|
|
+ $order_state = intval($order_info['order_state']);
|
|
|
+ if ($order_state != ORDER_STATE_SEND) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
|
|
|
- try
|
|
|
+ $logic_vr_order = Logic("vr_order");
|
|
|
+ $mod_refill = Model('refill_order');
|
|
|
+
|
|
|
+ try
|
|
|
+ {
|
|
|
+ $tran = new trans_wapper($mod_order,'notify change order state trans');
|
|
|
+
|
|
|
+ $order_info = $mod_order->getOrderInfo(['order_id' => $order_id],'*',true,true);
|
|
|
+ $order_state = intval($order_info['order_state']);
|
|
|
+ if ($order_state != ORDER_STATE_SEND) {
|
|
|
+ $tran->commit();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if ($success) {
|
|
|
+ $logic_vr_order->changeOrderStateSuccess($order_id);
|
|
|
+ }
|
|
|
+ elseif ($can_try)
|
|
|
+ {
|
|
|
+ $refill_info = $mod_refill->getOrderInfo(['order_id' => $order_id,'inner_status' => 0]);
|
|
|
+ if(!empty($refill_info))
|
|
|
{
|
|
|
- $tran = new trans_wapper($mod_order,'notify change order state trans');
|
|
|
- $order_info = $mod_order->getOrderInfo(['order_id' => $order_id]);
|
|
|
- $order_state = intval($order_info['order_state']);
|
|
|
- if ($order_state != ORDER_STATE_SEND) {
|
|
|
+ $logic_vr_order->changeOrderStateCancel($order_info, '', "{$chname}接口回调通知失败,正在重试");
|
|
|
+ if ($this->retry($refill_info, $order_info)) {
|
|
|
+ $mod_refill->edit($order_id, ['is_retrying' => 1]);
|
|
|
$tran->commit();
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- if ($success) {
|
|
|
- $logic_vr_order->changeOrderStateSuccess($order_id);
|
|
|
+ return true;
|
|
|
}
|
|
|
- elseif ($can_try)
|
|
|
- {
|
|
|
- $refill_info = $mod_refill->getOrderInfo(['order_id' => $order_id,'inner_status' => 0]);
|
|
|
- if(!empty($refill_info))
|
|
|
- {
|
|
|
- $logic_vr_order->changeOrderStateCancel($order_info, '', "{$chname}接口回调通知失败,正在重试");
|
|
|
- if ($this->retry($refill_info, $order_info)) {
|
|
|
- $mod_refill->edit($order_id, ['is_retrying' => 1]);
|
|
|
- $tran->commit();
|
|
|
- return true;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- else {
|
|
|
- $logic_vr_order->changeOrderStateCancel($order_info, '', "{$chname}接口回调通知失败,不可重试.");
|
|
|
- }
|
|
|
- $tran->commit();
|
|
|
}
|
|
|
- catch (Exception $ex) {
|
|
|
- $tran->rollback();
|
|
|
- Log::record("Error:" . $ex->getMessage(), Log::ERR);
|
|
|
- }
|
|
|
-
|
|
|
- $mod_refill->edit($order_id, ['notify_time' => time(), 'notify_state' => 1]);
|
|
|
- QueueClient::push("NotifyMerchantComplete", ['order_id' => $order_id,'manual' => false]);
|
|
|
}
|
|
|
else {
|
|
|
- Log::record("系统无此订单ID:{$order_id}", Log::ERR);
|
|
|
+ $logic_vr_order->changeOrderStateCancel($order_info, '', "{$chname}接口回调通知失败,不可重试.");
|
|
|
}
|
|
|
+ $tran->commit();
|
|
|
}
|
|
|
- else {
|
|
|
- Log::record("{$chname} 签名失败.");
|
|
|
+ catch (Exception $ex) {
|
|
|
+ $tran->rollback();
|
|
|
+ Log::record("Error:" . $ex->getMessage(), Log::ERR);
|
|
|
}
|
|
|
|
|
|
+ $mod_refill->edit($order_id, ['notify_time' => time(), 'notify_state' => 1]);
|
|
|
+ QueueClient::push("NotifyMerchantComplete", ['order_id' => $order_id,'manual' => false]);
|
|
|
+
|
|
|
return true;
|
|
|
}
|
|
|
|
|
@@ -405,52 +411,66 @@ class RefillBase
|
|
|
|
|
|
public function query($order_id)
|
|
|
{
|
|
|
+ $mod_order = Model('vr_order');
|
|
|
+ $order_info = $mod_order->getOrderInfo(['order_id' => $order_id,'inner_status' => 0]);
|
|
|
+
|
|
|
+ if(empty($order_info)) return false;
|
|
|
+ if($order_info['order_state'] != ORDER_STATE_SEND || $order_info['is_retrying'] == 1) {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
$mod_refill = Model('refill_order');
|
|
|
$refill_info = $mod_refill->getOrderInfo(['order_id' => $order_id,'inner_status' => 0]);
|
|
|
$chname = $refill_info['channel_name'];
|
|
|
|
|
|
- if(empty($chname)) {
|
|
|
- return false;
|
|
|
+ if($refill_info['notify_state'] == 1) {
|
|
|
+ QueueClient::push("NotifyMerchantComplete", ['order_id' => $order_id,'manual' => false]);
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
- Log::record(__FUNCTION__ . " channel {$chname} 1",Log::DEBUG);
|
|
|
- $provider = $this->mPolicy->provider($chname);
|
|
|
-
|
|
|
- Log::record(__FUNCTION__ . " channel {$chname}",Log::DEBUG);
|
|
|
- if(empty($provider)) {
|
|
|
- Log::record(__FUNCTION__ . " provider is null",Log::DEBUG);
|
|
|
- return false;
|
|
|
+ try
|
|
|
+ {
|
|
|
+ $tran = new trans_wapper($mod_order,'query order state trans');
|
|
|
+ $order_info = $mod_order->getOrderInfo(['order_id' => $order_id],'*',true,true);
|
|
|
+ if($order_info['is_retrying'] == 1) {
|
|
|
+ $query_able = false;
|
|
|
+ }
|
|
|
+ elseif($order_info['order_state'] == ORDER_STATE_SEND) {
|
|
|
+ $query_able = true;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ $query_able = false;
|
|
|
+ }
|
|
|
+ $tran->commit();
|
|
|
}
|
|
|
- [$state, $order_state] = $provider->query($refill_info);
|
|
|
-
|
|
|
- if(!$state) {
|
|
|
- QueueClient::async_push("QueryRefillState",['order_id' => $order_id],180);
|
|
|
- return false;
|
|
|
+ catch (Exception $ex) {
|
|
|
+ $tran->rollback();
|
|
|
+ Log::record($ex->getMessage(),Log::ERR);
|
|
|
}
|
|
|
|
|
|
- $mod_order = Model('vr_order');
|
|
|
- $order_info = $mod_order->getOrderInfo(['order_id' => $order_id]);
|
|
|
- $org_state = $order_info['order_state'];
|
|
|
-
|
|
|
- $modify_able = true;
|
|
|
- if($org_state == ORDER_STATE_SEND)
|
|
|
+ if($query_able)
|
|
|
{
|
|
|
- $logic_vr_order = Logic("vr_order");
|
|
|
- if ($order_state == ORDER_STATE_SUCCESS) {
|
|
|
- $logic_vr_order->changeOrderStateSuccess($order_id);
|
|
|
- } elseif ($order_state == ORDER_STATE_CANCEL) {
|
|
|
- $logic_vr_order->changeOrderStateCancel($order_info, '', "{$chname}接口查询失败,不再重试.");
|
|
|
- } else {
|
|
|
- $modify_able = false;
|
|
|
+ if(empty($chname)) return false;
|
|
|
+
|
|
|
+ $provider = $this->mPolicy->provider($chname);
|
|
|
+ if(empty($provider)) return false;
|
|
|
+
|
|
|
+ [$state, $order_state] = $provider->query($refill_info);
|
|
|
+ if(!$state) {
|
|
|
+ QueueClient::async_push("QueryRefillState",['order_id' => $order_id],180);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ elseif($order_state == ORDER_STATE_SUCCESS) {
|
|
|
+ $this->proc_notify($order_id,true,false,$chname);
|
|
|
+ }
|
|
|
+ elseif($order_state == ORDER_STATE_CANCEL) {
|
|
|
+ $this->proc_notify($order_id,false,true,$chname);
|
|
|
+ }
|
|
|
+ else {
|
|
|
QueueClient::async_push("QueryRefillState",['order_id' => $order_id],180);
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- if($modify_able) {
|
|
|
- $mod_refill->edit($order_id, ['notify_time' => time(), 'notify_state' => 1]);
|
|
|
- QueueClient::push("NotifyMerchantComplete", ['order_id' => $order_id,'manual' => true]);
|
|
|
- }
|
|
|
-
|
|
|
+
|
|
|
return true;
|
|
|
}
|
|
|
}
|