stanley-king hace 3 años
padre
commit
fac6d2e974

+ 23 - 12
helper/refill/api/xyz/suning/RefillCallBack.php

@@ -20,23 +20,34 @@ class RefillCallBack implements refill\IRefillCallBack
         if (empty($order_info)) {
             return [false, false, false,false];
         }
+
         $order_id = $order_info['order_id'];
+        $fDirect = $params['isDirect'];
+        $card_info = $params['card_info'];
 
-        $card_info = $params['cardList'];
-        if(!empty($card_info))
+        if($fDirect)
         {
-            $result = $this->rsa_decode($card_info['password']);
-            if (empty($result)) {
-                $data['ret_state'] = 2;
-                $data['card_info'] = '回调解密,解密失败';
-            } else {
-                $data['ret_state'] = 1;
-                $card_info['password'] = $result;
-                $result = json_encode($card_info);
-                $data['card_info'] = $result;
+            if(!empty($card_info))
+            {
+                $result = $this->rsa_decode($card_info['password']);
+                if (empty($result)) {
+                    $data['ret_state'] = 2;
+                    $data['card_info'] = '回调解密,解密失败';
+                } else {
+                    $data['ret_state'] = 1;
+                    $card_info['password'] = $result;
+                    $result = json_encode($card_info);
+                    $data['card_info'] = $result;
+                }
+
+                Model('thrid_refill')->edit_third($order_id, $data);
             }
-            Model('thrid_refill')->edit_third($order_id, $data);
         }
+        else {
+            $data['official_sn'] = $card_info['cardNo'];
+            Model('refill_order')->edit($order_id, $data);
+        }
+
         return [$order_id, true, false,true];
     }
 

+ 14 - 6
helper/refill/api/xyz/suning/RefillPhone.php

@@ -92,7 +92,7 @@ class RefillPhone extends refill\IRefillPhone
             if (empty($resp)) {
                 return [false, '网络错误', true];
             } elseif ($resp['respCode'] == 00) {
-                $notify_data = $this->notify_data_format($resp);
+                $notify_data = $this->notify_data_format($resp,true);
                 //可替换延迟回调
                 refill\util::push_notify('suning',$notify_data);
                 return [true, $resp['orderNo'], false];
@@ -113,7 +113,7 @@ class RefillPhone extends refill\IRefillPhone
         $params = $this->req_params($order_sn,$product_code,$quantity);
         $params['bizType'] = '01';
         $sign = $this->sign($params);
-        $params['Sign'] = $sign;
+        $params['sign'] = $sign;
 
         $resp = http_request(config::ORDER_URL, $params);
         if (empty($resp)) {
@@ -126,7 +126,7 @@ class RefillPhone extends refill\IRefillPhone
             if (empty($resp)) {
                 return [false, '网络错误', true];
             } elseif ($resp['respCode'] == 00) {
-                $notify_data = $this->notify_data_format($resp);
+                $notify_data = $this->notify_data_format($resp,false);
                 //可替换延迟回调
                 refill\util::push_notify('suning',$notify_data);
                 return [true, $resp['orderNo'], false];
@@ -156,13 +156,21 @@ class RefillPhone extends refill\IRefillPhone
             $i++;
         }
         return hash_hmac("sha1", $body, config::APP_KEY);
-//        return bin2hex(hash_hmac("sha1", $body, config::APP_KEY, true));
     }
 
-    private function notify_data_format($params): array
+    private function notify_data_format($params,$fdirect): array
     {
         $data['order_sn'] = $params['partnerOrderNo'];
-        $data['cardList'] = $params['cardList'];
+        $data['orderNo']  = $params['orderNo'];
+
+        $card_list = $params['cardList'];
+        if(count($card_list) == 1) {
+            $data['card_info'] = $params['cardList'][0];
+        }
+        else {
+            $data['card_info'] = [];
+        }
+        $data['isDirect'] = $fdirect;
 
         return $data;
     }

+ 1 - 7
helper/refill/api/xyz/suning/config.php

@@ -9,13 +9,7 @@ class config
 
 
     const PARTNER = 'YZKJ';
-    const APP_KEY = <<<keydoc
------BEGIN PUBLIC KEY-----
-MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBANJztgvXppVfB/mJzBC9nMZWSLE3HGIy
-MqSMT/zKAAm/exJtu3xEz2fBgm6hCUPn0fQOXCOQgHUZDTGxhz7o/lsCAwEAAQ==
------END PUBLIC KEY-----
-
-keydoc;
+    const APP_KEY = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAMaNUnhi8Ium6KUcQRKNHNUzQEJR3i7b';
 
     //沙箱环境账号
     const ORDER_URL = 'http://kaapiprexg.cnsuning.com/spcopen/gateway';//订单提交地址

+ 11 - 1
test/TestRefillThird.php

@@ -261,7 +261,17 @@ class TestRefillThird extends TestCase
         $providers = $this->getProvider('suning','RefillPhone');
         $providers->mStoreID = 61;
         $order_sn = $this->make_sn();
-        $resp = $providers->add(13911129867, 7, 1,
+        $resp = $providers->add(14011221111, 7, 1,
+            ['order_sn' => $order_sn, 'goods_id' => 6619,
+                'quantity' => 5, 'product_code' => 'XYZ100745', 'third_card_type' => 1]);
+    }
+
+    public function testSuningCardKey()
+    {
+        $providers = $this->getProvider('suning','RefillPhone');
+        $providers->mStoreID = 61;
+        $order_sn = $this->make_sn();
+        $resp = $providers->add('', 7, 1,
             ['order_sn' => $order_sn, 'goods_id' => 6619,
                 'quantity' => 5, 'product_code' => 'XYZ100745', 'third_card_type' => 1]);
     }