Browse Source

liangtongzx

haru haru 2 năm trước cách đây
mục cha
commit
9513be3c72

+ 7 - 37
helper/refill/api/xyz/liantongzx/RefillCallBack.php

@@ -9,58 +9,28 @@ class RefillCallBack implements refill\IRefillCallBack
     public function verify($params): bool
     {
         $input = $params;
-        unset($input['sign']);
-        $sign = $this->sign($input);
-        if ($params['sign'] == $sign) {
+        unset($input['signature']);
+        $sign = config::sign($input);
+        if ($params['signature'] == $sign) {
             return true;
         } else {
             return false;
         }
     }
 
-    private function sign($params)
-    {
-        $content = '';
-        ksort($params);
-        foreach ($params as $key => $val){
-            if(false === $this->check_empty($val)) {
-                $content .= "{$key}={$val}&";
-            }
-        }
-        $content .= "key=".config::KEY;
-
-        return md5($content);
-    }
-
-
-    protected function check_empty($value)
-    {
-        if (!isset($value))
-            return true;
-        if ($value === null)
-            return true;
-        if (trim($value) === "")
-            return true;
-
-        return false;
-    }
-
     public function notify($params)
     {
-        $status = intval($params['code']);
-        $order_sn = $params['tmporder'];
+        $status = intval($params['status']);
+        $order_sn = $params['buisId'];
         $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 === 1) {
-            $data['official_sn'] = strtolower($params['voucher']) == 'null' ? '' : $params['voucher'];
-            $data['ch_trade_no'] = strtolower($params['orderno']) == 'null' ? '' : $params['orderno'];
-            Model('refill_order')->edit($order_id, $data);
+        if ($status === 2) {
             return [$order_id, true, false, true];
-        } elseif ($status === -1) {
+        } elseif ($status === 3) {
             return [$order_id, false, true, true];
         } else {
             return [$order_id, false, false, false];

+ 6 - 4
helper/refill/api/xyz/liantongzx/RefillPhone.php

@@ -31,8 +31,9 @@ class RefillPhone extends refill\IRefillPhone
 
         $sign = config::sign($params);
         $params['signature'] = $sign;
+        $params = json_encode($params);
 
-        $resp = http_request(config::ORDER_URL, $params, 'POST', false, config::ExtHeaders, $net_errno);
+        $resp = http_post_data(config::ORDER_URL, $params , config::ExtHeaders, $net_errno);
         if (empty($resp)) {
             return [false, '网络错误', true];
         }
@@ -59,8 +60,9 @@ class RefillPhone extends refill\IRefillPhone
         $params['busiId'] = $refill_info['order_sn'];
         $sign = config::sign($params);
         $params['signature'] = $sign;
+        $params = json_encode($params);
 
-        $resp = http_request(config::QUERY_URL, $params, 'POST', false, config::ExtHeaders);
+        $resp = http_post_data(config::QUERY_URL, $params , config::ExtHeaders);
 
         if (empty($resp)) {
             return [false, '网络错误'];
@@ -77,7 +79,6 @@ class RefillPhone extends refill\IRefillPhone
             {
                 $status = $resp['data']['status'];
                 if ($status === 2) {
-                    Model('refill_order')->edit($refill_info['order_id'], ['official_sn' => $resp['data']['officialOrderNo'], 'ch_trade_no' => $resp['data']['agentOrderNo']]);
                     $order_state = ORDER_STATE_SUCCESS;
                 } elseif ($status === 3) {
                     $order_state = ORDER_STATE_CANCEL;
@@ -104,8 +105,9 @@ class RefillPhone extends refill\IRefillPhone
         $params['appKey'] = config::APP_KEY;
         $sign = config::sign($params);
         $params['signature'] = $sign;
+        $params = json_encode($params);
 
-        $resp = http_request(config::BALANCE_URL, $params, 'POST', false, config::ExtHeaders);
+        $resp = http_post_data(config::BALANCE_URL, $params , config::ExtHeaders);
         if(empty($resp)) {
             return [false, '网络错误'];
         }

+ 2 - 7
helper/refill/api/xyz/liantongzx/config.php

@@ -3,9 +3,9 @@
 
 namespace refill\liantongzx;
 
-use mtopcard;
 class config
 {
+    //回调地址上游后台配置
     const ORDER_URL = 'https://yx.mail.wo.cn:11443/rechargeplat-rest/rechargeIntf/singleRecharge';
     const QUERY_URL= 'https://yx.mail.wo.cn:11443/rechargeplat-rest/rechargeIntf/queryRechargeRecord';
     const BALANCE_URL= 'https://yx.mail.wo.cn:11443/rechargeplat-rest/getUserBalance';
@@ -13,12 +13,7 @@ class config
     const APP_KEY = 'Dbjyz';
     const APP_SECRET = 'C1A0845BEBB9F2BC62A53CC920EF440D';
     const NOTIFY_URL = BASE_SITE_URL . "/mobile/callback/refill_liantongzx.php";
-    const operator = [
-        mtopcard\ChinaMobileCard  => 'MOBILE',
-        mtopcard\ChinaUnicomCard  => 'UNICOM',
-        mtopcard\ChinaTelecomCard => 'TELECOM'
-    ];
-    const ExtHeaders = ['Content-Type: application/x-www-form-urlencoded' , 'Accept: application/json;charset=UTF-8'];
+    const ExtHeaders = ['Content-Type: application/json' , 'Accept: application/json;charset=UTF-8'];
 
     public static function sign($params)
     {

+ 9 - 0
mobile/callback/refill_liantongzx.php

@@ -0,0 +1,9 @@
+<?php
+
+$content = $_SERVER['post_content'] ?? [];
+$input = json_decode($content,true);
+refill\util::push_notify('liantongzx',$input['data']);
+
+$response = ["code" => "200", "msg" => "成功"];
+$body = json_encode($response);
+echo($body);

+ 14 - 0
test/TestRefill.php

@@ -2276,6 +2276,20 @@ class TestRefill extends TestCase
         $resp = $provider->notify($params);
     }
 
+    public function testLiantongzx()
+    {
+//        $provider = $this->getProvider('liantongzx');
+//        $resp = $provider->balance();
+//        $resp = $provider->add(18500608333, 5, 50, ['order_sn' => $this->make_sn()]);
+//        $resp = $provider->query(['order_sn' => '31091653029001738304']);
+
+        $body = '{"msg":"成功","code":"00000","data":{"buisId":"31091653029001738304","signature":"59E5589E87B24B2DCBEC7AE09B0310B8","rechargePhone":"18500608333","appKey":"Dbjyz","id":"202205201443247E4AEC9FF804F14AC2","operator":"CU","status":2,"rechargeMoney":5000}}';
+        $params = json_decode($body, true);
+        $provider = $this->getProvider('liantongzx','RefillCallBack');
+        $ret = $provider->verify($params['data']);
+        $resp = $provider->notify($params['data']);
+    }
+
     public function testAmingjd()
     {
 //        $provider = new refill\amingjd\RefillPhone([]);