|
@@ -283,10 +283,10 @@ class RefillBase
|
|
|
{
|
|
|
Log::record("canot find any providers",Log::DEBUG);
|
|
|
if($overload) {
|
|
|
- return [errcode::PROVIDER_OVERLOAD, "匹配不到合适的充值通道",$last_orderid,false];
|
|
|
+ return [errcode::PROVIDER_OVERLOAD, "匹配不到合适的充值通道",$last_orderid,false,0];
|
|
|
}
|
|
|
else {
|
|
|
- return [errcode::CANNOT_MATCH_PROVIDER, "匹配不到合适的充值通道",$last_orderid,false];
|
|
|
+ return [errcode::CANNOT_MATCH_PROVIDER, "匹配不到合适的充值通道",$last_orderid,false,0];
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -301,13 +301,13 @@ class RefillBase
|
|
|
$mch_amount = $mch_price * $quantity;
|
|
|
}
|
|
|
catch (Exception $ex) {
|
|
|
- return [errcode::MERCHANT_PRICE_UNSETTING, "没有协商商品价格",$last_orderid,false];
|
|
|
+ return [errcode::MERCHANT_PRICE_UNSETTING, "没有协商商品价格",$last_orderid,false,0];
|
|
|
}
|
|
|
|
|
|
$available = $minfo->available_predeposit();
|
|
|
if ($mch_amount > $available) {
|
|
|
Log::record("下单时机构余额不足,可用余额为:{$available}", Log::DEBUG);
|
|
|
- return [errcode::MERCHANT_SHORT_MONEY, "余额不足支付订单",$last_orderid,false];
|
|
|
+ return [errcode::MERCHANT_SHORT_MONEY, "余额不足支付订单",$last_orderid,false,0];
|
|
|
}
|
|
|
|
|
|
$refill_state = false;
|
|
@@ -435,7 +435,7 @@ class RefillBase
|
|
|
|
|
|
//如果对方没有回调能力,则启动主动查询.
|
|
|
if($provider->callback() === false) {
|
|
|
- QueueClient::async_push("QueryRefillState",['order_id' => $order_id],180);
|
|
|
+ QueueClient::async_push("QueryRefillState",['order_id' => $order_id],60);
|
|
|
}
|
|
|
|
|
|
break;
|
|
@@ -443,7 +443,7 @@ class RefillBase
|
|
|
else
|
|
|
{
|
|
|
if($neterr && util::need_check($net_errno)) {
|
|
|
- //
|
|
|
+ $mod_refill->edit($order_id, ['neterr' => 1,'err_msg' => "neterr={$net_errno}"]);
|
|
|
break;
|
|
|
}
|
|
|
|
|
@@ -579,7 +579,6 @@ class RefillBase
|
|
|
|
|
|
[$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) {
|
|
@@ -589,13 +588,69 @@ class RefillBase
|
|
|
$this->proc_notify($order_id,false,true,$chname);
|
|
|
}
|
|
|
else {
|
|
|
-// QueueClient::async_push("QueryRefillState",['order_id' => $order_id],180);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ public function query_net($order_id)
|
|
|
+ {
|
|
|
+ $mod_order = Model('vr_order');
|
|
|
+ $order_info = $mod_order->getOrderInfo(['order_id' => $order_id]);
|
|
|
+
|
|
|
+ if(empty($order_info)) return false;
|
|
|
+
|
|
|
+ $mod_refill = Model('refill_order');
|
|
|
+ $refill_info = $mod_refill->getOrderInfo(['order_id' => $order_id,'inner_status' => 0]);
|
|
|
+ $chname = $refill_info['channel_name'];
|
|
|
+
|
|
|
+ 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['order_state'] == ORDER_STATE_PAY) {
|
|
|
+ $query_able = true;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ $query_able = false;
|
|
|
+ }
|
|
|
+ $tran->commit();
|
|
|
+ }
|
|
|
+ catch (Exception $ex) {
|
|
|
+ $tran->rollback();
|
|
|
+ Log::record($ex->getMessage(),Log::ERR);
|
|
|
+ }
|
|
|
+
|
|
|
+ if($query_able)
|
|
|
+ {
|
|
|
+ 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("QueryOrderNeterr",['order_id' => $order_id],5);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ elseif($order_state == ORDER_STATE_SUCCESS || $order_state == ORDER_STATE_CANCEL)
|
|
|
+ {
|
|
|
+ $logic_vr_order = Logic("vr_order");
|
|
|
+ $logic_vr_order->changeOrderStateSend($order_id);
|
|
|
+
|
|
|
+ $data = ['commit_time' => time()];
|
|
|
+ $mod_refill->edit($order_id, $data);
|
|
|
+ QueueClient::async_push("QueryRefillState",['order_id' => $order_id],1);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ QueueClient::async_push("QueryOrderNeterr",['order_id' => $order_id],5);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+
|
|
|
public function manual_success($order_id)
|
|
|
{
|
|
|
$order_id = intval($order_id);
|