xiaoyu 3 gadi atpakaļ
vecāks
revīzija
0c9f452886

+ 19 - 40
helper/refill/api/xyz/suning/RefillCallBack.php

@@ -1,6 +1,6 @@
 <?php
-namespace refill\sctongqian;
-require_once(BASE_HELPER_RAPI_PATH . '/sctongqian/config.php');
+namespace refill\suning;
+require_once(BASE_HELPER_RAPI_PATH . '/suning/config.php');
 
 use refill;
 use Log;
@@ -9,56 +9,35 @@ class RefillCallBack implements refill\IRefillCallBack
 {
     public function verify($params): bool
     {
-        $sign = $this->sign($params);
-        if ($params['Sign'] == $sign) {
-            return true;
-        } else {
-            return false;
-        }
-    }
-
-    private function sign($params)
-    {
-        $content = config::APP_KEY . $params['TimesTamp'] . $params['MOrderID'] . $params['OrderID'] . $params['State'] . $params['ChargeAccount'];
-        $content .= $params['BuyCount'] . config::App_Secret;
-        return strtoupper(md5($content));
+        return true;
     }
 
     public function notify($params)
     {
-        $status = intval($params['State']);
-        $order_sn = $params['MOrderID'];
-
+        //苏宁接口提交成功即订单成功,只需处理成功
+        $order_sn = $params['order_sn'];
         $order_info = Model('vr_order')->getOrderInfo(['order_sn' => $order_sn]);
         if (empty($order_info)) {
             return [false, false, false,false];
         }
         $order_id = $order_info['order_id'];
 
-        if ($status === 2)
+        $card_info = $params['cardList'];
+        if(!empty($card_info))
         {
-            $card_info = $params['CardInfo'];
-            if(!empty($card_info))
-            {
-                $result = $this->rsa_decode($params['CardInfo']);
-                if (empty($result)) {
-                    $data['ret_state'] = 2;
-                    $data['card_info'] = '回调解密,解密失败';
-                } else {
-                    $data['ret_state'] = 1;
-                    $data['card_info'] = $result;
-                }
-                Model('thrid_refill')->edit_third($order_id, $data);
+            $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;
             }
-
-            return [$order_id, true, false,true];
-        }
-        elseif ($status === 3) {
-            return [$order_id, false, true,true];
-        }
-        else {
-            return [$order_id, false, false,false];
+            Model('thrid_refill')->edit_third($order_id, $data);
         }
+        return [$order_id, true, false,true];
     }
 
     private function rsa_decode($encrypted)
@@ -69,7 +48,7 @@ class RefillCallBack implements refill\IRefillCallBack
             return $result;
         } else {
             $err = openssl_error_string();
-            Log::record("sctongqian callback openssl_private_decrypt error={$err}",Log::ERR);
+            Log::record("suning callback openssl_private_decrypt error={$err}",Log::ERR);
             return false;
         }
     }

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

@@ -78,7 +78,6 @@ class RefillPhone extends refill\IRefillPhone
 
         $params['userName'] = $card_no;
         $params['bizType'] = '02';
-        $params['quantity'] = 1;
         $sign = $this->sign($params);
         $params['Sign'] = $sign;
 
@@ -93,6 +92,9 @@ class RefillPhone extends refill\IRefillPhone
             if (empty($resp)) {
                 return [false, '网络错误', true];
             } elseif ($resp['respCode'] == 00) {
+                $notify_data = $this->notify_data_format($resp);
+                //可替换延迟回调
+                refill\util::push_notify('suning',$notify_data);
                 return [true, $resp['orderNo'], false];
             } else {
                 return [false, $resp['message'], false];
@@ -124,6 +126,9 @@ class RefillPhone extends refill\IRefillPhone
             if (empty($resp)) {
                 return [false, '网络错误', true];
             } elseif ($resp['respCode'] == 00) {
+                $notify_data = $this->notify_data_format($resp);
+                //可替换延迟回调
+                refill\util::push_notify('suning',$notify_data);
                 return [true, $resp['orderNo'], false];
             } else {
                 return [false, $resp['message'], false];
@@ -133,74 +138,7 @@ class RefillPhone extends refill\IRefillPhone
 
     public function query($refill_info)
     {
-        $params['AppKey'] = config::APP_KEY;
-        $params['TimesTamp'] = time();
-        $params['MOrderID'] = $refill_info['order_sn'];
-        $params['Version'] = '1.0';
-
-        $content = config::APP_KEY . $params['TimesTamp'] . $params['Version'] . $params['MOrderID'] . config::App_Secret;
-        $params['Sign'] = strtoupper(md5($content));
-
-        $resp = http_request(config::QUERY_URL, $params);
-
-        if (empty($resp)) {
-            return [false, '网络错误'];
-        }
-        else
-        {
-            Log::record($resp, Log::DEBUG);
-            $resp = json_decode($resp, true);
-            if (empty($resp)) {
-                return [false, '网络错误'];
-            }
-            elseif ($resp['Code'] == 999)
-            {
-                $status = intval($resp['Data']['OrderState']);
-                if ($status === 2)
-                {
-                    if(!empty($resp['Data']['CardData'])) {
-                        $result = $this->rsa_decode($resp['Data']['CardData']);
-                        if (empty($result)) {
-                            $data['ret_state'] = 2;
-                            $data['card_info'] = '查询接口,解密失败';
-                        } else {
-                            $data['ret_state'] = 1;
-                            $data['card_info'] = $result;
-                        }
-                        Model('thrid_refill')->edit_third($refill_info['order_id'], $data);
-                    }
-                    $order_state = ORDER_STATE_SUCCESS;
-                }
-                elseif ($status === 3) {
-                    $order_state = ORDER_STATE_CANCEL;
-                }
-                elseif (in_array($status, [1,4])) {
-                    $order_state = ORDER_STATE_SEND;
-                }
-                else {
-                    return [false, $resp['Message']];
-                }
-
-                return [true, $order_state];
-            }
-            else
-            {
-                return [false, $resp['Message']];
-            }
-        }
-    }
-
-    private function rsa_decode($encrypted)
-    {
-        $ret = openssl_private_decrypt(base64_decode($encrypted), $decrypted, config::PRIVATE_KEY);
-        if ($ret) {
-            $result = json_decode($decrypted, true);
-            return $result;
-        } else {
-            $err = openssl_error_string();
-            Log::record("sctongqian callback openssl_private_decrypt error={$err}", Log::ERR);
-            return false;
-        }
+        return [false, '苏宁三方下单即回调,无需查询接口'];
     }
 
     private function sign($params)
@@ -220,4 +158,11 @@ class RefillPhone extends refill\IRefillPhone
         return bin2hex(hash_hmac("sha1", $body, config::APP_KEY, true));
     }
 
+    private function notify_data_format($params): array
+    {
+        $data['order_sn'] = $params['partnerOrderNo'];
+        $data['cardList'] = $params['cardList'];
+
+        return $data;
+    }
 }