lizhen пре 1 дан
родитељ
комит
812d5e0ccf
1 измењених фајлова са 136 додато и 6 уклоњено
  1. 136 6
      application/api/controller/Demo.php

+ 136 - 6
application/api/controller/Demo.php

@@ -15,9 +15,9 @@ class Demo extends Api
     //如果接口已经设置无需登录,那也就无需鉴权了
     //
     // 无需登录的接口,*表示全部
-    protected $noNeedLogin = ['test', 'test1'];
+    protected $noNeedLogin = ['*'];
     // 无需鉴权的接口,*表示全部
-    protected $noNeedRight = ['test2'];
+    protected $noNeedRight = ['*'];
 
     /**
      * 测试方法
@@ -34,9 +34,9 @@ class Demo extends Api
      * @ApiReturnParams   (name="msg", type="string", required=true, sample="返回成功")
      * @ApiReturnParams   (name="data", type="object", sample="{'user_id':'int','user_name':'string','profile':{'email':'string','age':'integer'}}", description="扩展数据返回")
      * @ApiReturn   ({
-         'code':'1',
-         'msg':'返回成功'
-        })
+    'code':'1',
+    'msg':'返回成功'
+    })
      */
     public function test()
     {
@@ -67,9 +67,139 @@ class Demo extends Api
      */
     public function test3()
     {
-        $this->success('返回成功', ['action' => 'test3']);
+        $this->send_score(1, 1);
     }
 
+    public function send_score($score, $grade_id)
+    {
+        $url = 'http://apip-gateway-nrouter-saas-gn-C.month.sdc.cs.icbc:8081/api/mybank/farm/farmplatf/updateVillagerIntegral/V1';
+
+
+        $biz_content = [
+            'fSeqNo' => createUniqueNo('fseq', $grade_id),
+            'corpCode' => 'xingfulishequ',
+            'mobilePhone' => $this->auth->mobile,
+            'integralValue' => $score,
+            'integralType' => '',
+            /* 'remark1'      => '',
+             'remark2'      => '',
+             'remark3'      => '',
+             'remark4'      => '',
+             'remark5'      => '',
+             'remark6'      => '',
+             'remark7'      => '',*/
+        ];
+
+        $sign = $this->sign(base64_encode(json_encode($biz_content)));
+
+        $data = [
+            'app_id' => '10000000000004096993',
+            'msg_id' => createUniqueNo('msg', $grade_id),
+            'format' => 'json',
+            'charset' => 'UTF-8',
+//            'encrypt_type'=> 'AES',
+            'sign_type' => 'RSA',
+            'sign' => $sign,
+            'timestamp' => date('Y-m-d H:i:s'),
+//            'ca'          => '',
+            'biz_content' => $biz_content,
+        ];
+
+        $rs = curl_post($url, json_encode($data, JSON_UNESCAPED_UNICODE));
+        dump($rs);
+    }
+
+    private function sign($data)
+    {
+        $private_key = 'MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCR8/ZvKPAdZzsyvapySvztQm56s1N59ynKMOWpUbK4c5MNWMl+q3dvsp+UiSAx2TAeGkYfW3W6nO/3Y0hAZki99fmuzpPujEeHhs79HNwGZYQjN71Vck2JeflTq8jpL+9/up0Kz2nbwtZDMKTTEgbfNeO24gV1bmvD2kQ9j66RIyuXSDwQbVbQfl6LiqKoJm3rbtsbwX1Ytc0/Szslyor1VdPZWnHDMm3m78Hqu7X3vL6K7fAW/4FVbeKV7vWjvyiTQfETmuADqMdsqV5YeqUZWE/Dnzg+6JV/3L9nJ8f+/mPlh8k1h1oW035GrADKFKf1M2ujKKeHICnj7qKCdBeNAgMBAAECggEAHkh+U2YtHAy1Tbvox7ojbJ8iCTd4FJBiDV/D5zPaX0crtdM8S5oMOBLZ5ZnmIjGsODK/ZfY2ITg62huxfBs88J0+5zRZoV9d4BLqk74PMQyTNDN2h2omCGZUgzXbg/a8PMZdm0aZ8k0k4+AN8vWEk3+89c9Dzq/QkFyTWCqdz+Mp9NkcOjA255kj5/D1q9Zj0x9VcmKg3oTtrKL/dkspUxVaMKXcpo6J4AszC05tT3N0SNLhcq51I6B9QdbYsYCkP9whPNYIl/y4dN4QnNEivQzA5/ltr5DDQZc7Xke1+SpJN+ylBOBJ8yvNoDnuxx0xEWuNJ5bUzyri/DNjZRKNQQKBgQDKkxn5R4Q3rChI/KVIXHMecTs9fXN5pbnA8UKU6ZeTl+wHffxwRieHZJJp1nDcQ5i8YXCtqEJcJGFn3T0rEjVCJ/RVHclFO+TjYaK9HtyNJLPrvKmAzjCzV1yPfe4qmpgJddzZI7Vii2uFgklixvhkoY74hwSJtvLPTO0p0xrYdQKBgQC4cgfpCMLYlaHQGz+dAEf4IewQpwBGn7XShCpiXGFciGZZEIzvJMzXP7yo8pDMHQbB4kQsTRRG2fcdHGWI5VQGHPqG5O0tUueKGUlSg7j8Y/Pp8ZrBGSrlilAf17I/u9MC7Xe2ZRVGNgPDYAyjMEGmClI0n2+aN6b4CFVBjYmfuQKBgEKO9KDIE7QrF41rnW7aGWTuNVWty2wzvIWdf4/n9EqlRwLrLS9CjahZrhWiRLDKcPusVFZqi2s09OAoe/mT4PXcpNX2lHPwCvN+1/allje10HvrIBJXLP8v/BSVftR2uO+azzZ1GhrHzksulKgk0eZWguA7lI0fFEZycxYj65UlAoGAD9p1RZlkLfuGgf2llRgOF4zK3o+MHYXiuep0PioUkECFE4ixpGh0Vtf6nkbjHTgteYK6O1iQsppPfCgRrheQBkp9WhTZMfkbP6p2u+nof4ET2PrUQ16naj1eL655erLpKypADORZVMSVxDhAPdKLAfuHH1DI5ed8qXsF4PGKb7kCgYEAm/d+daT6YsbHDZlJ/J9Q8rRkKmiqj43NGQSHKg6Z6BEDibm8wRmj3Itu1N6XVChuaH+ekJzvUnZ/q1nyYzGvy6bOHYn3ziF9aH7wuhcRZ4qARmKDnzTBLg2QXBK1+400O3LJ+sAH/yuH/Y4hzRE6YMxBQpdYfnlJcIFVimAsT1w=';
+        $public_key = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB';
+
+
+        $public_key = "-----BEGIN CERTIFICATE-----" .PHP_EOL.
+            wordwrap($public_key, 64, PHP_EOL, true) .
+            PHP_EOL."-----END CERTIFICATE-----";
+
+
+        dump($public_key);
+        openssl_public_encrypt($data,$encrypted, $public_key);
+        echo openssl_error_string();
+        return base64_encode($encrypted);
+
+    }
+
+    public function test4(){
+        // 演示开始
+        echo "=== RSA加密解密演示 ===\n\n";
+
+// 1. 生成密钥对
+        echo "1. 生成RSA密钥对...\n";
+        $keys = $this->generateRsaKeys();
+        $privateKey = $keys['private_key'];
+        $publicKey = $keys['public_key'];
 
+        echo "公钥:\n" . $publicKey . "\n";
+        echo "私钥:\n" . $privateKey . "\n\n";
+
+// 2. 要加密的原始数据
+        $originalData = "这是一个使用RSA加密的测试消息。Hello RSA! 123456";
+        echo "2. 原始数据:\n" . $originalData . "\n\n";
+
+// 3. 使用公钥加密
+        echo "3. 使用公钥加密数据...\n";
+        $encryptedData = $this->rsaEncrypt($originalData, $publicKey);
+        echo "加密后的数据(Base64):\n" . $encryptedData . "\n\n";
+
+// 4. 使用私钥解密
+        echo "4. 使用私钥解密数据...\n";
+        $decryptedData = $this->rsaDecrypt($encryptedData, $privateKey);
+        echo "解密后的数据:\n" . $decryptedData . "\n\n";
+
+// 5. 验证结果
+        echo "5. 验证结果:\n";
+        if ($originalData === $decryptedData) {
+            echo "✓ 加密解密成功,原始数据与解密数据一致!\n";
+        } else {
+            echo "✗ 加密解密失败,数据不一致!\n";
+        }
+
+        echo "\n=== 演示结束 ===\n";
+    }
+
+
+    function generateRsaKeys($keySize = 2048) {
+        $config = array(
+            "digest_alg" => "sha512",
+            "private_key_bits" => $keySize,
+            "private_key_type" => OPENSSL_KEYTYPE_RSA,
+        );
+
+        // 生成密钥对
+        $res = openssl_pkey_new($config);
+
+        // 获取私钥
+        openssl_pkey_export($res, $privateKey);
+
+        // 获取公钥
+        $publicKey = openssl_pkey_get_details($res);
+        $publicKey = $publicKey["key"];
+
+        return array(
+            'private_key' => $privateKey,
+            'public_key'  => $publicKey
+        );
+    }
+
+// RSA加密
+    function rsaEncrypt($data, $publicKey) {
+        openssl_public_encrypt($data, $encrypted, $publicKey);
+        return base64_encode($encrypted);
+    }
+
+// RSA解密
+    function rsaDecrypt($encryptedData, $privateKey) {
+        $encryptedData = base64_decode($encryptedData);
+        openssl_private_decrypt($encryptedData, $decrypted, $privateKey);
+        return $decrypted;
+    }
 
 }