|
@@ -4,8 +4,6 @@ declare(strict_types=0);
|
|
|
require_once(BASE_ROOT_PATH . '/helper/model_helper.php');
|
|
|
require_once(BASE_HELPER_PATH . '/refill/policy/transfer.php');
|
|
|
|
|
|
-use refill;
|
|
|
-
|
|
|
class proxy
|
|
|
{
|
|
|
private function onEerror(refill\order $order,$errmsg)
|
|
@@ -40,54 +38,56 @@ class proxy
|
|
|
|
|
|
private function transfer(refill\order $order) : bool
|
|
|
{
|
|
|
- $add_success = function (refill\order $order)
|
|
|
- {
|
|
|
- $mchid = $order->mchid();
|
|
|
- $mch_order = $order->mch_order();
|
|
|
- [$success,$order_id,$errmsg] = refill\RefillFactory::instance()->success_order($order);
|
|
|
-
|
|
|
- if($success) {
|
|
|
- refill\util::pop_queue_order($mchid, $mch_order);
|
|
|
- QueueClient::push("NotifyMerchantComplete", ['order_id' => $order_id, 'manual' => false]);
|
|
|
- }
|
|
|
-
|
|
|
- return $success;
|
|
|
+ $order_canceler = function ($order_id,$err_msg) {
|
|
|
+ $logic_vr_order = Logic("vr_order");
|
|
|
+ $order_info = Model('vr_order')->getOrderInfo(['order_id' => $order_id]);
|
|
|
+ $logic_vr_order->changeOrderStateCancel($order_info, '', $err_msg, true, true);
|
|
|
};
|
|
|
|
|
|
- $transfer_params = function (refill\order $order)
|
|
|
+ $transfer_order = function (refill\order $order)
|
|
|
{
|
|
|
$mchid = $order->mchid();
|
|
|
- $trans_mchid = refill\transfer::instance()->transfer_mchid($mchid);
|
|
|
+ [$trans_mchid,$adminid] = refill\transfer::instance()->transfer_info($mchid);
|
|
|
|
|
|
+ if($trans_mchid == 0 || $adminid == 0) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
|
|
|
$params = ['mchid' => $trans_mchid,
|
|
|
- 'buyer_id' => $this->adminid(),
|
|
|
+ 'buyer_id' => $adminid,
|
|
|
'amount' => $order->spec(),
|
|
|
'card_no' => $order->card_no(),
|
|
|
'mch_order' => $order->mch_order(),
|
|
|
- 'notify_url' => $notify_url,
|
|
|
+ 'notify_url' => '',
|
|
|
'org_quality' => 0,
|
|
|
'order_time' => time()
|
|
|
];
|
|
|
|
|
|
- refill\util::push_queue_order($this->mchid(),$mch_order,ORDER_STATE_QUEUE);
|
|
|
- Model('refill_order')->add_detail($this->mchid(),$mch_order,$params,ORDER_STATE_QUEUE);
|
|
|
-
|
|
|
- [$can_refill, $period] = refill\util::can_commit($card_no, $card_type);
|
|
|
- if ($can_refill === false) {
|
|
|
- $state = refill\util::async_add($params, $period);
|
|
|
- } else {
|
|
|
- $state = refill\util::push_add($params);
|
|
|
- }
|
|
|
-
|
|
|
+ $mch_order = $order->mch_order();
|
|
|
+ refill\util::push_queue_order($trans_mchid,$mch_order,ORDER_STATE_QUEUE);
|
|
|
+ Model('refill_order')->add_detail($trans_mchid,$mch_order,$params,ORDER_STATE_QUEUE);
|
|
|
+ $state = refill\util::push_add($params);
|
|
|
|
|
|
+ return $state;
|
|
|
};
|
|
|
|
|
|
- if($add_success($order)) {
|
|
|
- $params = $transfer_params($order);
|
|
|
+ $mchid = $order->mchid();
|
|
|
+ $mch_order = $order->mch_order();
|
|
|
+ [$success,$order_id,$errmsg] = refill\RefillFactory::instance()->success_order($order);
|
|
|
|
|
|
+ if(!$success) {
|
|
|
+ return false;
|
|
|
}
|
|
|
|
|
|
+ if(!$transfer_order($order)) {
|
|
|
+ $order_canceler($order_id,$errmsg);
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ refill\util::incr_user_success($mchid,$order->card_type(), $order->spec(),$order->cur_quality());
|
|
|
+ refill\util::pop_queue_order($mchid, $mch_order);
|
|
|
+ QueueClient::push("NotifyMerchantComplete", ['order_id' => $order_id, 'manual' => false]);
|
|
|
+
|
|
|
return true;
|
|
|
}
|
|
|
|
|
@@ -132,8 +132,8 @@ class proxy
|
|
|
if($order->first_commit()) {
|
|
|
refill\util::incr_user_commit($mchid,$order->card_type(),$order->spec(),$org_quality);
|
|
|
}
|
|
|
- elseif($this->need_transfer($order)) {
|
|
|
- return $this->transfer($order);
|
|
|
+ elseif($this->need_transfer($order) && $this->transfer($order)) {
|
|
|
+ return true;
|
|
|
}
|
|
|
|
|
|
[$errcode, $errmsg, $order_id, $neterr,$net_errno] = refill\RefillFactory::instance()->add($order);
|