|
@@ -214,7 +214,6 @@ class RefillBase
|
|
|
catch (Exception $ex) {
|
|
|
$tran->rollback();
|
|
|
Log::record("Error:" . $ex->getMessage(), Log::ERR);
|
|
|
-
|
|
|
Swoole\Coroutine::sleep(5);
|
|
|
util::push_notify($chname,$input);
|
|
|
return false;
|
|
@@ -726,64 +725,89 @@ class RefillBase
|
|
|
|
|
|
public function query_net($order_id)
|
|
|
{
|
|
|
- $mod_order = Model('vr_order');
|
|
|
- $order_info = $mod_order->getOrderInfo(['order_id' => $order_id]);
|
|
|
+ $query_handler = function ($order_id, $order_info)
|
|
|
+ {
|
|
|
+ $mod_refill = Model('refill_order');
|
|
|
+ $refill_info = $mod_refill->getOrderInfo(['order_id' => $order_id,'inner_status' => 0]);
|
|
|
+ $chname = $refill_info['channel_name'];
|
|
|
|
|
|
- if(empty($order_info)) return false;
|
|
|
+ if($order_info['order_state'] == ORDER_STATE_PAY) {
|
|
|
+ $query_able = true;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ $query_able = false;
|
|
|
+ }
|
|
|
|
|
|
- $mod_refill = Model('refill_order');
|
|
|
- $refill_info = $mod_refill->getOrderInfo(['order_id' => $order_id,'inner_status' => 0]);
|
|
|
- $chname = $refill_info['channel_name'];
|
|
|
- $mchid = $refill_info['mchid'];
|
|
|
- $mch_order = $refill_info['mch_order'];
|
|
|
+ $can_try = false;
|
|
|
+ if($query_able)
|
|
|
+ {
|
|
|
+ if (empty($chname)) return [false, $can_try, $chname];
|
|
|
|
|
|
- if($order_info['order_state'] == ORDER_STATE_PAY) {
|
|
|
- $query_able = true;
|
|
|
- }
|
|
|
- else {
|
|
|
- $query_able = false;
|
|
|
- }
|
|
|
+ $provider = $this->mPolicy->provider($chname);
|
|
|
+ if(empty($provider)) return [false, $can_try, $chname];
|
|
|
|
|
|
- if($query_able)
|
|
|
- {
|
|
|
- if(empty($chname)) return false;
|
|
|
+ [$state, $order_state] = $provider->query($refill_info);
|
|
|
|
|
|
- $provider = $this->mPolicy->provider($chname);
|
|
|
- if(empty($provider)) return false;
|
|
|
+ if(!$state) {
|
|
|
+ QueueClient::async_push("QueryOrderNeterr",['order_id' => $order_id],30);
|
|
|
+ $neterr = true;
|
|
|
+ }
|
|
|
+ elseif($order_state == ORDER_STATE_SUCCESS || $order_state == ORDER_STATE_CANCEL)
|
|
|
+ {
|
|
|
+ $neterr = false;
|
|
|
+ $logic_vr_order = Logic("vr_order");
|
|
|
+ $logic_vr_order->changeOrderStateSend($order_id, true);
|
|
|
|
|
|
- [$state, $order_state] = $provider->query($refill_info);
|
|
|
- if(!$state) {
|
|
|
- QueueClient::async_push("QueryOrderNeterr",['order_id' => $order_id],30);
|
|
|
- $neterr = true;
|
|
|
- }
|
|
|
- elseif($order_state == ORDER_STATE_SUCCESS || $order_state == ORDER_STATE_CANCEL)
|
|
|
- {
|
|
|
- $neterr = false;
|
|
|
- $logic_vr_order = Logic("vr_order");
|
|
|
- $logic_vr_order->changeOrderStateSend($order_id, true);
|
|
|
+ $data = ['commit_time' => time()];
|
|
|
+ $mod_refill->edit($order_id, $data);
|
|
|
+ QueueClient::async_push("QueryRefillState", ['order_id' => $order_id], 1);
|
|
|
+ }
|
|
|
+ elseif ($order_state == ORDER_STATE_NOEXIST) {
|
|
|
+ $neterr = false;
|
|
|
+ $logic_vr_order = Logic("vr_order");
|
|
|
+ $logic_vr_order->changeOrderStateSend($order_id, true);
|
|
|
+ $can_try = true;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ $neterr = true;
|
|
|
+ QueueClient::async_push("QueryOrderNeterr",['order_id' => $order_id],30);
|
|
|
+ }
|
|
|
|
|
|
- $data = ['commit_time' => time()];
|
|
|
- $mod_refill->edit($order_id, $data);
|
|
|
- QueueClient::async_push("QueryRefillState", ['order_id' => $order_id], 1);
|
|
|
+ util::monitor_netchk($chname,$neterr);
|
|
|
}
|
|
|
- elseif ($order_state == ORDER_STATE_NOEXIST) {
|
|
|
- $neterr = false;
|
|
|
- $logic_vr_order = Logic("vr_order");
|
|
|
- $logic_vr_order->changeOrderStateCancel($order_info, '', "{$chname}查询订单不存在.",true,true);
|
|
|
|
|
|
- $mod_refill->edit($order_id, ['notify_time' => time(), 'notify_state' => 1]);
|
|
|
- util::pop_queue_order($mchid,$mch_order);
|
|
|
- QueueClient::push("NotifyMerchantComplete", ['order_id' => $order_id, 'manual' => false]);
|
|
|
- }
|
|
|
- else {
|
|
|
- $neterr = true;
|
|
|
+ return [true,$can_try,$chname];
|
|
|
+ };
|
|
|
+
|
|
|
+ $mod_order = Model('vr_order');
|
|
|
+ $order_info = $mod_order->getOrderInfo(['order_id' => $order_id]);
|
|
|
+ if (empty($order_info)) return false;
|
|
|
+
|
|
|
+ try {
|
|
|
+ $can_try = false;
|
|
|
+ $tran = new trans_wapper($mod_order, 'query_net change order state trans');
|
|
|
+ $order_info = $mod_order->getOrderInfo(['order_id' => $order_id], '*', true, true);
|
|
|
+ [$ret, $can_try, $chname] = $query_handler($order_id, $order_info);
|
|
|
+ $tran->commit();
|
|
|
+ $trans_succ = true;
|
|
|
+ }
|
|
|
+ catch (Exception $ex) {
|
|
|
+ Log::record("Error:" . $ex->getMessage(), Log::ERR);
|
|
|
+ $trans_succ = false;
|
|
|
+ $tran->rollback();
|
|
|
+ $ret = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if($can_try)
|
|
|
+ {
|
|
|
+ if($trans_succ) {
|
|
|
+ $this->proc_notify($order_id, false, true, $chname);
|
|
|
+ } else {
|
|
|
QueueClient::async_push("QueryOrderNeterr",['order_id' => $order_id],30);
|
|
|
}
|
|
|
-
|
|
|
- util::monitor_netchk($chname,$neterr);
|
|
|
}
|
|
|
|
|
|
- return true;
|
|
|
+ return $ret;
|
|
|
}
|
|
|
|
|
|
public function manual_success($order_id)
|