|
@@ -32,6 +32,7 @@ class proxy
|
|
|
$org_quality = intval($params['org_quality']) ?? 0;
|
|
|
$card_type = intval($params['card_type']) ?? 0;
|
|
|
$regin_no = intval($params['regin_no']) ?? 0;
|
|
|
+ $quantity = 1;
|
|
|
|
|
|
Log::record("proxy::add mch_order={$mch_order} card_no = {$card_no}",Log::DEBUG);
|
|
|
|
|
@@ -65,7 +66,7 @@ class proxy
|
|
|
|
|
|
[$errcode, $errmsg, $order_id, $neterr] = refill\RefillFactory::instance()->add($mchid, $buyer_id, $amount, $card_no,
|
|
|
$mch_order, $idcard, $card_name, $notify_url, $quality,$org_quality,
|
|
|
- $order_time, $commit_times, $last_order_id,$card_type,$regin_no);
|
|
|
+ $order_time, $commit_times, $last_order_id,$card_type,$regin_no,$quantity);
|
|
|
$params['commit_times'] += 1;
|
|
|
$commit_times += 1;
|
|
|
|
|
@@ -141,8 +142,86 @@ class proxy
|
|
|
public function manual_success($order_id)
|
|
|
{
|
|
|
refill\RefillFactory::instance()->manual_success($order_id);
|
|
|
- } public function manual_cancel($order_id)
|
|
|
+ }
|
|
|
+ public function manual_cancel($order_id)
|
|
|
{
|
|
|
refill\RefillFactory::instance()->manual_cancel($order_id);
|
|
|
}
|
|
|
+
|
|
|
+ public function addthird($params)
|
|
|
+ {
|
|
|
+ $refill_order = Model('refill_order');
|
|
|
+
|
|
|
+ $mchid = $params['mchid'];
|
|
|
+ $buyer_id = $params['buyer_id'];
|
|
|
+ $amount = intval($params['amount']);
|
|
|
+
|
|
|
+ $card_no = $params['card_no'];
|
|
|
+ $mch_order = $params['mch_order'];
|
|
|
+ $notify_url = $params['notify_url'];
|
|
|
+ $idcard = $params['idcard'] ?? '';
|
|
|
+ $card_name = $params['card_name'] ?? '';
|
|
|
+
|
|
|
+ $order_time = $params['order_time'] ?? time();
|
|
|
+ $commit_times = $params['commit_times'] ?? 0;
|
|
|
+ $last_order_id = $params['order_id'] ?? 0;
|
|
|
+
|
|
|
+ $org_quality = intval($params['org_quality']) ?? 0;
|
|
|
+ $card_type = intval($params['card_type']);
|
|
|
+ $regin_no = 0;
|
|
|
+
|
|
|
+ $product_code = $params['product_code'];
|
|
|
+ $quantity = intval($params['quantity']);
|
|
|
+ $third_card_type = $params['card_type'];
|
|
|
+
|
|
|
+ $third_params = ['product_code' => $product_code,
|
|
|
+ 'quantity' => $quantity,
|
|
|
+ 'third_card_type' => $third_card_type];
|
|
|
+
|
|
|
+ refill\util::incr_user_commit($card_type,$amount);
|
|
|
+
|
|
|
+ [$errcode, $errmsg, $order_id, $neterr] = refill\RefillFactory::instance()->add($mchid, $buyer_id, $amount, $card_no,
|
|
|
+ $mch_order, $idcard, $card_name, $notify_url, $org_quality,$org_quality,
|
|
|
+ $order_time, $commit_times, $last_order_id,$card_type,$regin_no,$third_params);
|
|
|
+
|
|
|
+ if($errcode !== true)
|
|
|
+ {
|
|
|
+ $fNotify = true;
|
|
|
+ if(($errcode === refill\errcode::MERCHANT_REFILL_ERROR && $neterr) || $errcode == refill\errcode::PROVIDER_OVERLOAD || $errcode == errcode::MERCHANT_PRICE_UNSETTING)
|
|
|
+ {
|
|
|
+ [$org_quality,$quality] = refill\RefillFactory::instance()->find_quality($mchid,$amount,$card_type,$org_quality,$commit_times,time() - $order_time);
|
|
|
+ if ($quality > 0) {
|
|
|
+ $fNotify = false;
|
|
|
+ $params['order_id'] = $order_id;
|
|
|
+ if($order_id > 0) {
|
|
|
+ $refill_order->edit($order_id, ['is_retrying' => 1]);
|
|
|
+ }
|
|
|
+ if(defined('USE_COROUTINE') && USE_COROUTINE && $errcode == refill\errcode::PROVIDER_OVERLOAD) {
|
|
|
+ \Swoole\Coroutine::sleep(1);
|
|
|
+ }
|
|
|
+ refill\util::push_add($params);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if($fNotify)
|
|
|
+ {
|
|
|
+ if ($order_id === 0)
|
|
|
+ {
|
|
|
+ $order_info = $this->latest_order($refill_order, $mchid, $mch_order);
|
|
|
+ if (empty($order_info)) {
|
|
|
+ $order_id = refill\RefillFactory::instance()->zero_order($mchid, $buyer_id, $amount, $card_no,
|
|
|
+ $mch_order, $idcard, $card_name, $notify_url, $quality, $org_quality, $order_time, $commit_times, $errmsg);
|
|
|
+ refill\util::pop_queue($mchid,$mch_order);
|
|
|
+ } else {
|
|
|
+ $order_id = $order_info['order_id'];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ $refill_order->edit($order_id, ['notify_time' => time(), 'notify_state' => 1,'is_retrying' => 0]);
|
|
|
+ }
|
|
|
+
|
|
|
+ QueueClient::push("NotifyMerchantComplete", ['order_id' => $order_id,'manual' => false]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|