Sfoglia il codice sorgente

fix card_type regin cannot modify error

stanley-king 4 anni fa
parent
commit
ced4d4d5a1
2 ha cambiato i file con 14 aggiunte e 5 eliminazioni
  1. 8 5
      helper/mtopcard/mtopcard.php
  2. 6 0
      test/TestAddData.php

+ 8 - 5
helper/mtopcard/mtopcard.php

@@ -194,14 +194,14 @@ function card_type($cardno,&$regin_no)
     }
     elseif(preg_match('/^1\d{10}$/',$cardno,$matches))
     {
-        $region_no = -1;
-        $checker = function ($phone) use(&$region_no)
+        $checker = function ($phone,&$region)
         {
             if (empty($phone)) return false;  //手机号不能为空
             $url = "https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel={$phone}";
             $resp = http_request($url);  //获取API返回 的数据
-            $resp = mb_convert_encoding($resp, 'UTF-8', 'UTF-8,GBK,GB2312,BIG5'); //解决中文乱码
+            if(empty($resp)) return false;
 
+            $resp = mb_convert_encoding($resp, 'UTF-8', 'UTF-8,GBK,GB2312,BIG5'); //解决中文乱码
             $datas = explode('=', $resp);
             if(count($datas) == 2)
             {
@@ -210,7 +210,7 @@ function card_type($cardno,&$regin_no)
                     $res = array_combine($m[1], $m[2]);
 
                     $province = formatProvince($res['province']);
-                    $region_no = array_search($province,ProvinceList);
+                    $region = array_search($province,ProvinceList);
                     return $res;
                 }
             }
@@ -218,7 +218,7 @@ function card_type($cardno,&$regin_no)
             return false;
         };
 
-        $ret = $checker($cardno);
+        $ret = $checker($cardno,$region);
         if (empty($ret))
         {
             Log::record("淘宝接口没法使用了,用传统办法识别卡类型",Log::DEBUG);
@@ -233,12 +233,15 @@ function card_type($cardno,&$regin_no)
             }
         }
         elseif($ret['catName'] == '中国联通') {
+            $regin_no = $region;
             return ChinaUnicomCard;
         }
         elseif($ret['catName'] == '中国电信') {
+            $regin_no = $region;
             return ChinaTelecomCard;
         }
         elseif($ret['catName'] == '中国移动') {
+            $regin_no = $region;
             return ChinaMobileCard;
         }
         else {

+ 6 - 0
test/TestAddData.php

@@ -14,6 +14,7 @@ require_once(BASE_HELPER_PATH . '/order_helper.php');
 require_once(BASE_HELPER_PATH . '/bonus_helper.php');
 require_once(BASE_HELPER_PATH . '/vrorder_helper.php');
 require_once(BASE_HELPER_PATH . '/PHPExcel/PHPExcel.php');
+require_once (BASE_CORE_PATH . '/framework/function/http.php');
 
 use PHPUnit\Framework\TestCase;
 
@@ -32,6 +33,11 @@ class TestAddData extends TestCase
         $mod_card->addCard(['card_no' => $car_no,'card_key' => $card_key,'card_type' => $card_type,'amount' => $amount]);
     }
 
+    public function testRegin()
+    {
+        $card_type = mtopcard\card_type('13911129867',$regin);
+    }
+
     public function testReadCSVFile()
     {
         $items = [