|
@@ -476,11 +476,6 @@ class RefillBase
|
|
|
return [errcode::MERCHANT_SHORT_MONEY, "余额不足支付订单",$last_orderid,false,0];
|
|
|
}
|
|
|
|
|
|
- $refill_state = false;
|
|
|
- $order_success = false;
|
|
|
- $net_errno = '';
|
|
|
- $neterr = false;
|
|
|
-
|
|
|
foreach ($providers as $provider)
|
|
|
{
|
|
|
$channel_name = $provider->name();
|
|
@@ -506,12 +501,13 @@ class RefillBase
|
|
|
$channel_amount = $ch_price * $order->quantity();
|
|
|
[$order_success, $order_id, $order_sn] = $this->create_order($order, $goods_id, $minfo, $calc, $channel_name, $channel_amount, $mch_amount);
|
|
|
$last_orderid = $order_id;
|
|
|
- if(!$order_success) continue;
|
|
|
+ if(!$order_success) {
|
|
|
+ return [errcode::MERCHANT_REFILL_DBERROR, "充值失败", $last_orderid, false, 0];
|
|
|
+ }
|
|
|
|
|
|
$start = microtime(true);
|
|
|
$net_errno = "";
|
|
|
$params = $order->channel_params($order_id, $order_sn, $goods_id, $ch_price);
|
|
|
-
|
|
|
$card_no = $order->card_no();
|
|
|
$card_type = $order->card_type();
|
|
|
$spec = $order->spec();
|
|
@@ -546,32 +542,29 @@ class RefillBase
|
|
|
$mod_fetch_order->add($fetch_datas);
|
|
|
}
|
|
|
else {
|
|
|
- Log::record("Err refill_type = {$refill_type}",Log::ERR);
|
|
|
+ Log::record("Err refill_type = $refill_type",Log::ERR);
|
|
|
}
|
|
|
|
|
|
$data = ['commit_time' => $commit_time, 'ch_trade_no' => $trade_no];
|
|
|
$mod_refill->partition(util::part_refill($order_time))->edit($order_id, $data);
|
|
|
- $refill_state = true;
|
|
|
-
|
|
|
//如果对方没有回调能力,则启动主动查询.
|
|
|
if($provider->callback() === false) {
|
|
|
QueueClient::async_push("QueryAutoRefillState",['order_id' => $order_id,'query_times' => 0],3);
|
|
|
}
|
|
|
- break;
|
|
|
+
|
|
|
+ return [true, '', $last_orderid, false, 0];
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
$chfilters->add_channel($channel_name,false);
|
|
|
if(!empty($neterr) && util::need_check($net_errno)) {
|
|
|
- $mod_refill->partition(util::part_refill($order_time))->edit($order_id, ['commit_time' => time(),'neterr' => 1,'err_msg' => "neterr={$net_errno}"]);
|
|
|
+ $mod_refill->partition(util::part_refill($order_time))->edit($order_id, ['commit_time' => time(),'neterr' => 1,'err_msg' => "neterr=$net_errno"]);
|
|
|
util::monitor_netchk($channel_name,false);
|
|
|
- break;
|
|
|
- } else {
|
|
|
- $neterr = false;
|
|
|
- $net_errno = 0;
|
|
|
+ return [errcode::MERCHANT_REFILL_NETERROR, "充值失败", $last_orderid, $neterr, $net_errno];
|
|
|
}
|
|
|
|
|
|
- Log::record("channel:{$channel_name} err:{$errmsg}");
|
|
|
+ //可以再提单
|
|
|
+ Log::record("channel:$channel_name err:$errmsg");
|
|
|
$logic_vr_order = Logic("vr_order");
|
|
|
$order_info = Model('vr_order')->getOrderInfo(['order_id' => $order_id]);
|
|
|
$logic_vr_order->changeOrderStateCancel($order_info, '', "调用{$channel_name}接口失败",true,true);
|
|
@@ -583,14 +576,7 @@ class RefillBase
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if ($refill_state) {
|
|
|
- return [true, '', $last_orderid, false, 0];
|
|
|
- } elseif ($order_success) {
|
|
|
- return [errcode::MERCHANT_REFILL_ERROR, "充值失败", $last_orderid, $neterr, $net_errno];
|
|
|
- } else {
|
|
|
- //订单创建失败,不需要再重试了,可能已经是数据库等系统错误
|
|
|
- return [errcode::MERCHANT_REFILL_ERROR, "充值失败", $last_orderid, false, 0];
|
|
|
- }
|
|
|
+ return [errcode::MERCHANT_REFILL_CHLIMIT, "无可用通道", $last_orderid, false, 0];
|
|
|
}
|
|
|
|
|
|
private function create_order(order $order, $goods_id, $minfo, $calc, $ch_name, $ch_amount, $mch_amount)
|