瀏覽代碼

fix get mch_amount has not handled exception

stanley-king 2 年之前
父節點
當前提交
dab3152773
共有 2 個文件被更改,包括 30 次插入17 次删除
  1. 15 11
      helper/refill/RefillBase.php
  2. 15 6
      rdispatcher/proxy.php

+ 15 - 11
helper/refill/RefillBase.php

@@ -357,19 +357,23 @@ class RefillBase
 
     public function mch_amount(order $order)
     {
-        $mchid = $order->mchid();
-        $org_quality = $order->org_quality();
+        try
+        {
+            $mchid = $order->mchid();
+            $org_quality = $order->org_quality();
 
-        if(PolicyUtil::mixed_quality($org_quality)) {
-            $calc = new CalcMerchantPrice($mchid, $order->spec(), $order->card_type(),$org_quality,$this->mPolicy,$order->thrid_params());
-        }
-        else {
-            $calc = new CalcMerchantPrice($mchid, $order->spec(), $order->card_type(),$order->cur_quality(),$this->mPolicy,$order->thrid_params());
-        }
-        $mch_price = $calc->calc_vgoods_price([]);
-        $mch_amount = $mch_price * $order->quantity();
+            if (PolicyUtil::mixed_quality($org_quality)) {
+                $calc = new CalcMerchantPrice($mchid, $order->spec(), $order->card_type(), $org_quality, $this->mPolicy, $order->thrid_params());
+            } else {
+                $calc = new CalcMerchantPrice($mchid, $order->spec(), $order->card_type(), $order->cur_quality(), $this->mPolicy, $order->thrid_params());
+            }
+            $mch_price = $calc->calc_vgoods_price([]);
+            $mch_amount = $mch_price * $order->quantity();
 
-        return $mch_amount;
+            return $mch_amount;
+        } catch (Exception $ex) {
+            return false;
+        }
     }
 
     //返回值:[ 错误码,错误信息,订单ID,是否是网络错误]

+ 15 - 6
rdispatcher/proxy.php

@@ -144,9 +144,14 @@ class proxy
         {
             if (!$order->match_card_type()) {
                 return $this->onEerror($order, '卡类型和产品类型不符.');
-            } else {
+            }
+
+            $mch_amount = refill\RefillFactory::instance()->mch_amount($order);
+            if($mch_amount === false) {
+                return $this->onEerror($order, '没有协商商品购买价格.');
+            }
+            else {
                 refill\util::incr_user_commit($mchid, $order->card_type(), $order->spec(), $org_quality);
-                $mch_amount = refill\RefillFactory::instance()->mch_amount($order);
                 refill\util::monitor_submit($order->mchid(), $order->spec(), $order->card_type(), $mch_amount);
             }
         }
@@ -300,16 +305,20 @@ class proxy
 
         $mchid = $order->mchid();
         $mch_order = $order->mch_order();
-        $card_type = $order->card_type();
-        $spec = $order->spec();
         $org_quality = $order->org_quality();
 
         $refill_order = Model('refill_order');
         refill\util::push_queue_order($mchid,$mch_order,ORDER_STATE_SEND);
         $refill_order->edit_detail($mchid,$mch_order,['order_state' => ORDER_STATE_SEND]);
-        refill\util::incr_user_commit($mchid,$card_type,$spec,$org_quality);
+
         $mch_amount = refill\RefillFactory::instance()->mch_amount($order);
-        refill\util::monitor_submit($mchid, $order->spec(), $order->card_type(), $mch_amount);
+        if($mch_amount === false) {
+            return $this->onEerror($order, '没有协商商品购买价格.');
+        }
+        else {
+            refill\util::incr_user_commit($mchid, $order->card_type(), $order->spec(), $org_quality);
+            refill\util::monitor_submit($order->mchid(), $order->spec(), $order->card_type(), $mch_amount);
+        }
 
         [$errcode, $errmsg, $order_id, $neterr,$net_errno] = refill\RefillFactory::instance()->add($order);
         if($errcode !== true)