lizhen преди 1 ден
родител
ревизия
e9f54e3a3c
променени са 72 файла, в които са добавени 4632 реда и са изтрити 12 реда
  1. 103 12
      application/api/controller/Jiashicang.php
  2. 28 0
      application/common/certs/icbc/private_test.pem
  3. 6 0
      application/common/certs/icbc/public_test.pem
  4. 99 0
      extend/icbc/AES.php
  5. 152 0
      extend/icbc/DefaultIcbcClient.php
  6. 77 0
      extend/icbc/IcbcCa.php
  7. 76 0
      extend/icbc/IcbcConstants.php
  8. 21 0
      extend/icbc/IcbcEncrypt.php
  9. 47 0
      extend/icbc/IcbcSignature.php
  10. 25 0
      extend/icbc/RSA.php
  11. 64 0
      extend/icbc/UiIcbcClient.php
  12. 119 0
      extend/icbc/WebUtils.php
  13. BIN
      extend/icbc/doc/API SDK使用手册(PHP语言版).doc
  14. BIN
      extend/icbc/doc/~$I SDK使用手册(PHP语言版).doc
  15. 47 0
      extend/icbc/example/CardbusinessAggregatepayB2cOnlineConsumepurchaseV1Test.php
  16. 52 0
      extend/icbc/example/CardbusinessAggregatepayB2cOnlineForeignpaywithoutpagesV1Test.php
  17. 40 0
      extend/icbc/example/CardbusinessAggregatepayB2cOnlineMerrefundV1Test.php
  18. 37 0
      extend/icbc/example/CardbusinessAggregatepayB2cOnlineOrderqryV1Test.php
  19. 36 0
      extend/icbc/example/CardbusinessAggregatepayB2cOnlineRefundqryV1Test.php
  20. 72 0
      extend/icbc/example/CardbusinessAggregatepayB2cOnlineSersuborderV1Test.php
  21. 47 0
      extend/icbc/example/CardbusinessAggregatepayB2cOnlineSersuborderrefundV1Test.php
  22. 53 0
      extend/icbc/example/CardbusinessAggregatepayB2cOnlineUiConsumepurchaseshowpayV1Test.php
  23. 52 0
      extend/icbc/example/CardbusinessAggregatepayB2cOnlineUiForeignpayV1Test.php
  24. 67 0
      extend/icbc/example/CardbusinessEpayh5UiConsumptionV1Test.php
  25. 72 0
      extend/icbc/example/CardbusinessEpayh5UiConsumptionV3Test.php
  26. 80 0
      extend/icbc/example/CardbusinessEpaypcConsumptionV1Test.php
  27. 73 0
      extend/icbc/example/CardbusinessMultipayMultipayapproveconsumeV1Test.php
  28. 44 0
      extend/icbc/example/CardbussinessZfbH5UiH5ConsumptionV1Test.php
  29. 70 0
      extend/icbc/example/CardbussinessZfbH5UiH5ConsumptionV2Test.php
  30. 56 0
      extend/icbc/example/CpayCporderqueryV2Test.php
  31. 153 0
      extend/icbc/example/CppayapplyAsynchronizedOfflineV2Test.php
  32. 152 0
      extend/icbc/example/CppayapplyAsynchronizedOnlineV2Test.php
  33. 153 0
      extend/icbc/example/CppayapplyDirectpaymentV2Test.php
  34. 93 0
      extend/icbc/example/CppayapplyReceiveNoticeTest.php
  35. 56 0
      extend/icbc/example/MybankPayCpayCporderqueryBlPayV2Test.php
  36. 153 0
      extend/icbc/example/MybankPayCpayCppayapplyBlPay_RefundTest.php
  37. 153 0
      extend/icbc/example/MybankPayCpayCppayapplyV2Test.php
  38. 76 0
      extend/icbc/example/MybankPayCpayCppreservationcancelV2Test.php
  39. 83 0
      extend/icbc/example/MybankPayCpayCppreservationpayV2Test.php
  40. 62 0
      extend/icbc/example/OauthserviceGetoauthpresignV1Test.php
  41. 54 0
      extend/icbc/example/OauthserviceGettokenV1Test.php
  42. 51 0
      extend/icbc/example/OauthserviceRefreshtokenV1Test.php
  43. 66 0
      extend/icbc/example/PreciousmetalGoldExchangeV1test.php
  44. 48 0
      extend/icbc/example/PreciousmetalGoldRedeemV1test_CA.php
  45. 47 0
      extend/icbc/example/PreciousmetalGoldRedeemV1test_RSA.php
  46. 44 0
      extend/icbc/example/QrcodeGenerateTest.php
  47. 38 0
      extend/icbc/example/QrcodePayTest.php
  48. 36 0
      extend/icbc/example/QrcodeQueryTest.php
  49. 37 0
      extend/icbc/example/QrcodeRejectQueryTestV2.php
  50. 37 0
      extend/icbc/example/QrcodeRejectQueryTestV3.php
  51. 39 0
      extend/icbc/example/QrcodeRejectTest.php
  52. 39 0
      extend/icbc/example/QrcodeReverseTest.php
  53. 42 0
      extend/icbc/example/SettlementAccountBalanceQueryTestV1.php
  54. 43 0
      extend/icbc/example/Test-RisknameSearch-CA.php
  55. 47 0
      extend/icbc/example/TestPreciousmetalGoldV1RedeemRSA.php
  56. 43 0
      extend/icbc/example/TestSettlementAccountBalanceQueryCA_P.php
  57. 41 0
      extend/icbc/example/TestSettlementAccountBalanceQueryRSA_P.php
  58. 49 0
      extend/icbc/example/ThirdpartyOrderPayTestV1.php
  59. 52 0
      extend/icbc/example/ThirdpartyOrderPayTestV2.php
  60. 54 0
      extend/icbc/example/ThirdpartyOrderPayTestV3.php
  61. 55 0
      extend/icbc/example/ThirdpartyOrderPayTestV4.php
  62. 56 0
      extend/icbc/example/mybankpaycpaycporderqueryTestV2DBZF.php
  63. 152 0
      extend/icbc/example/mybankpaycpaycppayapplyTestV2DBZF.php
  64. 76 0
      extend/icbc/example/mybankpaycpaycppreservationcancelTestV2.php
  65. 83 0
      extend/icbc/example/mybankpaycpaycppreservationpayTestV2DBZF.php
  66. 89 0
      extend/icbc/example/mybankpaycpaymemberapplyTestV1LegalPerson.php
  67. 89 0
      extend/icbc/example/mybankpaycpaymemberapplyTestV1NaturalPerson.php
  68. 56 0
      extend/icbc/example/mybankpaycpaymemberconfirmTestV1DBZF.php
  69. 55 0
      extend/icbc/example/mybankpaycpaymemberqueryTestV1DBZF.php
  70. 59 0
      extend/icbc/example/test_ca.php
  71. 53 0
      extend/icbc/example/test_ui_ca.php
  72. 53 0
      extend/icbc/example/test_ui_rsa.php

+ 103 - 12
application/api/controller/Jiashicang.php

@@ -5,6 +5,7 @@ namespace app\api\controller;
 use app\common\controller\Api;
 use app\common\library\RsaUtil;
 use think\Db;
+include_once EXTEND_PATH.'icbc\DefaultIcbcClient.php';
 
 /**
  * 驾驶舱数据
@@ -99,7 +100,7 @@ class Jiashicang extends Api
     }
 
     //社区小程序 推送数据
-    public function shequ_data(){
+    private function shequ_data(){
         $sqhds = Db::name('unishop_product')->whereNull('deletetime')->where('switch',1)->count();//社区活动数
         $hdbms = Db::name('unishop_order')->whereNull('deletetime')->where('have_paid','gt',0)->where('status',1)->count();//活动报名数
 
@@ -113,17 +114,19 @@ class Jiashicang extends Api
         $ddgz_wcpj  = $gonghang_data['ddgz_wcpj'];//订单跟踪(完成评价)
         $mxbjds     = $gonghang_data['mxbjds'];//慢性病建档数
 
-        dump($jkdars);
-        dump($whcss);
-        dump($smxykcs);
-        dump($hdmyd);
-        dump($ddgz_djd);
-        dump($ddgz_fwz);
-        dump($ddgz_wcpj);
-        dump($mxbjds);
-
-        dump((string)$sqhds);
-        dump((string)$hdbms);
+        $result = [
+            'jkdars' => $jkdars,
+            'whcss' => $whcss,
+            'smxykcs' => $smxykcs,
+            'hdmyd' => $hdmyd,
+            'ddgzdjd' => $ddgz_djd,
+            'ddgzfwz' => $ddgz_fwz,
+            'ddgzwcpj' => $ddgz_wcpj,
+            'mxbjds' => $mxbjds,
+            'sqhds' => (string)$sqhds,
+            'hdbms' => (string)$hdbms,
+        ];
+        return $result;
     }
 
     /**
@@ -134,6 +137,94 @@ class Jiashicang extends Api
         $this->send_score(1, 1);
     }
 
+    public function index(){
+        echo 140;
+    }
+
+    public function send(){
+        $data = $this->shequ_data();
+
+        $biz_content = [
+            'batchDate' => date('Ymd'),
+            'corpCode'  => 'icbc',
+            'dataType'  => '1',//1-幸福里;2-政法委
+            'data'      => json_encode($data),
+        ];
+
+        $public_key = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB';
+        $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=';
+        $sign = '';
+
+        $data = [
+            'app_id' => '10000000000004096993',
+            'msg_id' => createUniqueNo('msg', 1),
+            '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,
+        ];
+
+        $client = new \DefaultIcbcClient($data['app_id'],$private_key,$data['sign_type'],$data['charset'],$data['format'],$public_key,'','','','');
+        $request = [
+            'serviceUrl' => 'https://gw.dccnet.com.cn:8082/api/mybank/farm/farmplatf/syncCommunityData',
+            'method' => 'POST',
+            'isNeedEncrypt' => false,
+            'extraParams' => null,
+            'biz_content' => $biz_content,
+        ];
+
+
+        $resp = $client->execute($request,$data['msg_id'],'');
+        $respObj = json_decode($resp,true);
+        dump($respObj);exit;
+        if($respObj["return_code"] == 0){ //sucess
+            echo $respObj["return_msg"];
+        }else{//fail
+            echo $respObj["return_msg"];
+        }
+    }
+
+    public function senddata(){
+        $url = 'https://gw.dccnet.com.cn:8082/api/mybank/farm/farmplatf/syncCommunityData';
+        //$url = 'http://apip-gateway-nrouter-saas-gn-C.month.sdc.cs.icbc:8081/api/mybank/farm/farmplatf/syncCommunityData';
+
+        $data = $this->shequ_data();
+
+        $biz_content = [
+            'batchDate' => date('Ymd'),
+            'corpCode'  => 'icbc',
+            'dataType'  => '1',//1-幸福里;2-政法委
+            'data'      => json_encode($data),
+        ];
+
+        $public_key = APP_PATH.'/common/certs/icbc/public_test.pem';
+        $private_key = APP_PATH.'/common/certs/icbc/private_test.pem';
+        $rsautil =  new RsaUtil($public_key,$private_key);
+
+        $sign = $rsautil->publicEncrypt(json_encode($biz_content));
+
+        $data = [
+            'app_id' => '10000000000004096993',
+            'msg_id' => createUniqueNo('msg', 1),
+            '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);
+
+    }
+
     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';

+ 28 - 0
application/common/certs/icbc/private_test.pem

@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCR8/ZvKPAdZzsy
+vapySvztQm56s1N59ynKMOWpUbK4c5MNWMl+q3dvsp+UiSAx2TAeGkYfW3W6nO/3
+Y0hAZki99fmuzpPujEeHhs79HNwGZYQjN71Vck2JeflTq8jpL+9/up0Kz2nbwtZD
+MKTTEgbfNeO24gV1bmvD2kQ9j66RIyuXSDwQbVbQfl6LiqKoJm3rbtsbwX1Ytc0/
+Szslyor1VdPZWnHDMm3m78Hqu7X3vL6K7fAW/4FVbeKV7vWjvyiTQfETmuADqMds
+qV5YeqUZWE/Dnzg+6JV/3L9nJ8f+/mPlh8k1h1oW035GrADKFKf1M2ujKKeHICnj
+7qKCdBeNAgMBAAECggEAHkh+U2YtHAy1Tbvox7ojbJ8iCTd4FJBiDV/D5zPaX0cr
+tdM8S5oMOBLZ5ZnmIjGsODK/ZfY2ITg62huxfBs88J0+5zRZoV9d4BLqk74PMQyT
+NDN2h2omCGZUgzXbg/a8PMZdm0aZ8k0k4+AN8vWEk3+89c9Dzq/QkFyTWCqdz+Mp
+9NkcOjA255kj5/D1q9Zj0x9VcmKg3oTtrKL/dkspUxVaMKXcpo6J4AszC05tT3N0
+SNLhcq51I6B9QdbYsYCkP9whPNYIl/y4dN4QnNEivQzA5/ltr5DDQZc7Xke1+SpJ
+N+ylBOBJ8yvNoDnuxx0xEWuNJ5bUzyri/DNjZRKNQQKBgQDKkxn5R4Q3rChI/KVI
+XHMecTs9fXN5pbnA8UKU6ZeTl+wHffxwRieHZJJp1nDcQ5i8YXCtqEJcJGFn3T0r
+EjVCJ/RVHclFO+TjYaK9HtyNJLPrvKmAzjCzV1yPfe4qmpgJddzZI7Vii2uFgkli
+xvhkoY74hwSJtvLPTO0p0xrYdQKBgQC4cgfpCMLYlaHQGz+dAEf4IewQpwBGn7XS
+hCpiXGFciGZZEIzvJMzXP7yo8pDMHQbB4kQsTRRG2fcdHGWI5VQGHPqG5O0tUueK
+GUlSg7j8Y/Pp8ZrBGSrlilAf17I/u9MC7Xe2ZRVGNgPDYAyjMEGmClI0n2+aN6b4
+CFVBjYmfuQKBgEKO9KDIE7QrF41rnW7aGWTuNVWty2wzvIWdf4/n9EqlRwLrLS9C
+jahZrhWiRLDKcPusVFZqi2s09OAoe/mT4PXcpNX2lHPwCvN+1/allje10HvrIBJX
+LP8v/BSVftR2uO+azzZ1GhrHzksulKgk0eZWguA7lI0fFEZycxYj65UlAoGAD9p1
+RZlkLfuGgf2llRgOF4zK3o+MHYXiuep0PioUkECFE4ixpGh0Vtf6nkbjHTgteYK6
+O1iQsppPfCgRrheQBkp9WhTZMfkbP6p2u+nof4ET2PrUQ16naj1eL655erLpKypA
+DORZVMSVxDhAPdKLAfuHH1DI5ed8qXsF4PGKb7kCgYEAm/d+daT6YsbHDZlJ/J9Q
+8rRkKmiqj43NGQSHKg6Z6BEDibm8wRmj3Itu1N6XVChuaH+ekJzvUnZ/q1nyYzGv
+y6bOHYn3ziF9aH7wuhcRZ4qARmKDnzTBLg2QXBK1+400O3LJ+sAH/yuH/Y4hzRE6
+YMxBQpdYfnlJcIFVimAsT1w=
+-----END PRIVATE KEY-----

+ 6 - 0
application/common/certs/icbc/public_test.pem

@@ -0,0 +1,6 @@
+-----BEGIN PUBLIC KEY-----
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+1
+6bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsT
+CLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/r
+NhP3CiNgg0W6O3AGqwIDAQAB
+-----END PUBLIC KEY-----

+ 99 - 0
extend/icbc/AES.php

@@ -0,0 +1,99 @@
+<?php
+    class AES{
+/**
+     * This was AES-128 / CBC / PKCS5Padding
+     * return base64_encode string
+     * @author Terry
+     * @param string $plaintext
+     * @param string $key
+     * @return string
+     */
+    public static function AesEncrypt($plaintext,$key = null)
+    {
+        $plaintext = trim($plaintext);
+        if ($plaintext == '') return '';
+        $size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
+
+
+        //PKCS5Padding
+        $padding = $size - strlen($plaintext) % $size;
+        // 添加Padding
+        $plaintext .= str_repeat(chr($padding), $padding);
+
+
+        $module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
+        $key=self::substr($key, 0, mcrypt_enc_get_key_size($module));
+        $iv = str_repeat("\0", $size);      //java里面的16个空数组对应的是\0.
+        /* Intialize encryption */
+        mcrypt_generic_init($module, $key, $iv);
+
+
+        /* Encrypt data */
+        $encrypted = mcrypt_generic($module, $plaintext);
+
+
+        /* Terminate encryption handler */
+        mcrypt_generic_deinit($module);
+        mcrypt_module_close($module);
+        return base64_encode($encrypted);
+    }
+
+    /**
+     * Returns the length of the given string.
+     * If available uses the multibyte string function mb_strlen.
+     * @param string $string the string being measured for length
+     * @return integer the length of the string
+     */
+    private static function strlen($string)
+    {
+        return extension_loaded('mbstring') ? mb_strlen($string,'8bit') : strlen($string);
+    }
+
+
+    /**
+     * Returns the portion of string specified by the start and length parameters.
+     * If available uses the multibyte string function mb_substr
+     * @param string $string the input string. Must be one character or longer.
+     * @param integer $start the starting position
+     * @param integer $length the desired portion length
+     * @return string the extracted part of string, or FALSE on failure or an empty string.
+     */
+    private static function substr($string,$start,$length)
+    {
+        return extension_loaded('mbstring') ? mb_substr($string,$start,$length,'8bit') : substr($string,$start,$length);
+    }
+    /**
+     * This was AES-128 / CBC / PKCS5Padding
+     * @author Terry
+     * @param string $encrypted     base64_encode encrypted string
+     * @param string $key
+     * @throws CException
+     * @return string
+     */
+    public static function AesDecrypt($encrypted, $key = null)
+    {
+        if ($encrypted == '') return '';
+        $ciphertext_dec = base64_decode($encrypted);
+        $module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
+        $key=self::substr($key, 0, mcrypt_enc_get_key_size($module));
+        
+        $iv = str_repeat("\0", 16);    //解密的初始化向量要和加密时一样。
+        /* Initialize encryption module for decryption */
+        mcrypt_generic_init($module, $key, $iv);
+
+
+        /* Decrypt encrypted string */
+        $decrypted = mdecrypt_generic($module, $ciphertext_dec);
+
+
+        /* Terminate decryption handle and close module */
+        mcrypt_generic_deinit($module);
+        mcrypt_module_close($module);
+        $a = rtrim($decrypted,"\0");
+
+
+        return rtrim($decrypted,"\0");
+    }
+}
+    //echo AES::AesEncrypt("haha","mkeymkeymkeymkey");
+?>

+ 152 - 0
extend/icbc/DefaultIcbcClient.php

@@ -0,0 +1,152 @@
+<?php
+//namespace icbc;
+include_once 'IcbcConstants.php';
+include_once 'IcbcSignature.php';
+include_once 'WebUtils.php';
+include_once 'IcbcEncrypt.php';
+
+class DefaultIcbcClient{
+		public $appId;
+		public $privateKey;
+		public $signType;
+		public $charset;
+		public $format;
+		public $icbcPulicKey;
+		public $encryptKey;
+		public $encryptType;
+		public $ca;
+		public $password;
+
+		function __construct($appId,$privateKey,$signType,$charset,$format,$icbcPulicKey,
+			$encryptKey,$encryptType,$ca,$password)
+		{
+			$this->appId = $appId;
+			$this->privateKey = $privateKey;
+			if($signType == null || $signType == ""){
+				$this->signType=IcbcConstants::$SIGN_TYPE_RSA;
+			}else{
+				$this->signType = $signType;
+		    }
+
+		    if($charset == null || $charset == ""){
+		    	$this->charset = IcbcConstants::$CHARSET_UTF8;
+		    }else{
+		    	$this->charset = $charset;
+		    }
+
+		    if($format == null || $format == ""){
+		    	$this->format=IcbcConstants::$FORMAT_JSON;
+		    }else{
+		    	$this->format = $format;
+		    }
+			
+			$this->icbcPulicKey = $icbcPulicKey;
+			$this->encryptKey = $encryptKey;
+			$this->encryptType = $encryptType;
+			$this->password = $password;
+			// 去除签名数据及证书数据中的空格
+			if ($ca != null && $ca != "") {
+				$ca = preg_replace("/\s*|\t/", "", $ca);
+		    }
+			$this->ca = $ca;
+		}
+
+		function execute($request,$msgId,$appAuthToken){
+			$params = $this->prepareParams($request, $msgId, $appAuthToken);
+
+            //发送请求
+            //接收响应
+            if($request["method"] == "GET" ){
+				$respStr = WebUtils::doGet($request["serviceUrl"],$params,$this->charset);
+			}elseif ($request["method"] == "POST") {
+				$respStr = WebUtils::doPost($request["serviceUrl"],$params,$this->charset);
+			}else{
+				throw new Exception("Only support GET or POST http method!");
+			}
+
+			//增加了对传回报文中含有中文字符以及反斜杠的转换(json_encode(str,JSON_UNESCAPED_UNICODE(240)+JSON_UNESCAPED_SLASHES(80)=320))
+			$respBizContentStr = json_encode(json_decode($respStr,true)[IcbcConstants::$RESPONSE_BIZ_CONTENT],320);
+            $sign = json_decode($respStr,true)[IcbcConstants::$SIGN];
+			//解析响应
+			$passed = IcbcSignature::verify($respBizContentStr, IcbcConstants::$SIGN_TYPE_RSA, $this->icbcPulicKey, $this->charset, $sign);
+
+			if(!$passed){
+				throw new Exception("icbc sign verify not passed!");
+			}
+			if($request["isNeedEncrypt"]){
+				$respBizContentStr = IcbcEncrypt::decryptContent(substr($respBizContentStr, 1 , strlen($respBizContentStr)-2), $this->encryptType, $this->encryptKey, $this->charset);
+			}
+			//返回解析结果
+			return $respBizContentStr;
+		}
+
+
+		function prepareParams($request, $msgId, $appAuthToken){
+			$bizContentStr = json_encode($request["biz_content"]);
+
+			$path = parse_url($request["serviceUrl"],PHP_URL_PATH);
+            
+            $params = array();
+
+            if($request["extraParams"] != null){
+            	$params = array_merge($params,$request["extraParams"]);
+            }
+
+            $params[IcbcConstants::$APP_ID] = $this->appId;
+            $params[IcbcConstants::$SIGN_TYPE] = $this->signType;
+            $params[IcbcConstants::$CHARSET] = $this->charset;
+            $params[IcbcConstants::$FORMAT] = $this->format;
+            $params[IcbcConstants::$CA] = $this->ca;
+            $params[IcbcConstants::$APP_AUTH_TOKEN] = $appAuthToken;
+            $params[IcbcConstants::$MSG_ID] = $msgId;
+
+            date_default_timezone_set(IcbcConstants::$DATE_TIMEZONE);
+            $params[IcbcConstants::$TIMESTAMP] = date(IcbcConstants::$DATE_TIME_FORMAT);
+
+			if ($request["isNeedEncrypt"]){
+				if ($bizContentStr != null) {
+					$params[IcbcConstants::$ENCRYPT_TYPE] = $this->encryptType;
+					$params[IcbcConstants::$BIZ_CONTENT_KEY] = IcbcEncrypt::encryptContent($bizContentStr, $this->encryptType, $this->encryptKey, $this->charset);
+				}
+			} else {
+				$params[IcbcConstants::$BIZ_CONTENT_KEY] = $bizContentStr;
+			}
+
+			$strToSign = WebUtils::buildOrderedSignStr($path, $params);
+
+			$signedStr = IcbcSignature::sign($strToSign, $this->signType, $this->privateKey, $this->charset, $this->password);
+
+            $params[IcbcConstants::$SIGN] = $signedStr;
+			return $params;
+
+		}
+
+		function JSONTRANSLATE($array) {
+		    foreach ($array as $key => $value){
+		        $array[$key] = urlencode($value);
+            }
+            return json_encode($array);
+        }
+
+        function encodeOperations ($array) {
+
+            foreach ((array)$array as $key => $value) {
+
+                if (is_array($value)) {
+
+                    $this->encodeOperations($array[$key]);
+
+                } else {
+
+                    $array[$key] = urlencode(mb_convert_encoding($value,'UTF-8','GBK'));
+
+                }
+
+            }
+
+            return $array;
+		}
+
+
+}
+?>

+ 77 - 0
extend/icbc/IcbcCa.php

@@ -0,0 +1,77 @@
+<?php
+class IcbcCa{
+	public static function sign($content,$privatekey,$password){
+
+		if (!extension_loaded('infosec'))
+		{
+			if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')
+	  		{
+				dl('php_infosec.dll');
+			}
+	   		else
+			{
+				dl('infosec.so');
+			}
+	 	}
+		else
+		{
+			//echo "loaded infosec module success <br/>";
+		}
+
+
+		$plaint=$content;
+		if(strlen($plaint) <= 0)
+		{
+			echo "WARNING : no source data input";
+			throw new Exception("no source data input");
+		}
+/*		$keyfile=$keyfilepath;
+		if(strlen($keyfile) <= 0)
+		{
+			echo "WARNING : no key data input<br/>";
+			exit();
+		}*/
+		//read private key from file
+		//$fd = "pri-CEA.key";
+/*		$fp = fopen($keyfile,"rb");
+		if($fp == NULL)
+		{
+			echo "open file error<br/>";
+			exit();
+		}
+
+		fseek($fp,0,SEEK_END);
+		$filelen=ftell($fp);
+		fseek($fp,0,SEEK_SET);
+		$contents = fread($fp,$filelen);
+		fclose($fp);*/
+		$contents = base64_decode($privatekey);
+		$key = substr($contents,2);
+		//echo "key:",base64_encode($key),"\n";
+
+		$pass=$password;
+		if(strlen($pass) <= 0)
+		{
+			echo "WARNING : no key password input";
+			throw new Exception("no key password input");
+		}else{
+
+			$signature = sign($plaint,$key,$pass);
+			$code = current($signature);
+			$len = next($signature);
+			$signcode = base64enc($code);
+			return current($signcode);
+	/*			echo "signature : ",current($signcode),"\n";
+			echo "signature len: ",$len,"\n";*/
+		}
+	
+	}
+
+
+	public static function verify($content,$publicKey,$password){
+
+	}
+}
+
+	//echo IcbcCa::sign("nihao",'BKlZsKQJ0eG9UDtOJxl2rl8uzVClQzBUsaq9BBB7KlaBUn7NplThEKAbmGFUmcqIqvzU6shLqJUb58iZGUEiRx4SyjL8cKL7lTy1n6nVA6aMwJcfPIn5uZ5ynNW8n9m/5piy/lSkWpTAwebeqeSKYiXzeWtsuFmptSZkOjtsymsjgTfY60AkCBw1rGtJ08NXvN50u6QaFdeggX+++MDCK5W7ZC2SOvtkatkIKlrBlj0Gnri7O+Y7Ul44ysBDB4mhbZJuqffzBAJyDk0r3Q9WTaOg4aBSlyyp2lwfxiJ0SvZJJMS3jLdlWXTepVSE/IgVIHXlNRtkccr9Y3eY4XN6G6qVRViSTqmckYnZZFZWesVqihvP2U32aYsRWR4TIq/im77aFKCWMgOrOCVttV981AKHIn1kC1r6O/x9k2GAuadF5bGcb0tjhEJV+ijoFhI0Syi7D9ZS5F/MVCq0B/8MAC+pFZOxXtfAJDtz/M0x1t2H82gk9xATPgNq9CVPzNtNnQOvE1HWmn2ZDSCmR7IkSA8EEN5pqz8QYRvs3O8tFechYztifM1+TBs5KciN4FjZZhiE3+vbBSFboxte40yaLgZE0cm3ZDSHhaflDb5f3C162kF2Nbi9fG4Se3DKHyH1HRZfwDpWmB5MUjBb5j+GNxp+7KtCAinxFEthYeMmkIKMwXolZnlxdrO0BdySJSekrTgIbihtjmp9racWhiCxVX8ThaTGCEP1+6fz6bUmk2IZ2yaYo93KkZxcXmkO0sHFKZZ8Y+hiBk12EOQO8mKfFhYKIJ/s4SViqYOe+kL/T49enAmaue2j+5UDRUSN0xR3oOzhPb9o/OfXCPTdxCtyAQX36oTPnRsouMiy3PW33iWcKPx7gD/fTEct5Qz/t6FBx5orz7EnG1TEEbTp+GzvZm0h4DPQ04jEjHJcb94r0EbdsOZrItyv1+krWtAvpS3IiHZkuTyRe7awrgaZRWWNohynpCjAIDhrJ/pdYzTKhpS/lJTkMQxsD3lLaNh5MqnQYwkdn53Geb6zwo6VQRYVFlyw9zmPptMHleauQtJjCx5pYgaCRt176BkxZnQTiF3BFKNsEEQhs3b/AKY4BqCszwXaj28BprZ9i/rpx9l9GgdVA0vVFgbXmceXIMTWlSdbI9wIdQ5pPtBiEUpnNF2vc6mB3VwQ2GY78NztzRlJRrPA2xgvYu34iGtnEjiyxQt+2C6gIq9xsc9rMWfyQRpcm0lQ0xkZ0R9xC8QtaoSmcbLs1XtZoDiPCmIL44NLMt7t3vM+jD8tId/0WYqJge/vBsVuKXOwa4KaTVUHkBfWfIwIaKz19eYq/zi/2hDDxlbLBz92wtDg/i/Uoe3jH/HCJ2hXmH+jaUQD/Z8+GKVK476+6Xe6K7VAKr7/qc9RIljby+/fm4ghwBMAkLf9IFWoOU+ZBGdN3HLl4x8OHIz2QnjG5NRsKebzYg39kYVX8/50z9tHVxTvJYVgJ5n+IbrFnHgKw5GdCtHjuWXRAkS2Nq/r1N9t5jRtuyt0kVslGk0nMES7hVXxXGqKm2cHJzjd3/npbONYGxK4TxyPccDs8MRfYEuuQpgoL/IMdA==',"12345678");
+?>

+ 76 - 0
extend/icbc/IcbcConstants.php

@@ -0,0 +1,76 @@
+<?php
+	/**
+	* 
+	*/
+class IcbcConstants
+{
+	public static $SIGN_TYPE = "sign_type";
+
+	public static $SIGN_TYPE_RSA = "RSA";
+	
+	public static $SIGN_TYPE_RSA2 = "RSA2";
+
+	public static $SIGN_TYPE_SM2 = "SM2";
+	
+	public static $SIGN_TYPE_CA = "CA";
+
+	public static $SIGN_SHA1RSA_ALGORITHMS = "SHA1WithRSA";
+
+	public static $SIGN_SHA256RSA_ALGORITHMS = "SHA256WithRSA";
+
+	public static $ENCRYPT_TYPE_AES = "AES";
+
+	public static $APP_ID = "app_id";
+
+	public static $FORMAT = "format";
+
+	public static $TIMESTAMP = "timestamp";
+
+	public static $SIGN = "sign";
+
+	public static $APP_AUTH_TOKEN = "app_auth_token";
+
+	public static $CHARSET = "charset";
+
+	public static $NOTIFY_URL = "notify_url";
+
+	public static $RETURN_URL = "return_url";
+
+	public static $ENCRYPT_TYPE = "encrypt_type";
+
+	// -----===-------///
+
+	public static $BIZ_CONTENT_KEY = "biz_content";
+
+	/** 默认时间格式 **/
+	public static $DATE_TIME_FORMAT = "Y-m-d H:i:s";//java版"yyyy-MM-dd HH:mm:ss"
+
+	/** Date默认时区 **/
+	public static $DATE_TIMEZONE = "Etc/GMT+8";//java版GMT+8
+
+	/** UTF-8字符集 **/
+	public static $CHARSET_UTF8 = "UTF-8";
+
+	/** GBK字符集 **/
+	public static $CHARSET_GBK = "GBK";
+
+	/** JSON 应格式 */
+	public static $FORMAT_JSON = "json";
+
+	/** XML 应格式 */
+	public static $FORMAT_XML = "xml";
+
+	public static $CA = "ca";
+	
+	public static $PASSWORD = "password";
+	
+	public static $RESPONSE_BIZ_CONTENT = "response_biz_content";
+
+	/** 消息唯一编号 **/
+	public static $MSG_ID = "msg_id";
+	
+	/** sdk版本号在header中的key */
+	public static $VERSION_HEADER_NAME = "APIGW-VERSION";
+
+	}
+?>

+ 21 - 0
extend/icbc/IcbcEncrypt.php

@@ -0,0 +1,21 @@
+<?php
+include_once 'AES.php';
+include_once 'IcbcConstants.php';
+	class IcbcEncrypt{
+		public static function encryptContent($content, $encryptType, $encryptKey, $charset){
+			if(IcbcConstants::$ENCRYPT_TYPE_AES == $encryptType){
+				return AES::AesEncrypt($content,base64_decode($encryptKey));
+			}else{
+				throw new Exception("Only support AES encrypt!");
+			}
+		}
+
+		public static function decryptContent($encryptedContent, $encryptType, $encryptKey, $charset){
+			if(IcbcConstants::$ENCRYPT_TYPE_AES == $encryptType){
+				return AES::AesDecrypt($encryptedContent,base64_decode($encryptKey));
+			}else{
+				throw new Exception("Only support AES decrypt!");
+			}
+		}
+	}
+?>

+ 47 - 0
extend/icbc/IcbcSignature.php

@@ -0,0 +1,47 @@
+<?php
+include_once 'IcbcConstants.php';
+include_once 'IcbcCa.php';
+include_once 'RSA.php';
+	class IcbcSignature{
+		public static function sign($strToSign, $signType, $privateKey, $charset,$password){
+
+			if (IcbcConstants::$SIGN_TYPE_CA == $signType){
+
+				return IcbcCa::sign($strToSign,$privateKey,$password);
+
+			}elseif (IcbcConstants::$SIGN_TYPE_RSA == $signType) {
+
+				return RSA::sign($strToSign,$privateKey,IcbcConstants::$SIGN_SHA1RSA_ALGORITHMS);
+
+			}elseif (IcbcConstants::$SIGN_TYPE_RSA2 == $signType) {
+
+				return RSA::sign($strToSign,$privateKey,IcbcConstants::$SIGN_SHA256RSA_ALGORITHMS);
+
+			}else{
+				throw new Exception("Only support CA\RSA signature!");
+			}
+		}
+
+
+		public static function verify($strToSign, $signType, $publicKey, $charset,$signedStr,$password){
+
+			if (IcbcConstants::$SIGN_TYPE_CA == $signType){
+
+				return IcbcCa::verify($strToSign,$publicKey,$password);
+
+			}elseif (IcbcConstants::$SIGN_TYPE_RSA == $signType) {
+
+				return RSA::verify($strToSign,$signedStr,$publicKey,IcbcConstants::$SIGN_SHA1RSA_ALGORITHMS);
+
+			}elseif (IcbcConstants::$SIGN_TYPE_RSA2 == $signType) {
+
+				return RSA::verify($strToSign,$signedStr,$publicKey,IcbcConstants::$SIGN_SHA256RSA_ALGORITHMS);
+
+			}else{
+
+				throw new Exception("Only support CA or RSA signature verify!");
+
+			}
+		}
+	}
+?>

+ 25 - 0
extend/icbc/RSA.php

@@ -0,0 +1,25 @@
+<?php
+include_once 'IcbcConstants.php';
+class RSA{
+	public static function sign($content,$privateKey,$algorithm){
+		if(IcbcConstants::$SIGN_SHA1RSA_ALGORITHMS == $algorithm){
+			openssl_sign($content,$signature,"-----BEGIN PRIVATE KEY-----\n".$privateKey."\n-----END PRIVATE KEY-----", OPENSSL_ALGO_SHA1);
+		}elseif (IcbcConstants::$SIGN_SHA256RSA_ALGORITHMS == $algorithm) {
+			openssl_sign($content,$signature,"-----BEGIN PRIVATE KEY-----\n".$privateKey."\n-----END PRIVATE KEY-----", OPENSSL_ALGO_SHA256);
+		}else{
+			throw new Exception("Only support OPENSSL_ALGO_SHA1 or OPENSSL_ALGO_SHA256 algorithm signature!");
+		}
+		return base64_encode($signature);
+	}
+
+	public static function verify($content,$signature,$publicKey,$algorithm){
+		if(IcbcConstants::$SIGN_SHA1RSA_ALGORITHMS == $algorithm){
+			return openssl_verify($content,base64_decode($signature),"-----BEGIN PUBLIC KEY-----\n".$publicKey."\n-----END PUBLIC KEY-----", OPENSSL_ALGO_SHA1);
+		}elseif (IcbcConstants::$SIGN_SHA256RSA_ALGORITHMS == $algorithm) {
+			return openssl_verify($content,base64_decode($signature),"-----BEGIN PUBLIC KEY-----\n".$publicKey."\n-----END PUBLIC KEY-----", OPENSSL_ALGO_SHA256);
+		}else{
+			throw new Exception("Only support OPENSSL_ALGO_SHA1 or OPENSSL_ALGO_SHA256 algorithm signature verify!");
+		}
+	}
+}
+?>

+ 64 - 0
extend/icbc/UiIcbcClient.php

@@ -0,0 +1,64 @@
+<?php
+include_once 'IcbcConstants.php';
+include_once 'IcbcSignature.php';
+include_once 'WebUtils.php';
+include_once 'IcbcEncrypt.php';
+include_once 'DefaultIcbcClient.php';
+
+class UiIcbcClient extends DefaultIcbcClient{
+	function __construct($appId,$privateKey,$signType,$charset,$format,$icbcPulicKey,
+			$encryptKey,$encryptType,$ca,$password){
+		parent::__construct($appId,$privateKey,$signType,$charset,$format,$icbcPulicKey,
+			$encryptKey,$encryptType,$ca,$password);
+	}
+
+	function buildPostForm($request,$msgId,$appAuthToken){
+		$params = $this->prepareParams($request, $msgId, null);
+
+		$urlQueryParams = $this->buildUrlQueryParams($params);
+
+		$url = WebUtils::buildGetUrl($request["serviceUrl"],$urlQueryParams,$this->charset);
+
+		return WebUtils::buildForm($url,$this->buildBodyParams($params));
+	}
+
+	function buildUrlQueryParams($params){
+        $apiParamNames[]=IcbcConstants::$SIGN;
+        $apiParamNames[]=IcbcConstants::$APP_ID;
+        $apiParamNames[]=IcbcConstants::$SIGN_TYPE;
+        $apiParamNames[]=IcbcConstants::$CHARSET;
+        $apiParamNames[]=IcbcConstants::$FORMAT;
+        $apiParamNames[]=IcbcConstants::$ENCRYPT_TYPE;
+        $apiParamNames[]=IcbcConstants::$TIMESTAMP;
+        $apiParamNames[]=IcbcConstants::$MSG_ID;
+
+		foreach ($params as $key => $value) {
+			if(in_array($key,$apiParamNames)){
+				$urlQueryParams[$key]=$value;
+			}
+	   	}
+	   	return $urlQueryParams;
+	}
+
+	function buildBodyParams($params){
+        $apiParamNames[]=IcbcConstants::$SIGN;
+        $apiParamNames[]=IcbcConstants::$APP_ID;
+        $apiParamNames[]=IcbcConstants::$SIGN_TYPE;
+        $apiParamNames[]=IcbcConstants::$CHARSET;
+        $apiParamNames[]=IcbcConstants::$FORMAT;
+        $apiParamNames[]=IcbcConstants::$ENCRYPT_TYPE;
+        $apiParamNames[]=IcbcConstants::$TIMESTAMP;
+        $apiParamNames[]=IcbcConstants::$MSG_ID;
+
+		foreach ($params as $key => $value) {
+			if(in_array($key,$apiParamNames)){
+				continue;
+			}
+			$urlQueryParams[$key]=$value;
+	   	}
+
+	   	return $urlQueryParams;
+	}
+
+}
+?>

+ 119 - 0
extend/icbc/WebUtils.php

@@ -0,0 +1,119 @@
+<?php
+include_once 'IcbcConstants.php';
+	class WebUtils{
+	   private static $version = "v2_20170324";
+
+	   public static function doGet($url, $params, $charset){
+			$headers = array();
+			$headers[IcbcConstants::$VERSION_HEADER_NAME] = self::$version;
+			$getUrl = self::buildGetUrl($url, $params, $charset);
+
+
+		    $ch = curl_init();
+		    curl_setopt($ch, CURLOPT_URL, $getUrl);
+		    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
+		    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+
+		    curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
+		    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS,8000);
+		    curl_setopt($ch, CURLOPT_TIMEOUT_MS, 30000);
+
+
+		    $response = curl_exec($ch);
+		    $resinfo = curl_getinfo($ch);
+		    curl_close($ch);
+
+		    if($resinfo["http_code"] != 200){
+		    	throw new Exception("response status code is not valid. status code: ".$resinfo["http_code"]);
+		    }
+
+			return $response;
+	   }
+
+	   	public static function doPost($url, $params, $charset){
+			$headers = array();
+			$headers[] = 'Expect:';
+			$headers[IcbcConstants::$VERSION_HEADER_NAME] = self::$version;
+
+		    $ch = curl_init();
+		    curl_setopt($ch, CURLOPT_URL, $url);
+		    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
+		    curl_setopt($ch, CURLOPT_POST, true);
+		    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
+		    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+
+		    curl_setopt($ch, CURLOPT_NOSIGNAL, 1);
+		    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT_MS,8000);
+		    curl_setopt($ch, CURLOPT_TIMEOUT_MS, 30000);
+		    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
+		    curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
+
+
+		    $response = curl_exec($ch);
+		    $resinfo = curl_getinfo($ch);
+		    curl_close($ch);
+dump($response);exit;
+		    if($resinfo["http_code"] != 200){
+		    	throw new Exception("response status code is not valid. status code: ".$resinfo["http_code"]);
+		    }
+			return $response;
+	   }
+
+	   public static function buildGetUrl($strUrl, $params, $charset){
+			if ($params == null || count($params) == 0) {
+				return $strUrl;
+			}
+			$buildUrlParams = http_build_query($params);
+			if(strrpos($strUrl,'?',0) != (strlen($strUrl) + 1)){ //最后是否以?结尾
+				return $strUrl.'?'.$buildUrlParams;
+			}
+			return $strUrl.$buildUrlParams;
+	   }
+
+	   public static function buildOrderedSignStr($path,$params){
+	   		$isSorted=ksort($params);
+	   		$comSignStr = $path.'?';
+
+	   		$hasParam = false;
+	   		foreach ($params as $key => $value) {
+	   			if(null == $key || "" == $key || null == $value || ""==$value){
+
+	   			}else{
+	   				if ($hasParam) {
+	   					$comSignStr=$comSignStr.'&';
+	   				}else{
+	   					$hasParam=true;
+	   				}
+	   				$comSignStr=$comSignStr.$key.'='.$value;
+	   			}
+	   		}
+
+	   		return $comSignStr;
+	   }
+
+	   public static function buildForm($url,$params){
+	   	    $buildedFields = self::buildHiddenFields($params);
+	   		return '<form name="auto_submit_form" method="post" action="'.$url.'">'."\n".$buildedFields.'<input type="submit" value="立刻提交" style="display:none" >'."\n".'</form>'."\n".'<script>document.forms[0].submit();</script>';
+	   }
+
+	   public static function buildHiddenFields($params){
+	   		if ($params == null || count($params) == 0) {
+				return '';
+			}
+
+			$result = '';
+		    foreach ($params as $key => $value) {
+		    	if($key == null || $value == null){
+		    		continue;
+		    	}
+		    	$buildfield = self::buildHiddenField($key,$value);
+		    	$result = $result.$buildfield;
+	   		}
+	   		return $result;
+	   }
+
+	   public static function buildHiddenField($key,$value){
+	   		return '<input type="hidden" name="'.$key.'" value="'.preg_replace('/"/', '&quot;', $value).'">'."\n";
+	   }
+	}
+?>

BIN
extend/icbc/doc/API SDK使用手册(PHP语言版).doc


BIN
extend/icbc/doc/~$I SDK使用手册(PHP语言版).doc


+ 47 - 0
extend/icbc/example/CardbusinessAggregatepayB2cOnlineConsumepurchaseV1Test.php

@@ -0,0 +1,47 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+$request = array(
+    "serviceUrl" => 'http://ip:port/api/cardbusiness/aggregatepay/b2c/online/consumepurchase/V1',
+    "method" => 'POST',
+    "isNeedEncrypt" => false,
+    "biz_content" => array(
+        "mer_id"=>"020053010625",
+        "mer_prtcl_no"=>"0200530106250201",
+        "pay_mode"=>"10",
+        "access_type"=>"5",
+        "out_trade_no"=>"AAPPT20051202205754714",
+        "decive_info"=>"9774d56d682e549c",
+        "body"=>"勇士总冠军",
+        "fee_type"=>"001",
+        "icbc_appid"=>"10000000000004095503",
+        "mer_acct"=>"1402027109600325515",
+        "mer_url"=>"http://5.1fendb.com/recall/recall.php",
+        "orig_date_time"=>"2020-05-12T02:20:51",
+        "spbill_create_ip"=>"27.155.168.208",
+        "total_fee"=>"1",
+        "notify_type"=>"HS"
+    )
+
+);
+//以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+$client = new DefaultIcbcClient('10000000000004095503',
+    ' MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDYLo0htdHwedbvoJA0o5AA/UUE1zb/J4OO9SYmeMBZnLeiNC7TwG53PXgwCSHsp2gM02QatfohUUDHQJg/ezYCSDSMoWfYKv/dfz0DlXp1C8xOnc/im2y0PnZV1YVaTsFHnax91N7nxtfsGVRlT8e2UdkWlW0HX2QOxCBpuevDssfosA151f4JV07VHl+pyHxTS48wGeqDUU0z+hvD8P+KIA01/UOQqXdx47I9Zm5Rm7nfBq1tAxkG6S32D5fsFF2/N+Pa1fTZ//mHFVnn6hbu1c45EFRSBo0O1G+/qq7qTy5+tq5R0Vskgm6FzHJaX2ffQ2tmBwfm/OnZmxKaHmhFAgMBAAECggEAUTE6pFyLWswH47vkLUD5BsYYs/a4myAWEw0TpQNZCs8HUQ5UQAdX9cTKbRAhA6bkN1z1jeqm5PiFYdBq3fzCjhzcT60XOWL88g2ltsDfWzJxK12uBCfnrdJ/00D8cqx9fw5DCId4qIhP9EaXIe3SzjDzXb4FUu2KwNj8a3j+iWLc4rxMo84CRieXLrSIaL6pgE6wxm/G7lcfL2IicrcJGBQEj65Ivyj9UBAmu3TiOFWhQDgZYnAHjIi62MWmoY2hArSDB2BEc4Ul0q4AFj5bK5B7+MAg2bKcNZyKXTFvI5euMTIlqGoFR58oFwI0fh3BLk9ABVgeM+AAPw7hWjk6AQKBgQD+B9RXX7TjjcYx45fc/YB+FsbdFAbdU5q04aLtFpWrkyu9ZQwIlgpDVFuxJ5apgXjjHTsrw6n3oxbuls+Lp3gVMVnWNgtHW/AyqdTnchHjaJ3FTMpPL32suBLSGSHfc8MQmkD1CDZAEoo/HSWxEMhkrZdud1EDEiJPkFeXo1/9hQKBgQDZ25qhh1QmETY9WT42/CrZHfWdMVkodJsvGqRgkgIya+22DpvmSEvT2349fvHYL+Kr7dEl0ZrCHV1knIEkF/ftcQq8qnpNxIT05igPZxIzdnSHjDEeePgZ5Ldsaruvxa/wSYInbIN6knQpxRwJhs4fQQ9qB0aXetMHoH3yubpbwQKBgQDab50VrMR8z5JXn98cNhfhVHCX9fqZIqTrWQKiYEM/EAQSjes1Dt+wWb+mq+YPx7dNg/s3fL6QpHq5mpDJA65ses1HN52nNNVsm0Dp69qZ84GHAKsOQEYO2RHF+7p2zLI1eo7UpMURf1/FOakJgubuO571bEALJfK++912FRQbiQKBgEw15FwJSUif0MeZRohZomudbWR19OiQEhFiUoptyVL2Kov7hFIEjHIqYHkGxXeJGNRoNzfxoR+ywg8GKK8Fq3dmigkB4hL+YjyBnxX0SouyLoWUZ0Jvsurr9bZ5h/qvPyLhtCQyc7QXM4fBKlOy0rxgOBIxRWKMVvJeFHEqw6SBAoGAPuR/+v2VCePORhobY0EIIRLK1sO+Q2IVJIU4ecm0irD99/uwEc+RgJF0IakYlrw1PtmhDYniXO07GMIecj4zsnnPZtkttoNxmikMrK51YsFcsz8I55XzRPPGj1V8CxpfRxmEj9ofyHYHDDvSoHAR28xJdubbn3PuB7nBp94yNWk=',
+    IcbcConstants::$SIGN_TYPE_RSA,
+    '',
+    '',
+    'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB',
+    '',
+    '',
+    '',
+    '');
+$resp = $client->execute($request,'123131123asda','');//执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+echo $resp;
+$respObj = json_decode($resp,true);
+if($respObj["return_code"] == 0){ //sucess
+    echo $respObj["return_msg"];
+}else{//fail
+    echo $respObj["return_msg"];
+}
+
+?>

+ 52 - 0
extend/icbc/example/CardbusinessAggregatepayB2cOnlineForeignpaywithoutpagesV1Test.php

@@ -0,0 +1,52 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+$request = array(
+    "serviceUrl" => 'http://ip:port/api/cardbusiness/aggregatepay/b2c/online/foreignpaywithoutpages/V1',
+    "method" => 'POST',
+    "isNeedEncrypt" => false,
+    "biz_content" => array(
+        "out_trade_no"=>"asdg0001447480h0065",
+        "mer_id"=>"020001021577",
+        "mer_prtcl_no"=>"0200010215770201",
+        "mer_acct"=>"622222222222222",
+        "amount"=>"1",
+        "cur_type"=>"001",
+        "notify_url"=>"http=>//spas.sdc.cs.icbc=>10180/api-campus/pub/origin/lessongroupbuydetail/addLessonGroupbuyDetailPhoneRecall",
+        "icbc_appid"=>"10000000000004095503",
+        "notify_type"=>"HS",
+        "result_type"=>"1",
+        "attach"=>"asdg0001447480h0065",
+        "is_applepay"=>"0",
+        "card_no"=>"4761340000000019",
+        "cardkind"=>"1",
+        "exp_date"=>"204912",
+        "cvv2"=>"123",
+        "cavv"=>"",
+        "avv"=>"",
+        "acs_status"=>"",
+        "installment_times"=>"1"
+    )
+
+);
+//以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+$client = new DefaultIcbcClient('10000000000004095503',
+    ' MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDYLo0htdHwedbvoJA0o5AA/UUE1zb/J4OO9SYmeMBZnLeiNC7TwG53PXgwCSHsp2gM02QatfohUUDHQJg/ezYCSDSMoWfYKv/dfz0DlXp1C8xOnc/im2y0PnZV1YVaTsFHnax91N7nxtfsGVRlT8e2UdkWlW0HX2QOxCBpuevDssfosA151f4JV07VHl+pyHxTS48wGeqDUU0z+hvD8P+KIA01/UOQqXdx47I9Zm5Rm7nfBq1tAxkG6S32D5fsFF2/N+Pa1fTZ//mHFVnn6hbu1c45EFRSBo0O1G+/qq7qTy5+tq5R0Vskgm6FzHJaX2ffQ2tmBwfm/OnZmxKaHmhFAgMBAAECggEAUTE6pFyLWswH47vkLUD5BsYYs/a4myAWEw0TpQNZCs8HUQ5UQAdX9cTKbRAhA6bkN1z1jeqm5PiFYdBq3fzCjhzcT60XOWL88g2ltsDfWzJxK12uBCfnrdJ/00D8cqx9fw5DCId4qIhP9EaXIe3SzjDzXb4FUu2KwNj8a3j+iWLc4rxMo84CRieXLrSIaL6pgE6wxm/G7lcfL2IicrcJGBQEj65Ivyj9UBAmu3TiOFWhQDgZYnAHjIi62MWmoY2hArSDB2BEc4Ul0q4AFj5bK5B7+MAg2bKcNZyKXTFvI5euMTIlqGoFR58oFwI0fh3BLk9ABVgeM+AAPw7hWjk6AQKBgQD+B9RXX7TjjcYx45fc/YB+FsbdFAbdU5q04aLtFpWrkyu9ZQwIlgpDVFuxJ5apgXjjHTsrw6n3oxbuls+Lp3gVMVnWNgtHW/AyqdTnchHjaJ3FTMpPL32suBLSGSHfc8MQmkD1CDZAEoo/HSWxEMhkrZdud1EDEiJPkFeXo1/9hQKBgQDZ25qhh1QmETY9WT42/CrZHfWdMVkodJsvGqRgkgIya+22DpvmSEvT2349fvHYL+Kr7dEl0ZrCHV1knIEkF/ftcQq8qnpNxIT05igPZxIzdnSHjDEeePgZ5Ldsaruvxa/wSYInbIN6knQpxRwJhs4fQQ9qB0aXetMHoH3yubpbwQKBgQDab50VrMR8z5JXn98cNhfhVHCX9fqZIqTrWQKiYEM/EAQSjes1Dt+wWb+mq+YPx7dNg/s3fL6QpHq5mpDJA65ses1HN52nNNVsm0Dp69qZ84GHAKsOQEYO2RHF+7p2zLI1eo7UpMURf1/FOakJgubuO571bEALJfK++912FRQbiQKBgEw15FwJSUif0MeZRohZomudbWR19OiQEhFiUoptyVL2Kov7hFIEjHIqYHkGxXeJGNRoNzfxoR+ywg8GKK8Fq3dmigkB4hL+YjyBnxX0SouyLoWUZ0Jvsurr9bZ5h/qvPyLhtCQyc7QXM4fBKlOy0rxgOBIxRWKMVvJeFHEqw6SBAoGAPuR/+v2VCePORhobY0EIIRLK1sO+Q2IVJIU4ecm0irD99/uwEc+RgJF0IakYlrw1PtmhDYniXO07GMIecj4zsnnPZtkttoNxmikMrK51YsFcsz8I55XzRPPGj1V8CxpfRxmEj9ofyHYHDDvSoHAR28xJdubbn3PuB7nBp94yNWk=',
+    IcbcConstants::$SIGN_TYPE_RSA,
+    '',
+    '',
+    '',
+    '',
+    '',
+    '',
+    '');
+$resp = $client->execute($request,'123131123asda','');//执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+echo $resp;
+$respObj = json_decode($resp,true);
+if($respObj["return_code"] == 0){ //sucess
+    echo $respObj["return_msg"];
+}else{//fail
+    echo $respObj["return_msg"];
+}
+
+?>

+ 40 - 0
extend/icbc/example/CardbusinessAggregatepayB2cOnlineMerrefundV1Test.php

@@ -0,0 +1,40 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+$request = array(
+    "serviceUrl" => 'http://ip:port/api/cardbusiness/aggregatepay/b2c/online/merrefund/V1',
+    "method" => 'POST',
+    "isNeedEncrypt" => false,
+    "biz_content" => array(
+        "mer_id"=>"020053010625", //商户编号
+        "outtrx_serial_no"=>"202005210948933184460", //外部退货流水号
+        "order_id"=>"020001040311000712005200068002", //消费工行订单号
+        "out_trade_no"=>"", //外部订单号
+        "ret_total_amt"=>"100", //退货总金额
+        "trnsc_ccy"=>"1", //交易币种
+        "icbc_appid"=>"10000000000004095503", //商户在工行API平台的APPID
+        "mer_acct"=>"6222080200000000000", //商户清算账号
+        "order_apd_inf"=>"apd_inf" //订单附加信息,订单关联
+    )
+);
+//以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+$client = new DefaultIcbcClient('10000000000004095503',
+    ' MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDYLo0htdHwedbvoJA0o5AA/UUE1zb/J4OO9SYmeMBZnLeiNC7TwG53PXgwCSHsp2gM02QatfohUUDHQJg/ezYCSDSMoWfYKv/dfz0DlXp1C8xOnc/im2y0PnZV1YVaTsFHnax91N7nxtfsGVRlT8e2UdkWlW0HX2QOxCBpuevDssfosA151f4JV07VHl+pyHxTS48wGeqDUU0z+hvD8P+KIA01/UOQqXdx47I9Zm5Rm7nfBq1tAxkG6S32D5fsFF2/N+Pa1fTZ//mHFVnn6hbu1c45EFRSBo0O1G+/qq7qTy5+tq5R0Vskgm6FzHJaX2ffQ2tmBwfm/OnZmxKaHmhFAgMBAAECggEAUTE6pFyLWswH47vkLUD5BsYYs/a4myAWEw0TpQNZCs8HUQ5UQAdX9cTKbRAhA6bkN1z1jeqm5PiFYdBq3fzCjhzcT60XOWL88g2ltsDfWzJxK12uBCfnrdJ/00D8cqx9fw5DCId4qIhP9EaXIe3SzjDzXb4FUu2KwNj8a3j+iWLc4rxMo84CRieXLrSIaL6pgE6wxm/G7lcfL2IicrcJGBQEj65Ivyj9UBAmu3TiOFWhQDgZYnAHjIi62MWmoY2hArSDB2BEc4Ul0q4AFj5bK5B7+MAg2bKcNZyKXTFvI5euMTIlqGoFR58oFwI0fh3BLk9ABVgeM+AAPw7hWjk6AQKBgQD+B9RXX7TjjcYx45fc/YB+FsbdFAbdU5q04aLtFpWrkyu9ZQwIlgpDVFuxJ5apgXjjHTsrw6n3oxbuls+Lp3gVMVnWNgtHW/AyqdTnchHjaJ3FTMpPL32suBLSGSHfc8MQmkD1CDZAEoo/HSWxEMhkrZdud1EDEiJPkFeXo1/9hQKBgQDZ25qhh1QmETY9WT42/CrZHfWdMVkodJsvGqRgkgIya+22DpvmSEvT2349fvHYL+Kr7dEl0ZrCHV1knIEkF/ftcQq8qnpNxIT05igPZxIzdnSHjDEeePgZ5Ldsaruvxa/wSYInbIN6knQpxRwJhs4fQQ9qB0aXetMHoH3yubpbwQKBgQDab50VrMR8z5JXn98cNhfhVHCX9fqZIqTrWQKiYEM/EAQSjes1Dt+wWb+mq+YPx7dNg/s3fL6QpHq5mpDJA65ses1HN52nNNVsm0Dp69qZ84GHAKsOQEYO2RHF+7p2zLI1eo7UpMURf1/FOakJgubuO571bEALJfK++912FRQbiQKBgEw15FwJSUif0MeZRohZomudbWR19OiQEhFiUoptyVL2Kov7hFIEjHIqYHkGxXeJGNRoNzfxoR+ywg8GKK8Fq3dmigkB4hL+YjyBnxX0SouyLoWUZ0Jvsurr9bZ5h/qvPyLhtCQyc7QXM4fBKlOy0rxgOBIxRWKMVvJeFHEqw6SBAoGAPuR/+v2VCePORhobY0EIIRLK1sO+Q2IVJIU4ecm0irD99/uwEc+RgJF0IakYlrw1PtmhDYniXO07GMIecj4zsnnPZtkttoNxmikMrK51YsFcsz8I55XzRPPGj1V8CxpfRxmEj9ofyHYHDDvSoHAR28xJdubbn3PuB7nBp94yNWk=',
+    IcbcConstants::$SIGN_TYPE_RSA,
+    '',
+    '',
+    '',
+    '',
+    '',
+    '',
+    '');
+$resp = $client->execute($request,'123131123asda','');//执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+echo $resp;
+$respObj = json_decode($resp,true);
+if($respObj["return_code"] == 0){ //sucess
+    echo $respObj["return_msg"];
+}else{//fail
+    echo $respObj["return_msg"];
+}
+
+?>

+ 37 - 0
extend/icbc/example/CardbusinessAggregatepayB2cOnlineOrderqryV1Test.php

@@ -0,0 +1,37 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+$request = array(
+    "serviceUrl" => 'http://ip:port/api/cardbusiness/aggregatepay/b2c/online/orderqry/V1',
+    "method" => 'POST',
+    "isNeedEncrypt" => false,
+    "biz_content" => array(
+        "mer_id"=>"020053010625",
+        "out_trade_no"=>"",
+        "order_id"=>"020053010625000512004260014001",
+        "deal_flag"=>"0",
+        "icbc_appid"=>"10000000000004095503"
+    )
+
+);
+//以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+$client = new DefaultIcbcClient('10000000000004095503',
+    ' MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDYLo0htdHwedbvoJA0o5AA/UUE1zb/J4OO9SYmeMBZnLeiNC7TwG53PXgwCSHsp2gM02QatfohUUDHQJg/ezYCSDSMoWfYKv/dfz0DlXp1C8xOnc/im2y0PnZV1YVaTsFHnax91N7nxtfsGVRlT8e2UdkWlW0HX2QOxCBpuevDssfosA151f4JV07VHl+pyHxTS48wGeqDUU0z+hvD8P+KIA01/UOQqXdx47I9Zm5Rm7nfBq1tAxkG6S32D5fsFF2/N+Pa1fTZ//mHFVnn6hbu1c45EFRSBo0O1G+/qq7qTy5+tq5R0Vskgm6FzHJaX2ffQ2tmBwfm/OnZmxKaHmhFAgMBAAECggEAUTE6pFyLWswH47vkLUD5BsYYs/a4myAWEw0TpQNZCs8HUQ5UQAdX9cTKbRAhA6bkN1z1jeqm5PiFYdBq3fzCjhzcT60XOWL88g2ltsDfWzJxK12uBCfnrdJ/00D8cqx9fw5DCId4qIhP9EaXIe3SzjDzXb4FUu2KwNj8a3j+iWLc4rxMo84CRieXLrSIaL6pgE6wxm/G7lcfL2IicrcJGBQEj65Ivyj9UBAmu3TiOFWhQDgZYnAHjIi62MWmoY2hArSDB2BEc4Ul0q4AFj5bK5B7+MAg2bKcNZyKXTFvI5euMTIlqGoFR58oFwI0fh3BLk9ABVgeM+AAPw7hWjk6AQKBgQD+B9RXX7TjjcYx45fc/YB+FsbdFAbdU5q04aLtFpWrkyu9ZQwIlgpDVFuxJ5apgXjjHTsrw6n3oxbuls+Lp3gVMVnWNgtHW/AyqdTnchHjaJ3FTMpPL32suBLSGSHfc8MQmkD1CDZAEoo/HSWxEMhkrZdud1EDEiJPkFeXo1/9hQKBgQDZ25qhh1QmETY9WT42/CrZHfWdMVkodJsvGqRgkgIya+22DpvmSEvT2349fvHYL+Kr7dEl0ZrCHV1knIEkF/ftcQq8qnpNxIT05igPZxIzdnSHjDEeePgZ5Ldsaruvxa/wSYInbIN6knQpxRwJhs4fQQ9qB0aXetMHoH3yubpbwQKBgQDab50VrMR8z5JXn98cNhfhVHCX9fqZIqTrWQKiYEM/EAQSjes1Dt+wWb+mq+YPx7dNg/s3fL6QpHq5mpDJA65ses1HN52nNNVsm0Dp69qZ84GHAKsOQEYO2RHF+7p2zLI1eo7UpMURf1/FOakJgubuO571bEALJfK++912FRQbiQKBgEw15FwJSUif0MeZRohZomudbWR19OiQEhFiUoptyVL2Kov7hFIEjHIqYHkGxXeJGNRoNzfxoR+ywg8GKK8Fq3dmigkB4hL+YjyBnxX0SouyLoWUZ0Jvsurr9bZ5h/qvPyLhtCQyc7QXM4fBKlOy0rxgOBIxRWKMVvJeFHEqw6SBAoGAPuR/+v2VCePORhobY0EIIRLK1sO+Q2IVJIU4ecm0irD99/uwEc+RgJF0IakYlrw1PtmhDYniXO07GMIecj4zsnnPZtkttoNxmikMrK51YsFcsz8I55XzRPPGj1V8CxpfRxmEj9ofyHYHDDvSoHAR28xJdubbn3PuB7nBp94yNWk=',
+    IcbcConstants::$SIGN_TYPE_RSA,
+    '',
+    '',
+    '',
+    '',
+    '',
+    '',
+    '');
+$resp = $client->execute($request,'123131123asda','');//执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+echo $resp;
+$respObj = json_decode($resp,true);
+if($respObj["return_code"] == 0){ //sucess
+    echo $respObj["return_msg"];
+}else{//fail
+    echo $respObj["return_msg"];
+}
+
+?>

+ 36 - 0
extend/icbc/example/CardbusinessAggregatepayB2cOnlineRefundqryV1Test.php

@@ -0,0 +1,36 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+$request = array(
+    "serviceUrl" => 'http://ip:port/api/cardbusiness/aggregatepay/b2c/online/refundqry/V1',
+    "method" => 'POST',
+    "isNeedEncrypt" => false,
+    "biz_content" => array(
+        "mer_id"=>"020053010625",
+        "out_trade_no"=>"20200326123719645283300",
+        "order_id"=>"020053010625000722006300039015",
+        "outtrx_serial_no"=>"202002270927537200130"
+    )
+
+);
+//以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+$client = new DefaultIcbcClient('10000000000004095503',
+    ' MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDYLo0htdHwedbvoJA0o5AA/UUE1zb/J4OO9SYmeMBZnLeiNC7TwG53PXgwCSHsp2gM02QatfohUUDHQJg/ezYCSDSMoWfYKv/dfz0DlXp1C8xOnc/im2y0PnZV1YVaTsFHnax91N7nxtfsGVRlT8e2UdkWlW0HX2QOxCBpuevDssfosA151f4JV07VHl+pyHxTS48wGeqDUU0z+hvD8P+KIA01/UOQqXdx47I9Zm5Rm7nfBq1tAxkG6S32D5fsFF2/N+Pa1fTZ//mHFVnn6hbu1c45EFRSBo0O1G+/qq7qTy5+tq5R0Vskgm6FzHJaX2ffQ2tmBwfm/OnZmxKaHmhFAgMBAAECggEAUTE6pFyLWswH47vkLUD5BsYYs/a4myAWEw0TpQNZCs8HUQ5UQAdX9cTKbRAhA6bkN1z1jeqm5PiFYdBq3fzCjhzcT60XOWL88g2ltsDfWzJxK12uBCfnrdJ/00D8cqx9fw5DCId4qIhP9EaXIe3SzjDzXb4FUu2KwNj8a3j+iWLc4rxMo84CRieXLrSIaL6pgE6wxm/G7lcfL2IicrcJGBQEj65Ivyj9UBAmu3TiOFWhQDgZYnAHjIi62MWmoY2hArSDB2BEc4Ul0q4AFj5bK5B7+MAg2bKcNZyKXTFvI5euMTIlqGoFR58oFwI0fh3BLk9ABVgeM+AAPw7hWjk6AQKBgQD+B9RXX7TjjcYx45fc/YB+FsbdFAbdU5q04aLtFpWrkyu9ZQwIlgpDVFuxJ5apgXjjHTsrw6n3oxbuls+Lp3gVMVnWNgtHW/AyqdTnchHjaJ3FTMpPL32suBLSGSHfc8MQmkD1CDZAEoo/HSWxEMhkrZdud1EDEiJPkFeXo1/9hQKBgQDZ25qhh1QmETY9WT42/CrZHfWdMVkodJsvGqRgkgIya+22DpvmSEvT2349fvHYL+Kr7dEl0ZrCHV1knIEkF/ftcQq8qnpNxIT05igPZxIzdnSHjDEeePgZ5Ldsaruvxa/wSYInbIN6knQpxRwJhs4fQQ9qB0aXetMHoH3yubpbwQKBgQDab50VrMR8z5JXn98cNhfhVHCX9fqZIqTrWQKiYEM/EAQSjes1Dt+wWb+mq+YPx7dNg/s3fL6QpHq5mpDJA65ses1HN52nNNVsm0Dp69qZ84GHAKsOQEYO2RHF+7p2zLI1eo7UpMURf1/FOakJgubuO571bEALJfK++912FRQbiQKBgEw15FwJSUif0MeZRohZomudbWR19OiQEhFiUoptyVL2Kov7hFIEjHIqYHkGxXeJGNRoNzfxoR+ywg8GKK8Fq3dmigkB4hL+YjyBnxX0SouyLoWUZ0Jvsurr9bZ5h/qvPyLhtCQyc7QXM4fBKlOy0rxgOBIxRWKMVvJeFHEqw6SBAoGAPuR/+v2VCePORhobY0EIIRLK1sO+Q2IVJIU4ecm0irD99/uwEc+RgJF0IakYlrw1PtmhDYniXO07GMIecj4zsnnPZtkttoNxmikMrK51YsFcsz8I55XzRPPGj1V8CxpfRxmEj9ofyHYHDDvSoHAR28xJdubbn3PuB7nBp94yNWk=',
+    IcbcConstants::$SIGN_TYPE_RSA,
+    '',
+    '',
+    '',
+    '',
+    '',
+    '',
+    '');
+$resp = $client->execute($request,'123131123asda','');//执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+echo $resp;
+$respObj = json_decode($resp,true);
+if($respObj["return_code"] == 0){ //sucess
+    echo $respObj["return_msg"];
+}else{//fail
+    echo $respObj["return_msg"];
+}
+
+?>

+ 72 - 0
extend/icbc/example/CardbusinessAggregatepayB2cOnlineSersuborderV1Test.php

@@ -0,0 +1,72 @@
+<?php
+		include_once '../php_idea_project/DefaultIcbcClient.php';
+		include_once '../php_idea_project/IcbcConstants.php';
+		#gw.dccnet.com.cn:8087
+		$request = array(
+		    "serviceUrl" => 'http://ip:port/api/cardbusiness/aggregatepay/b2c/online/sersuborder/V1',
+		    "method" => 'POST',
+		    "isNeedEncrypt" => false,
+		    "biz_content" => array(
+		        "mer_id"=>"200001490",
+		        "mer_prtcl_no"=>"0200530106250201",
+		        "icbc_appid"=>"10000000000004095503",
+		        "order_num"=>"2",
+		        "order_submit_act_input"=>
+		            array(
+		                array(
+		                    "rec_num"=>"1",
+		                    "oper_flag"=>"0",
+		                    "sub_order_id"=>"22222221",
+		                    "busi_type"=>"2",
+		                    "seq_no"=>"020001040311000512005200006005",
+		                    "ori_trx_date"=>"2020-09-21",
+		                    "sub_mer_id"=>"020001040336",
+		                    "sub_mer_prtcl_no"=>"0200010403360201",
+		                    "classify_amt"=>"1",
+		                    "term_id"=>"",
+												"mer_acct":"0200092109050001179",//需要直接分账的商户清算账号 
+												"mer_sp_infor":"zhp3"//商户自定义信息 
+		                ),
+		                array(
+		                    "rec_num"=>"2",
+		                    "oper_flag"=>"0",
+		                    "sub_order_id"=>"2222222331",
+		                    "busi_type"=>"2",
+		                    "seq_no"=>"020001040311000512005200006005",
+		                    "ori_trx_date"=>"2020-09-21",
+		                    "sub_mer_id"=>"020001040336",
+		                    "sub_mer_prtcl_no"=>"0200010403360201",
+		                    "classify_amt"=>"1",
+		                    "term_id"=>"",
+												"mer_acct":"0200092109050001179",//需要直接分账的商户清算账号 
+												"mer_sp_infor":"zhp3"//商户自定义信息 
+		                )
+		            )
+		    )
+
+		);
+		//以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+		$client = new DefaultIcbcClient('10000000000004095503',
+		    ' MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDYLo0htdHwedbvoJA0o5AA/UUE1zb/J4OO9SYmeMBZnLeiNC7TwG53PXgwCSHsp2gM02QatfohUUDHQJg/ezYCSDSMoWfYKv/dfz0DlXp1C8xOnc/im2y0PnZV1YVaTsFHnax91N7nxtfsGVRlT8e2UdkWlW0HX2QOxCBpuevDssfosA151f4JV07VHl+pyHxTS48wGeqDUU0z+hvD8P+KIA01/UOQqXdx47I9Zm5Rm7nfBq1tAxkG6S32D5fsFF2/N+Pa1fTZ//mHFVnn6hbu1c45EFRSBo0O1G+/qq7qTy5+tq5R0Vskgm6FzHJaX2ffQ2tmBwfm/OnZmxKaHmhFAgMBAAECggEAUTE6pFyLWswH47vkLUD5BsYYs/a4myAWEw0TpQNZCs8HUQ5UQAdX9cTKbRAhA6bkN1z1jeqm5PiFYdBq3fzCjhzcT60XOWL88g2ltsDfWzJxK12uBCfnrdJ/00D8cqx9fw5DCId4qIhP9EaXIe3SzjDzXb4FUu2KwNj8a3j+iWLc4rxMo84CRieXLrSIaL6pgE6wxm/G7lcfL2IicrcJGBQEj65Ivyj9UBAmu3TiOFWhQDgZYnAHjIi62MWmoY2hArSDB2BEc4Ul0q4AFj5bK5B7+MAg2bKcNZyKXTFvI5euMTIlqGoFR58oFwI0fh3BLk9ABVgeM+AAPw7hWjk6AQKBgQD+B9RXX7TjjcYx45fc/YB+FsbdFAbdU5q04aLtFpWrkyu9ZQwIlgpDVFuxJ5apgXjjHTsrw6n3oxbuls+Lp3gVMVnWNgtHW/AyqdTnchHjaJ3FTMpPL32suBLSGSHfc8MQmkD1CDZAEoo/HSWxEMhkrZdud1EDEiJPkFeXo1/9hQKBgQDZ25qhh1QmETY9WT42/CrZHfWdMVkodJsvGqRgkgIya+22DpvmSEvT2349fvHYL+Kr7dEl0ZrCHV1knIEkF/ftcQq8qnpNxIT05igPZxIzdnSHjDEeePgZ5Ldsaruvxa/wSYInbIN6knQpxRwJhs4fQQ9qB0aXetMHoH3yubpbwQKBgQDab50VrMR8z5JXn98cNhfhVHCX9fqZIqTrWQKiYEM/EAQSjes1Dt+wWb+mq+YPx7dNg/s3fL6QpHq5mpDJA65ses1HN52nNNVsm0Dp69qZ84GHAKsOQEYO2RHF+7p2zLI1eo7UpMURf1/FOakJgubuO571bEALJfK++912FRQbiQKBgEw15FwJSUif0MeZRohZomudbWR19OiQEhFiUoptyVL2Kov7hFIEjHIqYHkGxXeJGNRoNzfxoR+ywg8GKK8Fq3dmigkB4hL+YjyBnxX0SouyLoWUZ0Jvsurr9bZ5h/qvPyLhtCQyc7QXM4fBKlOy0rxgOBIxRWKMVvJeFHEqw6SBAoGAPuR/+v2VCePORhobY0EIIRLK1sO+Q2IVJIU4ecm0irD99/uwEc+RgJF0IakYlrw1PtmhDYniXO07GMIecj4zsnnPZtkttoNxmikMrK51YsFcsz8I55XzRPPGj1V8CxpfRxmEj9ofyHYHDDvSoHAR28xJdubbn3PuB7nBp94yNWk=',
+		    IcbcConstants::$SIGN_TYPE_RSA,
+		    '',
+		    '',
+		    'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB',
+		    '',
+		    '',
+		    '',
+		    '');
+		try{
+		    $resp = $client->execute($request,'123131123876111','');//执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+		    echo $resp;
+		    $respObj = json_decode($resp,true);
+		    if($respObj["return_code"] == 0){ //sucess
+		        echo $respObj["return_msg"];
+		    }else{//fail
+		        echo $respObj["return_msg"];
+		    }
+		}catch (Exception $e){
+		    echo 'Exception:'.$e->getTrace().$e->getMessage()."\n";
+		}
+
+?>

+ 47 - 0
extend/icbc/example/CardbusinessAggregatepayB2cOnlineSersuborderrefundV1Test.php

@@ -0,0 +1,47 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+$request = array(
+    "serviceUrl" => 'http://ip:port/api/cardbusiness/aggregatepay/b2c/online/sersuborderrefund/V1',
+    "method" => 'POST',
+    "isNeedEncrypt" => false,
+    "biz_content" => array(
+        "mer_id"=>"20000001490",
+        "mer_prtcl_no"=>"2000000149000101",
+        "icbc_appid"=>"10000000000004095503",
+        "oper_flag"=>"0",//0-子订单退货 ,1 - 消费退货
+				"sub_order_id"=>"20001040336202005261544015",//子订单编号唯一 
+				"seq_no"=>"020001040311000712005220070004",//原外部交易序号 
+				"busi_type"=>"2",//原交易类型,2-使用工行订单号
+				"ori_mer_id"=>"020001040311",//原交易商户编号 
+				"sub_mer_id"=>"020001040336",//商户编号 
+				"sub_mer_prtcl_no":=>"0200010403360201",//协议编号 
+				"ret_sub_order_id"=>"113674649",
+				"outtrx_serial_no"=>"",//大订单加送字段
+				"classify_amt"=>"2",//清算金额 
+				"ori_trx_date"=>"2020-09-30",
+				"mer_acct" =>""//清算账号
+    )
+
+);
+//以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+$client = new DefaultIcbcClient('10000000000004095503',
+    ' MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDYLo0htdHwedbvoJA0o5AA/UUE1zb/J4OO9SYmeMBZnLeiNC7TwG53PXgwCSHsp2gM02QatfohUUDHQJg/ezYCSDSMoWfYKv/dfz0DlXp1C8xOnc/im2y0PnZV1YVaTsFHnax91N7nxtfsGVRlT8e2UdkWlW0HX2QOxCBpuevDssfosA151f4JV07VHl+pyHxTS48wGeqDUU0z+hvD8P+KIA01/UOQqXdx47I9Zm5Rm7nfBq1tAxkG6S32D5fsFF2/N+Pa1fTZ//mHFVnn6hbu1c45EFRSBo0O1G+/qq7qTy5+tq5R0Vskgm6FzHJaX2ffQ2tmBwfm/OnZmxKaHmhFAgMBAAECggEAUTE6pFyLWswH47vkLUD5BsYYs/a4myAWEw0TpQNZCs8HUQ5UQAdX9cTKbRAhA6bkN1z1jeqm5PiFYdBq3fzCjhzcT60XOWL88g2ltsDfWzJxK12uBCfnrdJ/00D8cqx9fw5DCId4qIhP9EaXIe3SzjDzXb4FUu2KwNj8a3j+iWLc4rxMo84CRieXLrSIaL6pgE6wxm/G7lcfL2IicrcJGBQEj65Ivyj9UBAmu3TiOFWhQDgZYnAHjIi62MWmoY2hArSDB2BEc4Ul0q4AFj5bK5B7+MAg2bKcNZyKXTFvI5euMTIlqGoFR58oFwI0fh3BLk9ABVgeM+AAPw7hWjk6AQKBgQD+B9RXX7TjjcYx45fc/YB+FsbdFAbdU5q04aLtFpWrkyu9ZQwIlgpDVFuxJ5apgXjjHTsrw6n3oxbuls+Lp3gVMVnWNgtHW/AyqdTnchHjaJ3FTMpPL32suBLSGSHfc8MQmkD1CDZAEoo/HSWxEMhkrZdud1EDEiJPkFeXo1/9hQKBgQDZ25qhh1QmETY9WT42/CrZHfWdMVkodJsvGqRgkgIya+22DpvmSEvT2349fvHYL+Kr7dEl0ZrCHV1knIEkF/ftcQq8qnpNxIT05igPZxIzdnSHjDEeePgZ5Ldsaruvxa/wSYInbIN6knQpxRwJhs4fQQ9qB0aXetMHoH3yubpbwQKBgQDab50VrMR8z5JXn98cNhfhVHCX9fqZIqTrWQKiYEM/EAQSjes1Dt+wWb+mq+YPx7dNg/s3fL6QpHq5mpDJA65ses1HN52nNNVsm0Dp69qZ84GHAKsOQEYO2RHF+7p2zLI1eo7UpMURf1/FOakJgubuO571bEALJfK++912FRQbiQKBgEw15FwJSUif0MeZRohZomudbWR19OiQEhFiUoptyVL2Kov7hFIEjHIqYHkGxXeJGNRoNzfxoR+ywg8GKK8Fq3dmigkB4hL+YjyBnxX0SouyLoWUZ0Jvsurr9bZ5h/qvPyLhtCQyc7QXM4fBKlOy0rxgOBIxRWKMVvJeFHEqw6SBAoGAPuR/+v2VCePORhobY0EIIRLK1sO+Q2IVJIU4ecm0irD99/uwEc+RgJF0IakYlrw1PtmhDYniXO07GMIecj4zsnnPZtkttoNxmikMrK51YsFcsz8I55XzRPPGj1V8CxpfRxmEj9ofyHYHDDvSoHAR28xJdubbn3PuB7nBp94yNWk=',
+    IcbcConstants::$SIGN_TYPE_RSA,
+    '',
+    '',
+    '',
+    '',
+    '',
+    '',
+    '');
+$resp = $client->execute($request,'123131123asda','');//执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+echo $resp;
+$respObj = json_decode($resp,true);
+if($respObj["return_code"] == 0){ //sucess
+    echo $respObj["return_msg"];
+}else{//fail
+    echo $respObj["return_msg"];
+}
+
+?>

+ 53 - 0
extend/icbc/example/CardbusinessAggregatepayB2cOnlineUiConsumepurchaseshowpayV1Test.php

@@ -0,0 +1,53 @@
+<?php
+include_once '../IcbcConstants.php';
+include_once '../UiIcbcClient.php';
+
+
+$request = array(
+    "serviceUrl" => 'http://ip:port/ui/cardbusiness/aggregatepay/b2c/online/ui/consumepurchaseshowpay/V1',
+    "method" => 'POST',
+    "isNeedEncrypt" => false,
+    "biz_content" => array(
+        "mer_id"=>"020001021577",
+        "out_trade_no"=>"asdg0001447480h0065",
+        "mer_prtcl_no"=>"0200010215770201",
+        "body"=>"一体化非埋名测试",
+        "subject"=>"一体化非埋名测试",
+        "order_amt"=>"1",
+        "notify_url"=>"http=>//spas.sdc.cs.icbc=>10180/api-campus/pub/origin/lessongroupbuydetail/addLessonGroupbuyDetailPhoneRecall",
+        "icbc_appid"=>"10000000000004095503",
+        "openId"=>"",
+        "saledepname"=>"一体化非埋名测试",
+        "notify_type"=>"HS",
+        "result_type"=>"1",
+        "merAcct"=>"",
+        "expireTime"=>"1800",
+        "attach"=>"asdg0001447480h0065",
+        "return_url"=>"",
+        "pay_limit"=>"no_credit",
+        "backup4"=>"",
+        "shop_appid"=>"",
+        "order_apd_inf"=>""
+    )
+
+);
+
+$client = new UiIcbcClient('10000000000004095503',
+    'MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDYLo0htdHwedbvoJA0o5AA/UUE1zb/J4OO9SYmeMBZnLeiNC7TwG53PXgwCSHsp2gM02QatfohUUDHQJg/ezYCSDSMoWfYKv/dfz0DlXp1C8xOnc/im2y0PnZV1YVaTsFHnax91N7nxtfsGVRlT8e2UdkWlW0HX2QOxCBpuevDssfosA151f4JV07VHl+pyHxTS48wGeqDUU0z+hvD8P+KIA01/UOQqXdx47I9Zm5Rm7nfBq1tAxkG6S32D5fsFF2/N+Pa1fTZ//mHFVnn6hbu1c45EFRSBo0O1G+/qq7qTy5+tq5R0Vskgm6FzHJaX2ffQ2tmBwfm/OnZmxKaHmhFAgMBAAECggEAUTE6pFyLWswH47vkLUD5BsYYs/a4myAWEw0TpQNZCs8HUQ5UQAdX9cTKbRAhA6bkN1z1jeqm5PiFYdBq3fzCjhzcT60XOWL88g2ltsDfWzJxK12uBCfnrdJ/00D8cqx9fw5DCId4qIhP9EaXIe3SzjDzXb4FUu2KwNj8a3j+iWLc4rxMo84CRieXLrSIaL6pgE6wxm/G7lcfL2IicrcJGBQEj65Ivyj9UBAmu3TiOFWhQDgZYnAHjIi62MWmoY2hArSDB2BEc4Ul0q4AFj5bK5B7+MAg2bKcNZyKXTFvI5euMTIlqGoFR58oFwI0fh3BLk9ABVgeM+AAPw7hWjk6AQKBgQD+B9RXX7TjjcYx45fc/YB+FsbdFAbdU5q04aLtFpWrkyu9ZQwIlgpDVFuxJ5apgXjjHTsrw6n3oxbuls+Lp3gVMVnWNgtHW/AyqdTnchHjaJ3FTMpPL32suBLSGSHfc8MQmkD1CDZAEoo/HSWxEMhkrZdud1EDEiJPkFeXo1/9hQKBgQDZ25qhh1QmETY9WT42/CrZHfWdMVkodJsvGqRgkgIya+22DpvmSEvT2349fvHYL+Kr7dEl0ZrCHV1knIEkF/ftcQq8qnpNxIT05igPZxIzdnSHjDEeePgZ5Ldsaruvxa/wSYInbIN6knQpxRwJhs4fQQ9qB0aXetMHoH3yubpbwQKBgQDab50VrMR8z5JXn98cNhfhVHCX9fqZIqTrWQKiYEM/EAQSjes1Dt+wWb+mq+YPx7dNg/s3fL6QpHq5mpDJA65ses1HN52nNNVsm0Dp69qZ84GHAKsOQEYO2RHF+7p2zLI1eo7UpMURf1/FOakJgubuO571bEALJfK++912FRQbiQKBgEw15FwJSUif0MeZRohZomudbWR19OiQEhFiUoptyVL2Kov7hFIEjHIqYHkGxXeJGNRoNzfxoR+ywg8GKK8Fq3dmigkB4hL+YjyBnxX0SouyLoWUZ0Jvsurr9bZ5h/qvPyLhtCQyc7QXM4fBKlOy0rxgOBIxRWKMVvJeFHEqw6SBAoGAPuR/+v2VCePORhobY0EIIRLK1sO+Q2IVJIU4ecm0irD99/uwEc+RgJF0IakYlrw1PtmhDYniXO07GMIecj4zsnnPZtkttoNxmikMrK51YsFcsz8I55XzRPPGj1V8CxpfRxmEj9ofyHYHDDvSoHAR28xJdubbn3PuB7nBp94yNWk=',
+    IcbcConstants::$SIGN_TYPE_RSA,
+    '',
+    '',
+    '',
+    '',
+    '',
+    '',
+    '');
+
+try{
+    $resp = $client->buildPostForm($request,'12314adafadsa',''); //执行调用
+    echo $resp;
+}catch(Exception $e){//捕获异常
+    echo 'Exception:'.$e->getMessage()."\n";
+}
+
+?>

+ 52 - 0
extend/icbc/example/CardbusinessAggregatepayB2cOnlineUiForeignpayV1Test.php

@@ -0,0 +1,52 @@
+<?php
+include_once '../IcbcConstants.php';
+include_once '../UiIcbcClient.php';
+
+
+$request = array(
+    "serviceUrl" => 'http://ip:port/ui/cardbusiness/aggregatepay/b2c/online/ui/foreignpay/V1',
+    "method" => 'POST',
+    "isNeedEncrypt" => false,
+    "biz_content" => array(
+        "client_type"=>"1",
+        "out_trade_no"=>"asdg0001447480h0065",
+        "mer_id"=>"020001040300",
+        "mer_prtcl_no"=>"0200010403000201",
+        "mer_acct"=>"0200092109050001179",
+        "amount"=>"10",
+        "installment_times"=>"1",
+        "cur_type"=>"001",
+        "mer_url"=>"http=>//5.1fendb.com/recall/recall.php",
+        "icbc_appid"=>"10000000000004095503",
+        "notify_type"=>"HS",
+        "result_type"=>"0",
+        "expireTime"=>"1800",
+        "attach"=>"asdg0001447480h0065",
+        "return_url"=>"http=>//acq2020kfacq.dccnet.com.cn/apiTest.html",
+        "is_applepay"=>"0",
+        "backup1"=>"",
+        "order_apd_inf"=>"",
+        "language"=>"en_US"
+    )
+
+);
+
+$client = new UiIcbcClient('10000000000004095503',
+    'MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDYLo0htdHwedbvoJA0o5AA/UUE1zb/J4OO9SYmeMBZnLeiNC7TwG53PXgwCSHsp2gM02QatfohUUDHQJg/ezYCSDSMoWfYKv/dfz0DlXp1C8xOnc/im2y0PnZV1YVaTsFHnax91N7nxtfsGVRlT8e2UdkWlW0HX2QOxCBpuevDssfosA151f4JV07VHl+pyHxTS48wGeqDUU0z+hvD8P+KIA01/UOQqXdx47I9Zm5Rm7nfBq1tAxkG6S32D5fsFF2/N+Pa1fTZ//mHFVnn6hbu1c45EFRSBo0O1G+/qq7qTy5+tq5R0Vskgm6FzHJaX2ffQ2tmBwfm/OnZmxKaHmhFAgMBAAECggEAUTE6pFyLWswH47vkLUD5BsYYs/a4myAWEw0TpQNZCs8HUQ5UQAdX9cTKbRAhA6bkN1z1jeqm5PiFYdBq3fzCjhzcT60XOWL88g2ltsDfWzJxK12uBCfnrdJ/00D8cqx9fw5DCId4qIhP9EaXIe3SzjDzXb4FUu2KwNj8a3j+iWLc4rxMo84CRieXLrSIaL6pgE6wxm/G7lcfL2IicrcJGBQEj65Ivyj9UBAmu3TiOFWhQDgZYnAHjIi62MWmoY2hArSDB2BEc4Ul0q4AFj5bK5B7+MAg2bKcNZyKXTFvI5euMTIlqGoFR58oFwI0fh3BLk9ABVgeM+AAPw7hWjk6AQKBgQD+B9RXX7TjjcYx45fc/YB+FsbdFAbdU5q04aLtFpWrkyu9ZQwIlgpDVFuxJ5apgXjjHTsrw6n3oxbuls+Lp3gVMVnWNgtHW/AyqdTnchHjaJ3FTMpPL32suBLSGSHfc8MQmkD1CDZAEoo/HSWxEMhkrZdud1EDEiJPkFeXo1/9hQKBgQDZ25qhh1QmETY9WT42/CrZHfWdMVkodJsvGqRgkgIya+22DpvmSEvT2349fvHYL+Kr7dEl0ZrCHV1knIEkF/ftcQq8qnpNxIT05igPZxIzdnSHjDEeePgZ5Ldsaruvxa/wSYInbIN6knQpxRwJhs4fQQ9qB0aXetMHoH3yubpbwQKBgQDab50VrMR8z5JXn98cNhfhVHCX9fqZIqTrWQKiYEM/EAQSjes1Dt+wWb+mq+YPx7dNg/s3fL6QpHq5mpDJA65ses1HN52nNNVsm0Dp69qZ84GHAKsOQEYO2RHF+7p2zLI1eo7UpMURf1/FOakJgubuO571bEALJfK++912FRQbiQKBgEw15FwJSUif0MeZRohZomudbWR19OiQEhFiUoptyVL2Kov7hFIEjHIqYHkGxXeJGNRoNzfxoR+ywg8GKK8Fq3dmigkB4hL+YjyBnxX0SouyLoWUZ0Jvsurr9bZ5h/qvPyLhtCQyc7QXM4fBKlOy0rxgOBIxRWKMVvJeFHEqw6SBAoGAPuR/+v2VCePORhobY0EIIRLK1sO+Q2IVJIU4ecm0irD99/uwEc+RgJF0IakYlrw1PtmhDYniXO07GMIecj4zsnnPZtkttoNxmikMrK51YsFcsz8I55XzRPPGj1V8CxpfRxmEj9ofyHYHDDvSoHAR28xJdubbn3PuB7nBp94yNWk=',
+    IcbcConstants::$SIGN_TYPE_RSA,
+    '',
+    '',
+    '',
+    '',
+    '',
+    '',
+    '');
+
+try{
+    $resp = $client->buildPostForm($request,'12314adafadsa',''); //执行调用
+    echo $resp;
+}catch(Exception $e){//捕获异常
+    echo 'Exception:'.$e->getMessage()."\n";
+}
+
+?>

+ 67 - 0
extend/icbc/example/CardbusinessEpayh5UiConsumptionV1Test.php

@@ -0,0 +1,67 @@
+<?php
+include_once '../IcbcConstants.php';
+include_once '../UiIcbcClient.php';
+          	
+          	$request = array(
+          		"serviceUrl" => 'http://ip:port/ui/cardbusiness/epayh5/ui/consumption/V1',
+          		"method" => 'POST',
+          		"isNeedEncrypt" => false,
+          		"biz_content" => array(
+          							"icbc_appid"=>"10000000000004095503",
+												"order_date"=>"20201020104513",
+												"order_id"=>"h520201020104513",
+												"amount"=>"1",
+												"installment_times"=>"1",
+												"cur_type"=>"001",
+												"mer_id"=>"020053010625",
+												"mer_prtcl_no"=>"0200530106250201",
+												"mer_acct"=>"0200000209024213154",
+												"merchant_info"=>"",
+												"language"=>"zh_CN",
+												"goods_id"=>"",
+												"goods_name"=>"娃哈哈",
+												"goods_num"=>"",
+												"carriage_amt"=>"",
+												"mer_hint"=>"",
+												"remark1"=>"20201020154513",
+												"remark2"=>"",
+												"mer_reference"=>"",
+												"mer_custom_ip"=>"",
+												"mer_var"=>"hello",
+												"merURL"=>"http://5.1fendb.com/recall/recall.php",
+												"return_url"=>"http://acq2020kfacq.dccnet.com/apiTest.html",
+												"auto_refer_sec"=>"",
+												"backup1"=>"",
+												"wallet_flag"=>"0",
+												"external_app_id"=>"",
+												"cust_id"=>"",
+												"mobile"=>"",
+												"credit_type"=>"2",
+												"notify_type"=>"HS",
+												"result_type"=>"0",
+												"h5_flag"=>"1",
+												"order_interval"=>"300"
+          						 )
+          						 
+          	);
+          	
+          	$client = new UiIcbcClient('10000000000004095503',
+            	                         'MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDfV8piJL/5Pc/ZdCMBcX1mVrLQo6rRBdqLOnYkU9xnVp1EdhMkx1wcP1BDWTo0SqupMFwZlsTH5t6ywdlD4sXvkyfCkuSSShg+ZGGLRKmDPoLOEP1KZ/SFwnIGb6hj30OXyhsmArVYfYr7qAlo0GqfQrDUAC2ZbasESLHlVvqMy48ssp2QcOPtZoWW/diQY1HJR+RMS9Kjg9oZr/dU5UloZQsDQVXmYBuAqU4RcBfEqV56dFu/suJkGrw0LenDPxI2QLJ5c51rkhx9lC7xBZigfWOnDLH6xoT1ChdcY9bP5xt/GjP5NYuI8xI2sGGTUPoUKxdrH6aiI9jp728+K1y5AgMBAAECggEAbJQsktwU7GHti2UXo5r+AOPDWQVIhQfYgHlyeCTA8Qg9usvAcM/u6tio96UIU+W9YKpfDB2tGxYVTEhLjOJRojAjU0fAkZIuCR8aAO/njSO1yeKekS7KxMCMWK6t6afgH4ok+qy0ZwnZqJC/ylIQk86DUv2nLYEQdCu3OKy5b/qZ1qA7yaCiG/D4HBThgiOifV2Yq1TCtvC2iv5mcuhH4iTXexeOQcbZepZlQnyXiVAlTYRAeo+ng8ub01NJZ4njPe9boKeqrpmMAOLN/gRTjh6yZ+90+hniXLgznOVPg+GxUbff8pVDd01POGVsid0f5Gr/TvEnixJV9nM70SCp0QKBgQD1C/oCC0mC9T8yZrrzkKZ5gsWpxElGYFvU/S1LdDsfGioRLLBJ8k4PvQcJN+pB1Ea2b8s01HQKWarXGYKQmu+dGsULbv9UpaVwH3Of+gt35Wo2+Fuh0bhcS58Ct41IGQh5leI5ckNq9iB9/x6zWQFeAEpUnXqIwFYkNCZIPbgmRQKBgQDpU3YAvKXDCesL9W4JhoWhyGBJ94frOq8hiH3vbr1xUpqDkJ9aovMDWy5f77E5Vuva/mEDxIpQrFTSA4clKj6T8E6CBiEMStP2DWLQsyC3AxDKv3g5lXab3IH4KtxjNCwadp+TRmRHWG09FLdt14AeS4El14xdhlGx6FsYncst5QKBgFBGHR9gTTOeXZaIOsQhZbe2lEQZ7hsk49BxI85tBBUbQB6iMhn3S4UyWkS10YLBJG0NUFc9JcpiN2oBjFkMuGQR6ezl7rTvErQZSYploi4jtFjPoUzwY+GwUCXWtWyh7rnN1O8WtGksudYspgUAqkb991uivwpfX5i6kLPnrBS1AoGALe8WXhLFd14ufc41eX6YND9kZWtrwK1u6OUcFdTxSqv+a0Q/evJ1cQW0XYKsmyM3j4dgxgMdT8B9elLjejeU1j8K1aIrQ2Y/0ELWX0vEdwMNfTywiHWaQhjpJVgaxxTwUc1koPPMrhcEem/npKI2QMCQjkifA5J75tBdjr0R0NkCgYEA1eUVZW1zEXB79xf2GREbPi1UeQVfIvTqOQK8fa3O0Xdrdd//BFHy44eqSrg5eG0t78wbFtkwYHUIbQZOd0L9qp6yPIk2bqldKoqUxiXPjGX4QR1XgenbWjc+cLr//EN2zRqTLrd3K2e0V/Hx+6cL14/0DB73Ma7oyZ6rMKR2JYU=',
+            	                         IcbcConstants::$SIGN_TYPE_RSA,
+            	                         '',
+            	                         '',
+            	                         '',
+    			                             '',
+    			                             '',
+    			                             '',
+    			                             '');
+       
+        try{
+              $resp = $client->buildPostForm($request,'msgid','h5test20201020104513'); //执行调用
+              echo $resp;
+            }catch(Exception $e){//捕获异常
+              echo 'Exception:'.$e->getMessage()."\n";
+            }
+
+?>
+

+ 72 - 0
extend/icbc/example/CardbusinessEpayh5UiConsumptionV3Test.php

@@ -0,0 +1,72 @@
+<?php
+include_once '../IcbcConstants.php';
+include_once '../UiIcbcClient.php';
+
+          	$request = array(
+          		"serviceUrl" => 'http://ip:port/ui/cardbusiness/epayh5/ui/consumption/V3',
+          		"method" => 'POST',
+          		"isNeedEncrypt" => false,
+          		"biz_content" => array(
+          							"icbc_appid"=>"10000000000004095503",
+												"order_date"=>"20201020104513",
+												"order_id"=>"h520201020104513",
+												"amount"=>"1",
+												"installment_times"=>"1",
+												"cur_type"=>"001",
+												"mer_id"=>"020053010625",
+												"mer_prtcl_no"=>"0200530106250201",
+												"mer_acct"=>"0200000209024213154",
+												"merchant_info"=>"",
+												"language"=>"zh_CN",
+												"goods_id"=>"",
+												"goods_name"=>"娃哈哈",
+												"goods_num"=>"",
+												"carriage_amt"=>"",
+												"mer_hint"=>"",
+												"remark1"=>"20201020154513",
+												"remark2"=>"",
+												"mer_reference"=>"",
+												"mer_custom_ip"=>"",
+												"mer_var"=>"hello",
+												"merURL"=>"http://5.1fendb.com/recall/recall.php",
+												"return_url"=>"http://acq2020kfacq.dccnet.com/apiTest.html",
+												"auto_refer_sec"=>"",
+												"backup1"=>"",
+												"wallet_flag"=>"0",
+												"external_app_id"=>"",
+												"cust_id"=>"",
+												"mobile"=>"",
+												"credit_type"=>"2",
+												"notify_type"=>"HS",
+												"result_type"=>"0",
+												"h5_flag"=>"1",
+												"order_interval"=>"300",
+												"ser_id"=>"43125321543",
+												"is_suborder"=>"1",
+												"order_num"=>"1",
+												"order_submit_act_input"=>array("rec_num"=>"1","oper_flag"=>"0","sub_order_no"=>"55555","seq_no"=>"020001030604000521912200000001","busi_type"=>"2","sub_mer_id"=>"***","sub_mer_prtcl_no"=>"***","classify_amt"=>"1","mer_sp_infor"=>"商户自定义信息","term_id"=>"1","ori_mer_id"=>"***","ori_trx_date"=>"2020-01-02","mer_acct"=>"***")
+
+          						 )
+
+          	);
+
+          	$client = new UiIcbcClient('10000000000004095503',
+            	                         'MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDfV8piJL/5Pc/ZdCMBcX1mVrLQo6rRBdqLOnYkU9xnVp1EdhMkx1wcP1BDWTo0SqupMFwZlsTH5t6ywdlD4sXvkyfCkuSSShg+ZGGLRKmDPoLOEP1KZ/SFwnIGb6hj30OXyhsmArVYfYr7qAlo0GqfQrDUAC2ZbasESLHlVvqMy48ssp2QcOPtZoWW/diQY1HJR+RMS9Kjg9oZr/dU5UloZQsDQVXmYBuAqU4RcBfEqV56dFu/suJkGrw0LenDPxI2QLJ5c51rkhx9lC7xBZigfWOnDLH6xoT1ChdcY9bP5xt/GjP5NYuI8xI2sGGTUPoUKxdrH6aiI9jp728+K1y5AgMBAAECggEAbJQsktwU7GHti2UXo5r+AOPDWQVIhQfYgHlyeCTA8Qg9usvAcM/u6tio96UIU+W9YKpfDB2tGxYVTEhLjOJRojAjU0fAkZIuCR8aAO/njSO1yeKekS7KxMCMWK6t6afgH4ok+qy0ZwnZqJC/ylIQk86DUv2nLYEQdCu3OKy5b/qZ1qA7yaCiG/D4HBThgiOifV2Yq1TCtvC2iv5mcuhH4iTXexeOQcbZepZlQnyXiVAlTYRAeo+ng8ub01NJZ4njPe9boKeqrpmMAOLN/gRTjh6yZ+90+hniXLgznOVPg+GxUbff8pVDd01POGVsid0f5Gr/TvEnixJV9nM70SCp0QKBgQD1C/oCC0mC9T8yZrrzkKZ5gsWpxElGYFvU/S1LdDsfGioRLLBJ8k4PvQcJN+pB1Ea2b8s01HQKWarXGYKQmu+dGsULbv9UpaVwH3Of+gt35Wo2+Fuh0bhcS58Ct41IGQh5leI5ckNq9iB9/x6zWQFeAEpUnXqIwFYkNCZIPbgmRQKBgQDpU3YAvKXDCesL9W4JhoWhyGBJ94frOq8hiH3vbr1xUpqDkJ9aovMDWy5f77E5Vuva/mEDxIpQrFTSA4clKj6T8E6CBiEMStP2DWLQsyC3AxDKv3g5lXab3IH4KtxjNCwadp+TRmRHWG09FLdt14AeS4El14xdhlGx6FsYncst5QKBgFBGHR9gTTOeXZaIOsQhZbe2lEQZ7hsk49BxI85tBBUbQB6iMhn3S4UyWkS10YLBJG0NUFc9JcpiN2oBjFkMuGQR6ezl7rTvErQZSYploi4jtFjPoUzwY+GwUCXWtWyh7rnN1O8WtGksudYspgUAqkb991uivwpfX5i6kLPnrBS1AoGALe8WXhLFd14ufc41eX6YND9kZWtrwK1u6OUcFdTxSqv+a0Q/evJ1cQW0XYKsmyM3j4dgxgMdT8B9elLjejeU1j8K1aIrQ2Y/0ELWX0vEdwMNfTywiHWaQhjpJVgaxxTwUc1koPPMrhcEem/npKI2QMCQjkifA5J75tBdjr0R0NkCgYEA1eUVZW1zEXB79xf2GREbPi1UeQVfIvTqOQK8fa3O0Xdrdd//BFHy44eqSrg5eG0t78wbFtkwYHUIbQZOd0L9qp6yPIk2bqldKoqUxiXPjGX4QR1XgenbWjc+cLr//EN2zRqTLrd3K2e0V/Hx+6cL14/0DB73Ma7oyZ6rMKR2JYU=',
+            	                         IcbcConstants::$SIGN_TYPE_RSA,
+            	                         '',
+            	                         '',
+            	                         '',
+    			                             '',
+    			                             '',
+    			                             '',
+    			                             '');
+
+        try{
+              $resp = $client->buildPostForm($request,'msgid','h5test20201020104513'); //执行调用
+              echo $resp;
+            }catch(Exception $e){//捕获异常
+              echo 'Exception:'.$e->getMessage()."\n";
+            }
+
+?>
+

+ 80 - 0
extend/icbc/example/CardbusinessEpaypcConsumptionV1Test.php

@@ -0,0 +1,80 @@
+<?php
+include_once '../IcbcConstants.php';
+include_once '../UiIcbcClient.php';
+          	
+          	$request = array(
+          		"serviceUrl" => 'http://ip:port/ui/cardbusiness/epaypc/consumption/V1',
+          		"method" => 'POST',
+          		"isNeedEncrypt" => false,
+          		"biz_content" => array(
+          							"icbc_flag"=>"2",
+          							"icbc_appid"=>"10000000000004095503",
+												"order_date"=>"20201030182400",
+												"out_trade_no"=>"20201030182400",
+												"amount"=>"1",
+												"installment_times"=>"1",
+												"cur_type"=>"001",
+												"mer_id"=>"020001040157",
+												"mer_prtcl_no"=>"0200010401570201",
+												"mer_acct"=>"6222020200099950905",
+												"merchant_info"=>"",
+												"language"=>"zh_CN",
+												"goods_id"=>"001",
+												"goods_name"=>"娃哈哈",
+												"goods_num"=>"1",
+												"goods_address"=>"广州",
+												"goods_type"=>"1",
+												"carriage_amt"=>"1",
+												"mer_hint"=>"小心轻放",
+												"expire_time"=>"20201030194800",
+												"mer_reference"=>"*.*",
+												"mer_custom_ip"=>"",
+												"mer_var"=>"test1",
+												"mer_url"=>"http://5.1fendb.com/recall/recall.php",
+												"return_url"=>"http://5.1fendb.com/recall/recall.php",
+												"auto_refer_sec"=>"10",
+												"verify_join_flag"=>"0",
+												"notify_type"=>"HS",
+												"result_type"=>"0",
+												"mer_custom_id"=>"123456",
+												"mer_custom_phone"=>"13466780886",
+												"mer_order_remark"=>"备注",
+												"order_flag_ztb"=>"",
+												"e_fixedACFlag"=>"0",
+												"o2o_mer_id"=>"020001040311",
+												"credit_type"=>"2",
+												"elife_mer_id"=>"020001040311",
+												"pay_expire"=>"6000",
+												"page_linkage_flag"=>"1",
+												"e_name"=>"张三",
+												"e_TelNum"=>"",
+												"e_CredType"=>"0",
+												"e_CredNum"=>"429467198412264762",
+												"e_CardNo"=>"",
+												"remark1"=>"",
+												"order_apd_inf"=>"",
+												"order_interval"=>"100"
+          						 )
+          						 
+          	);
+          	
+          	$client = new UiIcbcClient('10000000000004095503',
+            	                         'MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDfV8piJL/5Pc/ZdCMBcX1mVrLQo6rRBdqLOnYkU9xnVp1EdhMkx1wcP1BDWTo0SqupMFwZlsTH5t6ywdlD4sXvkyfCkuSSShg+ZGGLRKmDPoLOEP1KZ/SFwnIGb6hj30OXyhsmArVYfYr7qAlo0GqfQrDUAC2ZbasESLHlVvqMy48ssp2QcOPtZoWW/diQY1HJR+RMS9Kjg9oZr/dU5UloZQsDQVXmYBuAqU4RcBfEqV56dFu/suJkGrw0LenDPxI2QLJ5c51rkhx9lC7xBZigfWOnDLH6xoT1ChdcY9bP5xt/GjP5NYuI8xI2sGGTUPoUKxdrH6aiI9jp728+K1y5AgMBAAECggEAbJQsktwU7GHti2UXo5r+AOPDWQVIhQfYgHlyeCTA8Qg9usvAcM/u6tio96UIU+W9YKpfDB2tGxYVTEhLjOJRojAjU0fAkZIuCR8aAO/njSO1yeKekS7KxMCMWK6t6afgH4ok+qy0ZwnZqJC/ylIQk86DUv2nLYEQdCu3OKy5b/qZ1qA7yaCiG/D4HBThgiOifV2Yq1TCtvC2iv5mcuhH4iTXexeOQcbZepZlQnyXiVAlTYRAeo+ng8ub01NJZ4njPe9boKeqrpmMAOLN/gRTjh6yZ+90+hniXLgznOVPg+GxUbff8pVDd01POGVsid0f5Gr/TvEnixJV9nM70SCp0QKBgQD1C/oCC0mC9T8yZrrzkKZ5gsWpxElGYFvU/S1LdDsfGioRLLBJ8k4PvQcJN+pB1Ea2b8s01HQKWarXGYKQmu+dGsULbv9UpaVwH3Of+gt35Wo2+Fuh0bhcS58Ct41IGQh5leI5ckNq9iB9/x6zWQFeAEpUnXqIwFYkNCZIPbgmRQKBgQDpU3YAvKXDCesL9W4JhoWhyGBJ94frOq8hiH3vbr1xUpqDkJ9aovMDWy5f77E5Vuva/mEDxIpQrFTSA4clKj6T8E6CBiEMStP2DWLQsyC3AxDKv3g5lXab3IH4KtxjNCwadp+TRmRHWG09FLdt14AeS4El14xdhlGx6FsYncst5QKBgFBGHR9gTTOeXZaIOsQhZbe2lEQZ7hsk49BxI85tBBUbQB6iMhn3S4UyWkS10YLBJG0NUFc9JcpiN2oBjFkMuGQR6ezl7rTvErQZSYploi4jtFjPoUzwY+GwUCXWtWyh7rnN1O8WtGksudYspgUAqkb991uivwpfX5i6kLPnrBS1AoGALe8WXhLFd14ufc41eX6YND9kZWtrwK1u6OUcFdTxSqv+a0Q/evJ1cQW0XYKsmyM3j4dgxgMdT8B9elLjejeU1j8K1aIrQ2Y/0ELWX0vEdwMNfTywiHWaQhjpJVgaxxTwUc1koPPMrhcEem/npKI2QMCQjkifA5J75tBdjr0R0NkCgYEA1eUVZW1zEXB79xf2GREbPi1UeQVfIvTqOQK8fa3O0Xdrdd//BFHy44eqSrg5eG0t78wbFtkwYHUIbQZOd0L9qp6yPIk2bqldKoqUxiXPjGX4QR1XgenbWjc+cLr//EN2zRqTLrd3K2e0V/Hx+6cL14/0DB73Ma7oyZ6rMKR2JYU=',
+            	                         IcbcConstants::$SIGN_TYPE_RSA,
+            	                         '',
+            	                         '',
+            	                         '',
+    			                             '',
+    			                             '',
+    			                             '',
+    			                             '');
+       
+        try{
+              $resp = $client->buildPostForm($request,'msgid','pctest20201020104513'); //执行调用
+              echo $resp;
+            }catch(Exception $e){//捕获异常
+              echo 'Exception:'.$e->getMessage()."\n";
+            }
+
+?>
+

+ 73 - 0
extend/icbc/example/CardbusinessMultipayMultipayapproveconsumeV1Test.php

@@ -0,0 +1,73 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+$request = array(
+    "serviceUrl" => 'http://ip:port/api/cardbusiness/multipay/multipayapproveconsume/V1',
+    "method" => 'POST',
+    "isNeedEncrypt" => false,
+    "biz_content" => array(
+        "out_trade_no"=>"515sadscxzcv13",
+				"mer_id"=>"020001040157",
+				"mer_prtcl_no"=>"0200010401570201",
+				"access_type"=>"4",
+				"cur_type"=>"001",
+				"amount"=>"100",
+				"icbc_appid"=>"10000000000004095503",
+				"mer_url"=>"http://acq2020kfacq.dccnet.com.cn/servlet/tool/email",
+				"return_url"=>"http://acq2020kfacq.dccnet.com.cn/apiTest.html",
+				"quit_url"=>"http://acq2020kfacq.dccnet.com.cn",
+				"expire_time"=>"",
+				"notify_type"=>"HS",
+				"result_type"=>"0",
+				"attach"=>"Attach测试",
+				"order_apd_inf"=>"order_apd_inf测试",
+				"saledepname"=>"",
+				"saledepnameen"=>"",
+				"remark"=>"",
+				"order_date"=>"2020-06-24 16:03:11",
+				"goods_name"=>"多功能支付",
+				"body"=>"多功能支付body",
+				"language"=>"zh_cn",
+				"shop_appid"=>"",
+				"sub_open_id"=>"",
+				"pay_limit"=>"",
+				"mer_acct"=>"",
+				"installment_times"=>"1",
+				"merchant_info"=>"merchant_info测试",
+				"auto_refer_sec"=>"600",
+				"wallet_flag"=>"0",
+				"external_app_id"=>"1382916498217592",
+				"cust_id"=>"332211",
+				"mobile"=>"13555555555",
+				"credit_type"=>"2",
+				"cust_checkflag"=>"21t342yh5tejwnyrt",
+				"cust_name"=>"0",
+				"cust_cert_type"=>"",
+				"cust_cert_no"=>"",
+				"allocate_cardno"=>"",
+				"biz_type"=>"",
+				"is_applepay"=>"100001"
+    )
+
+);
+//以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+$client = new DefaultIcbcClient('10000000000004095503',
+    ' MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDYLo0htdHwedbvoJA0o5AA/UUE1zb/J4OO9SYmeMBZnLeiNC7TwG53PXgwCSHsp2gM02QatfohUUDHQJg/ezYCSDSMoWfYKv/dfz0DlXp1C8xOnc/im2y0PnZV1YVaTsFHnax91N7nxtfsGVRlT8e2UdkWlW0HX2QOxCBpuevDssfosA151f4JV07VHl+pyHxTS48wGeqDUU0z+hvD8P+KIA01/UOQqXdx47I9Zm5Rm7nfBq1tAxkG6S32D5fsFF2/N+Pa1fTZ//mHFVnn6hbu1c45EFRSBo0O1G+/qq7qTy5+tq5R0Vskgm6FzHJaX2ffQ2tmBwfm/OnZmxKaHmhFAgMBAAECggEAUTE6pFyLWswH47vkLUD5BsYYs/a4myAWEw0TpQNZCs8HUQ5UQAdX9cTKbRAhA6bkN1z1jeqm5PiFYdBq3fzCjhzcT60XOWL88g2ltsDfWzJxK12uBCfnrdJ/00D8cqx9fw5DCId4qIhP9EaXIe3SzjDzXb4FUu2KwNj8a3j+iWLc4rxMo84CRieXLrSIaL6pgE6wxm/G7lcfL2IicrcJGBQEj65Ivyj9UBAmu3TiOFWhQDgZYnAHjIi62MWmoY2hArSDB2BEc4Ul0q4AFj5bK5B7+MAg2bKcNZyKXTFvI5euMTIlqGoFR58oFwI0fh3BLk9ABVgeM+AAPw7hWjk6AQKBgQD+B9RXX7TjjcYx45fc/YB+FsbdFAbdU5q04aLtFpWrkyu9ZQwIlgpDVFuxJ5apgXjjHTsrw6n3oxbuls+Lp3gVMVnWNgtHW/AyqdTnchHjaJ3FTMpPL32suBLSGSHfc8MQmkD1CDZAEoo/HSWxEMhkrZdud1EDEiJPkFeXo1/9hQKBgQDZ25qhh1QmETY9WT42/CrZHfWdMVkodJsvGqRgkgIya+22DpvmSEvT2349fvHYL+Kr7dEl0ZrCHV1knIEkF/ftcQq8qnpNxIT05igPZxIzdnSHjDEeePgZ5Ldsaruvxa/wSYInbIN6knQpxRwJhs4fQQ9qB0aXetMHoH3yubpbwQKBgQDab50VrMR8z5JXn98cNhfhVHCX9fqZIqTrWQKiYEM/EAQSjes1Dt+wWb+mq+YPx7dNg/s3fL6QpHq5mpDJA65ses1HN52nNNVsm0Dp69qZ84GHAKsOQEYO2RHF+7p2zLI1eo7UpMURf1/FOakJgubuO571bEALJfK++912FRQbiQKBgEw15FwJSUif0MeZRohZomudbWR19OiQEhFiUoptyVL2Kov7hFIEjHIqYHkGxXeJGNRoNzfxoR+ywg8GKK8Fq3dmigkB4hL+YjyBnxX0SouyLoWUZ0Jvsurr9bZ5h/qvPyLhtCQyc7QXM4fBKlOy0rxgOBIxRWKMVvJeFHEqw6SBAoGAPuR/+v2VCePORhobY0EIIRLK1sO+Q2IVJIU4ecm0irD99/uwEc+RgJF0IakYlrw1PtmhDYniXO07GMIecj4zsnnPZtkttoNxmikMrK51YsFcsz8I55XzRPPGj1V8CxpfRxmEj9ofyHYHDDvSoHAR28xJdubbn3PuB7nBp94yNWk=',
+    IcbcConstants::$SIGN_TYPE_RSA,
+    '',
+    '',
+    'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB',
+    '',
+    '',
+    '',
+    '');
+$resp = $client->execute($request,'123131123asda','');//执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+echo $resp;
+$respObj = json_decode($resp,true);
+if($respObj["returnCode"] == 0){ //sucess
+    echo $respObj["returnMsg"];
+}else{//fail
+    echo $respObj["returnMsg"];
+}
+
+?>

+ 44 - 0
extend/icbc/example/CardbussinessZfbH5UiH5ConsumptionV1Test.php

@@ -0,0 +1,44 @@
+<?php
+include_once '../IcbcConstants.php';
+include_once '../UiIcbcClient.php';
+
+
+$request = array(
+    "serviceUrl" => 'http://ip:port/ui/cardbussiness/zfbh5/ui/h5consumption/V1',
+    "method" => 'POST',
+    "isNeedEncrypt" => false,
+    "biz_content" => array(
+        "mer_id"=>"020001040311",
+        "mer_prtcl_no"=>"0200010403110201",
+        "order_id"=>"AAPPT20051202205754714",
+        "decive_info"=>"9774d56d682e549c",
+        "body"=>"勇士总冠军",
+        "cur_type"=>"1",
+        "icbc_appid"=>"10000000000004095503",
+        "mer_url"=>"http://5.1fendb.com/recall/recall.php",
+        "order_date_time"=>"2020-05-12T02:20:51",
+        "amount"=>"1",
+        "notify_type"=>"HS"
+    )
+
+);
+
+$client = new UiIcbcClient('10000000000004095503',
+    'MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDYLo0htdHwedbvoJA0o5AA/UUE1zb/J4OO9SYmeMBZnLeiNC7TwG53PXgwCSHsp2gM02QatfohUUDHQJg/ezYCSDSMoWfYKv/dfz0DlXp1C8xOnc/im2y0PnZV1YVaTsFHnax91N7nxtfsGVRlT8e2UdkWlW0HX2QOxCBpuevDssfosA151f4JV07VHl+pyHxTS48wGeqDUU0z+hvD8P+KIA01/UOQqXdx47I9Zm5Rm7nfBq1tAxkG6S32D5fsFF2/N+Pa1fTZ//mHFVnn6hbu1c45EFRSBo0O1G+/qq7qTy5+tq5R0Vskgm6FzHJaX2ffQ2tmBwfm/OnZmxKaHmhFAgMBAAECggEAUTE6pFyLWswH47vkLUD5BsYYs/a4myAWEw0TpQNZCs8HUQ5UQAdX9cTKbRAhA6bkN1z1jeqm5PiFYdBq3fzCjhzcT60XOWL88g2ltsDfWzJxK12uBCfnrdJ/00D8cqx9fw5DCId4qIhP9EaXIe3SzjDzXb4FUu2KwNj8a3j+iWLc4rxMo84CRieXLrSIaL6pgE6wxm/G7lcfL2IicrcJGBQEj65Ivyj9UBAmu3TiOFWhQDgZYnAHjIi62MWmoY2hArSDB2BEc4Ul0q4AFj5bK5B7+MAg2bKcNZyKXTFvI5euMTIlqGoFR58oFwI0fh3BLk9ABVgeM+AAPw7hWjk6AQKBgQD+B9RXX7TjjcYx45fc/YB+FsbdFAbdU5q04aLtFpWrkyu9ZQwIlgpDVFuxJ5apgXjjHTsrw6n3oxbuls+Lp3gVMVnWNgtHW/AyqdTnchHjaJ3FTMpPL32suBLSGSHfc8MQmkD1CDZAEoo/HSWxEMhkrZdud1EDEiJPkFeXo1/9hQKBgQDZ25qhh1QmETY9WT42/CrZHfWdMVkodJsvGqRgkgIya+22DpvmSEvT2349fvHYL+Kr7dEl0ZrCHV1knIEkF/ftcQq8qnpNxIT05igPZxIzdnSHjDEeePgZ5Ldsaruvxa/wSYInbIN6knQpxRwJhs4fQQ9qB0aXetMHoH3yubpbwQKBgQDab50VrMR8z5JXn98cNhfhVHCX9fqZIqTrWQKiYEM/EAQSjes1Dt+wWb+mq+YPx7dNg/s3fL6QpHq5mpDJA65ses1HN52nNNVsm0Dp69qZ84GHAKsOQEYO2RHF+7p2zLI1eo7UpMURf1/FOakJgubuO571bEALJfK++912FRQbiQKBgEw15FwJSUif0MeZRohZomudbWR19OiQEhFiUoptyVL2Kov7hFIEjHIqYHkGxXeJGNRoNzfxoR+ywg8GKK8Fq3dmigkB4hL+YjyBnxX0SouyLoWUZ0Jvsurr9bZ5h/qvPyLhtCQyc7QXM4fBKlOy0rxgOBIxRWKMVvJeFHEqw6SBAoGAPuR/+v2VCePORhobY0EIIRLK1sO+Q2IVJIU4ecm0irD99/uwEc+RgJF0IakYlrw1PtmhDYniXO07GMIecj4zsnnPZtkttoNxmikMrK51YsFcsz8I55XzRPPGj1V8CxpfRxmEj9ofyHYHDDvSoHAR28xJdubbn3PuB7nBp94yNWk=',
+    IcbcConstants::$SIGN_TYPE_RSA,
+    '',
+    '',
+    '',
+    '',
+    '',
+    '',
+    '');
+
+try{
+    $resp = $client->buildPostForm($request,'12314adafadsa',''); //执行调用
+    echo $resp;
+}catch(Exception $e){//捕获异常
+    echo 'Exception:'.$e->getMessage()."\n";
+}
+
+?>

+ 70 - 0
extend/icbc/example/CardbussinessZfbH5UiH5ConsumptionV2Test.php

@@ -0,0 +1,70 @@
+<?php
+    include_once '../IcbcConstants.php';
+    include_once '../UiIcbcClient.php';
+
+
+    $request = array(
+        "serviceUrl" => 'http://ip:port/ui/cardbussiness/zfbh5/ui/h5consumption/V2',
+        "method" => 'POST',
+        "isNeedEncrypt" => false,
+        "biz_content" => array(
+            "mer_id"=>"020001040311",
+            "mer_prtcl_no"=>"0200010403110201",
+            "order_id"=>"AAPPT20051202205754714",
+            "decive_info"=>"9774d56d682e549c",
+            "body"=>"勇士总冠军",
+            "cur_type"=>"1",
+            "icbc_appid"=>"10000000000004095503",
+            "mer_url"=>"http://5.1fendb.com/recall/recall.php",
+            "order_date_time"=>"2021-09-12T02:20:51",
+            "amount"=>"1",
+            "notify_type"=>"HS"
+            "notify_url"=>"http://122.131.29.82",
+            "result_type"=>"0",
+    	    "pay_limit"=>"no_balance",
+    	    "order_apd_inf"=>"test",
+    	    "detail"=>"",
+    	    "attach"=>"attach",
+      	    "ser_id"=>"ser_id",
+      	    "is_suborder"=>"1",
+      	    "order_num"=>"1",
+            "order_submit_act_input"=>
+                array(
+                "seq_no"=>"020001030604000521912200000001",
+                "mer_sp_infor"=>"商户自定义信息",
+                "sub_mer_prtcl_no"=>"0200010305560201",
+                "ori_trx_date"=>"2021-10-11",
+                "classify_amt"=>"1",
+                "term_id"=>"1",
+                "busi_type"=>"2",
+                "sub_order_no"=>"55555",
+                "rec_num"=>"1",
+                "mer_acct"=>"0200000209024213154",
+                "ori_mer_id"=>"20001030604",
+                "oper_flag"=>"0",
+                "sub_mer_id"=>"020001030556"
+                )
+    
+        )
+
+    );
+
+    $client = new UiIcbcClient('10000000000004095503',
+        'MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDYLo0htdHwedbvoJA0o5AA/UUE1zb/J4OO9SYmeMBZnLeiNC7TwG53PXgwCSHsp2gM02QatfohUUDHQJg/ezYCSDSMoWfYKv/dfz0DlXp1C8xOnc/im2y0PnZV1YVaTsFHnax91N7nxtfsGVRlT8e2UdkWlW0HX2QOxCBpuevDssfosA151f4JV07VHl+pyHxTS48wGeqDUU0z+hvD8P+KIA01/UOQqXdx47I9Zm5Rm7nfBq1tAxkG6S32D5fsFF2/N+Pa1fTZ//mHFVnn6hbu1c45EFRSBo0O1G+/qq7qTy5+tq5R0Vskgm6FzHJaX2ffQ2tmBwfm/OnZmxKaHmhFAgMBAAECggEAUTE6pFyLWswH47vkLUD5BsYYs/a4myAWEw0TpQNZCs8HUQ5UQAdX9cTKbRAhA6bkN1z1jeqm5PiFYdBq3fzCjhzcT60XOWL88g2ltsDfWzJxK12uBCfnrdJ/00D8cqx9fw5DCId4qIhP9EaXIe3SzjDzXb4FUu2KwNj8a3j+iWLc4rxMo84CRieXLrSIaL6pgE6wxm/G7lcfL2IicrcJGBQEj65Ivyj9UBAmu3TiOFWhQDgZYnAHjIi62MWmoY2hArSDB2BEc4Ul0q4AFj5bK5B7+MAg2bKcNZyKXTFvI5euMTIlqGoFR58oFwI0fh3BLk9ABVgeM+AAPw7hWjk6AQKBgQD+B9RXX7TjjcYx45fc/YB+FsbdFAbdU5q04aLtFpWrkyu9ZQwIlgpDVFuxJ5apgXjjHTsrw6n3oxbuls+Lp3gVMVnWNgtHW/AyqdTnchHjaJ3FTMpPL32suBLSGSHfc8MQmkD1CDZAEoo/HSWxEMhkrZdud1EDEiJPkFeXo1/9hQKBgQDZ25qhh1QmETY9WT42/CrZHfWdMVkodJsvGqRgkgIya+22DpvmSEvT2349fvHYL+Kr7dEl0ZrCHV1knIEkF/ftcQq8qnpNxIT05igPZxIzdnSHjDEeePgZ5Ldsaruvxa/wSYInbIN6knQpxRwJhs4fQQ9qB0aXetMHoH3yubpbwQKBgQDab50VrMR8z5JXn98cNhfhVHCX9fqZIqTrWQKiYEM/EAQSjes1Dt+wWb+mq+YPx7dNg/s3fL6QpHq5mpDJA65ses1HN52nNNVsm0Dp69qZ84GHAKsOQEYO2RHF+7p2zLI1eo7UpMURf1/FOakJgubuO571bEALJfK++912FRQbiQKBgEw15FwJSUif0MeZRohZomudbWR19OiQEhFiUoptyVL2Kov7hFIEjHIqYHkGxXeJGNRoNzfxoR+ywg8GKK8Fq3dmigkB4hL+YjyBnxX0SouyLoWUZ0Jvsurr9bZ5h/qvPyLhtCQyc7QXM4fBKlOy0rxgOBIxRWKMVvJeFHEqw6SBAoGAPuR/+v2VCePORhobY0EIIRLK1sO+Q2IVJIU4ecm0irD99/uwEc+RgJF0IakYlrw1PtmhDYniXO07GMIecj4zsnnPZtkttoNxmikMrK51YsFcsz8I55XzRPPGj1V8CxpfRxmEj9ofyHYHDDvSoHAR28xJdubbn3PuB7nBp94yNWk=',
+        IcbcConstants::$SIGN_TYPE_RSA,
+        '',
+        '',
+        '',
+        '',
+        '',
+        '',
+        '');
+
+    try{
+        $resp = $client->buildPostForm($request,'12314adafadsa',''); //执行调用
+        echo $resp;
+    }catch(Exception $e){//捕获异常
+        echo 'Exception:'.$e->getMessage()."\n";
+    }
+
+?>

+ 56 - 0
extend/icbc/example/CpayCporderqueryV2Test.php

@@ -0,0 +1,56 @@
+<?php
+// 工行e企付支付申请查询
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+$request = array(
+    "serviceUrl" => 'https://apipcs3.dccnet.com.cn/api/mybank/pay/cpay/cporderquery/V2',
+    "method" => 'POST',
+    "isNeedEncrypt" => false,
+    "biz_content" => array(
+        "agreeCode" => "0160200238060410006041000000001490", // 合作方协议编号
+        "partnerSeq" => "20121222121523835502", // 交易流水号
+        "orderCode" => "204503399501" // 订单号
+    )
+);
+
+$appId = "10000000000000225069";
+$privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDPUsAxVOs46x7u
+			mfJDcw98UfPhD+/ZoFcJs4WqhoqWeLbSNHDOTFc+7r5qsWoTPiuaJdcxQbIF0bOT
+			lvIXXFNivTZy35aAQUpzILsPIVd0+Z+pCR2mosZkl8qhRk+5mGtc3OlzGvkGGnxx
+			O2fKxtwIRdEUaAnqg/k+8kSN3k8p9sXbJD9+r3imIvkswuGTEoEk0ARg3YSmlSTT
+			P0UqksT5/MQN3rZYDlE0baPCB2pKcTDncsNhvgwjGmI7fMyBB1tV0jGfaGq1IcGy
+			fY5WUcIaiveYUq5Gta6+9J/B333hztCCWdtbM+YoI4UpMcV5B1056P3X1hPRbCri
+			Id5uI4sXAgMBAAECggEAdluBiSg3mSjxYbnVSphXUNvgZK4aeZ1F0y3/sxhX6gtE
+			I8D4XW3LqQvW/UYHjrDBZ6EOtvoQTa4n3KwhzSBSIl5uxSnL27BqdktLPxoDua4A
+			bhncKZNnu2nErklbnlLbiAo95A6T994LCQGnAWaBmt9wuzuh3ZY2Jq9cX7l4bDWD
+			3OaKLER56n8KgMM0hyUffm2+ediCVy0CfL/50gscWLQKrDx52uohtgORw4OiAzx/
+			YwgnnvSAgXQK21ChDcN5GQA5hZOeFMRY0vshSiA6/Zz8GvHfa4u/fEWVpZhsJrow
+			97Fk3he8NHc9M6mLIxKeGFLknpkNHgDZXqCD5vvVwQKBgQDauoRR8EAjU+jjZDUi
+			5qyPXSUELthqMbn4oHT33pgjSvQgoLfMtn95FHgFZJjEZfAnKgNSjFddPqB6vy0d
+			PLXRSyqG0b+ap+f2e2kuNnbngijCO9WWDdpU1k7e/Lvo5Ohgz0ODAxRqrst+QqmW
+			5C6nt+g0Il4ctdoUQ3oBeWTc8QKBgQDyprRvGqThXSsJ64wpiPUKieZ+562FFwZE
+			pBU1Sy3PS9EfroQa2/NlL5eiLPOOpmY5tUhIyNZzL7YE4n+iI/pZFpC23+gz4Qjt
+			sQnBGXQn+D7H181B119jUt/mYZwM3zAy9DJal4+q52LvmluT95/eTyhYD46vEGr3
+			0axSGcOIhwKBgDRx+Hw1IQvXeMXdJyiBKusNKG0CVn3QAols3973Dn+X30Vbg/af
+			45zCnaydXEvrLVQWrMlEQUZoV85WvJiAEBBo939wF4Mbs3DUUnn0MTp9aQx5kFL0
+			a19gK3UoIF5NVLKxv7xQJrsVwlE55rP5bn5kiFbHzs0PhYTKURy9YMPhAoGAVkeO
+			at8Xd4bQUeOuX+px7wBftAoe+e7Y7LlHTT7hGA+GWXSNRpuk7PrCOQkwxS1HtgdO
+			n4rCLgzt9Miwx29xihHq/Quani/LI/FKXZ32Xmv3rsl+E4ZIRaHnORzGBxGpKsUH
+			zoyLqiJCXJ4PKArpjnupBb7qZjc5QcsNMdg1XasCgYEAv6SkwgcRCVliGtphJVxg
+			xODkI+YOufnDGpD5OGECY0/O5FQ8u4PzvQ5FuOBElJzpbKmDqKqMX2UsgpvPzyT2
+			2JtW0Xpo/UiApIyuUuF5CxIvxfsD3VSjC7MrmqBCEU/iRdQv11alFRg4KOXZXst6
+			oclGtrgSiI3n3kJ2Xy3oO38=";
+$icbcPublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB";
+// 以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+$client = new DefaultIcbcClient($appId, $privateKey, IcbcConstants::$SIGN_TYPE_RSA2, '', '', $icbcPublicKey, '', '', '', '');
+$resp = $client->execute($request, '2022020715103425112', ''); // 执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+echo $resp;
+$respObj = json_decode($resp, true);
+if ($respObj["return_code"] == 0) { // sucess
+    echo $respObj["return_msg"];
+} else { // fail
+    echo $respObj["return_msg"];
+}
+
+// 正常返回结果:{"orderCurr":"1","goodsList":[{"goodsNumber":"1","payeeCompanyName":"饮豆另增古技号午娇缝乓忘嘴易","payeeAccName":"饮豆另增古技号午娇缝乓忘嘴易","goodsName":"测试商品2","goodsAmt":"10"},{"goodsNumber":"1","payeeCompanyName":"饮豆另增古技号午娇缝乓忘嘴易","payeeAccName":"饮豆另增古技号午娇缝乓忘嘴易","goodsName":"测试商品","goodsAmt":"10"}],"sumPayamt":"20","payRemark":"","feeList":[],"czCardInfoList":[],"payerAccname":"","payerWalletName":"","payType":"101","applBrno":"","payeeList":[{"payeeSysflag":1,"mallName":"test","agentbic":"","rbankname":"","payeeAccCurr":1,"payeeCountry":"","payAmount":"20","payeeAcckind":"009","payeeBrno":"","payeeWalletName":"","payeeCompanyName":"饮豆另增古技号午娇缝乓忘嘴易","racpostcode":"","racaddress4":"","racaddress2":"","racaddress3":"","payeeBrnoZoneno":"","racaddress1":"","payeeAddress":"","payeeOrgcode":"","payeeAccno":"1602001009005410261","payeeWalletId":"","payeeBankCountry":"","payeeBankSign":""}],"isShowPayeeInfo":"1","expense":"0","reservDirect":0,"serialNo":"2022022508485531200000000002109002","agreeCode":"0160200010060410006041000000000881","payerAccno":"","payerWalletId":"","partnerSeqOrigin":"","payerSysFlag":"3","tppmBankCode":"102","bakchar8":"","transOk":0,"return_msg":"","agreeName":"测试1121","orderAmount":"20","partnerSeq":"201212221215202102","feeFlag":0,"applBrnoZoneno":"","enterpriseName":"","payPlanList":[{"errno":0,"instrSerialno":"","reservNumCNY":"","uniqueSeq":"","errmsg":"","payAmount":"20","payCurr":"1","appendFlag":0,"holdDateCNY":"9999-12-31","payeeAccno":"1602001009005410261","payPlanSubcode":1,"payEntity":"0","billno":"","status":0}],"payMode":"1","payerBankName":"","payChannel":"1","return_code":"0","payStatus":"0"}
+?>

+ 153 - 0
extend/icbc/example/CppayapplyAsynchronizedOfflineV2Test.php

@@ -0,0 +1,153 @@
+<?php
+// 直接支付 工行e企付支付申请-线下异步支付
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+$request = array(
+    "serviceUrl" => 'https://apipcs3.dccnet.com.cn/api/mybank/pay/cpay/cppayapply/V2',
+    "method" => 'POST',
+    "isNeedEncrypt" => false,
+    "biz_content" => array(
+        "agreeCode" => "0160200238060410006041000000001490", // 合作方协议编号
+        "partnerSeq" => "20121222121523835502", // 交易流水号
+        "payChannel" => "1", // 渠道类型;1-PC端 2-移动端
+        "internationalFlag" => "1", // 境内外标志 1-境内 2-境外
+        "payMode" => "1", // 直接支付
+                           // "reservDirect" => "1", // 保留支付时上送(纯票据保留时无需上送),1-付方保留,2-收方保留(收方保留时,收款账号仅支持工行往来户),境内外币只支持付方保留
+                           // "operType" => "", // 操作类型
+        "payEntitys" => "1001", // 1000第一位1代表现金第二位1代表票据
+        "asynFlag" => "0", // 0代表同步支付 1:代表异步支付
+                            // "logonId"=>"001",//企网登录ID 当异步支付需要指定提交人时才上送(预留字段,本期暂不支持)
+                            // "payerAccno" => "1202027209100017281", // 付款人账号 异步支付、安心账户退款时必须送账号;保证支付, 如果是采用平台方验证,必须上送付方保证金主账号;其他场景如果送,则为指定账号支付。
+                            // "payerAccname" => "埋赏冒了神饥祺铜搭洪坏检苹职悟", // 付款人户名 付款人账号输入,付款人户名必须同时输入。付款人户名可单独输入,单独输入时,开启户名校验。
+                            // "payerFeeAccno"=>"",//付方付费账号 境外支付时上送。上送时,则取该账号付手续费;若不上送,则取付方账号付手续费。付方付费账号、付方付费账号户名、付方付费账号币种同时上送或者都不上送.
+                            // "payerFeeAccName"=>"",//付方付费账号户名
+                            // "payerFeeCurr"=>"",//付方付费账号币种
+        "payMemno" => "160290000612012", // 客户编号
+                                          // "orgcode" =>"",//付款人组织机构代码 境内外币、境外必须上送。统一社会信用证的第九-十七位。
+        "orderCode" => "204503399501", // 订单号
+        "orderAmount" => "20", // 订单金额 单位分 仅用于展现,本次应支持金额以sumPayamt为准
+        "orderCurr" => "001", // 币种 001人民币
+        "sumPayamt" => "20", // 订单汇总金额 单位分
+                              // "orderRemark" => "测试", // 订单备注 当需要打印在回单信息中时上送
+                              // "rceiptRemark" => "测试", // 回单补充信息备注 当需要打印在回单信息中时上送
+                              // "purpose" => "", // 用途 当需要打印在回单信息中时上送
+                              // "summary" => "", // 摘要 当需要打印在回单信息中时上送
+        "submitTime" => "20220321084307", // 提交时间
+        "returnUrl" => "", // 支付成功后跳转连接
+        "callbackUrl" => "", // 回调通知地址
+                              // "agreementId"=>"",//合同号 境内外币必须上送,境外支付时上送,三单号不能都上送为空, Ascii字符集,不能有中文和全角字符
+                              // "invoiceId"=>"",//发票号 境外支付时上送,境内外币必须上送,Ascii字符集,不能有中文和全角字符
+                              // "manifestId"=>"",//报关单号 境外支付时上送
+                              // "agreementImageId"=>"",//影像批次号 境内外币必须上送,境外支付时上送
+                              // "enterpriseName"=>"",//付款方企业名称 境内外币支付时上送,保证支付、担保支付时上送付款人会员名称
+                              // "payRemark"=>"",//支付信息备注
+                              // "bakReserve1"=>"",//境外交易特殊标志 网金部e链通专用,境外交易特殊标志。
+                              // "bakReserve2"=>"",//备用字段2
+                              // "bakReserve3"=>"",//备用字段3
+                              // "partnerSeqOrigin"=>"201212221215202104",//原合作方支付流水号(待启用,退款时使用)
+                              // "sumPayamtOrigin"=>"",//原汇总支付金额(备用字段) 待启用
+                              // "reporterName"=>"",//填报人
+                              // "reporterContact"=>"",//填报人电话
+                              // "identityMode"=>"",//认证模式 1-免认证,0或空-其他;仅退款时使用,安心账户退款时必须上送1。使用免认证退款前需与工行签订相关协议,具体咨询客户经理。
+        "payerPhone" => "13516710109", // 手机号必输,付款台页面企业账户支付选择其他付款方式,通过手机号获取支付信息即为线下异步支付
+                                        // "payerWalletId"=>"",//付款人钱包ID 待启用 数字人名币专用
+                                        // "payerWalletName"=>"",//付款人钱包名称 待启用 数字人名币专用
+                                        // "batchNo"=>"",//批次号 批量支付必送。
+                                        // "repetCard"=>"",//财智卡重用标志 财智卡重用模式下使用,重用模式1,其他模式0
+
+        "goodsList" => array(
+            array(
+                "goodsSubId" => "0968", // 商品信息子序号
+                "goodsName" => "测试商品", // 商品名称
+                "payeeCompanyName" => "饮豆另增古技号午娇缝乓忘嘴易", // 收款人户名
+                "goodsNumber" => "1", // 商品数量
+                "goodsUnit" => "个", // 商品单位
+                "goodsAmt" => "10" // 商品金额 单位分
+            ),
+            array(
+                "goodsSubId" => "0967", // 商品信息子序号
+                "goodsName" => "测试商品2", // 商品名称
+                "payeeCompanyName" => "饮豆另增古技号午娇缝乓忘嘴易", // 收款人户名
+                "goodsNumber" => "1", // 商品数量
+                "goodsUnit" => "个", // 商品单位
+                "goodsAmt" => "10" // 商品金额 单位分
+            )
+        ),
+
+        "payeeList" => array(
+            array(
+                "mallCode" => "1602001009005410261", // 收方商户号 支付时必输,退款时非必输
+                                                      // "mccCode" => "", // 商户类别(MCC码)
+                                                      // "mccName" => "", // MCC码名称
+                                                      // "businessLicense" => "", // 商户证件编号
+                                                      // "businessLicenseType" => "", // 商户证件类型
+                "mallName" => "test", // 担保支付、保证支付上送收方会员名称
+                "payeeCompanyName" => "氮油货(饮豆)车巫褪辛乓忘嘴易", // 收款人户名
+                "payeeSysflag" => "1", // 境内外标志 1:境内工行,2:境内他行,3:境外
+                                        // "payeeBankCode" => "", // 收方行联行号 当收方为境内他行(payeeSysflag = 2)时上送,退款时不用上送。联行行号请合作方自行查询或联系客户经理。
+                                        // "payeeHeadBankCode" => "", // 收方行总行行号 暂未启用
+                "payeeAccno" => "1202020409900065243", // 收款人账号 担保支付、保证支付时上送会员号绑定的结算账号
+                "payAmount" => "20" // 收款金额(单位:分)
+                                    // "rbankname" => "", // 收款行全称 当收方为境外时必须上送
+                                    // "payeeBankCountry" => "", // 收款行所在国家地区代码 当收方为境外时必须上送
+                                    // "payeeBankSign" => "", // 收款行标识 当收方为境外时必须上送
+                                    // "payeeCountry" => "", // 收款人常驻国家/地区 当收方为境外时必须上送
+                                    // "payeeAddress" => "", // 收款人地址 境外非加拿大时必须上送
+                                    // "racaddress1" => "", // 收款人地址(国家) 境外加拿大时必须上送
+                                    // "racaddress2" => "", // 收款人地址(省/州) 加拿大地区必输
+                                    // "racaddress3" => "", // 收款人地址(城市/城镇) 加拿大地区必输
+                                    // "racaddress4" => "", // 收款人地址(街/路) 加拿大地区必输
+                                    // "racpostcode" => "", // 收款人地址(邮编) 加拿大地区必输
+                                    // "agentbic" => "", // 收款行之代理行BIC码(境外支付才上送)
+                                    // "payeePhone" => "", // 收款人手机号
+                                    // "payeeOrgcode" => "", // 收款人组织机构代码 境内外币必须上送
+                                    // "receivableAmount" => "", // 应收金额(单位:分) 担保支付专用,指本订单orderCode收方应收金额。
+                                    // "payeeWalletId" => "", // 收款人钱包ID 支持数字人民币支付时上送
+                                    // "payeeWalletName" => "" // 收款人钱包名称 支持数字人民币支付时上送
+            )
+        )
+    )
+);
+
+$appId = "10000000000000225069";
+$privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDPUsAxVOs46x7u
+			mfJDcw98UfPhD+/ZoFcJs4WqhoqWeLbSNHDOTFc+7r5qsWoTPiuaJdcxQbIF0bOT
+			lvIXXFNivTZy35aAQUpzILsPIVd0+Z+pCR2mosZkl8qhRk+5mGtc3OlzGvkGGnxx
+			O2fKxtwIRdEUaAnqg/k+8kSN3k8p9sXbJD9+r3imIvkswuGTEoEk0ARg3YSmlSTT
+			P0UqksT5/MQN3rZYDlE0baPCB2pKcTDncsNhvgwjGmI7fMyBB1tV0jGfaGq1IcGy
+			fY5WUcIaiveYUq5Gta6+9J/B333hztCCWdtbM+YoI4UpMcV5B1056P3X1hPRbCri
+			Id5uI4sXAgMBAAECggEAdluBiSg3mSjxYbnVSphXUNvgZK4aeZ1F0y3/sxhX6gtE
+			I8D4XW3LqQvW/UYHjrDBZ6EOtvoQTa4n3KwhzSBSIl5uxSnL27BqdktLPxoDua4A
+			bhncKZNnu2nErklbnlLbiAo95A6T994LCQGnAWaBmt9wuzuh3ZY2Jq9cX7l4bDWD
+			3OaKLER56n8KgMM0hyUffm2+ediCVy0CfL/50gscWLQKrDx52uohtgORw4OiAzx/
+			YwgnnvSAgXQK21ChDcN5GQA5hZOeFMRY0vshSiA6/Zz8GvHfa4u/fEWVpZhsJrow
+			97Fk3he8NHc9M6mLIxKeGFLknpkNHgDZXqCD5vvVwQKBgQDauoRR8EAjU+jjZDUi
+			5qyPXSUELthqMbn4oHT33pgjSvQgoLfMtn95FHgFZJjEZfAnKgNSjFddPqB6vy0d
+			PLXRSyqG0b+ap+f2e2kuNnbngijCO9WWDdpU1k7e/Lvo5Ohgz0ODAxRqrst+QqmW
+			5C6nt+g0Il4ctdoUQ3oBeWTc8QKBgQDyprRvGqThXSsJ64wpiPUKieZ+562FFwZE
+			pBU1Sy3PS9EfroQa2/NlL5eiLPOOpmY5tUhIyNZzL7YE4n+iI/pZFpC23+gz4Qjt
+			sQnBGXQn+D7H181B119jUt/mYZwM3zAy9DJal4+q52LvmluT95/eTyhYD46vEGr3
+			0axSGcOIhwKBgDRx+Hw1IQvXeMXdJyiBKusNKG0CVn3QAols3973Dn+X30Vbg/af
+			45zCnaydXEvrLVQWrMlEQUZoV85WvJiAEBBo939wF4Mbs3DUUnn0MTp9aQx5kFL0
+			a19gK3UoIF5NVLKxv7xQJrsVwlE55rP5bn5kiFbHzs0PhYTKURy9YMPhAoGAVkeO
+			at8Xd4bQUeOuX+px7wBftAoe+e7Y7LlHTT7hGA+GWXSNRpuk7PrCOQkwxS1HtgdO
+			n4rCLgzt9Miwx29xihHq/Quani/LI/FKXZ32Xmv3rsl+E4ZIRaHnORzGBxGpKsUH
+			zoyLqiJCXJ4PKArpjnupBb7qZjc5QcsNMdg1XasCgYEAv6SkwgcRCVliGtphJVxg
+			xODkI+YOufnDGpD5OGECY0/O5FQ8u4PzvQ5FuOBElJzpbKmDqKqMX2UsgpvPzyT2
+			2JtW0Xpo/UiApIyuUuF5CxIvxfsD3VSjC7MrmqBCEU/iRdQv11alFRg4KOXZXst6
+			oclGtrgSiI3n3kJ2Xy3oO38=";
+$icbcPublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB";
+// 以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+$client = new DefaultIcbcClient($appId, $privateKey, IcbcConstants::$SIGN_TYPE_RSA2, '', '', $icbcPublicKey, '', '', '', '');
+$resp = $client->execute($request, '2022020715103429955', ''); // 执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+echo $resp;
+$respObj = json_decode($resp, true);
+if ($respObj["return_code"] == 0) { // sucess
+    $url = 'location:' . $respObj["redirectParam"];
+    header($url); // 跳转支付页面
+} else { // fail
+    echo $respObj["return_msg"];
+}
+
+// 正常返回示例:{"transOk":0,"orderCurr":"001","payMode":1,"return_msg":"","sumPayamt":"20","agreeName":"测试1121","serialNo":"","agreeCode":"0160200010060410006041000000000881","orderAmount":"20","redirectParam":"https://cpay3.dccnet.com.cn/corporpay/servlet/ICBCCPayBusinessServlet?unique_serialno=2022022508485493300000000001723002&signstr=8792F12FE32CCB3312A40477854BD4DC25ED8C51D8405A7FF784B98A9ABA7B1FD5CEBBF7FCE625D2","partnerSeq":"201212221215202102","return_code":0,"status":1}
+?>

+ 152 - 0
extend/icbc/example/CppayapplyAsynchronizedOnlineV2Test.php

@@ -0,0 +1,152 @@
+<?php
+// 直接支付 工行e企付支付申请-线上异步支付
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+$request = array(
+    "serviceUrl" => 'https://apipcs3.dccnet.com.cn/api/mybank/pay/cpay/cppayapply/V2',
+    "method" => 'POST',
+    "isNeedEncrypt" => false,
+    "biz_content" => array(
+        "agreeCode" => "0160200238060410006041000000001490", // 合作方协议编号
+        "partnerSeq" => "20121680121523845502", // 交易流水号
+        "payChannel" => "1", // 渠道类型;1-PC端 2-移动端
+        "internationalFlag" => "1", // 境内外标志 1-境内 2-境外
+        "payMode" => "1", // 直接支付
+                           // "reservDirect" => "1", // 保留支付时上送(纯票据保留时无需上送),1-付方保留,2-收方保留(收方保留时,收款账号仅支持工行往来户),境内外币只支持付方保留
+                           // "operType" => "", // 操作类型
+        "payEntitys" => "1001", // 1000第一位1代表现金第二位1代表票据
+        "asynFlag" => "1", // 0代表同步支付 1:代表异步支付
+                            // "logonId"=>"001",//企网登录ID 当异步支付需要指定提交人时才上送(预留字段,本期暂不支持)
+        "payerAccno" => "1202051109800066735", // 线上异步支付必输
+        "payerAccname" => "埋赏使漱阵涕裹榛禁岩乓忘嘴易", // 线上异步支付必输
+                                             // "payerFeeAccno"=>"",//付方付费账号 境外支付时上送。上送时,则取该账号付手续费;若不上送,则取付方账号付手续费。付方付费账号、付方付费账号户名、付方付费账号币种同时上送或者都不上送.
+                                             // "payerFeeAccName"=>"",//付方付费账号户名
+                                             // "payerFeeCurr"=>"",//付方付费账号币种
+        "payMemno" => "160290000612012", // 客户编号
+                                          // "orgcode" =>"",//付款人组织机构代码 境内外币、境外必须上送。统一社会信用证的第九-十七位。
+        "orderCode" => "204566004501", // 订单号
+        "orderAmount" => "20", // 订单金额 单位分 仅用于展现,本次应支持金额以sumPayamt为准
+        "orderCurr" => "001", // 币种 001人民币
+        "sumPayamt" => "20", // 订单汇总金额 单位分
+                              // "orderRemark" => "测试", // 订单备注 当需要打印在回单信息中时上送
+                              // "rceiptRemark" => "测试", // 回单补充信息备注 当需要打印在回单信息中时上送
+                              // "purpose" => "", // 用途 当需要打印在回单信息中时上送
+                              // "summary" => "", // 摘要 当需要打印在回单信息中时上送
+        "submitTime" => "20220321084307", // 提交时间
+        "returnUrl" => "", // 支付成功后跳转连接
+        "callbackUrl" => "", // 回调通知地址
+                              // "agreementId"=>"",//合同号 境内外币必须上送,境外支付时上送,三单号不能都上送为空, Ascii字符集,不能有中文和全角字符
+                              // "invoiceId"=>"",//发票号 境外支付时上送,境内外币必须上送,Ascii字符集,不能有中文和全角字符
+                              // "manifestId"=>"",//报关单号 境外支付时上送
+                              // "agreementImageId"=>"",//影像批次号 境内外币必须上送,境外支付时上送
+                              // "enterpriseName"=>"",//付款方企业名称 境内外币支付时上送,保证支付、担保支付时上送付款人会员名称
+                              // "payRemark"=>"",//支付信息备注
+                              // "bakReserve1"=>"",//境外交易特殊标志 网金部e链通专用,境外交易特殊标志。
+                              // "bakReserve2"=>"",//备用字段2
+                              // "bakReserve3"=>"",//备用字段3
+                              // "partnerSeqOrigin"=>"201212221215202104",//原合作方支付流水号(待启用,退款时使用)
+                              // "sumPayamtOrigin"=>"",//原汇总支付金额(备用字段) 待启用
+                              // "reporterName"=>"",//填报人
+                              // "reporterContact"=>"",//填报人电话
+                              // "identityMode"=>"",//认证模式 1-免认证,0或空-其他;仅退款时使用,安心账户退款时必须上送1。使用免认证退款前需与工行签订相关协议,具体咨询客户经理。
+                              // "payerPhone" => "", // 付款人手机号 11位手机号,线下异步支付时上送、线下异步支付:将收方信息推送给付款人手机号,付款人通过网银、柜面等渠道支付后自动关联订单为成功。使用线下异步支付前需与工行签订相关协议,具体咨询客户经理。
+                              // "payerWalletId"=>"",//付款人钱包ID 待启用 数字人名币专用
+                              // "payerWalletName"=>"",//付款人钱包名称 待启用 数字人名币专用
+                              // "batchNo"=>"",//批次号 批量支付必送。
+                              // "repetCard"=>"",//财智卡重用标志 财智卡重用模式下使用,重用模式1,其他模式0
+
+        "goodsList" => array(
+            array(
+                "goodsSubId" => "0968", // 商品信息子序号
+                "goodsName" => "测试商品", // 商品名称
+                "payeeCompanyName" => "饮豆另增古技号午娇缝乓忘嘴易", // 收款人户名
+                "goodsNumber" => "1", // 商品数量
+                "goodsUnit" => "个", // 商品单位
+                "goodsAmt" => "10" // 商品金额 单位分
+            ),
+            array(
+                "goodsSubId" => "0967", // 商品信息子序号
+                "goodsName" => "测试商品2", // 商品名称
+                "payeeCompanyName" => "饮豆另增古技号午娇缝乓忘嘴易", // 收款人户名
+                "goodsNumber" => "1", // 商品数量
+                "goodsUnit" => "个", // 商品单位
+                "goodsAmt" => "10" // 商品金额 单位分
+            )
+        ),
+
+        "payeeList" => array(
+            array(
+                "mallCode" => "1602001009005410261", // 收方商户号 支付时必输,退款时非必输
+                                                      // "mccCode" => "", // 商户类别(MCC码)
+                                                      // "mccName" => "", // MCC码名称
+                                                      // "businessLicense" => "", // 商户证件编号
+                                                      // "businessLicenseType" => "", // 商户证件类型
+                "mallName" => "test", // 担保支付、保证支付上送收方会员名称
+                "payeeCompanyName" => "氮油货(饮豆)车巫褪辛乓忘嘴易", // 收款人户名
+                "payeeSysflag" => "1", // 境内外标志 1:境内工行,2:境内他行,3:境外
+                                        // "payeeBankCode" => "", // 收方行联行号 当收方为境内他行(payeeSysflag = 2)时上送,退款时不用上送。联行行号请合作方自行查询或联系客户经理。
+                                        // "payeeHeadBankCode" => "", // 收方行总行行号 暂未启用
+                "payeeAccno" => "1202020409900065243", // 收款人账号 担保支付、保证支付时上送会员号绑定的结算账号
+                "payAmount" => "20" // 收款金额(单位:分)
+                                    // "rbankname" => "", // 收款行全称 当收方为境外时必须上送
+                                    // "payeeBankCountry" => "", // 收款行所在国家地区代码 当收方为境外时必须上送
+                                    // "payeeBankSign" => "", // 收款行标识 当收方为境外时必须上送
+                                    // "payeeCountry" => "", // 收款人常驻国家/地区 当收方为境外时必须上送
+                                    // "payeeAddress" => "", // 收款人地址 境外非加拿大时必须上送
+                                    // "racaddress1" => "", // 收款人地址(国家) 境外加拿大时必须上送
+                                    // "racaddress2" => "", // 收款人地址(省/州) 加拿大地区必输
+                                    // "racaddress3" => "", // 收款人地址(城市/城镇) 加拿大地区必输
+                                    // "racaddress4" => "", // 收款人地址(街/路) 加拿大地区必输
+                                    // "racpostcode" => "", // 收款人地址(邮编) 加拿大地区必输
+                                    // "agentbic" => "", // 收款行之代理行BIC码(境外支付才上送)
+                                    // "payeePhone" => "", // 收款人手机号
+                                    // "payeeOrgcode" => "", // 收款人组织机构代码 境内外币必须上送
+                                    // "receivableAmount" => "", // 应收金额(单位:分) 担保支付专用,指本订单orderCode收方应收金额。
+                                    // "payeeWalletId" => "", // 收款人钱包ID 支持数字人民币支付时上送
+                                    // "payeeWalletName" => "" // 收款人钱包名称 支持数字人民币支付时上送
+            )
+        )
+    )
+);
+
+$appId = "10000000000000225069";
+$privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDPUsAxVOs46x7u
+			mfJDcw98UfPhD+/ZoFcJs4WqhoqWeLbSNHDOTFc+7r5qsWoTPiuaJdcxQbIF0bOT
+			lvIXXFNivTZy35aAQUpzILsPIVd0+Z+pCR2mosZkl8qhRk+5mGtc3OlzGvkGGnxx
+			O2fKxtwIRdEUaAnqg/k+8kSN3k8p9sXbJD9+r3imIvkswuGTEoEk0ARg3YSmlSTT
+			P0UqksT5/MQN3rZYDlE0baPCB2pKcTDncsNhvgwjGmI7fMyBB1tV0jGfaGq1IcGy
+			fY5WUcIaiveYUq5Gta6+9J/B333hztCCWdtbM+YoI4UpMcV5B1056P3X1hPRbCri
+			Id5uI4sXAgMBAAECggEAdluBiSg3mSjxYbnVSphXUNvgZK4aeZ1F0y3/sxhX6gtE
+			I8D4XW3LqQvW/UYHjrDBZ6EOtvoQTa4n3KwhzSBSIl5uxSnL27BqdktLPxoDua4A
+			bhncKZNnu2nErklbnlLbiAo95A6T994LCQGnAWaBmt9wuzuh3ZY2Jq9cX7l4bDWD
+			3OaKLER56n8KgMM0hyUffm2+ediCVy0CfL/50gscWLQKrDx52uohtgORw4OiAzx/
+			YwgnnvSAgXQK21ChDcN5GQA5hZOeFMRY0vshSiA6/Zz8GvHfa4u/fEWVpZhsJrow
+			97Fk3he8NHc9M6mLIxKeGFLknpkNHgDZXqCD5vvVwQKBgQDauoRR8EAjU+jjZDUi
+			5qyPXSUELthqMbn4oHT33pgjSvQgoLfMtn95FHgFZJjEZfAnKgNSjFddPqB6vy0d
+			PLXRSyqG0b+ap+f2e2kuNnbngijCO9WWDdpU1k7e/Lvo5Ohgz0ODAxRqrst+QqmW
+			5C6nt+g0Il4ctdoUQ3oBeWTc8QKBgQDyprRvGqThXSsJ64wpiPUKieZ+562FFwZE
+			pBU1Sy3PS9EfroQa2/NlL5eiLPOOpmY5tUhIyNZzL7YE4n+iI/pZFpC23+gz4Qjt
+			sQnBGXQn+D7H181B119jUt/mYZwM3zAy9DJal4+q52LvmluT95/eTyhYD46vEGr3
+			0axSGcOIhwKBgDRx+Hw1IQvXeMXdJyiBKusNKG0CVn3QAols3973Dn+X30Vbg/af
+			45zCnaydXEvrLVQWrMlEQUZoV85WvJiAEBBo939wF4Mbs3DUUnn0MTp9aQx5kFL0
+			a19gK3UoIF5NVLKxv7xQJrsVwlE55rP5bn5kiFbHzs0PhYTKURy9YMPhAoGAVkeO
+			at8Xd4bQUeOuX+px7wBftAoe+e7Y7LlHTT7hGA+GWXSNRpuk7PrCOQkwxS1HtgdO
+			n4rCLgzt9Miwx29xihHq/Quani/LI/FKXZ32Xmv3rsl+E4ZIRaHnORzGBxGpKsUH
+			zoyLqiJCXJ4PKArpjnupBb7qZjc5QcsNMdg1XasCgYEAv6SkwgcRCVliGtphJVxg
+			xODkI+YOufnDGpD5OGECY0/O5FQ8u4PzvQ5FuOBElJzpbKmDqKqMX2UsgpvPzyT2
+			2JtW0Xpo/UiApIyuUuF5CxIvxfsD3VSjC7MrmqBCEU/iRdQv11alFRg4KOXZXst6
+			oclGtrgSiI3n3kJ2Xy3oO38=";
+$icbcPublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB";
+// 以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+$client = new DefaultIcbcClient($appId, $privateKey, IcbcConstants::$SIGN_TYPE_RSA2, '', '', $icbcPublicKey, '', '', '', '');
+$resp = $client->execute($request, '2022020715103429955', ''); // 执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+echo $resp;
+$respObj = json_decode($resp, true);
+if ($respObj["return_code"] == 0) { // sucess
+    echo $respObj["return_msg"];
+} else { // fail
+    echo $respObj["return_msg"];
+}
+
+// 正常返回示例:{"transOk":0,"orderCurr":"001","payMode":1,"return_msg":"","sumPayamt":"20","agreeName":"测试1121","serialNo":"","agreeCode":"0160200010060410006041000000000881","orderAmount":"20","redirectParam":"https://cpay3.dccnet.com.cn/corporpay/servlet/ICBCCPayBusinessServlet?unique_serialno=2022022508485493300000000001723002&signstr=8792F12FE32CCB3312A40477854BD4DC25ED8C51D8405A7FF784B98A9ABA7B1FD5CEBBF7FCE625D2","partnerSeq":"201212221215202102","return_code":0,"status":1}
+?>

+ 153 - 0
extend/icbc/example/CppayapplyDirectpaymentV2Test.php

@@ -0,0 +1,153 @@
+<?php
+// 直接支付 工行e企付支付申请-同步支付
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+$request = array(
+    "serviceUrl" => 'https://apipcs3.dccnet.com.cn/api/mybank/pay/cpay/cppayapply/V2',
+    "method" => 'POST',
+    "isNeedEncrypt" => false,
+    "biz_content" => array(
+        "agreeCode" => "0160200238060410006041000000001490", // 合作方协议编号
+        "partnerSeq" => "20121557354523885519", // 交易流水号
+        "payChannel" => "1", // 渠道类型;1-PC端 2-移动端
+        "internationalFlag" => "1", // 境内外标志 1-境内 2-境外
+        "payMode" => "1", // 直接支付
+                           // "reservDirect" => "1", // 保留支付时上送(纯票据保留时无需上送),1-付方保留,2-收方保留(收方保留时,收款账号仅支持工行往来户),境内外币只支持付方保留
+                           // "operType" => "", // 操作类型
+        "payEntitys" => "1001", // 1000第一位1代表现金第二位1代表票据
+        "asynFlag" => "0", // 0代表同步支付 1:代表异步支付
+                            // "logonId"=>"001",//企网登录ID 当异步支付需要指定提交人时才上送(预留字段,本期暂不支持)
+                            // "payerAccno" => "1202027209100017281", // 付款人账号 异步支付、安心账户退款时必须送账号;保证支付, 如果是采用平台方验证,必须上送付方保证金主账号;其他场景如果送,则为指定账号支付。
+                            // "payerAccname" => "埋赏冒了神饥祺铜搭洪坏检苹职悟", // 付款人户名 付款人账号输入,付款人户名必须同时输入。付款人户名可单独输入,单独输入时,开启户名校验。
+                            // "payerFeeAccno"=>"",//付方付费账号 境外支付时上送。上送时,则取该账号付手续费;若不上送,则取付方账号付手续费。付方付费账号、付方付费账号户名、付方付费账号币种同时上送或者都不上送.
+                            // "payerFeeAccName"=>"",//付方付费账号户名
+                            // "payerFeeCurr"=>"",//付方付费账号币种
+        "payMemno" => "160290000612012", // 客户编号
+                                          // "orgcode" =>"",//付款人组织机构代码 境内外币、境外必须上送。统一社会信用证的第九-十七位。
+        "orderCode" => "207802999501", // 订单号
+        "orderAmount" => "20", // 订单金额 单位分 仅用于展现,本次应支持金额以sumPayamt为准
+        "orderCurr" => "001", // 币种 001人民币
+        "sumPayamt" => "20", // 订单汇总金额 单位分
+                              // "orderRemark" => "测试", // 订单备注 当需要打印在回单信息中时上送
+                              // "rceiptRemark" => "测试", // 回单补充信息备注 当需要打印在回单信息中时上送
+                              // "purpose" => "", // 用途 当需要打印在回单信息中时上送
+                              // "summary" => "", // 摘要 当需要打印在回单信息中时上送
+        "submitTime" => "20220321084307", // 提交时间
+        "returnUrl" => "", // 支付成功后跳转连接
+        "callbackUrl" => "https://gyj1.dccnet.com.cn/epay/NotifyUrlServlet.php", // 回调通知地址
+                                                                                  // "agreementId"=>"",//合同号 境内外币必须上送,境外支付时上送,三单号不能都上送为空, Ascii字符集,不能有中文和全角字符
+                                                                                  // "invoiceId"=>"",//发票号 境外支付时上送,境内外币必须上送,Ascii字符集,不能有中文和全角字符
+                                                                                  // "manifestId"=>"",//报关单号 境外支付时上送
+                                                                                  // "agreementImageId"=>"",//影像批次号 境内外币必须上送,境外支付时上送
+                                                                                  // "enterpriseName"=>"",//付款方企业名称 境内外币支付时上送,保证支付、担保支付时上送付款人会员名称
+                                                                                  // "payRemark"=>"",//支付信息备注
+                                                                                  // "bakReserve1"=>"",//境外交易特殊标志 网金部e链通专用,境外交易特殊标志。
+                                                                                  // "bakReserve2"=>"",//备用字段2
+                                                                                  // "bakReserve3"=>"",//备用字段3
+                                                                                  // "partnerSeqOrigin"=>"201212221215202104",//原合作方支付流水号(待启用,退款时使用)
+                                                                                  // "sumPayamtOrigin"=>"",//原汇总支付金额(备用字段) 待启用
+                                                                                  // "reporterName"=>"",//填报人
+                                                                                  // "reporterContact"=>"",//填报人电话
+                                                                                  // "identityMode"=>"",//认证模式 1-免认证,0或空-其他;仅退款时使用,安心账户退款时必须上送1。使用免认证退款前需与工行签订相关协议,具体咨询客户经理。
+                                                                                  // "payerPhone" => "", // 付款人手机号 11位手机号,线下异步支付时上送、线下异步支付:将收方信息推送给付款人手机号,付款人通过网银、柜面等渠道支付后自动关联订单为成功。使用线下异步支付前需与工行签订相关协议,具体咨询客户经理。
+                                                                                  // "payerWalletId"=>"",//付款人钱包ID 待启用 数字人名币专用
+                                                                                  // "payerWalletName"=>"",//付款人钱包名称 待启用 数字人名币专用
+                                                                                  // "batchNo"=>"",//批次号 批量支付必送。
+                                                                                  // "repetCard"=>"",//财智卡重用标志 财智卡重用模式下使用,重用模式1,其他模式0
+
+        "goodsList" => array(
+            array(
+                "goodsSubId" => "0968", // 商品信息子序号
+                "goodsName" => "测试商品", // 商品名称
+                "payeeCompanyName" => "饮豆另增古技号午娇缝乓忘嘴易", // 收款人户名
+                "goodsNumber" => "1", // 商品数量
+                "goodsUnit" => "个", // 商品单位
+                "goodsAmt" => "10" // 商品金额 单位分
+            ),
+            array(
+                "goodsSubId" => "0967", // 商品信息子序号
+                "goodsName" => "测试商品2", // 商品名称
+                "payeeCompanyName" => "饮豆另增古技号午娇缝乓忘嘴易", // 收款人户名
+                "goodsNumber" => "1", // 商品数量
+                "goodsUnit" => "个", // 商品单位
+                "goodsAmt" => "10" // 商品金额 单位分
+            )
+        ),
+
+        "payeeList" => array(
+            array(
+                "mallCode" => "1602001009005410261", // 收方商户号 支付时必输,退款时非必输
+                                                      // "mccCode" => "", // 商户类别(MCC码)
+                                                      // "mccName" => "", // MCC码名称
+                                                      // "businessLicense" => "", // 商户证件编号
+                                                      // "businessLicenseType" => "", // 商户证件类型
+                "mallName" => "test", // 担保支付、保证支付上送收方会员名称
+                "payeeCompanyName" => "氮油货(饮豆)车巫褪辛乓忘嘴易", // 收款人户名
+                "payeeSysflag" => "1", // 境内外标志 1:境内工行,2:境内他行,3:境外
+                                        // "payeeBankCode" => "", // 收方行联行号 当收方为境内他行(payeeSysflag = 2)时上送,退款时不用上送。联行行号请合作方自行查询或联系客户经理。
+                                        // "payeeHeadBankCode" => "", // 收方行总行行号 暂未启用
+                "payeeAccno" => "1202020409900065243", // 收款人账号 担保支付、保证支付时上送会员号绑定的结算账号
+                "payAmount" => "20" // 收款金额(单位:分)
+                                    // "rbankname" => "", // 收款行全称 当收方为境外时必须上送
+                                    // "payeeBankCountry" => "", // 收款行所在国家地区代码 当收方为境外时必须上送
+                                    // "payeeBankSign" => "", // 收款行标识 当收方为境外时必须上送
+                                    // "payeeCountry" => "", // 收款人常驻国家/地区 当收方为境外时必须上送
+                                    // "payeeAddress" => "", // 收款人地址 境外非加拿大时必须上送
+                                    // "racaddress1" => "", // 收款人地址(国家) 境外加拿大时必须上送
+                                    // "racaddress2" => "", // 收款人地址(省/州) 加拿大地区必输
+                                    // "racaddress3" => "", // 收款人地址(城市/城镇) 加拿大地区必输
+                                    // "racaddress4" => "", // 收款人地址(街/路) 加拿大地区必输
+                                    // "racpostcode" => "", // 收款人地址(邮编) 加拿大地区必输
+                                    // "agentbic" => "", // 收款行之代理行BIC码(境外支付才上送)
+                                    // "payeePhone" => "", // 收款人手机号
+                                    // "payeeOrgcode" => "", // 收款人组织机构代码 境内外币必须上送
+                                    // "receivableAmount" => "", // 应收金额(单位:分) 担保支付专用,指本订单orderCode收方应收金额。
+                                    // "payeeWalletId" => "", // 收款人钱包ID 支持数字人民币支付时上送
+                                    // "payeeWalletName" => "" // 收款人钱包名称 支持数字人民币支付时上送
+            )
+        )
+    )
+);
+
+$appId = "10000000000000225069";
+$privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDPUsAxVOs46x7u
+			mfJDcw98UfPhD+/ZoFcJs4WqhoqWeLbSNHDOTFc+7r5qsWoTPiuaJdcxQbIF0bOT
+			lvIXXFNivTZy35aAQUpzILsPIVd0+Z+pCR2mosZkl8qhRk+5mGtc3OlzGvkGGnxx
+			O2fKxtwIRdEUaAnqg/k+8kSN3k8p9sXbJD9+r3imIvkswuGTEoEk0ARg3YSmlSTT
+			P0UqksT5/MQN3rZYDlE0baPCB2pKcTDncsNhvgwjGmI7fMyBB1tV0jGfaGq1IcGy
+			fY5WUcIaiveYUq5Gta6+9J/B333hztCCWdtbM+YoI4UpMcV5B1056P3X1hPRbCri
+			Id5uI4sXAgMBAAECggEAdluBiSg3mSjxYbnVSphXUNvgZK4aeZ1F0y3/sxhX6gtE
+			I8D4XW3LqQvW/UYHjrDBZ6EOtvoQTa4n3KwhzSBSIl5uxSnL27BqdktLPxoDua4A
+			bhncKZNnu2nErklbnlLbiAo95A6T994LCQGnAWaBmt9wuzuh3ZY2Jq9cX7l4bDWD
+			3OaKLER56n8KgMM0hyUffm2+ediCVy0CfL/50gscWLQKrDx52uohtgORw4OiAzx/
+			YwgnnvSAgXQK21ChDcN5GQA5hZOeFMRY0vshSiA6/Zz8GvHfa4u/fEWVpZhsJrow
+			97Fk3he8NHc9M6mLIxKeGFLknpkNHgDZXqCD5vvVwQKBgQDauoRR8EAjU+jjZDUi
+			5qyPXSUELthqMbn4oHT33pgjSvQgoLfMtn95FHgFZJjEZfAnKgNSjFddPqB6vy0d
+			PLXRSyqG0b+ap+f2e2kuNnbngijCO9WWDdpU1k7e/Lvo5Ohgz0ODAxRqrst+QqmW
+			5C6nt+g0Il4ctdoUQ3oBeWTc8QKBgQDyprRvGqThXSsJ64wpiPUKieZ+562FFwZE
+			pBU1Sy3PS9EfroQa2/NlL5eiLPOOpmY5tUhIyNZzL7YE4n+iI/pZFpC23+gz4Qjt
+			sQnBGXQn+D7H181B119jUt/mYZwM3zAy9DJal4+q52LvmluT95/eTyhYD46vEGr3
+			0axSGcOIhwKBgDRx+Hw1IQvXeMXdJyiBKusNKG0CVn3QAols3973Dn+X30Vbg/af
+			45zCnaydXEvrLVQWrMlEQUZoV85WvJiAEBBo939wF4Mbs3DUUnn0MTp9aQx5kFL0
+			a19gK3UoIF5NVLKxv7xQJrsVwlE55rP5bn5kiFbHzs0PhYTKURy9YMPhAoGAVkeO
+			at8Xd4bQUeOuX+px7wBftAoe+e7Y7LlHTT7hGA+GWXSNRpuk7PrCOQkwxS1HtgdO
+			n4rCLgzt9Miwx29xihHq/Quani/LI/FKXZ32Xmv3rsl+E4ZIRaHnORzGBxGpKsUH
+			zoyLqiJCXJ4PKArpjnupBb7qZjc5QcsNMdg1XasCgYEAv6SkwgcRCVliGtphJVxg
+			xODkI+YOufnDGpD5OGECY0/O5FQ8u4PzvQ5FuOBElJzpbKmDqKqMX2UsgpvPzyT2
+			2JtW0Xpo/UiApIyuUuF5CxIvxfsD3VSjC7MrmqBCEU/iRdQv11alFRg4KOXZXst6
+			oclGtrgSiI3n3kJ2Xy3oO38=";
+$icbcPublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB";
+// 以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+$client = new DefaultIcbcClient($appId, $privateKey, IcbcConstants::$SIGN_TYPE_RSA2, '', '', $icbcPublicKey, '', '', '', '');
+$resp = $client->execute($request, '2022020715103429955', ''); // 执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+echo $resp;
+$respObj = json_decode($resp, true);
+if ($respObj["return_code"] == 0) { // sucess
+    $url = 'location:' . $respObj["redirectParam"];
+    header($url); // 跳转支付页面
+} else { // fail
+    echo $respObj["return_msg"];
+}
+
+// 正常返回示例:{"transOk":0,"orderCurr":"001","payMode":1,"return_msg":"","sumPayamt":"20","agreeName":"测试1121","serialNo":"","agreeCode":"0160200010060410006041000000000881","orderAmount":"20","redirectParam":"https://cpay3.dccnet.com.cn/corporpay/servlet/ICBCCPayBusinessServlet?unique_serialno=2022022508485493300000000001723002&signstr=8792F12FE32CCB3312A40477854BD4DC25ED8C51D8405A7FF784B98A9ABA7B1FD5CEBBF7FCE625D2","partnerSeq":"201212221215202102","return_code":0,"status":1}
+?>

+ 93 - 0
extend/icbc/example/CppayapplyReceiveNoticeTest.php

@@ -0,0 +1,93 @@
+<?php
+// 支付回调
+include_once 'WebUtils.php';
+include_once 'IcbcSignature.php';
+include_once 'IcbcEncrypt.php';
+$AES_KEY = "";//AES报文解密秘钥,如无特殊约定,e企付异步推送报文不使用加密,本字段可为空;若贵司要求异步通知加密,需提前将秘钥提供给工行
+//$icbcPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt53rMPsEVSsfaHoUwJcraDyz9HaYbSTqOp/dV4QmKhMqmq9Kr0WFqSSTCKbbAMy/t3rEAkeLdu6JNyJOEjIkLA8uESP2aUne4vAeMCVx2/0kTvmAi7lgopKGTC+92CJdyNJQa0tIPMMYTkgcOsXYEgpnygR0AHmLGUH6TE6UTNmxHwKcY+MsMpLO9Yh5hDph9dgXACnNCHyhvhJff+oWXWPwSv40vr/9ExG+Q09F5uoKDJiNctEoS/EcG/nYN1dCymyK2mV8URQ/LMXra2yBZIg0ez4XyImniYWo0pMxdv1d0dHmKNemLJE7neW/oOUu55YgU1rpj1+3bXvqA2LIwQIDAQAB";
+error_log("--------------------------**************************-------------------");
+	
+
+$params = array();
+$from = $_POST['from'];
+$api = $_POST['api'];
+$appId = $_POST['app_id'];
+$charset = $_POST['charset'];
+$format = $_POST['format'];
+$timestamp = $_POST['timestamp'];
+$sign_type = $_POST['sign_type'];
+$biz_content = htmlspecialchars_decode($_POST['biz_content']);
+$sign = $_POST['sign'];
+$params['from'] = $from;
+$params['api'] = $api;
+$params['app_id'] = $appId;
+$params['charset'] = $charset;
+$params['format'] = $format;
+$params['timestamp'] = $timestamp;
+$params['sign_type'] = $sign_type;
+$params['biz_content'] = $biz_content;
+error_log("from:".$from."--api:".$api."--appId:".$appId."--charset:".$charset."--format:".$format."--timestamp:".$timestamp."--sign_type:".$sign_type."--biz_content:".$biz_content."--sign:".$sign);
+
+$path = "/epay/NotifyUrlServlet.php";
+$signStr = WebUtils::buildOrderedSignStr($path,$params);
+error_log("signStr:".$signStr);
+$icbcPublicKey="MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB";//网关公钥
+$passed = IcbcSignature::verify($signStr, $sign_type, $icbcPublicKey, $charset, $sign,'');
+error_log("passed:".$passed);
+$responseBizContent = "";
+if(!$passed){
+		$responseBizContent = "{\"return_code\":-12345,\"return_msg\":\"icbc sign not pass.\"}";
+}else{
+	/**********合作方/分行 业务逻辑处理**********/
+	$respMap = json_decode($biz_content,true);
+	$msg_id = $respMap["msg_id"];
+	//$msg_id = time();
+	$return_code = 0;
+	$eturn_msg = "success.";
+	$responseBizContent = "{\"return_code\":".$return_code.",\"return_msg\":\"".$eturn_msg."\",\"msg_id\":\"".$msg_id."\"}";
+	
+	error_log("responseBizContent======:".$responseBizContent."=====!");
+}
+
+/**********商户对消息返回响应进行签名,签名方式需与在API平台登记APP的sign_type保持一致,e企付一般为RSA签名**********/
+/*1、商户以CA证书签名为例,如下:
+ signStr = "\"response_biz_content\":"+responseBizContent+","+"\"sign_type\":"+"\"CA\","+"\"ca\":\""+cert+"\"";
+ sign = IcbcSignature.sign(signStr, "CA", CertPriKey,
+ charset,"12345678");
+ results = "{"+signStr+",\"sign\":\""+sign+"\"}";
+ */
+//2、商户以RSA签名为例,如下:其中,MY_PRIVATE_KEY为商户私钥;
+//$privateKey="MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC3nesw+wRVKx9oehTAlytoPLP0dphtJOo6n91XhCYqEyqar0qvRYWpJJMIptsAzL+3esQCR4t27ok3Ik4SMiQsDy4RI/ZpSd7i8B4wJXHb/SRO+YCLuWCikoZML73YIl3I0lBrS0g8wxhOSBw6xdgSCmfKBHQAeYsZQfpMTpRM2bEfApxj4ywyks71iHmEOmH12BcAKc0IfKG+El9/6hZdY/BK/jS+v/0TEb5DT0Xm6goMmI1y0ShL8Rwb+dg3V0LKbIraZXxRFD8sxetrbIFkiDR7PhfIiaeJhajSkzF2/V3R0eYo16YskTud5b+g5S7nliBTWumPX7dte+oDYsjBAgMBAAECggEAa3ra4u7sWFZHqkZbw2g5lmiCBgUtsCW9nddaHxJRrKtPcwBMvU/6r0mjb5sL8unnByWrepIahuGWHFnOTURgfBHeq1XbtUHyX/CiGxiwD0+cY0YVArTeZgtS5WHExLFJKHZDcKq+fCLPJXN8YsLQea7xlgUJSgXbcEt4khYlJN4BPsh/aZ1OmVEUlsa4jEPDsK2T3D4xl4gNd8giuSSvBs6HwBq/ICiQ2muCpk3Kn5JrkwwTYJWant4NFcBpFzLNxjwPsipZ0AngikvpcASqvA8X/rWPXZ0pXAT5Spzd93d7TqL0FUKoLjtRamUQ6/liugjZsb7EsS1+GK8QEAa2aQKBgQDx/4WwwNmapDd5hgr9/j49VJm7yOSKcQXS8BFMNiC3xx4RZFqzKTnmuvzH+NFexL2Ay87A8EOnVv8xajbmC+1FSVilt5HEzezJ3GjQX6li0EJNOQcLGbIVCB/3h9oU/tw9uf1/JmF1sbKkW6IL+r5gs8jGKczc8ABOnQm89Ov93wKBgQDCPaciXsqtog7zvWKbaj+tSDofMpy8BTOkMLfF1GhhCGbz+/aRHQiEKoqC4nqxibx1JLWhIRplJx+dmyfkwki1+SGFuFkWxv8l2PL9NBurMYlX0x8UIseriSLRUCCcGZl6s7PD6diA9CO3BokU5fkCQfqgHvRjPfEUE2yvgvzNXwKBgBxgj0fDxYCZwxuP+VgBaUD9260miI4nZLxwhEbAjiOeyMrXTr91lSGWSbAVYE/RmDszKwJ66iQEUpZz0w401dTrHecI2KIQV7TwEKZmoVFCBJRTnJzTnYtT0ZPQLWWK4T6nwa8YTBNmDAGz8ROgipSCYIfEPQ6nYhHV3l93BPlXAoGBALttTkbF/QBKbe8XgXzBqywDk8HizoZG5qu6Lrn/2bA3sVAggq1HvJ37hqgA7a8+XtESWQhfrt6IP+OOgZIlPpAJEyW62ow1/KGClAVrMH+iTwqlt0lwvgZxT1112eGGeiiCGiYjETxtV8EV11SJDBv3mmTDOcJBVMywaaF53YI1AoGAX7W6OM5zyNhTuDFxTbaZsrVwuHJCytcg35sVsYVhyHRD5xZhiwwbh6gxX1hOVUzUZAwlLaJ2ehx2YKsjDIsG4lSBfVTHzo8Z+RC6QR0auPC30iUwRkD0rgO9RT2QVqqYtedtaTQsY8NiHiAuzC9MEaK5vjPE88Q50pwtR63DY7Y=";
+$privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDPUsAxVOs46x7u
+			mfJDcw98UfPhD+/ZoFcJs4WqhoqWeLbSNHDOTFc+7r5qsWoTPiuaJdcxQbIF0bOT
+			lvIXXFNivTZy35aAQUpzILsPIVd0+Z+pCR2mosZkl8qhRk+5mGtc3OlzGvkGGnxx
+			O2fKxtwIRdEUaAnqg/k+8kSN3k8p9sXbJD9+r3imIvkswuGTEoEk0ARg3YSmlSTT
+			P0UqksT5/MQN3rZYDlE0baPCB2pKcTDncsNhvgwjGmI7fMyBB1tV0jGfaGq1IcGy
+			fY5WUcIaiveYUq5Gta6+9J/B333hztCCWdtbM+YoI4UpMcV5B1056P3X1hPRbCri
+			Id5uI4sXAgMBAAECggEAdluBiSg3mSjxYbnVSphXUNvgZK4aeZ1F0y3/sxhX6gtE
+			I8D4XW3LqQvW/UYHjrDBZ6EOtvoQTa4n3KwhzSBSIl5uxSnL27BqdktLPxoDua4A
+			bhncKZNnu2nErklbnlLbiAo95A6T994LCQGnAWaBmt9wuzuh3ZY2Jq9cX7l4bDWD
+			3OaKLER56n8KgMM0hyUffm2+ediCVy0CfL/50gscWLQKrDx52uohtgORw4OiAzx/
+			YwgnnvSAgXQK21ChDcN5GQA5hZOeFMRY0vshSiA6/Zz8GvHfa4u/fEWVpZhsJrow
+			97Fk3he8NHc9M6mLIxKeGFLknpkNHgDZXqCD5vvVwQKBgQDauoRR8EAjU+jjZDUi
+			5qyPXSUELthqMbn4oHT33pgjSvQgoLfMtn95FHgFZJjEZfAnKgNSjFddPqB6vy0d
+			PLXRSyqG0b+ap+f2e2kuNnbngijCO9WWDdpU1k7e/Lvo5Ohgz0ODAxRqrst+QqmW
+			5C6nt+g0Il4ctdoUQ3oBeWTc8QKBgQDyprRvGqThXSsJ64wpiPUKieZ+562FFwZE
+			pBU1Sy3PS9EfroQa2/NlL5eiLPOOpmY5tUhIyNZzL7YE4n+iI/pZFpC23+gz4Qjt
+			sQnBGXQn+D7H181B119jUt/mYZwM3zAy9DJal4+q52LvmluT95/eTyhYD46vEGr3
+			0axSGcOIhwKBgDRx+Hw1IQvXeMXdJyiBKusNKG0CVn3QAols3973Dn+X30Vbg/af
+			45zCnaydXEvrLVQWrMlEQUZoV85WvJiAEBBo939wF4Mbs3DUUnn0MTp9aQx5kFL0
+			a19gK3UoIF5NVLKxv7xQJrsVwlE55rP5bn5kiFbHzs0PhYTKURy9YMPhAoGAVkeO
+			at8Xd4bQUeOuX+px7wBftAoe+e7Y7LlHTT7hGA+GWXSNRpuk7PrCOQkwxS1HtgdO
+			n4rCLgzt9Miwx29xihHq/Quani/LI/FKXZ32Xmv3rsl+E4ZIRaHnORzGBxGpKsUH
+			zoyLqiJCXJ4PKArpjnupBb7qZjc5QcsNMdg1XasCgYEAv6SkwgcRCVliGtphJVxg
+			xODkI+YOufnDGpD5OGECY0/O5FQ8u4PzvQ5FuOBElJzpbKmDqKqMX2UsgpvPzyT2
+			2JtW0Xpo/UiApIyuUuF5CxIvxfsD3VSjC7MrmqBCEU/iRdQv11alFRg4KOXZXst6
+			oclGtrgSiI3n3kJ2Xy3oO38=";
+$signStr = "\"response_biz_content\":".$responseBizContent.","."\"sign_type\":"."\"RSA2\"";
+$sign = IcbcSignature::sign($signStr, IcbcConstants::$SIGN_TYPE_RSA2, $privateKey,$charset,"");
+$results = "{".$signStr.",\"sign\":\"".$sign."\"}";
+error_log("results======:".$results."=====!");
+echo $results
+
+?>

+ 56 - 0
extend/icbc/example/MybankPayCpayCporderqueryBlPayV2Test.php

@@ -0,0 +1,56 @@
+<?php
+// 工行e企付支付申请查询
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+$request = array(
+    "serviceUrl" => 'https://apipcs3.dccnet.com.cn/api/mybank/pay/cpay/cporderquery/V2',
+    "method" => 'POST',
+    "isNeedEncrypt" => false,
+    "biz_content" => array(
+        "agreeCode" => "0160200238060410006041000000001490", // 合作方协议编号
+        "partnerSeq" => "20121892121523625506", // 交易流水号
+        "orderCode" => "204802090501" // 订单号
+    )
+);
+
+$appId = "10000000000000225069";
+$privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDPUsAxVOs46x7u
+			mfJDcw98UfPhD+/ZoFcJs4WqhoqWeLbSNHDOTFc+7r5qsWoTPiuaJdcxQbIF0bOT
+			lvIXXFNivTZy35aAQUpzILsPIVd0+Z+pCR2mosZkl8qhRk+5mGtc3OlzGvkGGnxx
+			O2fKxtwIRdEUaAnqg/k+8kSN3k8p9sXbJD9+r3imIvkswuGTEoEk0ARg3YSmlSTT
+			P0UqksT5/MQN3rZYDlE0baPCB2pKcTDncsNhvgwjGmI7fMyBB1tV0jGfaGq1IcGy
+			fY5WUcIaiveYUq5Gta6+9J/B333hztCCWdtbM+YoI4UpMcV5B1056P3X1hPRbCri
+			Id5uI4sXAgMBAAECggEAdluBiSg3mSjxYbnVSphXUNvgZK4aeZ1F0y3/sxhX6gtE
+			I8D4XW3LqQvW/UYHjrDBZ6EOtvoQTa4n3KwhzSBSIl5uxSnL27BqdktLPxoDua4A
+			bhncKZNnu2nErklbnlLbiAo95A6T994LCQGnAWaBmt9wuzuh3ZY2Jq9cX7l4bDWD
+			3OaKLER56n8KgMM0hyUffm2+ediCVy0CfL/50gscWLQKrDx52uohtgORw4OiAzx/
+			YwgnnvSAgXQK21ChDcN5GQA5hZOeFMRY0vshSiA6/Zz8GvHfa4u/fEWVpZhsJrow
+			97Fk3he8NHc9M6mLIxKeGFLknpkNHgDZXqCD5vvVwQKBgQDauoRR8EAjU+jjZDUi
+			5qyPXSUELthqMbn4oHT33pgjSvQgoLfMtn95FHgFZJjEZfAnKgNSjFddPqB6vy0d
+			PLXRSyqG0b+ap+f2e2kuNnbngijCO9WWDdpU1k7e/Lvo5Ohgz0ODAxRqrst+QqmW
+			5C6nt+g0Il4ctdoUQ3oBeWTc8QKBgQDyprRvGqThXSsJ64wpiPUKieZ+562FFwZE
+			pBU1Sy3PS9EfroQa2/NlL5eiLPOOpmY5tUhIyNZzL7YE4n+iI/pZFpC23+gz4Qjt
+			sQnBGXQn+D7H181B119jUt/mYZwM3zAy9DJal4+q52LvmluT95/eTyhYD46vEGr3
+			0axSGcOIhwKBgDRx+Hw1IQvXeMXdJyiBKusNKG0CVn3QAols3973Dn+X30Vbg/af
+			45zCnaydXEvrLVQWrMlEQUZoV85WvJiAEBBo939wF4Mbs3DUUnn0MTp9aQx5kFL0
+			a19gK3UoIF5NVLKxv7xQJrsVwlE55rP5bn5kiFbHzs0PhYTKURy9YMPhAoGAVkeO
+			at8Xd4bQUeOuX+px7wBftAoe+e7Y7LlHTT7hGA+GWXSNRpuk7PrCOQkwxS1HtgdO
+			n4rCLgzt9Miwx29xihHq/Quani/LI/FKXZ32Xmv3rsl+E4ZIRaHnORzGBxGpKsUH
+			zoyLqiJCXJ4PKArpjnupBb7qZjc5QcsNMdg1XasCgYEAv6SkwgcRCVliGtphJVxg
+			xODkI+YOufnDGpD5OGECY0/O5FQ8u4PzvQ5FuOBElJzpbKmDqKqMX2UsgpvPzyT2
+			2JtW0Xpo/UiApIyuUuF5CxIvxfsD3VSjC7MrmqBCEU/iRdQv11alFRg4KOXZXst6
+			oclGtrgSiI3n3kJ2Xy3oO38=";
+$icbcPublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB";
+// 以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+$client = new DefaultIcbcClient($appId, $privateKey, IcbcConstants::$SIGN_TYPE_RSA2, '', '', $icbcPublicKey, '', '', '', '');
+$resp = $client->execute($request, '2022020715103425112', ''); // 执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+echo $resp;
+$respObj = json_decode($resp, true);
+if ($respObj["return_code"] == 0) { // sucess
+    echo $respObj["return_msg"];
+} else { // fail
+    echo $respObj["return_msg"];
+}
+
+// 正常返回结果:{"orderCurr":"1","goodsList":[{"goodsNumber":"1","payeeCompanyName":"饮豆另增古技号午娇缝乓忘嘴易","payeeAccName":"饮豆另增古技号午娇缝乓忘嘴易","goodsName":"测试商品2","goodsAmt":"10"},{"goodsNumber":"1","payeeCompanyName":"饮豆另增古技号午娇缝乓忘嘴易","payeeAccName":"饮豆另增古技号午娇缝乓忘嘴易","goodsName":"测试商品","goodsAmt":"10"}],"sumPayamt":"20","payRemark":"","feeList":[],"czCardInfoList":[],"payerAccname":"","payerWalletName":"","payType":"201","applBrno":"","payeeList":[{"payeeSysflag":1,"mallName":"test","agentbic":"","rbankname":"","payeeAccCurr":1,"payeeCountry":"","payAmount":"20","payeeAcckind":"009","payeeBrno":"","payeeWalletName":"","payeeCompanyName":"氮油货(饮豆)车巫褪辛乓忘嘴易","racpostcode":"","racaddress4":"","racaddress2":"","racaddress3":"","payeeBrnoZoneno":"","racaddress1":"","payeeAddress":"","payeeOrgcode":"","payeeAccno":"1202020409900065243","payeeWalletId":"","payeeBankCountry":"","payeeBankSign":""}],"isShowPayeeInfo":"1","expense":"0","reservDirect":1,"serialNo":"2022032016222021000000000002149034","agreeCode":"0160200238060410006041000000001490","payerAccno":"","payerWalletId":"","partnerSeqOrigin":"","payerSysFlag":"3","tppmBankCode":"102","bakchar8":"","transOk":0,"return_msg":"","agreeName":"唐厉活挥咐背氛凯误胞吆匈","orderAmount":"20","partnerSeq":"20121892121523625501","feeFlag":0,"applBrnoZoneno":"","enterpriseName":"","payPlanList":[{"errno":0,"instrSerialno":"","reservNumCNY":"","uniqueSeq":"","errmsg":"","payAmount":"20","payCurr":"1","appendFlag":0,"holdDateCNY":"9999-12-31","payeeAccno":"1202020409900065243","payPlanSubcode":1,"payEntity":"0","billno":"","status":0}],"payMode":"2","payerBankName":"","payChannel":"1","return_code":"0","payStatus":"0"}
+?>

+ 153 - 0
extend/icbc/example/MybankPayCpayCppayapplyBlPay_RefundTest.php

@@ -0,0 +1,153 @@
+<?php
+// 保留支付 工行e企付支付申请-退款
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+$request = array(
+    "serviceUrl" => 'https://apipcs3.dccnet.com.cn/api/mybank/pay/cpay/cppayapply/V2',
+    "method" => 'POST',
+    "isNeedEncrypt" => false,
+    "biz_content" => array(
+        "agreeCode" => "0160200238060410006041000000001490", // 合作方协议编号
+        "partnerSeq" => "22223333355523885530", // 交易流水号
+        "payChannel" => "1", // 渠道类型;1-PC端 2-移动端
+        "internationalFlag" => "1", // 境内外标志 1-境内 2-境外
+        "payMode" => "1", // 保留支付
+                           // "reservDirect" => "1", // 保留支付时上送(纯票据保留时无需上送),1-付方保留,2-收方保留(收方保留时,收款账号仅支持工行往来户),境内外币只支持付方保留
+                           // "operType" => "", // 操作类型
+        "payEntitys" => "1000", // 1000第一位1代表现金第二位1代表票据
+        "asynFlag" => "0", // 0代表同步支付 1:代表异步支付
+                            // "logonId"=>"001",//企网登录ID 当异步支付需要指定提交人时才上送(预留字段,本期暂不支持)
+                            // "payerAccno" => "1202027209100017281", // 付款人账号 异步支付、安心账户退款时必须送账号;保证支付, 如果是采用平台方验证,必须上送付方保证金主账号;其他场景如果送,则为指定账号支付。
+                            // "payerAccname" => "埋赏冒了神饥祺铜搭洪坏检苹职悟", // 付款人户名 付款人账号输入,付款人户名必须同时输入。付款人户名可单独输入,单独输入时,开启户名校验。
+                            // "payerFeeAccno"=>"",//付方付费账号 境外支付时上送。上送时,则取该账号付手续费;若不上送,则取付方账号付手续费。付方付费账号、付方付费账号户名、付方付费账号币种同时上送或者都不上送.
+                            // "payerFeeAccName"=>"",//付方付费账号户名
+                            // "payerFeeCurr"=>"",//付方付费账号币种
+        "payMemno" => "160290000612012", // 客户编号
+                                          // "orgcode" =>"",//付款人组织机构代码 境内外币、境外必须上送。统一社会信用证的第九-十七位。
+        "orderCode" => "207802999502", // 订单号
+        "orderAmount" => "20", // 订单金额 单位分 仅用于展现,本次应支持金额以sumPayamt为准
+        "orderCurr" => "001", // 币种 001人民币
+        "sumPayamt" => "20", // 订单汇总金额 单位分
+        "orderRemark" => "退款测试", // 订单备注 当需要打印在回单信息中时上送
+        "rceiptRemark" => "退款测试", // 回单补充信息备注 当需要打印在回单信息中时上送
+                                   // "purpose" => "", // 用途 当需要打印在回单信息中时上送
+                                   // "summary" => "", // 摘要 当需要打印在回单信息中时上送
+        "submitTime" => "20220325101504", // 提交时间
+                                           // "returnUrl" => "www.baidu.com", // 支付成功后跳转连接
+                                           // "callbackUrl" => "www.baidu.com", // 回调通知地址
+                                           // "agreementId"=>"",//合同号 境内外币必须上送,境外支付时上送,三单号不能都上送为空, Ascii字符集,不能有中文和全角字符
+                                           // "invoiceId"=>"",//发票号 境外支付时上送,境内外币必须上送,Ascii字符集,不能有中文和全角字符
+                                           // "manifestId"=>"",//报关单号 境外支付时上送
+                                           // "agreementImageId"=>"",//影像批次号 境内外币必须上送,境外支付时上送
+                                           // "enterpriseName"=>"",//付款方企业名称 境内外币支付时上送,保证支付、担保支付时上送付款人会员名称
+                                           // "payRemark"=>"",//支付信息备注
+                                           // "bakReserve1"=>"",//境外交易特殊标志 网金部e链通专用,境外交易特殊标志。
+                                           // "bakReserve2"=>"",//备用字段2
+                                           // "bakReserve3"=>"",//备用字段3
+        "partnerSeqOrigin" => "201912223215202212", // 原合作方支付流水号(退款时使用)
+                                                       // "sumPayamtOrigin" => "20", // 原汇总支付金额(备用字段) 待启用
+                                                       // "reporterName"=>"",//填报人
+                                                       // "reporterContact"=>"",//填报人电话
+                                                       // "identityMode" => "0", // 认证模式 1-免认证,0或空-其他;仅退款时使用,安心账户退款时必须上送1。使用免认证退款前需与工行签订相关协议,具体咨询客户经理。
+                                                       // "payerPhone" => "", // 付款人手机号 11位手机号,线下异步支付时上送、线下异步支付:将收方信息推送给付款人手机号,付款人通过网银、柜面等渠道支付后自动关联订单为成功。使用线下异步支付前需与工行签订相关协议,具体咨询客户经理。
+                                                       // "payerWalletId"=>"",//付款人钱包ID 待启用 数字人名币专用
+                                                       // "payerWalletName"=>"",//付款人钱包名称 待启用 数字人名币专用
+                                                       // "batchNo"=>"",//批次号 批量支付必送。
+                                                       // "repetCard"=>"",//财智卡重用标志 财智卡重用模式下使用,重用模式1,其他模式0
+
+        "goodsList" => array(
+            array(
+                "goodsSubId" => "0968", // 商品信息子序号
+                "goodsName" => "测试商品", // 商品名称
+                "payeeCompanyName" => "饮豆另增古技号午娇缝乓忘嘴易", // 收款人户名
+                "goodsNumber" => "1", // 商品数量
+                "goodsUnit" => "个", // 商品单位
+                "goodsAmt" => "10" // 商品金额 单位分
+            ),
+            array(
+                "goodsSubId" => "0967", // 商品信息子序号
+                "goodsName" => "测试商品2", // 商品名称
+                "payeeCompanyName" => "饮豆另增古技号午娇缝乓忘嘴易", // 收款人户名
+                "goodsNumber" => "1", // 商品数量
+                "goodsUnit" => "个", // 商品单位
+                "goodsAmt" => "10" // 商品金额 单位分
+            )
+        )
+
+        // "payeeList" => array(
+        // array(
+        // "mallCode" => "1602001009005410261", // 收方商户号 支付时必输,退款时非必输
+        // // "mccCode" => "", // 商户类别(MCC码)
+        // // "mccName" => "", // MCC码名称
+        // // "businessLicense" => "", // 商户证件编号
+        // // "businessLicenseType" => "", // 商户证件类型
+        // "mallName" => "test", // 担保支付、保证支付上送收方会员名称
+        // "payeeCompanyName" => "氮油货(饮豆)车巫褪辛乓忘嘴易", // 收款人户名
+        // "payeeSysflag" => "1", // 境内外标志 1:境内工行,2:境内他行,3:境外
+        // // "payeeBankCode" => "", // 收方行联行号 当收方为境内他行(payeeSysflag = 2)时上送,退款时不用上送。联行行号请合作方自行查询或联系客户经理。
+        // // "payeeHeadBankCode" => "", // 收方行总行行号 暂未启用
+        // "payeeAccno" => "1202020409900065243", // 收款人账号 担保支付、保证支付时上送会员号绑定的结算账号
+        // "payAmount" => "20" // 收款金额(单位:分)
+        // // "rbankname" => "", // 收款行全称 当收方为境外时必须上送
+        // // "payeeBankCountry" => "", // 收款行所在国家地区代码 当收方为境外时必须上送
+        // // "payeeBankSign" => "", // 收款行标识 当收方为境外时必须上送
+        // // "payeeCountry" => "", // 收款人常驻国家/地区 当收方为境外时必须上送
+        // // "payeeAddress" => "", // 收款人地址 境外非加拿大时必须上送
+        // // "racaddress1" => "", // 收款人地址(国家) 境外加拿大时必须上送
+        // // "racaddress2" => "", // 收款人地址(省/州) 加拿大地区必输
+        // // "racaddress3" => "", // 收款人地址(城市/城镇) 加拿大地区必输
+        // // "racaddress4" => "", // 收款人地址(街/路) 加拿大地区必输
+        // // "racpostcode" => "", // 收款人地址(邮编) 加拿大地区必输
+        // // "agentbic" => "", // 收款行之代理行BIC码(境外支付才上送)
+        // // "payeePhone" => "", // 收款人手机号
+        // // "payeeOrgcode" => "", // 收款人组织机构代码 境内外币必须上送
+        // // "receivableAmount" => "", // 应收金额(单位:分) 担保支付专用,指本订单orderCode收方应收金额。
+        // // "payeeWalletId" => "", // 收款人钱包ID 支持数字人民币支付时上送
+        // // "payeeWalletName" => "" // 收款人钱包名称 支持数字人民币支付时上送
+        // )
+        // )
+    )
+);
+$appId = "10000000000000225069";
+$privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDPUsAxVOs46x7u
+			mfJDcw98UfPhD+/ZoFcJs4WqhoqWeLbSNHDOTFc+7r5qsWoTPiuaJdcxQbIF0bOT
+			lvIXXFNivTZy35aAQUpzILsPIVd0+Z+pCR2mosZkl8qhRk+5mGtc3OlzGvkGGnxx
+			O2fKxtwIRdEUaAnqg/k+8kSN3k8p9sXbJD9+r3imIvkswuGTEoEk0ARg3YSmlSTT
+			P0UqksT5/MQN3rZYDlE0baPCB2pKcTDncsNhvgwjGmI7fMyBB1tV0jGfaGq1IcGy
+			fY5WUcIaiveYUq5Gta6+9J/B333hztCCWdtbM+YoI4UpMcV5B1056P3X1hPRbCri
+			Id5uI4sXAgMBAAECggEAdluBiSg3mSjxYbnVSphXUNvgZK4aeZ1F0y3/sxhX6gtE
+			I8D4XW3LqQvW/UYHjrDBZ6EOtvoQTa4n3KwhzSBSIl5uxSnL27BqdktLPxoDua4A
+			bhncKZNnu2nErklbnlLbiAo95A6T994LCQGnAWaBmt9wuzuh3ZY2Jq9cX7l4bDWD
+			3OaKLER56n8KgMM0hyUffm2+ediCVy0CfL/50gscWLQKrDx52uohtgORw4OiAzx/
+			YwgnnvSAgXQK21ChDcN5GQA5hZOeFMRY0vshSiA6/Zz8GvHfa4u/fEWVpZhsJrow
+			97Fk3he8NHc9M6mLIxKeGFLknpkNHgDZXqCD5vvVwQKBgQDauoRR8EAjU+jjZDUi
+			5qyPXSUELthqMbn4oHT33pgjSvQgoLfMtn95FHgFZJjEZfAnKgNSjFddPqB6vy0d
+			PLXRSyqG0b+ap+f2e2kuNnbngijCO9WWDdpU1k7e/Lvo5Ohgz0ODAxRqrst+QqmW
+			5C6nt+g0Il4ctdoUQ3oBeWTc8QKBgQDyprRvGqThXSsJ64wpiPUKieZ+562FFwZE
+			pBU1Sy3PS9EfroQa2/NlL5eiLPOOpmY5tUhIyNZzL7YE4n+iI/pZFpC23+gz4Qjt
+			sQnBGXQn+D7H181B119jUt/mYZwM3zAy9DJal4+q52LvmluT95/eTyhYD46vEGr3
+			0axSGcOIhwKBgDRx+Hw1IQvXeMXdJyiBKusNKG0CVn3QAols3973Dn+X30Vbg/af
+			45zCnaydXEvrLVQWrMlEQUZoV85WvJiAEBBo939wF4Mbs3DUUnn0MTp9aQx5kFL0
+			a19gK3UoIF5NVLKxv7xQJrsVwlE55rP5bn5kiFbHzs0PhYTKURy9YMPhAoGAVkeO
+			at8Xd4bQUeOuX+px7wBftAoe+e7Y7LlHTT7hGA+GWXSNRpuk7PrCOQkwxS1HtgdO
+			n4rCLgzt9Miwx29xihHq/Quani/LI/FKXZ32Xmv3rsl+E4ZIRaHnORzGBxGpKsUH
+			zoyLqiJCXJ4PKArpjnupBb7qZjc5QcsNMdg1XasCgYEAv6SkwgcRCVliGtphJVxg
+			xODkI+YOufnDGpD5OGECY0/O5FQ8u4PzvQ5FuOBElJzpbKmDqKqMX2UsgpvPzyT2
+			2JtW0Xpo/UiApIyuUuF5CxIvxfsD3VSjC7MrmqBCEU/iRdQv11alFRg4KOXZXst6
+			oclGtrgSiI3n3kJ2Xy3oO38=";
+$icbcPublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB";
+// 以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+$client = new DefaultIcbcClient($appId, $privateKey, IcbcConstants::$SIGN_TYPE_RSA2, '', '', $icbcPublicKey, '', '', '', '');
+$resp = $client->execute($request, '2022020715103429955', ''); // 执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+echo $resp;
+$respObj = json_decode($resp, true);
+if ($respObj["return_code"] == 0) { // sucess
+    echo $respObj["return_msg"];
+    $url = 'location:' . $respObj["redirectParam"];
+    header($url); // 跳转支付页面
+} else { // fail
+    echo $respObj["return_msg"];
+}
+
+// 正常返回示例:{"transOk":0,"orderCurr":"001","payMode":1,"return_msg":"","sumPayamt":"20","agreeName":"唐厉活挥咐背氛凯误胞吆匈","serialNo":"","agreeCode":"0160200238060410006041000000001490","orderAmount":"20","redirectParam":"https://cpay3.dccnet.com.cn/corporpay/servlet/ICBCCPayBusinessServlet?unique_serialno=2022032509065324100000000001800004&signstr=0CE6D3638B2C9664B448674821D802C3BD785404C656A9C6C0695F16FA8EE072D5CEBBF7FCE625D2","partnerSeq":"20123333355523885528","return_code":0,"status":1}
+?>

+ 153 - 0
extend/icbc/example/MybankPayCpayCppayapplyV2Test.php

@@ -0,0 +1,153 @@
+<?php
+// 保留支付 工行e企付支付申请
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+$request = array(
+    "serviceUrl" => 'https://apipcs3.dccnet.com.cn/api/mybank/pay/cpay/cppayapply/V2',
+    "method" => 'POST',
+    "isNeedEncrypt" => false,
+    "biz_content" => array(
+        "agreeCode" => "0160200238060410006041000000001490", // 合作方协议编号
+        "partnerSeq" => "20121892121523625506", // 交易流水号
+        "payChannel" => "1", // 渠道类型;1-PC端 2-移动端
+        "internationalFlag" => "1", // 境内外标志 1-境内 2-境外
+        "payMode" => "2", // 支付方式:保留支付
+        "reservDirect" => "1", // 保留支付时上送,1-付方保留,2-收方保留,境内外币只支持付方保留
+                                // "operType" => "", // 操作类型
+        "payEntitys" => "1001", // 1000第一位1代表现金第二位1代表票据
+        "asynFlag" => "0", // 0代表同步支付 1:代表异步支付
+                            // "logonId"=>"001",//企网登录ID 当异步支付需要指定提交人时才上送(预留字段,本期暂不支持)
+                            // "payerAccno" => "1202027209100017281", // 付款人账号 异步支付、安心账户退款时必须送账号;保证支付, 如果是采用平台方验证,必须上送付方保证金主账号;其他场景如果送,则为指定账号支付。
+                            // "payerAccname" => "埋赏冒了神饥祺铜搭洪坏检苹职悟", // 付款人户名 付款人账号输入,付款人户名必须同时输入。付款人户名可单独输入,单独输入时,开启户名校验。
+                            // "payerFeeAccno"=>"",//付方付费账号 境外支付时上送。上送时,则取该账号付手续费;若不上送,则取付方账号付手续费。付方付费账号、付方付费账号户名、付方付费账号币种同时上送或者都不上送.
+                            // "payerFeeAccName"=>"",//付方付费账号户名
+                            // "payerFeeCurr"=>"",//付方付费账号币种
+        "payMemno" => "160290000612012", // 付款人会员号
+                                          // "orgcode" =>"",//付款人组织机构代码 境内外币、境外必须上送。统一社会信用证的第九-十七位。
+        "orderCode" => "207802999502", // 订单编号
+        "orderAmount" => "20", // 订单金额 单位分 仅用于展现,本次应支持金额以sumPayamt为准
+        "orderCurr" => "001", // 币种 001人民币
+        "sumPayamt" => "20", // 订单汇总金额 单位分
+                              // "orderRemark" => "测试", // 订单备注 当需要打印在回单信息中时上送
+                              // "rceiptRemark" => "测试", // 回单补充信息备注 当需要打印在回单信息中时上送
+                              // "purpose" => "", // 用途 当需要打印在回单信息中时上送
+                              // "summary" => "", // 摘要 当需要打印在回单信息中时上送
+        "submitTime" => "20220325085915", // 交易平台提交时间
+        "returnUrl" => "", // 支付成功后跳转连接
+        "callbackUrl" => "https://gyj1.dccnet.com.cn/epay/NotifyUrlServlet.php", // 回调通知地址
+                                                                                  // "agreementId"=>"",//合同号 境内外币必须上送,境外支付时上送,三单号不能都上送为空, Ascii字符集,不能有中文和全角字符
+                                                                                  // "invoiceId"=>"",//发票号 境外支付时上送,境内外币必须上送,Ascii字符集,不能有中文和全角字符
+                                                                                  // "manifestId"=>"",//报关单号 境外支付时上送
+                                                                                  // "agreementImageId"=>"",//影像批次号 境内外币必须上送,境外支付时上送
+                                                                                  // "enterpriseName"=>"",//付款方企业名称 境内外币支付时上送,保证支付、担保支付时上送付款人会员名称
+                                                                                  // "payRemark"=>"",//支付信息备注
+                                                                                  // "bakReserve1"=>"",//境外交易特殊标志 网金部e链通专用,境外交易特殊标志。
+                                                                                  // "bakReserve2"=>"",//备用字段2
+                                                                                  // "bakReserve3"=>"",//备用字段3
+                                                                                  // "partnerSeqOrigin"=>"201212221215202104",//原合作方支付流水号(待启用,退款时使用)
+                                                                                  // "sumPayamtOrigin"=>"",//原汇总支付金额(备用字段) 待启用
+                                                                                  // "reporterName"=>"",//填报人
+                                                                                  // "reporterContact"=>"",//填报人电话
+                                                                                  // "identityMode"=>"",//认证模式 1-免认证,0或空-其他;仅退款时使用,安心账户退款时必须上送1。使用免认证退款前需与工行签订相关协议,具体咨询客户经理。
+                                                                                  // "payerPhone" => "", // 付款人手机号 11位手机号,线下异步支付时上送、线下异步支付:将收方信息推送给付款人手机号,付款人通过网银、柜面等渠道支付后自动关联订单为成功。使用线下异步支付前需与工行签订相关协议,具体咨询客户经理。
+                                                                                  // "payerWalletId"=>"",//付款人钱包ID 待启用 数字人名币专用
+                                                                                  // "payerWalletName"=>"",//付款人钱包名称 待启用 数字人名币专用
+                                                                                  // "batchNo"=>"",//批次号 批量支付必送。
+                                                                                  // "repetCard"=>"",//财智卡重用标志 财智卡重用模式下使用,重用模式1,其他模式0
+
+        "goodsList" => array(
+            array(
+                "goodsSubId" => "0968", // 商品信息子序号
+                "goodsName" => "测试商品", // 商品名称
+                "payeeCompanyName" => "饮豆另增古技号午娇缝乓忘嘴易", // 收款人户名
+                "goodsNumber" => "1", // 商品数量
+                "goodsUnit" => "个", // 商品单位
+                "goodsAmt" => "10" // 商品金额 单位分
+            ),
+            array(
+                "goodsSubId" => "0967", // 商品信息子序号
+                "goodsName" => "测试商品2", // 商品名称
+                "payeeCompanyName" => "饮豆另增古技号午娇缝乓忘嘴易", // 收款人户名
+                "goodsNumber" => "1", // 商品数量
+                "goodsUnit" => "个", // 商品单位
+                "goodsAmt" => "10" // 商品金额 单位分
+            )
+        ),
+
+        "payeeList" => array(
+            array(
+                "mallCode" => "gyjtest001", // 收方商户号 支付时必输,退款时非必输
+                                             // "mccCode" => "", // 商户类别(MCC码)
+                                             // "mccName" => "", // MCC码名称
+                                             // "businessLicense" => "", // 商户证件编号
+                                             // "businessLicenseType" => "", // 商户证件类型
+                "mallName" => "工银聚测试001", // 担保支付、保证支付上送收方会员名称
+                "payeeCompanyName" => "总阵醉", // 收款人户名
+                "payeeSysflag" => "1", // 境内外标志 1:境内工行,2:境内他行,3:境外
+                                        // "payeeBankCode" => "", // 收方行联行号 当收方为境内他行(payeeSysflag = 2)时上送,退款时不用上送。联行行号请合作方自行查询或联系客户经理。
+                                        // "payeeHeadBankCode" => "", // 收方行总行行号 暂未启用
+                "payeeAccno" => "6222081202000000859", // 收款人账号 担保支付、保证支付时上送会员号绑定的结算账号
+                "payAmount" => "20" // 收款金额(单位:分)
+                                    // "rbankname" => "", // 收款行全称 当收方为境外时必须上送
+                                    // "payeeBankCountry" => "", // 收款行所在国家地区代码 当收方为境外时必须上送
+                                    // "payeeBankSign" => "", // 收款行标识 当收方为境外时必须上送
+                                    // "payeeCountry" => "", // 收款人常驻国家/地区 当收方为境外时必须上送
+                                    // "payeeAddress" => "", // 收款人地址 境外非加拿大时必须上送
+                                    // "racaddress1" => "", // 收款人地址(国家) 境外加拿大时必须上送
+                                    // "racaddress2" => "", // 收款人地址(省/州) 加拿大地区必输
+                                    // "racaddress3" => "", // 收款人地址(城市/城镇) 加拿大地区必输
+                                    // "racaddress4" => "", // 收款人地址(街/路) 加拿大地区必输
+                                    // "racpostcode" => "", // 收款人地址(邮编) 加拿大地区必输
+                                    // "agentbic" => "", // 收款行之代理行BIC码(境外支付才上送)
+                                    // "payeePhone" => "", // 收款人手机号
+                                    // "payeeOrgcode" => "", // 收款人组织机构代码 境内外币必须上送
+                                    // "receivableAmount" => "", // 应收金额(单位:分) 担保支付专用,指本订单orderCode收方应收金额。
+                                    // "payeeWalletId" => "", // 收款人钱包ID 支持数字人民币支付时上送
+                                    // "payeeWalletName" => "" // 收款人钱包名称 支持数字人民币支付时上送
+            )
+        )
+    )
+);
+
+$appId = "10000000000000225069";
+$privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDPUsAxVOs46x7u
+			mfJDcw98UfPhD+/ZoFcJs4WqhoqWeLbSNHDOTFc+7r5qsWoTPiuaJdcxQbIF0bOT
+			lvIXXFNivTZy35aAQUpzILsPIVd0+Z+pCR2mosZkl8qhRk+5mGtc3OlzGvkGGnxx
+			O2fKxtwIRdEUaAnqg/k+8kSN3k8p9sXbJD9+r3imIvkswuGTEoEk0ARg3YSmlSTT
+			P0UqksT5/MQN3rZYDlE0baPCB2pKcTDncsNhvgwjGmI7fMyBB1tV0jGfaGq1IcGy
+			fY5WUcIaiveYUq5Gta6+9J/B333hztCCWdtbM+YoI4UpMcV5B1056P3X1hPRbCri
+			Id5uI4sXAgMBAAECggEAdluBiSg3mSjxYbnVSphXUNvgZK4aeZ1F0y3/sxhX6gtE
+			I8D4XW3LqQvW/UYHjrDBZ6EOtvoQTa4n3KwhzSBSIl5uxSnL27BqdktLPxoDua4A
+			bhncKZNnu2nErklbnlLbiAo95A6T994LCQGnAWaBmt9wuzuh3ZY2Jq9cX7l4bDWD
+			3OaKLER56n8KgMM0hyUffm2+ediCVy0CfL/50gscWLQKrDx52uohtgORw4OiAzx/
+			YwgnnvSAgXQK21ChDcN5GQA5hZOeFMRY0vshSiA6/Zz8GvHfa4u/fEWVpZhsJrow
+			97Fk3he8NHc9M6mLIxKeGFLknpkNHgDZXqCD5vvVwQKBgQDauoRR8EAjU+jjZDUi
+			5qyPXSUELthqMbn4oHT33pgjSvQgoLfMtn95FHgFZJjEZfAnKgNSjFddPqB6vy0d
+			PLXRSyqG0b+ap+f2e2kuNnbngijCO9WWDdpU1k7e/Lvo5Ohgz0ODAxRqrst+QqmW
+			5C6nt+g0Il4ctdoUQ3oBeWTc8QKBgQDyprRvGqThXSsJ64wpiPUKieZ+562FFwZE
+			pBU1Sy3PS9EfroQa2/NlL5eiLPOOpmY5tUhIyNZzL7YE4n+iI/pZFpC23+gz4Qjt
+			sQnBGXQn+D7H181B119jUt/mYZwM3zAy9DJal4+q52LvmluT95/eTyhYD46vEGr3
+			0axSGcOIhwKBgDRx+Hw1IQvXeMXdJyiBKusNKG0CVn3QAols3973Dn+X30Vbg/af
+			45zCnaydXEvrLVQWrMlEQUZoV85WvJiAEBBo939wF4Mbs3DUUnn0MTp9aQx5kFL0
+			a19gK3UoIF5NVLKxv7xQJrsVwlE55rP5bn5kiFbHzs0PhYTKURy9YMPhAoGAVkeO
+			at8Xd4bQUeOuX+px7wBftAoe+e7Y7LlHTT7hGA+GWXSNRpuk7PrCOQkwxS1HtgdO
+			n4rCLgzt9Miwx29xihHq/Quani/LI/FKXZ32Xmv3rsl+E4ZIRaHnORzGBxGpKsUH
+			zoyLqiJCXJ4PKArpjnupBb7qZjc5QcsNMdg1XasCgYEAv6SkwgcRCVliGtphJVxg
+			xODkI+YOufnDGpD5OGECY0/O5FQ8u4PzvQ5FuOBElJzpbKmDqKqMX2UsgpvPzyT2
+			2JtW0Xpo/UiApIyuUuF5CxIvxfsD3VSjC7MrmqBCEU/iRdQv11alFRg4KOXZXst6
+			oclGtrgSiI3n3kJ2Xy3oO38=";
+$icbcPublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB";
+// 以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+$client = new DefaultIcbcClient($appId, $privateKey, IcbcConstants::$SIGN_TYPE_RSA2, '', '', $icbcPublicKey, '', '', '', '');
+$resp = $client->execute($request, '202202281278103429955', ''); // 执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+echo $resp;
+$respObj = json_decode($resp, true);
+if ($respObj["return_code"] == 0) { // sucess
+    $url = 'location:' . $respObj["redirectParam"];
+    header($url); // 跳转支付页面
+} else { // fail
+    echo $respObj["return_msg"];
+}
+
+// 正常返回示例:{"transOk":0,"orderCurr":"001","payMode":1,"return_msg":"","sumPayamt":"20","agreeName":"测试1121","serialNo":"","agreeCode":"0160200010060410006041000000000881","orderAmount":"20","redirectParam":"https://cpay3.dccnet.com.cn/corporpay/servlet/ICBCCPayBusinessServlet?unique_serialno=2022022508485493300000000001723002&signstr=8792F12FE32CCB3312A40477854BD4DC25ED8C51D8405A7FF784B98A9ABA7B1FD5CEBBF7FCE625D2","partnerSeq":"201212221215202102","return_code":0,"status":1}
+?>

+ 76 - 0
extend/icbc/example/MybankPayCpayCppreservationcancelV2Test.php

@@ -0,0 +1,76 @@
+<?php
+// 保留支付 工银e企付取消支付
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+
+$request = array(
+    "serviceUrl" => 'https://apipcs3.dccnet.com.cn/api/mybank/pay/cpay/cppreservationcancel/V2',
+    "method" => 'POST',
+    "isNeedEncrypt" => false,
+    "biz_content" => array(
+        "agreeCode" => "0160200238060410006041000000001490", // 合作方协议编号
+        "orderCode" => "204802090501", // 订单编号
+        "partnerSeq" => "203012223215202215", // 合作方交易流水号
+        "partnerSeqOrigin" => "20121892121523625506", // 原合作方支付流水号
+        "payAmount" => "2", // 本次取消金额(单位:分)
+        "orderCurr" => "1", // 交易币种
+                             // "payeeAccno" => "1202020409900065243", // 收款人账号
+                             // "payeeCompanyName" => "氮油货(饮豆)车巫褪辛乓忘嘴易", // 收款人户名
+                             // "payerAccno" => "", // 付款人是他行的情况必须上送,且上送账号必须和付款时账号一致
+                             // "payerAccname" => "", // 选输。付款人是他行的情况上送,上送则校验,不送不校验
+                             // "payerBankCode" => "", // 付款人是他行的情况必须上送,且上送账号必须和付款时账号一致
+        "submitTime" => "20220321163925", // 交易平台提交时间
+        "orderRemark" => "测试取消支付" // 订单备注
+                                  // "receiptRemark" => "", // 回单补充信息备注
+                                  // "purpose" => "", // 用途
+                                  // "summary" => "", // 摘要
+                                  // "operType" => "303", // 业务种类 担保/保证支付必输,303-取消支付 805-保证取消支付 809-缴存金释放
+                                  // "payerMemberNo" => "160290000612012", // 付款方会员编号,业务种类为取消支付时必须上送,operType为809时也要必输
+                                  // "payerMemberName" => "取消支付", // 付款方会员名称,业务种类为取消支付时必须上送
+                                  // "crmemberNo" => "", // 收款方会员编号,业务种类为取消支付/805时必须上送
+                                  // "crmemberName" => "", // 收款方会员名称,业务种类为取消支付/805时必须上送
+                                  // "enSummry" => "" // 英文备注
+    )
+);
+
+$appId = "10000000000000225069";
+$privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDPUsAxVOs46x7u
+			mfJDcw98UfPhD+/ZoFcJs4WqhoqWeLbSNHDOTFc+7r5qsWoTPiuaJdcxQbIF0bOT
+			lvIXXFNivTZy35aAQUpzILsPIVd0+Z+pCR2mosZkl8qhRk+5mGtc3OlzGvkGGnxx
+			O2fKxtwIRdEUaAnqg/k+8kSN3k8p9sXbJD9+r3imIvkswuGTEoEk0ARg3YSmlSTT
+			P0UqksT5/MQN3rZYDlE0baPCB2pKcTDncsNhvgwjGmI7fMyBB1tV0jGfaGq1IcGy
+			fY5WUcIaiveYUq5Gta6+9J/B333hztCCWdtbM+YoI4UpMcV5B1056P3X1hPRbCri
+			Id5uI4sXAgMBAAECggEAdluBiSg3mSjxYbnVSphXUNvgZK4aeZ1F0y3/sxhX6gtE
+			I8D4XW3LqQvW/UYHjrDBZ6EOtvoQTa4n3KwhzSBSIl5uxSnL27BqdktLPxoDua4A
+			bhncKZNnu2nErklbnlLbiAo95A6T994LCQGnAWaBmt9wuzuh3ZY2Jq9cX7l4bDWD
+			3OaKLER56n8KgMM0hyUffm2+ediCVy0CfL/50gscWLQKrDx52uohtgORw4OiAzx/
+			YwgnnvSAgXQK21ChDcN5GQA5hZOeFMRY0vshSiA6/Zz8GvHfa4u/fEWVpZhsJrow
+			97Fk3he8NHc9M6mLIxKeGFLknpkNHgDZXqCD5vvVwQKBgQDauoRR8EAjU+jjZDUi
+			5qyPXSUELthqMbn4oHT33pgjSvQgoLfMtn95FHgFZJjEZfAnKgNSjFddPqB6vy0d
+			PLXRSyqG0b+ap+f2e2kuNnbngijCO9WWDdpU1k7e/Lvo5Ohgz0ODAxRqrst+QqmW
+			5C6nt+g0Il4ctdoUQ3oBeWTc8QKBgQDyprRvGqThXSsJ64wpiPUKieZ+562FFwZE
+			pBU1Sy3PS9EfroQa2/NlL5eiLPOOpmY5tUhIyNZzL7YE4n+iI/pZFpC23+gz4Qjt
+			sQnBGXQn+D7H181B119jUt/mYZwM3zAy9DJal4+q52LvmluT95/eTyhYD46vEGr3
+			0axSGcOIhwKBgDRx+Hw1IQvXeMXdJyiBKusNKG0CVn3QAols3973Dn+X30Vbg/af
+			45zCnaydXEvrLVQWrMlEQUZoV85WvJiAEBBo939wF4Mbs3DUUnn0MTp9aQx5kFL0
+			a19gK3UoIF5NVLKxv7xQJrsVwlE55rP5bn5kiFbHzs0PhYTKURy9YMPhAoGAVkeO
+			at8Xd4bQUeOuX+px7wBftAoe+e7Y7LlHTT7hGA+GWXSNRpuk7PrCOQkwxS1HtgdO
+			n4rCLgzt9Miwx29xihHq/Quani/LI/FKXZ32Xmv3rsl+E4ZIRaHnORzGBxGpKsUH
+			zoyLqiJCXJ4PKArpjnupBb7qZjc5QcsNMdg1XasCgYEAv6SkwgcRCVliGtphJVxg
+			xODkI+YOufnDGpD5OGECY0/O5FQ8u4PzvQ5FuOBElJzpbKmDqKqMX2UsgpvPzyT2
+			2JtW0Xpo/UiApIyuUuF5CxIvxfsD3VSjC7MrmqBCEU/iRdQv11alFRg4KOXZXst6
+			oclGtrgSiI3n3kJ2Xy3oO38=";
+$icbcPublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB";
+// 以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+$client = new DefaultIcbcClient($appId, $privateKey, IcbcConstants::$SIGN_TYPE_RSA2, '', '', $icbcPublicKey, '', '', '', '');
+$resp = $client->execute($request, '2022020712345425111', ''); // 执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+echo $resp;
+$respObj = json_decode($resp, true);
+if ($respObj["return_code"] == 0) { // sucess
+    echo $respObj["return_msg"];
+} else { // fail
+    echo $respObj["return_msg"];
+}
+
+// 正常返回示例:{"orderCurr":"1","transOk":0,"return_msg":"调用CPAS解保留支付服务完成","serialNo":"20121892121523615501","agreeCode":"0160200238060410006041000000001490","errorNo":"","errorName":"","payAmount":"3","partnerSeq":"203012223215202211","return_code":"0","status":"1"}
+?>

+ 83 - 0
extend/icbc/example/MybankPayCpayCppreservationpayV2Test.php

@@ -0,0 +1,83 @@
+<?php
+// 保留支付 工银e企付确认支付
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+
+$request = array(
+    "serviceUrl" => 'https://apipcs3.dccnet.com.cn/api/mybank/pay/cpay/cppreservationpay/V2',
+    "method" => 'POST',
+    "isNeedEncrypt" => false,
+    "biz_content" => array(
+        "agreeCode" => "0160200238060410006041000000001490", // 合作方协议编号
+        "orderCode" => "204802090501", // 订单编号
+        "partnerSeq" => "201912223215202211", // 合作方交易流水号
+        "partnerSeqOrigin" => "20121892121523625506", // 原合作方支付流水号
+        "payAmount" => "1", // 本次解保留划拨金额(单位:分)
+        "orderCurr" => "1", // 交易币种
+        "payeeSysflag" => "1", // 收款方系统内外标志(1-境内工行,2-境内他行,3-境外)
+        "payeeAccno" => "6222081202000000859", // 收款人账号
+        "payeeCompanyName" => "总阵醉", // 收款人户名
+                                                  // "payeeBankCode" => "", // 收方行联行号(收款方系统内外标志为2时必输)
+        "submitTime" => "20220321163925", // 交易平台提交时间
+        "orderRemark" => "测试确认支付" // 订单备注
+                                  // "receiptRemark" => "", // 回单补充信息备注,当需要打印在回单信息中时上送
+                                  // "purpose" => "", // 用途,打印到回单的用途栏
+                                  // "summary" => "", // 摘要,打印到回单的摘要栏
+                                  // "operType" => "302", // 担保/保证业务种类(担保支付/保证支付必输 ,302-担保支付,803-保证支付(农夫专用模式),804-保证支付确认收货,810-保证支付缴存金支付)
+                                  // "payerMemberNo" => "aliiiii", // 付款方会员编号(担保支付必输/保证支付必输,会员必须开立保证支付会员)
+                                  // "payerMemberName" => "阿里ay", // 付款方会员名称(担保支付必输/保证支付必输)
+                                  // "realpayerAccno" => "", // 真实付方账号(仅限分行使用)
+                                  // "realpayerAccnoName" => "", // 真实付方户名(仅限分行使用)
+                                  // "realpayerBankName" => "", // 真实付方行名,非必输(保证支付新增,仅限分行使用)
+                                  // "realpayerBankNo" => "", // 真实付方行号,非必输(保证支付新增,仅限分行使用)
+                                  // "note" => "", // 附言
+                                  // "crmemberNo" => "T2O3", // 收款方会员编号(担保/保证支付必输)
+                                  // "crmemberName" => "三氧化二疼", // 收款方会员名称(担保/保证支付必输)
+                                  // "tradeName" => "王者币", // 商品名称(担保支付必输)
+                                  // "tradeNum" => "10", // 商品数量(担保支付必输)
+                                  // "tradeUnit" => "10", // 商品单位(担保支付必输)
+                                  // "fundDealDirect" => "" // 资金到账方向(1-自有资金 3-结算账号 803-保证支付(农夫专用模式),804-保证支付确认收货输入。不输入默认资金入到收方3-结算账号)
+    )
+);
+
+$appId = "10000000000000225069";
+$privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDPUsAxVOs46x7u
+			mfJDcw98UfPhD+/ZoFcJs4WqhoqWeLbSNHDOTFc+7r5qsWoTPiuaJdcxQbIF0bOT
+			lvIXXFNivTZy35aAQUpzILsPIVd0+Z+pCR2mosZkl8qhRk+5mGtc3OlzGvkGGnxx
+			O2fKxtwIRdEUaAnqg/k+8kSN3k8p9sXbJD9+r3imIvkswuGTEoEk0ARg3YSmlSTT
+			P0UqksT5/MQN3rZYDlE0baPCB2pKcTDncsNhvgwjGmI7fMyBB1tV0jGfaGq1IcGy
+			fY5WUcIaiveYUq5Gta6+9J/B333hztCCWdtbM+YoI4UpMcV5B1056P3X1hPRbCri
+			Id5uI4sXAgMBAAECggEAdluBiSg3mSjxYbnVSphXUNvgZK4aeZ1F0y3/sxhX6gtE
+			I8D4XW3LqQvW/UYHjrDBZ6EOtvoQTa4n3KwhzSBSIl5uxSnL27BqdktLPxoDua4A
+			bhncKZNnu2nErklbnlLbiAo95A6T994LCQGnAWaBmt9wuzuh3ZY2Jq9cX7l4bDWD
+			3OaKLER56n8KgMM0hyUffm2+ediCVy0CfL/50gscWLQKrDx52uohtgORw4OiAzx/
+			YwgnnvSAgXQK21ChDcN5GQA5hZOeFMRY0vshSiA6/Zz8GvHfa4u/fEWVpZhsJrow
+			97Fk3he8NHc9M6mLIxKeGFLknpkNHgDZXqCD5vvVwQKBgQDauoRR8EAjU+jjZDUi
+			5qyPXSUELthqMbn4oHT33pgjSvQgoLfMtn95FHgFZJjEZfAnKgNSjFddPqB6vy0d
+			PLXRSyqG0b+ap+f2e2kuNnbngijCO9WWDdpU1k7e/Lvo5Ohgz0ODAxRqrst+QqmW
+			5C6nt+g0Il4ctdoUQ3oBeWTc8QKBgQDyprRvGqThXSsJ64wpiPUKieZ+562FFwZE
+			pBU1Sy3PS9EfroQa2/NlL5eiLPOOpmY5tUhIyNZzL7YE4n+iI/pZFpC23+gz4Qjt
+			sQnBGXQn+D7H181B119jUt/mYZwM3zAy9DJal4+q52LvmluT95/eTyhYD46vEGr3
+			0axSGcOIhwKBgDRx+Hw1IQvXeMXdJyiBKusNKG0CVn3QAols3973Dn+X30Vbg/af
+			45zCnaydXEvrLVQWrMlEQUZoV85WvJiAEBBo939wF4Mbs3DUUnn0MTp9aQx5kFL0
+			a19gK3UoIF5NVLKxv7xQJrsVwlE55rP5bn5kiFbHzs0PhYTKURy9YMPhAoGAVkeO
+			at8Xd4bQUeOuX+px7wBftAoe+e7Y7LlHTT7hGA+GWXSNRpuk7PrCOQkwxS1HtgdO
+			n4rCLgzt9Miwx29xihHq/Quani/LI/FKXZ32Xmv3rsl+E4ZIRaHnORzGBxGpKsUH
+			zoyLqiJCXJ4PKArpjnupBb7qZjc5QcsNMdg1XasCgYEAv6SkwgcRCVliGtphJVxg
+			xODkI+YOufnDGpD5OGECY0/O5FQ8u4PzvQ5FuOBElJzpbKmDqKqMX2UsgpvPzyT2
+			2JtW0Xpo/UiApIyuUuF5CxIvxfsD3VSjC7MrmqBCEU/iRdQv11alFRg4KOXZXst6
+			oclGtrgSiI3n3kJ2Xy3oO38=";
+$icbcPublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB";
+// 以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+$client = new DefaultIcbcClient($appId, $privateKey, IcbcConstants::$SIGN_TYPE_RSA2, '', '', $icbcPublicKey, '', '', '', '');
+$resp = $client->execute($request, '2022020712345425111', ''); // 执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+echo $resp;
+$respObj = json_decode($resp, true);
+if ($respObj["return_code"] == 0) { // sucess
+    echo $respObj["return_msg"];
+} else { // fail
+    echo $respObj["return_msg"];
+}
+
+// 正常返回示例:{"orderCurr":"1","transOk":0,"return_msg":"调用CPAS解保留支付服务完成","serialNo":"20121892121523625503","agreeCode":"0160200238060410006041000000001490","errorNo":"","errorName":"","payAmount":"1","partnerSeq":"201912223215202209","return_code":"0","status":"1"}
+?>

+ 62 - 0
extend/icbc/example/OauthserviceGetoauthpresignV1Test.php

@@ -0,0 +1,62 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+                $request = array(
+                    "serviceUrl" => 'http://122.19.77.197:8081/api/oauthservice/getoauthpresign/V1',// 使用api接口地址
+                    "method" => 'POST',// 请求方法,只能是POST或GET
+                    "isNeedEncrypt" => false,// 是否需要加密
+                    "extraParams" => null,//其他参数,用数组类型array
+                    "biz_content" => array(//业务数据,用数组类型array
+                        "response_type"=>"code",
+                        "scope"=>"00006",
+                        "state"=>"3d6be0a4035d839573b04816624a415e",
+                        "timestamp"=>"2018-01-03 14:15:00",
+                        "redirect_url"=>"http://www.icbc.com/api",
+                    )
+
+                );
+                $client = new DefaultIcbcClient('10000000000000003909',//APP的编号,应用在API开放平台注册时生成
+                    'MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQCdi7NGXeRzDEndTZlRaSJOOmNtQzuPR/lr2BxHVKSmxLP9N2+LHI8hLZcps+qjNaMWnJTvUJ5L6sxxt4i0fsuf5rrifdQHmKZE21Pra5QxzrvXOvzD7iS58eONDNm5HZt5OEh0sA5WfwTtTa1Id3nU0LPqSOeYhKey8pAD+YPx0umoCIQJdDapSCjScCOWGGZ9qKTZ2QZzdMYVHVA3ghoNgfZ4uRw/y7aq6b2yrLy1PaleiAVZmzgnSfqQdlT9qF8PwMi9E4qiZVhtQ3+m6mevDsnml+XtdI+XK0NGULXGBc6tXfH2aeJDIXigdxP35ay+VjKAO3xaLq6onVHX6EwXAgMBAAECggEBAIIxBg9qW/Uu/INjMwXxyaW33p5WZwu6wMV8K7JOolomR09D1muxSB503Gxb/9Sr6IAxGWrCxm2aNSTsNI5kEcWsGFg+/07fuNdCIJF1r1uRqeztFCCd1b/Lwu225t1xOB/ugQHc05xrDxlDjaVLBmT1qxg68xg415SrmpOOSJk3E6Vs790VNqHK1KWpD6EpomZ8NrlJQQHX+ov9y81tIcpuk1LIqeyL9Ch7o3eVN4hgMr32d/OJu687XONXmLtSMmdIQyEJr/YDsemEFSCEJnBJ+v5excqxBuqDObjUdEEFUe/UNGBn227NnevmcqmRU404cbDwUXNCBZTbrbNFOOECgYEA1y6sPb3lb8v6OYdKc1lhfx3IWgDsShtbE7puma7oZSKoII5N2ufregV/x6xlLQH75LJmOaCOUZ8zpvu1BAKNo3aifIYIMEPoufrmSqEsoIaOjBCuym1DzUMRlAHA14C2diTB8QpsSLPjn2tl81fMSqQpQ02Pkyo1964Ybnt6u08CgYEAu24sf5NkZ/jCyClvr9RgSjuIYpHBqaiAHhcRL1tqi5jH08XQV3M1HpJMm26n6zl+M4SGNImOTt5si3WS+5ldzxgn2BjYUQohyXcg+7Xl1EwEV9nQ7H1LMZ7+KdiF3GkrmK6MAbtjLpFJwcEwjwlW0XwNCtWZP0kLqmt1Ot7eELkCgYEAr4hGPzNqN1GItGcVp5TxAHX2Gt2H40f/es9pK3rP3rhvt+b9waXQpEBaJTMPcbCdn8ibtUSw9ApPY1cPKc8/ZWoAUF4xzdWHwjbWp2hk9CnvnHh7bWvGlGmyrC7l9aXsseF4R7296Wy9MS22A9TKNNVHR7y8c0tKrNna2j1mN+cCgYEAip1MY31KAGrFAutCIjNakwu8LcnGBAcN2TMODov5HAx9nGzrTAF0A4wHA9yuaxQ19TvJVQl2KXXtqKXnchNWgVZIAVU+hZCMtEZaKk24D224uI/qJzvyZFxFdAUh2oQdLenIuW8wRrxEY/rQQriRcJPhwWV+1ILdEcgvBr7UVGECgYEAkR5ZoZplBfiGnX3S1CuNJM2UIIoorIKlT8lj6RUYdQoMNBXt7nkv3illXU88kUrW7IiQoKEnd5LiCKkYVNLWoobgZvURyF30jB5+AcSXNGxvCSMtMGcN1VGzeIBpz8JkCw+u9YnyvHvQoYrvd8RkV3EnLtJk5j5VoyJHTNeFb+w=',
+                    IcbcConstants::$SIGN_TYPE_RSA2,//签名类型,’CA’-工行颁发的证书认证;’RSA’表示RSAWithSha1;’RSA2’表示RSAWithSha256;缺省为RSA
+                    '',//字符集,仅支持UTF-8,可填空‘’
+                    '',//请求参数格式,仅支持json,可填空‘’
+                    'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB',//网关公钥,必填
+                    '',//AES加密密钥,缺省为空‘’
+                    '',//加密类型,当前仅支持AES加密,需要按照接口类型是否需要加密来设置,缺省为空‘’
+                    '',//当签名类型为CA时,通过该字段上送证书公钥,缺省为空
+                    '');//当签名类型为CA时,通过该字段上送证书密码,缺省为空
+                try{
+                    $resp = $client->execute($request,'212S3',''); //执行调用
+                    $respObj = json_decode($resp,true);
+
+                    $return_code = $respObj["return_code"];
+                    $return_msg = $respObj["return_msg"];
+
+                    if($respObj["return_code"] == 0){ //成功
+                        $state = $respObj["state"];
+                        $sign = $respObj["sign"];
+                        $appid = $respObj["oauth_info"]["app_id"];
+                        $response_type = $respObj["oauth_info"]["response_type"];
+                        $scope = $respObj["oauth_info"]["scope"];
+                        $msg_id = $respObj["oauth_info"]["msg_id"];
+                        $redirect_url = $respObj["oauth_info"]["redirect_url"];
+
+                        echo "return_code : $return_code <br> ";
+                        echo "return_msg : $return_msg <br> ";
+
+                        echo "state : $state <br> ";
+                        echo "sign : $sign <br> ";
+                        echo "appid : $appid <br> ";
+                        echo "response_type : $response_type <br> ";
+                        echo "scope : $scope <br> ";
+                        echo "msg_id : $msg_id <br> ";
+                        echo "redirect_url : $redirect_url <br> ";
+                    }else{//失败
+                        echo "return_code : $return_code <br> ";
+                        echo "return_msg : $return_msg <br> ";;
+                    }
+                }catch(Exception $e){//捕获异常
+                    echo 'Exception:'.$e->getMessage()."\n";
+                }
+
+?>

+ 54 - 0
extend/icbc/example/OauthserviceGettokenV1Test.php

@@ -0,0 +1,54 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+$request = array(
+    "serviceUrl" => 'http://122.19.77.197:8081/api/oauthservice/gettoken/V1',// 使用api接口地址
+    "method" => 'POST',// 请求方法,只能是POST或GET
+    "isNeedEncrypt" => false,// 是否需要加密
+    "extraParams" => null,//其他参数,用数组类型array
+    "biz_content" => array(//业务数据,用数组类型array
+        "auth_code"=>"",
+        "grant_type"=>"authorization_code",
+        "timestamp"=>"2017-12-25 09:40:00",
+    )
+
+);
+$client = new DefaultIcbcClient('10000000000000003909',//APP的编号,应用在API开放平台注册时生成
+    'MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQCdi7NGXeRzDEndTZlRaSJOOmNtQzuPR/lr2BxHVKSmxLP9N2+LHI8hLZcps+qjNaMWnJTvUJ5L6sxxt4i0fsuf5rrifdQHmKZE21Pra5QxzrvXOvzD7iS58eONDNm5HZt5OEh0sA5WfwTtTa1Id3nU0LPqSOeYhKey8pAD+YPx0umoCIQJdDapSCjScCOWGGZ9qKTZ2QZzdMYVHVA3ghoNgfZ4uRw/y7aq6b2yrLy1PaleiAVZmzgnSfqQdlT9qF8PwMi9E4qiZVhtQ3+m6mevDsnml+XtdI+XK0NGULXGBc6tXfH2aeJDIXigdxP35ay+VjKAO3xaLq6onVHX6EwXAgMBAAECggEBAIIxBg9qW/Uu/INjMwXxyaW33p5WZwu6wMV8K7JOolomR09D1muxSB503Gxb/9Sr6IAxGWrCxm2aNSTsNI5kEcWsGFg+/07fuNdCIJF1r1uRqeztFCCd1b/Lwu225t1xOB/ugQHc05xrDxlDjaVLBmT1qxg68xg415SrmpOOSJk3E6Vs790VNqHK1KWpD6EpomZ8NrlJQQHX+ov9y81tIcpuk1LIqeyL9Ch7o3eVN4hgMr32d/OJu687XONXmLtSMmdIQyEJr/YDsemEFSCEJnBJ+v5excqxBuqDObjUdEEFUe/UNGBn227NnevmcqmRU404cbDwUXNCBZTbrbNFOOECgYEA1y6sPb3lb8v6OYdKc1lhfx3IWgDsShtbE7puma7oZSKoII5N2ufregV/x6xlLQH75LJmOaCOUZ8zpvu1BAKNo3aifIYIMEPoufrmSqEsoIaOjBCuym1DzUMRlAHA14C2diTB8QpsSLPjn2tl81fMSqQpQ02Pkyo1964Ybnt6u08CgYEAu24sf5NkZ/jCyClvr9RgSjuIYpHBqaiAHhcRL1tqi5jH08XQV3M1HpJMm26n6zl+M4SGNImOTt5si3WS+5ldzxgn2BjYUQohyXcg+7Xl1EwEV9nQ7H1LMZ7+KdiF3GkrmK6MAbtjLpFJwcEwjwlW0XwNCtWZP0kLqmt1Ot7eELkCgYEAr4hGPzNqN1GItGcVp5TxAHX2Gt2H40f/es9pK3rP3rhvt+b9waXQpEBaJTMPcbCdn8ibtUSw9ApPY1cPKc8/ZWoAUF4xzdWHwjbWp2hk9CnvnHh7bWvGlGmyrC7l9aXsseF4R7296Wy9MS22A9TKNNVHR7y8c0tKrNna2j1mN+cCgYEAip1MY31KAGrFAutCIjNakwu8LcnGBAcN2TMODov5HAx9nGzrTAF0A4wHA9yuaxQ19TvJVQl2KXXtqKXnchNWgVZIAVU+hZCMtEZaKk24D224uI/qJzvyZFxFdAUh2oQdLenIuW8wRrxEY/rQQriRcJPhwWV+1ILdEcgvBr7UVGECgYEAkR5ZoZplBfiGnX3S1CuNJM2UIIoorIKlT8lj6RUYdQoMNBXt7nkv3illXU88kUrW7IiQoKEnd5LiCKkYVNLWoobgZvURyF30jB5+AcSXNGxvCSMtMGcN1VGzeIBpz8JkCw+u9YnyvHvQoYrvd8RkV3EnLtJk5j5VoyJHTNeFb+w=',
+    IcbcConstants::$SIGN_TYPE_RSA2,//签名类型,’CA’-工行颁发的证书认证;’RSA’表示RSAWithSha1;’RSA2’表示RSAWithSha256;缺省为RSA
+    '',//字符集,仅支持UTF-8,可填空‘’
+    '',//请求参数格式,仅支持json,可填空‘’
+    'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB',//网关公钥,必填
+    '',//AES加密密钥,缺省为空‘’
+    '',//加密类型,当前仅支持AES加密,需要按照接口类型是否需要加密来设置,缺省为空‘’
+    '',//当签名类型为CA时,通过该字段上送证书公钥,缺省为空
+    '');//当签名类型为CA时,通过该字段上送证书密码,缺省为空
+try{
+    $resp = $client->execute($request,'11',''); //执行调用
+    $respObj = json_decode($resp,true);
+
+    $return_code = $respObj["return_code"];
+    $return_msg = $respObj["return_msg"];
+    if($respObj["return_code"] == 0){ //成功
+        $accesstoken = $respObj["access_token"];
+        $expiresin = $respObj["expires_in"];
+        $reftoken = $respObj["refresh_token"];
+        $openid = $respObj["open_id"];
+        $unionid = $respObj["union_id"];
+
+        echo "return_code : $return_code <br> ";
+        echo "return_msg : $return_msg <br> ";
+        echo "access_token : $accesstoken <br> ";
+        echo "expires_in : $expiresin <br> ";
+        echo "refresh_token : $reftoken <br> ";
+        echo "open_id : $openid <br> ";
+        echo "union_id : $unionid <br> ";
+    }else{//失败
+        echo "return_code : $return_code <br> ";
+        echo "return_msg : $return_msg <br> ";;
+    }
+}catch(Exception $e){//捕获异常
+    echo 'Exception:'.$e->getMessage()."\n";
+}
+
+?>

+ 51 - 0
extend/icbc/example/OauthserviceRefreshtokenV1Test.php

@@ -0,0 +1,51 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+$request = array(
+    "serviceUrl" => 'http://122.19.77.197:8081/api/oauthservice/refreshtoken/V1',// 使用api接口地址
+    "method" => 'POST',// 请求方法,只能是POST或GET
+    "isNeedEncrypt" => false,// 是否需要加密
+    "extraParams" => null,//其他参数,用数组类型array
+    "biz_content" => array(//业务数据,用数组类型array
+        "refresh_token"=>"",
+        "grant_type"=>"refresh_token",
+        "timestamp"=>"2018-01-02 14:04:00",
+    )
+
+);
+$client = new DefaultIcbcClient('10000000000000003909',//APP的编号,应用在API开放平台注册时生成
+    'MIIEwAIBADANBgkqhkiG9w0BAQEFAASCBKowggSmAgEAAoIBAQCdi7NGXeRzDEndTZlRaSJOOmNtQzuPR/lr2BxHVKSmxLP9N2+LHI8hLZcps+qjNaMWnJTvUJ5L6sxxt4i0fsuf5rrifdQHmKZE21Pra5QxzrvXOvzD7iS58eONDNm5HZt5OEh0sA5WfwTtTa1Id3nU0LPqSOeYhKey8pAD+YPx0umoCIQJdDapSCjScCOWGGZ9qKTZ2QZzdMYVHVA3ghoNgfZ4uRw/y7aq6b2yrLy1PaleiAVZmzgnSfqQdlT9qF8PwMi9E4qiZVhtQ3+m6mevDsnml+XtdI+XK0NGULXGBc6tXfH2aeJDIXigdxP35ay+VjKAO3xaLq6onVHX6EwXAgMBAAECggEBAIIxBg9qW/Uu/INjMwXxyaW33p5WZwu6wMV8K7JOolomR09D1muxSB503Gxb/9Sr6IAxGWrCxm2aNSTsNI5kEcWsGFg+/07fuNdCIJF1r1uRqeztFCCd1b/Lwu225t1xOB/ugQHc05xrDxlDjaVLBmT1qxg68xg415SrmpOOSJk3E6Vs790VNqHK1KWpD6EpomZ8NrlJQQHX+ov9y81tIcpuk1LIqeyL9Ch7o3eVN4hgMr32d/OJu687XONXmLtSMmdIQyEJr/YDsemEFSCEJnBJ+v5excqxBuqDObjUdEEFUe/UNGBn227NnevmcqmRU404cbDwUXNCBZTbrbNFOOECgYEA1y6sPb3lb8v6OYdKc1lhfx3IWgDsShtbE7puma7oZSKoII5N2ufregV/x6xlLQH75LJmOaCOUZ8zpvu1BAKNo3aifIYIMEPoufrmSqEsoIaOjBCuym1DzUMRlAHA14C2diTB8QpsSLPjn2tl81fMSqQpQ02Pkyo1964Ybnt6u08CgYEAu24sf5NkZ/jCyClvr9RgSjuIYpHBqaiAHhcRL1tqi5jH08XQV3M1HpJMm26n6zl+M4SGNImOTt5si3WS+5ldzxgn2BjYUQohyXcg+7Xl1EwEV9nQ7H1LMZ7+KdiF3GkrmK6MAbtjLpFJwcEwjwlW0XwNCtWZP0kLqmt1Ot7eELkCgYEAr4hGPzNqN1GItGcVp5TxAHX2Gt2H40f/es9pK3rP3rhvt+b9waXQpEBaJTMPcbCdn8ibtUSw9ApPY1cPKc8/ZWoAUF4xzdWHwjbWp2hk9CnvnHh7bWvGlGmyrC7l9aXsseF4R7296Wy9MS22A9TKNNVHR7y8c0tKrNna2j1mN+cCgYEAip1MY31KAGrFAutCIjNakwu8LcnGBAcN2TMODov5HAx9nGzrTAF0A4wHA9yuaxQ19TvJVQl2KXXtqKXnchNWgVZIAVU+hZCMtEZaKk24D224uI/qJzvyZFxFdAUh2oQdLenIuW8wRrxEY/rQQriRcJPhwWV+1ILdEcgvBr7UVGECgYEAkR5ZoZplBfiGnX3S1CuNJM2UIIoorIKlT8lj6RUYdQoMNBXt7nkv3illXU88kUrW7IiQoKEnd5LiCKkYVNLWoobgZvURyF30jB5+AcSXNGxvCSMtMGcN1VGzeIBpz8JkCw+u9YnyvHvQoYrvd8RkV3EnLtJk5j5VoyJHTNeFb+w=',
+    IcbcConstants::$SIGN_TYPE_RSA2,//签名类型,’CA’-工行颁发的证书认证;’RSA’表示RSAWithSha1;’RSA2’表示RSAWithSha256;缺省为RSA
+    '',//字符集,仅支持UTF-8,可填空‘’
+    '',//请求参数格式,仅支持json,可填空‘’
+    'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB',//网关公钥,必填
+    '',//AES加密密钥,缺省为空‘’
+    '',//加密类型,当前仅支持AES加密,需要按照接口类型是否需要加密来设置,缺省为空‘’
+    '',//当签名类型为CA时,通过该字段上送证书公钥,缺省为空
+    '');//当签名类型为CA时,通过该字段上送证书密码,缺省为空
+try{
+    $resp = $client->execute($request,'112',''); //执行调用
+    $respObj = json_decode($resp,true);
+
+    $return_code = $respObj["return_code"];
+    $return_msg = $respObj["return_msg"];
+    print_r($respObj);
+    if($respObj["return_code"] == 0){ //成功
+        $accesstoken = $respObj["access_token"];
+        $expiresin = $respObj["expires_in"];
+        $reftoken = $respObj["refresh_token"];
+
+        echo "return_code : $return_code <br> ";
+        echo "return_msg : $return_msg <br> ";
+        echo "access_token : $accesstoken <br> ";
+        echo "expires_in : $expiresin <br> ";
+        echo "refresh_token : $reftoken <br> ";
+    }else{//失败
+        echo "return_code : $return_code <br> ";
+        echo "return_msg : $return_msg <br> ";
+    }
+}catch(Exception $e){//捕获异常
+    echo 'Exception:'.$e->getMessage()."\n";
+}
+
+?>

+ 66 - 0
extend/icbc/example/PreciousmetalGoldExchangeV1test.php

@@ -0,0 +1,66 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+	          $request = array(
+          		"serviceUrl" => 'http://122.19.77.226:8081/api/preciousmetal/gold/V1/exchange',// 使用api接口地址
+          		"method" => 'POST',// 请求方法,只能是POST或GET
+          		"isNeedEncrypt" => false,// 是否需要加密
+          		"extraParams" => null,//其他参数,用数组类型array
+          		"biz_content" => array(//业务数据,用数组类型array
+								"acc_amount"=>10000,
+								"acc_fee"=>0,
+								"acc_fee_rate"=>0,
+								"acc_lock_price_ts"=>"2016-10-28 17:15:10.762126",
+								"acc_price"=>10000,
+								"acc_quantity"=>1000000,
+								"amount"=>10000,
+								"buyer_cert_no"=>"445287119960909120",
+								"buyer_cert_type"=>0,
+								"buyer_mobile_no"=>"18818888888",
+								"buyer_name"=>"张三",
+								"cust_no"=>"ABC123",
+								"invoice_address"=>"广州某街",
+								"invoice_mobile_no"=>"18815554444",
+								"invoice_name"=>"王五",
+								"invoice_title"=>"I523",
+								"phy_amount"=>10000,
+								"phy_amount_gap"=>0,
+								"phy_num"=>100,
+								"phy_pptxnno"=>10020,
+								"prod_sell_price"=>1,
+								"prod_single_price"=>10000,
+								"recipient_address"=>"广州天河",
+								"recipient_cert_no"=>"445287132320909120",
+								"recipient_cert_type"=>0,
+								"recipient_mobile_no"=>"177712177727",
+								"recipient_name"=>"李四",
+								"recipient_postcode"=>"512939",
+								"trx_seq_no"=>"123456789",
+								"trx_service_code"=>"100000005",
+								"trx_ts"=>"2016-10-28 17:15:12.762126"
+								)
+
+          	);
+            $client = new DefaultIcbcClient('10000000000000002166',//APP的编号,应用在API开放平台注册时生成
+            	                             'MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJ42tqQomxbLvuZTVKO4bBLwGp8SzRMiJ7jX9JNlS4sqmZzs9Z4lw/SSxf4dF9JJUErpNReUjzLp0As2FiuV8BALh6GYmiHGTWx7+v3HuWH9LiZNI00Ia+1HfpkJ8Sao8Ny5h1Pu49LayVleeLy496+phRE81dqlqaSHH8cKWnK1AgMBAAECgYBxod5f3QI2xzNe/e7GgAivOWAFbF16JofdDM4Opyww0fHucYqfgYRSPrCRqJeZYyqWAxUs0HhhGulfhAM8Xr5BxY5//x4HDqE2rOF7mrc/xkWNL+S9X5U0T8cdA3fnF/rYAUnJjKmeliuD2gcf5xYJENcnb8p/GQbiwIjoHDqe6QJBANzcevl9ke4cx1fa3ZcxVS3A1eHVtp573M/lo+8pRJlrf96ghFB54CzumsC0F7YfojDgCAN2egTqCGqNOuPJWWcCQQC3YqT5xlMlGk6Agav5Y6E5blx/AKJB8DeZSbjXLvytpXOASzoNR/A40uQXanXVqNU68l96FSq415AmTHi9OdWDAkA0el7t8Rw/i68B/Qsx5ZLrsCoh4vnlZmDtNQ9iwFeAbL6RU2qdBJhzlK5Io4IO0C1ll5XP3NLZYBJn3u7jOPB5AkEAiM/qHoHsM8j9effD0kmW1V7VWNajNqg9AnoykS73yaCem78DrzbVK7+B9UoyYNUVR2Xc/xpdhgsj+r6gcSN9ewJANSmxYF34601mteAnZwhyGKCJomiuSMNTr52i2uTspdZi0zqaerI1EGD3dAENxRebyPmPFxhwCcCbzF2gNUr1fw==',//APP应用私钥
+            	                             IcbcConstants::$SIGN_TYPE_RSA,//签名类型,’CA’-工行颁发的证书认证;’RSA’表示RSAWithSha1;’RSA2’表示RSAWithSha256;缺省为RSA
+                                           '',//字符集,仅支持UTF-8,可填空‘’
+                                           '',//请求参数格式,仅支持json,可填空‘’
+            	                             'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB',//网关公钥,必填
+			                                     '',//AES加密密钥,缺省为空‘’
+			                                     '',//加密类型,当前仅支持AES加密,需要按照接口类型是否需要加密来设置,缺省为空‘’
+			                                 '',//当签名类型为CA时,通过该字段上送证书公钥,缺省为空
+			                                 '');//当签名类型为CA时,通过该字段上送证书密码,缺省为空
+            try{
+              $resp = $client->execute($request,'msgId',''); //执行调用
+              $respObj = json_decode($resp,true);
+              if($respObj["return_code"] == 0){ //成功
+                 echo $respObj["return_msg"];
+              }else{//失败
+                 echo $respObj["return_msg"];
+              }
+            }catch(Exception $e){//捕获异常
+              echo 'Exception:'.$e->getMessage()."\n";
+            }
+
+?>

+ 48 - 0
extend/icbc/example/PreciousmetalGoldRedeemV1test_CA.php

@@ -0,0 +1,48 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+	          $request = array(
+          		"serviceUrl" => 'http://122.19.77.226:8081/api/preciousmetal/gold/V1/redeem',
+          		"method" => 'GET',
+          		"isNeedEncrypt" => false,
+                "extraParams" => null,
+          		"biz_content" => array(
+                             "cert_no" => "12315",
+                             "cert_type" => 0,
+                             "cust_name" => "娃哈哈",
+                             "cust_no" => "guorui",
+                             "fee" => 120,
+                             "fee_rate" => 5000,
+                             "lock_price_ts" => "2016-11-17 18:19:12.762126",
+                             "mobile_no" => "1313331111",
+                             "redemption_amt" => 23860,
+                             "redemption_price" => 238600000,
+                             "redemption_quantity" => 10000,
+                             "trx_req_ts" => "2016-11-17 18:15:12.762126",
+                             "trx_seq_no" => "5231545"
+          						 )
+
+          	);
+            $client = new DefaultIcbcClient('10000000000000002166',
+            	                             'AmEvvpDym7qi4Tmw/gO9v1/Ku8R3Qt46t16I6FA/CPwLopau7fNKcUxYCL9pqjb76phR4NPBr+Fa9O3PqZ5bJm7/io3hwqnmtu9KHs57HO6HOXycjQi9ZH4fqVZJbPtXQpGGXZhX1VB5teIcoKf5PxWgahBH2p7GnBZA7VgpO/1z2ZkxbqR1yUNR+gq2MpJQvMSab07+Vgz9l9dYDsl1UX6RqsAN7IgpZoZhlSpmxvt04i/um78hrGVuf0Y/KqACxZbyS8rz2nE8m1R1xys8wziEu18hKVZtl0v3yKTjvAqDuwV2aFXjumfkcsQTHLnPk0X/BdTpNSDDgDkw1p9nQhYrPTYUe05U3WyZBBDLmeJ/Niuj3RrPkc6z96TmLRdL/gzHoedeMtcjWHFbZLh8vGi9FLzKaRQo2/AbYqT2DWAatw0nDePsQk+9Av7ZS+7vZ51h5cv16ZP8lge5z1DeAYxMjV3RB5He5u8NPgehPd26bZQv7PUmyn2Br3SS6SAZcqvrN4dcLwV+Xb6QnjHEV5eUeEKky6qy/EwUC6DPJi/PSFPkUbzDR3KlJGw35f0oQbulJ3NnYv2UQ+wf3WhBQu82uGw7MKJrQDjE4bv018ycI47tFsW1kTqVNs1LNpafRcZbizfEphEbynz0UvQiL0YORUqT5RaS1pSYvCo1qXpCNILmW4bQ0Hz3W8eEDYpjSmBWnQTOpDHVfm0rXFGMsJxJRfGiSZh5gSQTbgEsTCa/Wauzx+tgL39EYYKVQn+1wQHQEZ1NvbPbzB6KHOG9XahzUcgMGb51t6zz+hX8y712lfE=',
+            	                             IcbcConstants::$SIGN_TYPE_CA,
+            	                             '',
+            	                             '',
+            	                             'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB',
+			                                 '',
+			                                 '',
+			                                 'MIIDCTCCAfGgAwIBAgIKbaHKEE0tAAAVmTANBgkqhkiG9w0BAQUFADA3MRowGAYDVQQDExFjb3JiYW5rMTAzIHNkYyBDTjEZMBcGA1UEChMQY29yYmFuazQzLmNvbS5jbjAeFw0xMzA2MDEwNjE5NTFaFw0xNDA2MDEwNjE5NTFaMEAxFDASBgNVBAMTC0xMTEwuZS4wMjAwMQ0wCwYDVQQLEwQwMjAwMRkwFwYDVQQKExBjb3JiYW5rNDMuY29tLmNuMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDUebVQUS8jnDERJopOwNgRlKEafEQUryj9EV64TUsaR850v/3KnctPRJ09GCqeucvbbOXlHz/RlwJSVWqryCTOldOUv1F58KQ0C59sY/dhh+W57fLIQKO90Sd344o/fPiytqmGtBc2m+DE/3L6morgC8m05Ygm16MkIk89Nz184wIDAQABo4GRMIGOMB8GA1UdIwQYMBaAFKnyXV7yfyOkd7D4zZtPLyquqLWdMEwGA1UdHwRFMEMwQaA/oD2kOzA5MQ0wCwYDVQQDEwRjcmw2MQ0wCwYDVQQLEwRjY3JsMRkwFwYDVQQKExBjb3JiYW5rNDMuY29tLmNuMB0GA1UdDgQWBBTkDBRsd9NghIrtNaUe6gSxZQ9CfzANBgkqhkiG9w0BAQUFAAOCAQEAXTWymvrTDMgV9LK7Ps6o52mlZIPmp3n7hmZttgJR/6KmZ/uCChPqHd9Ixw3DBnzHvoxmgtCKNVNc+iYQ4ks8cZgQoQ3uKT9bYinRCgECOv0Hiv7Q63DHJB46QamYcPc9dmmKAAOMd5AtnKI8QBRG3kxEmD6DPAcyx7hZ9Iw0MVwu4J1RfByJ1kM/bnhFpGwTma+5kxQlP+8Zurx4Cow/TUIj+kiLa/1ZmKXok7XOUr1UTFJhIqe0v3w2ekidchVML/t6n6Yw8Q5UCAbvKP4iHWdxeEGYsn+/a38oqCqIya66d5FCUqcOXXdRTdwdaSg6IGA4X6//O9TCvle1SCn7LQ==',
+			                                 '12345678');
+            try{
+              $resp = $client->execute($request,'msgId',''); //执行调用
+              $respObj = json_decode($resp,true);
+              if($respObj["return_code"] == 0){ //成功
+                 echo $respObj["return_msg"];
+              }else{//失败
+                 echo $respObj["return_msg"];
+              }
+            }catch(Exception $e){//捕获异常
+              echo 'Exception:'.$e->getMessage()."\n";
+            }
+
+?>

+ 47 - 0
extend/icbc/example/PreciousmetalGoldRedeemV1test_RSA.php

@@ -0,0 +1,47 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+	          $request = array(
+          		"serviceUrl" => 'http://122.19.77.226:8081/api/preciousmetal/gold/V1/redeem',
+          		"method" => 'GET',
+          		"isNeedEncrypt" => false,
+                "extraParams" => null,
+          		"biz_content" => array(
+                             "cert_no" => "12315",
+                             "cert_type" => 0,
+                             "cust_name" => "娃哈哈",
+                             "cust_no" => "guorui",
+                             "fee" => 120,
+                             "fee_rate" => 5000,
+                             "lock_price_ts" => "2016-11-17 18:19:12.762126",
+                             "mobile_no" => "1313331111",
+                             "redemption_amt" => 23860,
+                             "redemption_price" => 238600000,
+                             "redemption_quantity" => 10000,
+                             "trx_req_ts" => "2016-11-17 18:15:12.762126",
+                             "trx_seq_no" => "5231545"
+          						 )
+
+          	);
+            $client = new DefaultIcbcClient('10000000000000002166',
+            	                             'MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCgrIlUz6J2bMAqpFCDuosPD0IFueMhj7LBPkalvSk18B/K5k47AZ/w1/4m5mngq8zCfD5/dSdPLlfK3AF7GwP7zzVNHDci8axyg3qG6Wzk7BRFIlnt6xxvb2QL8V/yfvW3+eFp4nF8b27VCJm0KXVX6AWi9XPhBi7Nem9jsF6JdWRjfD72ulOUadcIZ3N+M2S57jG0w+pbvZq/h4NWconzLy/ZASUqvtaT8lrqu64co92PBfMtO0xDW22J32LVYbtnnU6PCWxe9YAdXccwJ6ruqearNBu83a6fvQFtceXclwj/+//8ySKazkrzHopBbMZjIkW+0dYUR23qgLCqDhTBAgMBAAECggEABYapmn8hqU0INu87zawGyFfP/35rL2ZP0ZGgwGaHGlHN5h6RpjniFFh5Z0EZdx6xhibbx2pyFakUX+e9LUy6kFiKDsLfqpYBRlb7SdSRaDYuZEpQKXyil7qPCFIe6KoxLUis1gVxvcPfXfhTwPyECqfyOa6Tc7PQvERvvE/+kF+pIFM1f1vYl15LPYmTbtsl7/cDFRBhgSMe7sfQOx7yopomQW/VgjITFmMFNZemw5yv7Fm5PcaUm9a7DrPPp5C+LiWhlT111AZZ94tCrBJq1YdisCnU7VOs6ePeHYjVNTEO4Tc4mwSrdiRl9ehQCwSKzEP0OS7JwOkGZdGQSSOcmQKBgQDq3dAoqHsezZ6jljF4nt/Y23Aei1M9bWmlnbCmNNvIhXq+5ob/GV4d0cLMOPA2fUvGS8cfc2nhAhEtaBJbqn8n7qKb5e0KojbQmIfuSv1tfj7b/XMnrvfUZAJD4VadmGsPe2elqSO6nkYg3xLr1NxYFdeEGTEKvAMiZjQlI6+FwwKBgQCvIa/4B61hYzNk+//OwYDi+A2EDDLTX9Uy7bygYCYdtAhj0cHSPtsCwfJFtY8BIgTHaiDjru9b/P4NiqV2iuzTp8tA/FtonD3kOt8iy5mrKNckK8OOKKIiSi2ttu440TPquNAdMhwm7chvx3bXD5e4fSK44tgc7TCcg583ZiAfKwKBgE8r7puGD9rWXX+vhYWvqK2layogtTKjy1U0zvN4Jg52UGZBt4gOuRc8Ono1R2RW4FA8Ayeq9CoRVFEGIAoecza2zsHWxA0tmWS/xjKhvMRIJlBqI4NhC9Hg1JKlR1lgo9ZYNxw05AJokCNMj0hIPO7Ejh3NkCaaMkRKR5GtceGZAoGAAhvAt5a4EqUUGFIkWUPhHlpoJz/SWNMdiPhtveyKaO8i7ri2waY6EsVs+kPeTeAv+IqhjLwta4kXMeiKZ2vyv/WUL9sZ6p9+60F+MDgNSI88T9YrC4oXsZv9AstiANMb8eZ5svBIgHt6X0YieyJX7EOtaFZqzaZZYHkBMLSNDHMCgYB5MVgVz7hDgCugRlM7pidfqU90zZgubhuASJC+KWNu/2NNj+SVJBZ4Ffx4sFuerq+fj0zQ+smd9fwiOge2RYYibpemgVyGqVJE8zAfYMCwuqsnLaG5dr1DAS0DbXcnXPB+Nv8Xj1TAMhaboZVeKDjNy0T2eP0FHuaBENog/WuzlQ==',
+            	                             IcbcConstants::$SIGN_TYPE_RSA,
+            	                             '',
+            	                             '',
+            	                             'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB',
+			                                 '',
+			                                 '',
+			                                 '',
+			                                 '');
+            try{
+              $resp = $client->execute($request,'msgId',''); //执行调用
+              $respObj = json_decode($resp,true);
+              if($respObj["return_code"] == 0){ //成功
+                 echo $respObj["return_msg"];
+              }else{//失败
+                 echo $respObj["return_msg"];
+              }
+            }catch(Exception $e){//捕获异常
+              echo 'Exception:'.$e->getMessage()."\n";
+            }
+?>

+ 44 - 0
extend/icbc/example/QrcodeGenerateTest.php

@@ -0,0 +1,44 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+	          $request = array(
+          		"serviceUrl" => 'https://ip:port/api/qrcode/V2/generate',
+          		"method" => 'POST',
+          		"isNeedEncrypt" => false,
+          		"biz_content" => array(
+								"mer_id"=>"020002040095",
+								"store_code"=>"02000015087",
+								"out_trade_no"=>"ZHL777O15002039",
+								"order_amt"=>"7370",
+								"trade_date"=>"20171210",
+								"trade_time"=>"160346",
+								"attach"=>"abcdefg",//该字段非必输项
+								"pay_expire"=>"1200",
+								"notify_url"=>"127.0.0.1",//该字段非必输项
+								"tporder_create_ip"=>"127.0.0.1",
+								"sp_flag"=>"0",//该字段非必输项
+								"notify_flag"=>"1"
+								)
+
+          	);
+          	//以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+            $client = new DefaultIcbcClient('10000000000000002156',
+            	                             'MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIJBzZNaiobplRUgtJ4OzmUvZRK99ih/fUyDBOoFLtpJJCCRzp8T6V11YNlE7Xg5dt+EG7byQs2NImqg0eWEj/mBdZ7UmlAct7BNw2hyF2h4R5OEfXyjoH3wqGjKJayhaHTvLM1DYy/mDFBb0ShJYI1QMScQJZhsOhMMFhrrZwIZAgMBAAECgYAA2kdrOIOBoJPOQJmOE1C8jtPdjIrI9xSt5Imqsn/9A8+NuwacOfgkGXmZ0n6vc8jYa7f2uZ1AVTUtd4IIO5bpq8s0Tw2BfWALYwr/JdUuNKSjHVQsh/Do+wl8BgOgB4RqsNXWNGtoMC8lHKHmrVcpyJMfDc3cP07NZ1wG2zB0lQJBAM+dNZv2L/Z4RzvQcoVZEthYavZ4pkFoWGYC4jwc5G8um76zoQyrtxWYrtTP0GS+xFFX2dEuiGXxwzmSQJrPdrMCQQCgnUXcQe/if2c6TFt4x9v+6L0pmFClYyiOi9RuBSz1sHmPouuc/YYvuxAOdOzu3yzOkeo7b5KcCKITTWvKI+oDAkA5dl6vIw2VXycAJCp+Q/AWVyqLu0rw0Yud+HBbiPek2jabKqaJlkFfRdol5rrcF3zIstMDtahk5uxM0/DzqDZHAkBGnZ8vfdYIUVeDbDrzWXvCEXXJqewbKwOT2KqnTKM9yj9IBatttJGgvrAKiyH4zCqZD9JaG23sKGeJ8QopL60dAkEAtc4tlKoj3XZzRUXboqz0EhkgkjzDj50zpCD1sJKZ2EZH+A/7tXwPug+RnuSmKpM2uv3msqw3prdS3K4En8+rog==',
+            	                             IcbcConstants::$SIGN_TYPE_RSA2,
+            	                             '',
+            	                             '',
+            	                             'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB',
+			                                 '',
+			                                 '',
+			                                 '',
+			                                 '');
+            $resp = $client->execute($request,'msgId','');//执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+            echo $resp;
+            $respObj = json_decode($resp,true);
+            if($respObj["return_code"] == 0){ //sucess
+            	echo $respObj["return_msg"];
+            }else{//fail
+				      echo $respObj["return_msg"];
+            }
+
+?>

+ 38 - 0
extend/icbc/example/QrcodePayTest.php

@@ -0,0 +1,38 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+	          $request = array(
+          		"serviceUrl" => 'https://ip:port/api/qrcode/V2/pay',
+          		"method" => 'POST',
+          		"isNeedEncrypt" => false,
+          		"biz_content" => array(
+          			"qr_code"=>"6235124674559394540",
+								"mer_id"=>"020001515151",
+								"out_trade_no"=>"X000000001",
+								"order_amt"=>"7370",
+								"trade_date"=>"20170112",
+								"trade_time"=>"111305"
+								)
+
+          	);
+          	//以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+            $client = new DefaultIcbcClient('10000000000000002156',
+            	                             'MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIJBzZNaiobplRUgtJ4OzmUvZRK99ih/fUyDBOoFLtpJJCCRzp8T6V11YNlE7Xg5dt+EG7byQs2NImqg0eWEj/mBdZ7UmlAct7BNw2hyF2h4R5OEfXyjoH3wqGjKJayhaHTvLM1DYy/mDFBb0ShJYI1QMScQJZhsOhMMFhrrZwIZAgMBAAECgYAA2kdrOIOBoJPOQJmOE1C8jtPdjIrI9xSt5Imqsn/9A8+NuwacOfgkGXmZ0n6vc8jYa7f2uZ1AVTUtd4IIO5bpq8s0Tw2BfWALYwr/JdUuNKSjHVQsh/Do+wl8BgOgB4RqsNXWNGtoMC8lHKHmrVcpyJMfDc3cP07NZ1wG2zB0lQJBAM+dNZv2L/Z4RzvQcoVZEthYavZ4pkFoWGYC4jwc5G8um76zoQyrtxWYrtTP0GS+xFFX2dEuiGXxwzmSQJrPdrMCQQCgnUXcQe/if2c6TFt4x9v+6L0pmFClYyiOi9RuBSz1sHmPouuc/YYvuxAOdOzu3yzOkeo7b5KcCKITTWvKI+oDAkA5dl6vIw2VXycAJCp+Q/AWVyqLu0rw0Yud+HBbiPek2jabKqaJlkFfRdol5rrcF3zIstMDtahk5uxM0/DzqDZHAkBGnZ8vfdYIUVeDbDrzWXvCEXXJqewbKwOT2KqnTKM9yj9IBatttJGgvrAKiyH4zCqZD9JaG23sKGeJ8QopL60dAkEAtc4tlKoj3XZzRUXboqz0EhkgkjzDj50zpCD1sJKZ2EZH+A/7tXwPug+RnuSmKpM2uv3msqw3prdS3K4En8+rog==',
+            	                             IcbcConstants::$SIGN_TYPE_RSA2,
+            	                             '',
+            	                             '',
+            	                             'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB',
+			                                 '',
+			                                 '',
+			                                 '',
+			                                 '');
+            $resp = $client->execute($request,'msgId','');//执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+            echo $resp;
+            $respObj = json_decode($resp,true);
+            if($respObj["return_code"] == 0){ //sucess
+            	echo $respObj["return_msg"];
+            }else{//fail
+				      echo $respObj["return_msg"];
+            }
+
+?>

+ 36 - 0
extend/icbc/example/QrcodeQueryTest.php

@@ -0,0 +1,36 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+	          $request = array(
+          		"serviceUrl" => 'https://ip:port/api/qrcode/V2/query',
+          		"method" => 'POST',
+          		"isNeedEncrypt" => false,
+          		"biz_content" => array(
+								"mer_id"=>"020001515151",
+								"cust_id"=>"Ey0LsS39FwdE35TsSW1A2eeoIRMZrjSa",//该字段非必输项
+								"out_trade_no"=>"ZHL777O15002039",//该字段非必输项,out_trade_no和order_id选一项上送即可
+								"order_id"=>"020001515151201701030000001",//该字段非必输项,out_trade_no和order_id选一项上送即可
+								)
+
+          	);
+          	//以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+            $client = new DefaultIcbcClient('10000000000000002156',
+            	                             'MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIJBzZNaiobplRUgtJ4OzmUvZRK99ih/fUyDBOoFLtpJJCCRzp8T6V11YNlE7Xg5dt+EG7byQs2NImqg0eWEj/mBdZ7UmlAct7BNw2hyF2h4R5OEfXyjoH3wqGjKJayhaHTvLM1DYy/mDFBb0ShJYI1QMScQJZhsOhMMFhrrZwIZAgMBAAECgYAA2kdrOIOBoJPOQJmOE1C8jtPdjIrI9xSt5Imqsn/9A8+NuwacOfgkGXmZ0n6vc8jYa7f2uZ1AVTUtd4IIO5bpq8s0Tw2BfWALYwr/JdUuNKSjHVQsh/Do+wl8BgOgB4RqsNXWNGtoMC8lHKHmrVcpyJMfDc3cP07NZ1wG2zB0lQJBAM+dNZv2L/Z4RzvQcoVZEthYavZ4pkFoWGYC4jwc5G8um76zoQyrtxWYrtTP0GS+xFFX2dEuiGXxwzmSQJrPdrMCQQCgnUXcQe/if2c6TFt4x9v+6L0pmFClYyiOi9RuBSz1sHmPouuc/YYvuxAOdOzu3yzOkeo7b5KcCKITTWvKI+oDAkA5dl6vIw2VXycAJCp+Q/AWVyqLu0rw0Yud+HBbiPek2jabKqaJlkFfRdol5rrcF3zIstMDtahk5uxM0/DzqDZHAkBGnZ8vfdYIUVeDbDrzWXvCEXXJqewbKwOT2KqnTKM9yj9IBatttJGgvrAKiyH4zCqZD9JaG23sKGeJ8QopL60dAkEAtc4tlKoj3XZzRUXboqz0EhkgkjzDj50zpCD1sJKZ2EZH+A/7tXwPug+RnuSmKpM2uv3msqw3prdS3K4En8+rog==',
+            	                             IcbcConstants::$SIGN_TYPE_RSA2,
+            	                             '',
+            	                             '',
+            	                             'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB',
+			                                 '',
+			                                 '',
+			                                 '',
+			                                 '');
+            $resp = $client->execute($request,'msgId','');//执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+            echo $resp;
+            $respObj = json_decode($resp,true);
+            if($respObj["return_code"] == 0){ //sucess
+            	echo $respObj["return_msg"];
+            }else{//fail
+				      echo $respObj["return_msg"];
+            }
+
+?>

+ 37 - 0
extend/icbc/example/QrcodeRejectQueryTestV2.php

@@ -0,0 +1,37 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+	          $request = array(
+          		"serviceUrl" => 'https://ip:port/api/qrcode/V2/reject/query',
+          		"method" => 'POST',
+          		"isNeedEncrypt" => false,
+          		"biz_content" => array(
+								"mer_id"=>"020001515151",
+								"cust_id"=>"Ey0LsS39FwdE35TsSW1A2eeoIRMZrjSa",
+								"out_trade_no"=>"X000000001",
+								"order_id"=>"020001515151201701030000001",
+								"reject_no"=>"X000000001"
+								)
+
+          	);
+          	//以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+            $client = new DefaultIcbcClient('10000000000000002156',
+            	                             'MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIJBzZNaiobplRUgtJ4OzmUvZRK99ih/fUyDBOoFLtpJJCCRzp8T6V11YNlE7Xg5dt+EG7byQs2NImqg0eWEj/mBdZ7UmlAct7BNw2hyF2h4R5OEfXyjoH3wqGjKJayhaHTvLM1DYy/mDFBb0ShJYI1QMScQJZhsOhMMFhrrZwIZAgMBAAECgYAA2kdrOIOBoJPOQJmOE1C8jtPdjIrI9xSt5Imqsn/9A8+NuwacOfgkGXmZ0n6vc8jYa7f2uZ1AVTUtd4IIO5bpq8s0Tw2BfWALYwr/JdUuNKSjHVQsh/Do+wl8BgOgB4RqsNXWNGtoMC8lHKHmrVcpyJMfDc3cP07NZ1wG2zB0lQJBAM+dNZv2L/Z4RzvQcoVZEthYavZ4pkFoWGYC4jwc5G8um76zoQyrtxWYrtTP0GS+xFFX2dEuiGXxwzmSQJrPdrMCQQCgnUXcQe/if2c6TFt4x9v+6L0pmFClYyiOi9RuBSz1sHmPouuc/YYvuxAOdOzu3yzOkeo7b5KcCKITTWvKI+oDAkA5dl6vIw2VXycAJCp+Q/AWVyqLu0rw0Yud+HBbiPek2jabKqaJlkFfRdol5rrcF3zIstMDtahk5uxM0/DzqDZHAkBGnZ8vfdYIUVeDbDrzWXvCEXXJqewbKwOT2KqnTKM9yj9IBatttJGgvrAKiyH4zCqZD9JaG23sKGeJ8QopL60dAkEAtc4tlKoj3XZzRUXboqz0EhkgkjzDj50zpCD1sJKZ2EZH+A/7tXwPug+RnuSmKpM2uv3msqw3prdS3K4En8+rog==',
+            	                             IcbcConstants::$SIGN_TYPE_RSA2,
+            	                             '',
+            	                             '',
+            	                             'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB',
+			                                 '',
+			                                 '',
+			                                 '',
+			                                 '');
+            $resp = $client->execute($request,'msgId','');//执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+            echo $resp;
+            $respObj = json_decode($resp,true);
+            if($respObj["return_code"] == 0){ //sucess
+            	echo $respObj["return_msg"];
+            }else{//fail
+				      echo $respObj["return_msg"];
+            }
+
+?>

+ 37 - 0
extend/icbc/example/QrcodeRejectQueryTestV3.php

@@ -0,0 +1,37 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+	          $request = array(
+          		"serviceUrl" => 'https://ip:port/api/qrcode/reject/query/V3',
+          		"method" => 'POST',
+          		"isNeedEncrypt" => false,
+          		"biz_content" => array(
+								"mer_id"=>"020001515151",
+								"cust_id"=>"Ey0LsS39FwdE35TsSW1A2eeoIRMZrjSa",
+								"out_trade_no"=>"X000000001",
+								"order_id"=>"020001515151201701030000001",
+								"reject_no"=>"X000000001"
+								)
+
+          	);
+          	//以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+            $client = new DefaultIcbcClient('10000000000000002156',
+            	                             'MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIJBzZNaiobplRUgtJ4OzmUvZRK99ih/fUyDBOoFLtpJJCCRzp8T6V11YNlE7Xg5dt+EG7byQs2NImqg0eWEj/mBdZ7UmlAct7BNw2hyF2h4R5OEfXyjoH3wqGjKJayhaHTvLM1DYy/mDFBb0ShJYI1QMScQJZhsOhMMFhrrZwIZAgMBAAECgYAA2kdrOIOBoJPOQJmOE1C8jtPdjIrI9xSt5Imqsn/9A8+NuwacOfgkGXmZ0n6vc8jYa7f2uZ1AVTUtd4IIO5bpq8s0Tw2BfWALYwr/JdUuNKSjHVQsh/Do+wl8BgOgB4RqsNXWNGtoMC8lHKHmrVcpyJMfDc3cP07NZ1wG2zB0lQJBAM+dNZv2L/Z4RzvQcoVZEthYavZ4pkFoWGYC4jwc5G8um76zoQyrtxWYrtTP0GS+xFFX2dEuiGXxwzmSQJrPdrMCQQCgnUXcQe/if2c6TFt4x9v+6L0pmFClYyiOi9RuBSz1sHmPouuc/YYvuxAOdOzu3yzOkeo7b5KcCKITTWvKI+oDAkA5dl6vIw2VXycAJCp+Q/AWVyqLu0rw0Yud+HBbiPek2jabKqaJlkFfRdol5rrcF3zIstMDtahk5uxM0/DzqDZHAkBGnZ8vfdYIUVeDbDrzWXvCEXXJqewbKwOT2KqnTKM9yj9IBatttJGgvrAKiyH4zCqZD9JaG23sKGeJ8QopL60dAkEAtc4tlKoj3XZzRUXboqz0EhkgkjzDj50zpCD1sJKZ2EZH+A/7tXwPug+RnuSmKpM2uv3msqw3prdS3K4En8+rog==',
+            	                             IcbcConstants::$SIGN_TYPE_RSA2,
+            	                             '',
+            	                             '',
+            	                             'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB',
+			                                 '',
+			                                 '',
+			                                 '',
+			                                 '');
+            $resp = $client->execute($request,'msgId','');//执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+            echo $resp;
+            $respObj = json_decode($resp,true);
+            if($respObj["return_code"] == 0){ //sucess
+            	echo $respObj["return_msg"];
+            }else{//fail
+				      echo $respObj["return_msg"];
+            }
+
+?>

+ 39 - 0
extend/icbc/example/QrcodeRejectTest.php

@@ -0,0 +1,39 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+	          $request = array(
+          		"serviceUrl" => 'https://ip:port/api/qrcode/V2/reject',
+          		"method" => 'POST',
+          		"isNeedEncrypt" => false,
+          		"biz_content" => array(
+								"mer_id"=>"020001515151",
+								"cust_id"=>"Ey0LsS39FwdE35TsSW1A2eeoIRMZrjSa",//该字段非必输项
+								"out_trade_no"=>"X000000001",//该字段非必输项,out_trade_no和order_id选一项上送即可
+								"order_id"=>"020001515151201701030000001",//该字段非必输项,out_trade_no和order_id选一项上送即可
+								"reject_no"=>"X000000001",
+								"reject_amt"=>"100",
+								"oper_id"=>"X000000001"//该字段非必输项
+								)
+
+          	);
+          	//以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+            $client = new DefaultIcbcClient('10000000000000002156',
+            	                             'MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIJBzZNaiobplRUgtJ4OzmUvZRK99ih/fUyDBOoFLtpJJCCRzp8T6V11YNlE7Xg5dt+EG7byQs2NImqg0eWEj/mBdZ7UmlAct7BNw2hyF2h4R5OEfXyjoH3wqGjKJayhaHTvLM1DYy/mDFBb0ShJYI1QMScQJZhsOhMMFhrrZwIZAgMBAAECgYAA2kdrOIOBoJPOQJmOE1C8jtPdjIrI9xSt5Imqsn/9A8+NuwacOfgkGXmZ0n6vc8jYa7f2uZ1AVTUtd4IIO5bpq8s0Tw2BfWALYwr/JdUuNKSjHVQsh/Do+wl8BgOgB4RqsNXWNGtoMC8lHKHmrVcpyJMfDc3cP07NZ1wG2zB0lQJBAM+dNZv2L/Z4RzvQcoVZEthYavZ4pkFoWGYC4jwc5G8um76zoQyrtxWYrtTP0GS+xFFX2dEuiGXxwzmSQJrPdrMCQQCgnUXcQe/if2c6TFt4x9v+6L0pmFClYyiOi9RuBSz1sHmPouuc/YYvuxAOdOzu3yzOkeo7b5KcCKITTWvKI+oDAkA5dl6vIw2VXycAJCp+Q/AWVyqLu0rw0Yud+HBbiPek2jabKqaJlkFfRdol5rrcF3zIstMDtahk5uxM0/DzqDZHAkBGnZ8vfdYIUVeDbDrzWXvCEXXJqewbKwOT2KqnTKM9yj9IBatttJGgvrAKiyH4zCqZD9JaG23sKGeJ8QopL60dAkEAtc4tlKoj3XZzRUXboqz0EhkgkjzDj50zpCD1sJKZ2EZH+A/7tXwPug+RnuSmKpM2uv3msqw3prdS3K4En8+rog==',
+            	                             IcbcConstants::$SIGN_TYPE_RSA2,
+            	                             '',
+            	                             '',
+            	                             'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB',
+			                                 '',
+			                                 '',
+			                                 '',
+			                                 '');
+            $resp = $client->execute($request,'msgId','');//执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+            echo $resp;
+            $respObj = json_decode($resp,true);
+            if($respObj["return_code"] == 0){ //sucess
+            	echo $respObj["return_msg"];
+            }else{//fail
+				      echo $respObj["return_msg"];
+            }
+
+?>

+ 39 - 0
extend/icbc/example/QrcodeReverseTest.php

@@ -0,0 +1,39 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+	          $request = array(
+          		"serviceUrl" => 'https://ip:port/api/qrcode/V2/reverse',
+          		"method" => 'POST',
+          		"isNeedEncrypt" => false,
+          		"biz_content" => array(
+								"mer_id"=>"020001515151",
+								"cust_id"=>"Ey0LsS39FwdE35TsSW1A2eeoIRMZrjSa",//该字段非必输项
+								"out_trade_no"=>"X000000001",
+								"order_id"=>"",//该字段非必输项
+								"reject_no"=>"",//该字段非必输项
+								"reject_amt"=>"",//该字段非必输项
+								"oper_id"=>""//该字段非必输项
+								)
+
+          	);
+          	//以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+            $client = new DefaultIcbcClient('10000000000000002156',
+            	                             'MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIJBzZNaiobplRUgtJ4OzmUvZRK99ih/fUyDBOoFLtpJJCCRzp8T6V11YNlE7Xg5dt+EG7byQs2NImqg0eWEj/mBdZ7UmlAct7BNw2hyF2h4R5OEfXyjoH3wqGjKJayhaHTvLM1DYy/mDFBb0ShJYI1QMScQJZhsOhMMFhrrZwIZAgMBAAECgYAA2kdrOIOBoJPOQJmOE1C8jtPdjIrI9xSt5Imqsn/9A8+NuwacOfgkGXmZ0n6vc8jYa7f2uZ1AVTUtd4IIO5bpq8s0Tw2BfWALYwr/JdUuNKSjHVQsh/Do+wl8BgOgB4RqsNXWNGtoMC8lHKHmrVcpyJMfDc3cP07NZ1wG2zB0lQJBAM+dNZv2L/Z4RzvQcoVZEthYavZ4pkFoWGYC4jwc5G8um76zoQyrtxWYrtTP0GS+xFFX2dEuiGXxwzmSQJrPdrMCQQCgnUXcQe/if2c6TFt4x9v+6L0pmFClYyiOi9RuBSz1sHmPouuc/YYvuxAOdOzu3yzOkeo7b5KcCKITTWvKI+oDAkA5dl6vIw2VXycAJCp+Q/AWVyqLu0rw0Yud+HBbiPek2jabKqaJlkFfRdol5rrcF3zIstMDtahk5uxM0/DzqDZHAkBGnZ8vfdYIUVeDbDrzWXvCEXXJqewbKwOT2KqnTKM9yj9IBatttJGgvrAKiyH4zCqZD9JaG23sKGeJ8QopL60dAkEAtc4tlKoj3XZzRUXboqz0EhkgkjzDj50zpCD1sJKZ2EZH+A/7tXwPug+RnuSmKpM2uv3msqw3prdS3K4En8+rog==',
+            	                             IcbcConstants::$SIGN_TYPE_RSA2,
+            	                             '',
+            	                             '',
+            	                             'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB',
+			                                 '',
+			                                 '',
+			                                 '',
+			                                 '');
+            $resp = $client->execute($request,'msgId','');//执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+            echo $resp;
+            $respObj = json_decode($resp,true);
+            if($respObj["return_code"] == 0){ //sucess
+            	echo $respObj["return_msg"];
+            }else{//fail
+				      echo $respObj["return_msg"];
+            }
+
+?>

+ 42 - 0
extend/icbc/example/SettlementAccountBalanceQueryTestV1.php

@@ -0,0 +1,42 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+	          $request = array(
+          		"serviceUrl" => 'http://122.19.61.196:8081/api/settlement/account/balance/V1/query',
+          		"method" => 'POST',
+          		"isNeedEncrypt" => false,
+                "extraParams" => null,
+          		"biz_content" => array(
+                                    "ccy"=>1,
+                                    "corp_date"=>"2017-03-23",
+                                    "corp_no"=>"corpInst1234",
+                                    "corp_serno"=>"52fbf42f-d499-4a50-ab39-2acd86321141",
+                                    "medium_id"=>"6232290200000000065",
+                                    "out_service_code"=>"querybalance",
+                                    "trx_acc_date"=>"2017-03-23",
+                                    "trx_acc_time"=>"12:30:21"
+                                    )
+
+          	);
+            $client = new DefaultIcbcClient('10000000000000001531',
+            	                             'MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALAWAcPiTMRU906PTdy0ozspX7XptZnkEw2C8R64RDB9BiRFXAj0cU4aTA1MyfmGIlceeVdgJf7OnmvpHnYxjQ7sGxMItPtodrGwA2y8j0AEbHc5pNWU8Hn0zoY9smHS5e+KjSbWv+VNbdnrRFTpDeiJ3+s2E/cKI2CDRbo7cAarAgMBAAECgYABiA933q4APyTvf/uTYdbRmuiEMoYr0nn/8hWayMt/CHdXNWs5gLbDkSL8MqDHFM2TqGYxxlpOPwnNsndbW874QIEKmtH/SSHuVUJSPyDW4B6MazA+/e6Hy0TZg2VAYwkB1IwGJox+OyfWzmbqpQGgs3FvuH9q25cDxkWntWbDcQJBAP2RDXlqx7UKsLfM17uu+ol9UvpdGoNEed+5cpScjFcsB0XzdVdCpp7JLlxR+UZNwr9Wf1V6FbD2kDflqZRBuV8CQQCxxpq7CJUaLHfm2kjmVtaQwDDw1ZKRb/Dm+5MZ67bQbvbXFHCRKkGI4qqNRlKwGhqIAUN8Ynp+9WhrEe0lnxo1AkEA0flSDR9tbPADUtDgPN0zPrN3CTgcAmOsAKXSylmwpWciRrzKiI366DZ0m6KOJ7ew8z0viJrmZ3pmBsO537llRQJAZLrRxZRRV6lGrwmUMN+XaCFeGbgJ+lphN5/oc9F5npShTLEKL1awF23HkZD9HUdNLS76HCp4miNXbQOVSbHi2QJAUw7KSaWENXbCl5c7M43ESo9paHHXHT+/5bmzebq2eoBofn+IFsyJB8Lz5L7WciDK7WvrGC2JEbqwpFhWwCOl/w==',
+            	                             IcbcConstants::$SIGN_TYPE_RSA,
+            	                             '',
+            	                             '',
+            	                             'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB',
+			                                 '',
+			                                 '',
+			                                 '',
+			                                 '');
+            try{
+              $resp = $client->execute($request,'msgId',''); //执行调用
+              $respObj = json_decode($resp,true);
+              if($respObj["return_code"] == 0){ //成功
+                 echo $respObj["return_msg"];
+              }else{//失败
+                 echo $respObj["return_msg"];
+              }
+            }catch(Exception $e){//捕获异常
+              echo 'Exception:'.$e->getMessage()."\n";
+            }
+?>

+ 43 - 0
extend/icbc/example/Test-RisknameSearch-CA.php

@@ -0,0 +1,43 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+	          $request = array(
+          		"serviceUrl" => 'http://122.19.77.226:8081/api/csi/riskname/list/V1/search', // 使用api接口地址
+          		"method" => 'POST', // 请求方法,只能是POST或GET
+          		"isNeedEncrypt" => false, // 是否需要加密
+              "extraParams" => null,//其他参数
+          		"biz_content" => array( //业务数据
+          							"req_json" => array("bankId" => "00001", 
+          								                   "data" => array("accNo" => "12312312301"), 
+          								                   "source" => "3124", 
+          								                   "time" => "20151027090443574",
+          								                   "type" => "2",
+          								                   "userid" => "",
+          								                   "ver" => "1",
+          								                   ) 
+          						 )
+
+          	);
+            $client = new DefaultIcbcClient('10000000000000002511',//APP的编号,应用在API开放平台注册时生成
+            	                             'AmEvvpDym7qi4Tmw/gO9v1/Ku8R3Qt46t16I6FA/CPwLopau7fNKcUxYCL9pqjb76phR4NPBr+Fa9O3PqZ5bJm7/io3hwqnmtu9KHs57HO6HOXycjQi9ZH4fqVZJbPtXQpGGXZhX1VB5teIcoKf5PxWgahBH2p7GnBZA7VgpO/1z2ZkxbqR1yUNR+gq2MpJQvMSab07+Vgz9l9dYDsl1UX6RqsAN7IgpZoZhlSpmxvt04i/um78hrGVuf0Y/KqACxZbyS8rz2nE8m1R1xys8wziEu18hKVZtl0v3yKTjvAqDuwV2aFXjumfkcsQTHLnPk0X/BdTpNSDDgDkw1p9nQhYrPTYUe05U3WyZBBDLmeJ/Niuj3RrPkc6z96TmLRdL/gzHoedeMtcjWHFbZLh8vGi9FLzKaRQo2/AbYqT2DWAatw0nDePsQk+9Av7ZS+7vZ51h5cv16ZP8lge5z1DeAYxMjV3RB5He5u8NPgehPd26bZQv7PUmyn2Br3SS6SAZcqvrN4dcLwV+Xb6QnjHEV5eUeEKky6qy/EwUC6DPJi/PSFPkUbzDR3KlJGw35f0oQbulJ3NnYv2UQ+wf3WhBQu82uGw7MKJrQDjE4bv018ycI47tFsW1kTqVNs1LNpafRcZbizfEphEbynz0UvQiL0YORUqT5RaS1pSYvCo1qXpCNILmW4bQ0Hz3W8eEDYpjSmBWnQTOpDHVfm0rXFGMsJxJRfGiSZh5gSQTbgEsTCa/Wauzx+tgL39EYYKVQn+1wQHQEZ1NvbPbzB6KHOG9XahzUcgMGb51t6zz+hX8y712lfE=', //APP应用私钥
+            	                             IcbcConstants::$SIGN_TYPE_CA,//签名类型,’CA’-工行颁发的证书认证;’RSA’表示RSAWithSha1;’RSA2’表示RSAWithSha256;缺省为RSA
+                                           '',//字符集,仅支持UTF-8,可填空‘’
+                                           '',//请求参数格式,仅支持json,可填空‘’
+            	                             'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB', //网关公钥,必填
+			                                     '',//AES加密密钥,缺省为空‘’
+			                                     '',//加密类型,当前仅支持AES加密,需要按照接口类型是否需要加密来设置,缺省为空‘’
+			                                     'MIIDCTCCAfGgAwIBAgIKbaHKEE0tAAAVmTANBgkqhkiG9w0BAQUFADA3MRowGAYDVQQDExFjb3JiYW5rMTAzIHNkYyBDTjEZMBcGA1UEChMQY29yYmFuazQzLmNvbS5jbjAeFw0xMzA2MDEwNjE5NTFaFw0xNDA2MDEwNjE5NTFaMEAxFDASBgNVBAMTC0xMTEwuZS4wMjAwMQ0wCwYDVQQLEwQwMjAwMRkwFwYDVQQKExBjb3JiYW5rNDMuY29tLmNuMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDUebVQUS8jnDERJopOwNgRlKEafEQUryj9EV64TUsaR850v/3KnctPRJ09GCqeucvbbOXlHz/RlwJSVWqryCTOldOUv1F58KQ0C59sY/dhh+W57fLIQKO90Sd344o/fPiytqmGtBc2m+DE/3L6morgC8m05Ygm16MkIk89Nz184wIDAQABo4GRMIGOMB8GA1UdIwQYMBaAFKnyXV7yfyOkd7D4zZtPLyquqLWdMEwGA1UdHwRFMEMwQaA/oD2kOzA5MQ0wCwYDVQQDEwRjcmw2MQ0wCwYDVQQLEwRjY3JsMRkwFwYDVQQKExBjb3JiYW5rNDMuY29tLmNuMB0GA1UdDgQWBBTkDBRsd9NghIrtNaUe6gSxZQ9CfzANBgkqhkiG9w0BAQUFAAOCAQEAXTWymvrTDMgV9LK7Ps6o52mlZIPmp3n7hmZttgJR/6KmZ/uCChPqHd9Ixw3DBnzHvoxmgtCKNVNc+iYQ4ks8cZgQoQ3uKT9bYinRCgECOv0Hiv7Q63DHJB46QamYcPc9dmmKAAOMd5AtnKI8QBRG3kxEmD6DPAcyx7hZ9Iw0MVwu4J1RfByJ1kM/bnhFpGwTma+5kxQlP+8Zurx4Cow/TUIj+kiLa/1ZmKXok7XOUr1UTFJhIqe0v3w2ekidchVML/t6n6Yw8Q5UCAbvKP4iHWdxeEGYsn+/a38oqCqIya66d5FCUqcOXXdRTdwdaSg6IGA4X6//O9TCvle1SCn7LQ==', //当签名类型为CA时,通过该字段上送证书公钥,缺省为空
+			                                     '12345678'); //当签名类型为CA时,通过该字段上送证书密码,缺省为空
+            try{
+              $resp = $client->execute($request,'msgId',''); //执行调用
+              $respObj = json_decode($resp,true);
+              if($respObj["return_code"] == 0){ //成功
+                 echo $respObj["return_msg"];
+              }else{//失败
+                 echo $respObj["return_msg"];
+              }
+            }catch(Exception $e){//捕获异常
+              echo 'Exception:'.$e->getMessage()."\n";
+            }
+
+?>

+ 47 - 0
extend/icbc/example/TestPreciousmetalGoldV1RedeemRSA.php

@@ -0,0 +1,47 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+	          $request = array(
+          		"serviceUrl" => 'http://122.19.77.226:8081/api/preciousmetal/gold/V1/redeem', // 使用api接口地址
+          		"method" => 'POST', // 请求方法,只能是POST或GET
+          		"isNeedEncrypt" => false, // 是否需要加密
+              "extraParams" => null,//其他参数
+          		"biz_content" => array( //业务数据
+          						"cert_no" => "12315",
+		                   "cert_type" => 0,
+		                   "cust_name" => "ÍÞ¹þ¹þ",
+		                   "cust_no" => "guorui",
+		                   "fee" => 120,
+		                   "fee_rate" => 5000,
+		                   "lock_price_ts" => "2016-11-17 18:19:12.762126",
+		                   "mobile_no" => "1313331111",
+		                   "redemption_amt" => 23860,
+		                   "redemption_price" => 238600000,
+		                   "redemption_quantity" => 10000,
+		                   "trx_req_ts" => "2016-11-17 18:15:12.762126",
+		                   "trx_seq_no" => "5231545"
+          						 )
+
+          	);
+            $client = new DefaultIcbcClient('10000000000000002166',//APP的编号,应用在API开放平台注册时生成
+            	                             'MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCgrIlUz6J2bMAqpFCDuosPD0IFueMhj7LBPkalvSk18B/K5k47AZ/w1/4m5mngq8zCfD5/dSdPLlfK3AF7GwP7zzVNHDci8axyg3qG6Wzk7BRFIlnt6xxvb2QL8V/yfvW3+eFp4nF8b27VCJm0KXVX6AWi9XPhBi7Nem9jsF6JdWRjfD72ulOUadcIZ3N+M2S57jG0w+pbvZq/h4NWconzLy/ZASUqvtaT8lrqu64co92PBfMtO0xDW22J32LVYbtnnU6PCWxe9YAdXccwJ6ruqearNBu83a6fvQFtceXclwj/+//8ySKazkrzHopBbMZjIkW+0dYUR23qgLCqDhTBAgMBAAECggEABYapmn8hqU0INu87zawGyFfP/35rL2ZP0ZGgwGaHGlHN5h6RpjniFFh5Z0EZdx6xhibbx2pyFakUX+e9LUy6kFiKDsLfqpYBRlb7SdSRaDYuZEpQKXyil7qPCFIe6KoxLUis1gVxvcPfXfhTwPyECqfyOa6Tc7PQvERvvE/+kF+pIFM1f1vYl15LPYmTbtsl7/cDFRBhgSMe7sfQOx7yopomQW/VgjITFmMFNZemw5yv7Fm5PcaUm9a7DrPPp5C+LiWhlT111AZZ94tCrBJq1YdisCnU7VOs6ePeHYjVNTEO4Tc4mwSrdiRl9ehQCwSKzEP0OS7JwOkGZdGQSSOcmQKBgQDq3dAoqHsezZ6jljF4nt/Y23Aei1M9bWmlnbCmNNvIhXq+5ob/GV4d0cLMOPA2fUvGS8cfc2nhAhEtaBJbqn8n7qKb5e0KojbQmIfuSv1tfj7b/XMnrvfUZAJD4VadmGsPe2elqSO6nkYg3xLr1NxYFdeEGTEKvAMiZjQlI6+FwwKBgQCvIa/4B61hYzNk+//OwYDi+A2EDDLTX9Uy7bygYCYdtAhj0cHSPtsCwfJFtY8BIgTHaiDjru9b/P4NiqV2iuzTp8tA/FtonD3kOt8iy5mrKNckK8OOKKIiSi2ttu440TPquNAdMhwm7chvx3bXD5e4fSK44tgc7TCcg583ZiAfKwKBgE8r7puGD9rWXX+vhYWvqK2layogtTKjy1U0zvN4Jg52UGZBt4gOuRc8Ono1R2RW4FA8Ayeq9CoRVFEGIAoecza2zsHWxA0tmWS/xjKhvMRIJlBqI4NhC9Hg1JKlR1lgo9ZYNxw05AJokCNMj0hIPO7Ejh3NkCaaMkRKR5GtceGZAoGAAhvAt5a4EqUUGFIkWUPhHlpoJz/SWNMdiPhtveyKaO8i7ri2waY6EsVs+kPeTeAv+IqhjLwta4kXMeiKZ2vyv/WUL9sZ6p9+60F+MDgNSI88T9YrC4oXsZv9AstiANMb8eZ5svBIgHt6X0YieyJX7EOtaFZqzaZZYHkBMLSNDHMCgYB5MVgVz7hDgCugRlM7pidfqU90zZgubhuASJC+KWNu/2NNj+SVJBZ4Ffx4sFuerq+fj0zQ+smd9fwiOge2RYYibpemgVyGqVJE8zAfYMCwuqsnLaG5dr1DAS0DbXcnXPB+Nv8Xj1TAMhaboZVeKDjNy0T2eP0FHuaBENog/WuzlQ==', //APP应用私钥
+                                           IcbcConstants::$SIGN_TYPE_RSA,//签名类型,’CA’-工行颁发的证书认证;’RSA’表示RSAWithSha1;’RSA2’表示RSAWithSha256;缺省为RSA
+                                           '',//字符集,仅支持UTF-8,可填空‘’
+                                           '',//请求参数格式,仅支持json,可填空‘’
+            	                             'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB', //网关公钥,必填
+    			                                 '',//AES加密密钥,缺省为空‘’
+    			                                 '',//加密类型,当前仅支持AES加密,需要按照接口类型是否需要加密来设置,缺省为空‘’
+    			                                 '', //当签名类型为CA时,通过该字段上送证书公钥,缺省为空
+    			                                 ''); //当签名类型为CA时,通过该字段上送证书密码,缺省为空
+            try{
+              $resp = $client->execute($request,'msgId',''); //执行调用
+              $respObj = json_decode($resp,true);
+              if($respObj["return_code"] == 0){ //成功
+                 echo $respObj["return_msg"];
+              }else{//失败
+                 echo $respObj["return_msg"];
+              }
+            }catch(Exception $e){//捕获异常
+              echo 'Exception:'.$e->getMessage()."\n";
+            }
+?>

+ 43 - 0
extend/icbc/example/TestSettlementAccountBalanceQueryCA_P.php

@@ -0,0 +1,43 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+	          $request = array(
+          		"serviceUrl" => 'http://122.19.61.196:8081/api/settlement/account/balance/V1/query', // 使用api接口地址
+          		"method" => 'POST', // 请求方法,只能是POST或GET
+          		"isNeedEncrypt" => false, // 是否需要加密
+              "extraParams" => null,//其他参数
+          		"biz_content" => array( //业务数据
+									      "corp_no" => "corpInst1234",
+          							"trx_acc_date" => "2017-03-23",
+          							"trx_acc_time" => "12:30:21",
+          							"corp_serno" => "0d950df0-26e1-4769-a7f4-63244e3e6912",
+          							"corp_date" => "2017-03-23",
+          							"out_service_code" => "querybalance",
+          							"medium_id" => "6232290200000000065",
+          							"ccy" => 1)
+
+          	);
+            $client = new DefaultIcbcClient('10000000000000001531',//APP的编号,应用在API开放平台注册时生成
+            	                             'AmEvvpDym7qi4Tmw/gO9v1/Ku8R3Qt46t16I6FA/CPwLopau7fNKcUxYCL9pqjb76phR4NPBr+Fa9O3PqZ5bJm7/io3hwqnmtu9KHs57HO6HOXycjQi9ZH4fqVZJbPtXQpGGXZhX1VB5teIcoKf5PxWgahBH2p7GnBZA7VgpO/1z2ZkxbqR1yUNR+gq2MpJQvMSab07+Vgz9l9dYDsl1UX6RqsAN7IgpZoZhlSpmxvt04i/um78hrGVuf0Y/KqACxZbyS8rz2nE8m1R1xys8wziEu18hKVZtl0v3yKTjvAqDuwV2aFXjumfkcsQTHLnPk0X/BdTpNSDDgDkw1p9nQhYrPTYUe05U3WyZBBDLmeJ/Niuj3RrPkc6z96TmLRdL/gzHoedeMtcjWHFbZLh8vGi9FLzKaRQo2/AbYqT2DWAatw0nDePsQk+9Av7ZS+7vZ51h5cv16ZP8lge5z1DeAYxMjV3RB5He5u8NPgehPd26bZQv7PUmyn2Br3SS6SAZcqvrN4dcLwV+Xb6QnjHEV5eUeEKky6qy/EwUC6DPJi/PSFPkUbzDR3KlJGw35f0oQbulJ3NnYv2UQ+wf3WhBQu82uGw7MKJrQDjE4bv018ycI47tFsW1kTqVNs1LNpafRcZbizfEphEbynz0UvQiL0YORUqT5RaS1pSYvCo1qXpCNILmW4bQ0Hz3W8eEDYpjSmBWnQTOpDHVfm0rXFGMsJxJRfGiSZh5gSQTbgEsTCa/Wauzx+tgL39EYYKVQn+1wQHQEZ1NvbPbzB6KHOG9XahzUcgMGb51t6zz+hX8y712lfE=', //APP应用私钥
+            	                             IcbcConstants::$SIGN_TYPE_CA,//签名类型,’CA’-工行颁发的证书认证;’RSA’表示RSAWithSha1;’RSA2’表示RSAWithSha256;缺省为RSA
+            	                             '',//字符集,仅支持UTF-8,可填空‘’
+            	                             '',//请求参数格式,仅支持json,可填空‘’
+            	                             'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB', //网关公钥,必填
+			                                 '',//AES加密密钥,缺省为空‘’
+			                                 '',//加密类型,当前仅支持AES加密,需要按照接口类型是否需要加密来设置,缺省为空‘’
+			                                 'MIIDCTCCAfGgAwIBAgIKbaHKEE0tAAAVmTANBgkqhkiG9w0BAQUFADA3MRowGAYDVQQDExFjb3JiYW5rMTAzIHNkYyBDTjEZMBcGA1UEChMQY29yYmFuazQzLmNvbS5jbjAeFw0xMzA2MDEwNjE5NTFaFw0xNDA2MDEwNjE5NTFaMEAxFDASBgNVBAMTC0xMTEwuZS4wMjAwMQ0wCwYDVQQLEwQwMjAwMRkwFwYDVQQKExBjb3JiYW5rNDMuY29tLmNuMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDUebVQUS8jnDERJopOwNgRlKEafEQUryj9EV64TUsaR850v/3KnctPRJ09GCqeucvbbOXlHz/RlwJSVWqryCTOldOUv1F58KQ0C59sY/dhh+W57fLIQKO90Sd344o/fPiytqmGtBc2m+DE/3L6morgC8m05Ygm16MkIk89Nz184wIDAQABo4GRMIGOMB8GA1UdIwQYMBaAFKnyXV7yfyOkd7D4zZtPLyquqLWdMEwGA1UdHwRFMEMwQaA/oD2kOzA5MQ0wCwYDVQQDEwRjcmw2MQ0wCwYDVQQLEwRjY3JsMRkwFwYDVQQKExBjb3JiYW5rNDMuY29tLmNuMB0GA1UdDgQWBBTkDBRsd9NghIrtNaUe6gSxZQ9CfzANBgkqhkiG9w0BAQUFAAOCAQEAXTWymvrTDMgV9LK7Ps6o52mlZIPmp3n7hmZttgJR/6KmZ/uCChPqHd9Ixw3DBnzHvoxmgtCKNVNc+iYQ4ks8cZgQoQ3uKT9bYinRCgECOv0Hiv7Q63DHJB46QamYcPc9dmmKAAOMd5AtnKI8QBRG3kxEmD6DPAcyx7hZ9Iw0MVwu4J1RfByJ1kM/bnhFpGwTma+5kxQlP+8Zurx4Cow/TUIj+kiLa/1ZmKXok7XOUr1UTFJhIqe0v3w2ekidchVML/t6n6Yw8Q5UCAbvKP4iHWdxeEGYsn+/a38oqCqIya66d5FCUqcOXXdRTdwdaSg6IGA4X6//O9TCvle1SCn7LQ==', //当签名类型为CA时,通过该字段上送证书公钥,缺省为空
+			                                 '12345678'); //当签名类型为CA时,通过该字段上送证书密码,缺省为空
+            try{
+              $resp = $client->execute($request,'msgId',''); //执行调用
+              $respObj = json_decode($resp,true);
+              if($respObj["return_code"] == 0){ //成功
+                 echo $respObj["return_msg"];
+              }else{//失败
+                 echo $respObj["return_msg"];
+              }
+            }catch(Exception $e){//捕获异常
+              echo 'Exception:'.$e->getMessage()."\n";
+            }
+
+
+?>

+ 41 - 0
extend/icbc/example/TestSettlementAccountBalanceQueryRSA_P.php

@@ -0,0 +1,41 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+	          $request = array(
+          		"serviceUrl" => 'http://122.19.61.196:8081/api/settlement/account/balance/V1/query', // 使用api接口地址
+          		"method" => 'POST', // 请求方法,只能是POST或GET
+          		"isNeedEncrypt" => false, // 是否需要加密
+              "extraParams" => null, //其他参数
+          		"biz_content" => array( //业务数据
+									      "corp_no" => "corpInst1234",
+          							"trx_acc_date" => "2017-03-23",
+          							"trx_acc_time" => "12:30:21",
+          							"corp_serno" => "52fbf42f-d499-4a50-ab39-2acd86321141",
+          							"corp_date" => "2017-03-23",
+          							"out_service_code" => "querybalance",
+          							"medium_id" => "6232290200000000065",
+          							"ccy" => 1)
+
+          	);
+            $client = new DefaultIcbcClient('10000000000000001531', //APP的编号,应用在API开放平台注册时生成
+            	                             'MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALAWAcPiTMRU906PTdy0ozspX7XptZnkEw2C8R64RDB9BiRFXAj0cU4aTA1MyfmGIlceeVdgJf7OnmvpHnYxjQ7sGxMItPtodrGwA2y8j0AEbHc5pNWU8Hn0zoY9smHS5e+KjSbWv+VNbdnrRFTpDeiJ3+s2E/cKI2CDRbo7cAarAgMBAAECgYABiA933q4APyTvf/uTYdbRmuiEMoYr0nn/8hWayMt/CHdXNWs5gLbDkSL8MqDHFM2TqGYxxlpOPwnNsndbW874QIEKmtH/SSHuVUJSPyDW4B6MazA+/e6Hy0TZg2VAYwkB1IwGJox+OyfWzmbqpQGgs3FvuH9q25cDxkWntWbDcQJBAP2RDXlqx7UKsLfM17uu+ol9UvpdGoNEed+5cpScjFcsB0XzdVdCpp7JLlxR+UZNwr9Wf1V6FbD2kDflqZRBuV8CQQCxxpq7CJUaLHfm2kjmVtaQwDDw1ZKRb/Dm+5MZ67bQbvbXFHCRKkGI4qqNRlKwGhqIAUN8Ynp+9WhrEe0lnxo1AkEA0flSDR9tbPADUtDgPN0zPrN3CTgcAmOsAKXSylmwpWciRrzKiI366DZ0m6KOJ7ew8z0viJrmZ3pmBsO537llRQJAZLrRxZRRV6lGrwmUMN+XaCFeGbgJ+lphN5/oc9F5npShTLEKL1awF23HkZD9HUdNLS76HCp4miNXbQOVSbHi2QJAUw7KSaWENXbCl5c7M43ESo9paHHXHT+/5bmzebq2eoBofn+IFsyJB8Lz5L7WciDK7WvrGC2JEbqwpFhWwCOl/w==', //APP应用私钥
+            	                             IcbcConstants::$SIGN_TYPE_RSA,//签名类型,’CA’-工行颁发的证书认证;’RSA’表示RSAWithSha1;’RSA2’表示RSAWithSha256;缺省为RSA
+            	                             '',//字符集,仅支持UTF-8,可填空‘’
+            	                             '',//请求参数格式,仅支持json,可填空‘’
+            	                             'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB', //网关公钥,必填
+			                                 '',//AES加密密钥,缺省为空‘’
+			                                 '',//加密类型,当前仅支持AES加密,需要按照接口类型是否需要加密来设置,缺省为空‘’
+			                                 '', //当签名类型为CA时,通过该字段上送证书公钥,缺省为空
+			                                 ''); //当签名类型为CA时,通过该字段上送证书密码,缺省为空
+            try{
+              $resp = $client->execute($request,'msgId',''); //执行调用
+              $respObj = json_decode($resp,true);
+              if($respObj["return_code"] == 0){ //成功
+                 echo $respObj["return_msg"];
+              }else{//失败
+                 echo $respObj["return_msg"];
+              }
+            }catch(Exception $e){//捕获异常
+              echo 'Exception:'.$e->getMessage()."\n";
+            }
+?>

+ 49 - 0
extend/icbc/example/ThirdpartyOrderPayTestV1.php

@@ -0,0 +1,49 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+include_once '../IcbcEncrypt.php';
+include_once '../UiIcbcClient.php';
+
+						$priKey = 'TKhSiK9Blwr6+aCq+O0MFg==';//AES密钥
+          	
+          	$request = array(
+          		"serviceUrl" => 'http://ip:port/ui/thirdparty/order/V1/pay',
+          		"method" => 'POST',
+          		"isNeedEncrypt" => true,
+          		"biz_content" => array(
+          							"mer_id"=>"020002040095",
+												"store_code"=>"02000015087",
+												"cust_id"=>"1076dAbpBsrJXpI4J+/HXthaHj+mORib",
+												"out_trade_no"=>"ZHL777O15002039",
+												"order_amt"=>"7370",
+												"trade_date"=>"20170112",
+												"trade_time"=>"160346",
+												"attach"=>"abcdefg",// 该字段非必输项
+												"pay_expire"=>"1200",
+												"notify_url"=>"127.0.0.1",// 该字段非必输项
+												"notify_flag"=>"1",
+												"auto_submit_flag"=>"1",
+												"goods_name"=>"商品001"// 该字段非必输项
+          						 )
+          						 
+          	);
+          	
+          	$client = new UiIcbcClient('10000000000000002156',
+            	                         'MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIJBzZNaiobplRUgtJ4OzmUvZRK99ih/fUyDBOoFLtpJJCCRzp8T6V11YNlE7Xg5dt+EG7byQs2NImqg0eWEj/mBdZ7UmlAct7BNw2hyF2h4R5OEfXyjoH3wqGjKJayhaHTvLM1DYy/mDFBb0ShJYI1QMScQJZhsOhMMFhrrZwIZAgMBAAECgYAA2kdrOIOBoJPOQJmOE1C8jtPdjIrI9xSt5Imqsn/9A8+NuwacOfgkGXmZ0n6vc8jYa7f2uZ1AVTUtd4IIO5bpq8s0Tw2BfWALYwr/JdUuNKSjHVQsh/Do+wl8BgOgB4RqsNXWNGtoMC8lHKHmrVcpyJMfDc3cP07NZ1wG2zB0lQJBAM+dNZv2L/Z4RzvQcoVZEthYavZ4pkFoWGYC4jwc5G8um76zoQyrtxWYrtTP0GS+xFFX2dEuiGXxwzmSQJrPdrMCQQCgnUXcQe/if2c6TFt4x9v+6L0pmFClYyiOi9RuBSz1sHmPouuc/YYvuxAOdOzu3yzOkeo7b5KcCKITTWvKI+oDAkA5dl6vIw2VXycAJCp+Q/AWVyqLu0rw0Yud+HBbiPek2jabKqaJlkFfRdol5rrcF3zIstMDtahk5uxM0/DzqDZHAkBGnZ8vfdYIUVeDbDrzWXvCEXXJqewbKwOT2KqnTKM9yj9IBatttJGgvrAKiyH4zCqZD9JaG23sKGeJ8QopL60dAkEAtc4tlKoj3XZzRUXboqz0EhkgkjzDj50zpCD1sJKZ2EZH+A/7tXwPug+RnuSmKpM2uv3msqw3prdS3K4En8+rog==',
+            	                         IcbcConstants::$SIGN_TYPE_RSA2,
+            	                         '',
+            	                         '',
+            	                         '',
+    			                             $priKey,
+    			                             IcbcConstants::$ENCRYPT_TYPE_AES,
+    			                             '',
+    			                             '');
+       
+        try{
+              $resp = $client->buildPostForm($request,'msgid',''); //执行调用
+              echo $resp;
+            }catch(Exception $e){//捕获异常
+              echo 'Exception:'.$e->getMessage()."\n";
+            }
+
+?>

+ 52 - 0
extend/icbc/example/ThirdpartyOrderPayTestV2.php

@@ -0,0 +1,52 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+include_once '../IcbcEncrypt.php';
+include_once '../UiIcbcClient.php';
+
+						$priKey = 'TKhSiK9Blwr6+aCq+O0MFg==';// AES密钥
+          	
+          	$request = array(
+          		"serviceUrl" => 'http://ip:port/ui/thirdparty/order/pay/V2',
+          		"method" => 'POST',
+          		"isNeedEncrypt" => true,
+          		"biz_content" => array(
+          							"mer_id"=>"020002040095",
+												"store_code"=>"02000015087",
+												"cust_id"=>"1076dAbpBsrJXpI4J+/HXthaHj+mORib",
+												"out_trade_no"=>"ZHL777O15002039",
+												"order_amt"=>"7370",
+												"trade_date"=>"20170112",
+												"trade_time"=>"160346",
+												"attach"=>"abcdefg",// 该字段非必输项
+												"pay_expire"=>"1200",
+												"notify_url"=>"127.0.0.1",// 该字段非必输项
+												"notify_flag"=>"1",
+												"auto_submit_flag"=>"1",
+												"goods_name"=>"商品001",// 该字段非必输项
+												"all_points_flag"=>"1",// 该字段非必输项
+												"good_points"=>"500"// 该字段非必输项
+          						 )
+          						 
+          	);
+          	
+						//以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥
+          	$client = new UiIcbcClient('10000000000000002156',
+            	                         'MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIJBzZNaiobplRUgtJ4OzmUvZRK99ih/fUyDBOoFLtpJJCCRzp8T6V11YNlE7Xg5dt+EG7byQs2NImqg0eWEj/mBdZ7UmlAct7BNw2hyF2h4R5OEfXyjoH3wqGjKJayhaHTvLM1DYy/mDFBb0ShJYI1QMScQJZhsOhMMFhrrZwIZAgMBAAECgYAA2kdrOIOBoJPOQJmOE1C8jtPdjIrI9xSt5Imqsn/9A8+NuwacOfgkGXmZ0n6vc8jYa7f2uZ1AVTUtd4IIO5bpq8s0Tw2BfWALYwr/JdUuNKSjHVQsh/Do+wl8BgOgB4RqsNXWNGtoMC8lHKHmrVcpyJMfDc3cP07NZ1wG2zB0lQJBAM+dNZv2L/Z4RzvQcoVZEthYavZ4pkFoWGYC4jwc5G8um76zoQyrtxWYrtTP0GS+xFFX2dEuiGXxwzmSQJrPdrMCQQCgnUXcQe/if2c6TFt4x9v+6L0pmFClYyiOi9RuBSz1sHmPouuc/YYvuxAOdOzu3yzOkeo7b5KcCKITTWvKI+oDAkA5dl6vIw2VXycAJCp+Q/AWVyqLu0rw0Yud+HBbiPek2jabKqaJlkFfRdol5rrcF3zIstMDtahk5uxM0/DzqDZHAkBGnZ8vfdYIUVeDbDrzWXvCEXXJqewbKwOT2KqnTKM9yj9IBatttJGgvrAKiyH4zCqZD9JaG23sKGeJ8QopL60dAkEAtc4tlKoj3XZzRUXboqz0EhkgkjzDj50zpCD1sJKZ2EZH+A/7tXwPug+RnuSmKpM2uv3msqw3prdS3K4En8+rog==',
+            	                         IcbcConstants::$SIGN_TYPE_RSA2,
+            	                         '',
+            	                         '',
+            	                         '',
+    			                             $priKey,
+    			                             IcbcConstants::$ENCRYPT_TYPE_AES,
+    			                             '',
+    			                             '');
+       
+        try{
+              $resp = $client->buildPostForm($request,'msgid',''); //执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+              echo $resp;
+            }catch(Exception $e){//捕获异常
+              echo 'Exception:'.$e->getMessage()."\n";
+            }
+
+?>

+ 54 - 0
extend/icbc/example/ThirdpartyOrderPayTestV3.php

@@ -0,0 +1,54 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+include_once '../IcbcEncrypt.php';
+include_once '../UiIcbcClient.php';
+
+						$priKey = 'TKhSiK9Blwr6+aCq+O0MFg==';// AES密钥
+          	
+          	$request = array(
+          		"serviceUrl" => 'http://ip:port/ui/thirdparty/order/pay/V3',
+          		"method" => 'POST',
+          		"isNeedEncrypt" => true,
+          		"biz_content" => array(
+          							"mer_id"=>"020002040095",
+												"store_code"=>"02000015087",
+												"cust_id"=>"1076dAbpBsrJXpI4J+/HXthaHj+mORib",
+												"out_trade_no"=>"ZHL777O15002039",
+												"order_amt"=>"7370",
+												"trade_date"=>"20170112",
+												"trade_time"=>"160346",
+												"attach"=>"abcdefg",// 该字段非必输项
+												"pay_expire"=>"1200",
+												"notify_url"=>"127.0.0.1",// 该字段非必输项
+												"notify_flag"=>"1",
+												"auto_submit_flag"=>"1",
+												"goods_name"=>"商品001",// 该字段非必输项
+												"all_points_flag"=>"0",// 该字段非必输项
+												"good_points"=>"",// 该字段非必输项
+												"installment_flag"=>"1",// 该字段非必输项
+												"installment_times"=>"3"// 该字段非必输项
+          						 )
+          						 
+          	);
+          	
+						//以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥
+          	$client = new UiIcbcClient('10000000000000002156',
+            	                         'MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIJBzZNaiobplRUgtJ4OzmUvZRK99ih/fUyDBOoFLtpJJCCRzp8T6V11YNlE7Xg5dt+EG7byQs2NImqg0eWEj/mBdZ7UmlAct7BNw2hyF2h4R5OEfXyjoH3wqGjKJayhaHTvLM1DYy/mDFBb0ShJYI1QMScQJZhsOhMMFhrrZwIZAgMBAAECgYAA2kdrOIOBoJPOQJmOE1C8jtPdjIrI9xSt5Imqsn/9A8+NuwacOfgkGXmZ0n6vc8jYa7f2uZ1AVTUtd4IIO5bpq8s0Tw2BfWALYwr/JdUuNKSjHVQsh/Do+wl8BgOgB4RqsNXWNGtoMC8lHKHmrVcpyJMfDc3cP07NZ1wG2zB0lQJBAM+dNZv2L/Z4RzvQcoVZEthYavZ4pkFoWGYC4jwc5G8um76zoQyrtxWYrtTP0GS+xFFX2dEuiGXxwzmSQJrPdrMCQQCgnUXcQe/if2c6TFt4x9v+6L0pmFClYyiOi9RuBSz1sHmPouuc/YYvuxAOdOzu3yzOkeo7b5KcCKITTWvKI+oDAkA5dl6vIw2VXycAJCp+Q/AWVyqLu0rw0Yud+HBbiPek2jabKqaJlkFfRdol5rrcF3zIstMDtahk5uxM0/DzqDZHAkBGnZ8vfdYIUVeDbDrzWXvCEXXJqewbKwOT2KqnTKM9yj9IBatttJGgvrAKiyH4zCqZD9JaG23sKGeJ8QopL60dAkEAtc4tlKoj3XZzRUXboqz0EhkgkjzDj50zpCD1sJKZ2EZH+A/7tXwPug+RnuSmKpM2uv3msqw3prdS3K4En8+rog==',
+            	                         IcbcConstants::$SIGN_TYPE_RSA2,
+            	                         '',
+            	                         '',
+            	                         '',
+    			                             $priKey,
+    			                             IcbcConstants::$ENCRYPT_TYPE_AES,
+    			                             '',
+    			                             '');
+       
+        try{
+              $resp = $client->buildPostForm($request,'msgid',''); //执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+              echo $resp;
+            }catch(Exception $e){//捕获异常
+              echo 'Exception:'.$e->getMessage()."\n";
+            }
+
+?>

+ 55 - 0
extend/icbc/example/ThirdpartyOrderPayTestV4.php

@@ -0,0 +1,55 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+include_once '../IcbcEncrypt.php';
+include_once '../UiIcbcClient.php';
+
+						$priKey = 'TKhSiK9Blwr6+aCq+O0MFg==';// AES密钥
+          	
+          	$request = array(
+          		"serviceUrl" => 'http://ip:port/ui/thirdparty/order/pay/V4',
+          		"method" => 'POST',
+          		"isNeedEncrypt" => true,
+          		"biz_content" => array(
+          							"mer_id"=>"020002040095",
+												"store_code"=>"02000015087",
+												"cust_id"=>"1076dAbpBsrJXpI4J+/HXthaHj+mORib",
+												"out_trade_no"=>"ZHL777O15002039",
+												"order_amt"=>"7370",
+												"trade_date"=>"20170112",
+												"trade_time"=>"160346",
+												"attach"=>"abcdefg",// 该字段非必输项
+												"pay_expire"=>"1200",
+												"notify_url"=>"127.0.0.1",// 该字段非必输项
+												"notify_flag"=>"1",
+												"auto_submit_flag"=>"1",
+												"goods_name"=>"商品001",// 该字段非必输项
+												"all_points_flag"=>"0",// 该字段非必输项
+												"good_points"=>"",// 该字段非必输项
+												"installment_flag"=>"1",// 该字段非必输项
+												"installment_times"=>"3",// 该字段非必输项
+												"card_type"=>"111"// 该字段非必输项
+          						 )
+          						 
+          	);
+          	
+						//以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥
+          	$client = new UiIcbcClient('10000000000000002156',
+            	                         'MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIJBzZNaiobplRUgtJ4OzmUvZRK99ih/fUyDBOoFLtpJJCCRzp8T6V11YNlE7Xg5dt+EG7byQs2NImqg0eWEj/mBdZ7UmlAct7BNw2hyF2h4R5OEfXyjoH3wqGjKJayhaHTvLM1DYy/mDFBb0ShJYI1QMScQJZhsOhMMFhrrZwIZAgMBAAECgYAA2kdrOIOBoJPOQJmOE1C8jtPdjIrI9xSt5Imqsn/9A8+NuwacOfgkGXmZ0n6vc8jYa7f2uZ1AVTUtd4IIO5bpq8s0Tw2BfWALYwr/JdUuNKSjHVQsh/Do+wl8BgOgB4RqsNXWNGtoMC8lHKHmrVcpyJMfDc3cP07NZ1wG2zB0lQJBAM+dNZv2L/Z4RzvQcoVZEthYavZ4pkFoWGYC4jwc5G8um76zoQyrtxWYrtTP0GS+xFFX2dEuiGXxwzmSQJrPdrMCQQCgnUXcQe/if2c6TFt4x9v+6L0pmFClYyiOi9RuBSz1sHmPouuc/YYvuxAOdOzu3yzOkeo7b5KcCKITTWvKI+oDAkA5dl6vIw2VXycAJCp+Q/AWVyqLu0rw0Yud+HBbiPek2jabKqaJlkFfRdol5rrcF3zIstMDtahk5uxM0/DzqDZHAkBGnZ8vfdYIUVeDbDrzWXvCEXXJqewbKwOT2KqnTKM9yj9IBatttJGgvrAKiyH4zCqZD9JaG23sKGeJ8QopL60dAkEAtc4tlKoj3XZzRUXboqz0EhkgkjzDj50zpCD1sJKZ2EZH+A/7tXwPug+RnuSmKpM2uv3msqw3prdS3K4En8+rog==',
+            	                         IcbcConstants::$SIGN_TYPE_RSA2,
+            	                         '',
+            	                         '',
+            	                         '',
+    			                             $priKey,
+    			                             IcbcConstants::$ENCRYPT_TYPE_AES,
+    			                             '',
+    			                             '');
+       
+        try{
+              $resp = $client->buildPostForm($request,'msgid',''); //执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+              echo $resp;
+            }catch(Exception $e){//捕获异常
+              echo 'Exception:'.$e->getMessage()."\n";
+            }
+
+?>

+ 56 - 0
extend/icbc/example/mybankpaycpaycporderqueryTestV2DBZF.php

@@ -0,0 +1,56 @@
+<?php
+// 工行e企付支付申请查询
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+$request = array(
+    "serviceUrl" => 'https://apipcs3.dccnet.com.cn/api/mybank/pay/cpay/cporderquery/V2',
+    "method" => 'POST',
+    "isNeedEncrypt" => false,
+    "biz_content" => array(
+        "agreeCode" => "0160200238060410006041000000001490", // 合作方协议编号
+        "partnerSeq" => "20123456121523625535", // 交易流水号
+        "orderCode" => "204801000512" // 订单号
+    )
+);
+
+$appId = "10000000000000225069";
+$privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDPUsAxVOs46x7u
+			mfJDcw98UfPhD+/ZoFcJs4WqhoqWeLbSNHDOTFc+7r5qsWoTPiuaJdcxQbIF0bOT
+			lvIXXFNivTZy35aAQUpzILsPIVd0+Z+pCR2mosZkl8qhRk+5mGtc3OlzGvkGGnxx
+			O2fKxtwIRdEUaAnqg/k+8kSN3k8p9sXbJD9+r3imIvkswuGTEoEk0ARg3YSmlSTT
+			P0UqksT5/MQN3rZYDlE0baPCB2pKcTDncsNhvgwjGmI7fMyBB1tV0jGfaGq1IcGy
+			fY5WUcIaiveYUq5Gta6+9J/B333hztCCWdtbM+YoI4UpMcV5B1056P3X1hPRbCri
+			Id5uI4sXAgMBAAECggEAdluBiSg3mSjxYbnVSphXUNvgZK4aeZ1F0y3/sxhX6gtE
+			I8D4XW3LqQvW/UYHjrDBZ6EOtvoQTa4n3KwhzSBSIl5uxSnL27BqdktLPxoDua4A
+			bhncKZNnu2nErklbnlLbiAo95A6T994LCQGnAWaBmt9wuzuh3ZY2Jq9cX7l4bDWD
+			3OaKLER56n8KgMM0hyUffm2+ediCVy0CfL/50gscWLQKrDx52uohtgORw4OiAzx/
+			YwgnnvSAgXQK21ChDcN5GQA5hZOeFMRY0vshSiA6/Zz8GvHfa4u/fEWVpZhsJrow
+			97Fk3he8NHc9M6mLIxKeGFLknpkNHgDZXqCD5vvVwQKBgQDauoRR8EAjU+jjZDUi
+			5qyPXSUELthqMbn4oHT33pgjSvQgoLfMtn95FHgFZJjEZfAnKgNSjFddPqB6vy0d
+			PLXRSyqG0b+ap+f2e2kuNnbngijCO9WWDdpU1k7e/Lvo5Ohgz0ODAxRqrst+QqmW
+			5C6nt+g0Il4ctdoUQ3oBeWTc8QKBgQDyprRvGqThXSsJ64wpiPUKieZ+562FFwZE
+			pBU1Sy3PS9EfroQa2/NlL5eiLPOOpmY5tUhIyNZzL7YE4n+iI/pZFpC23+gz4Qjt
+			sQnBGXQn+D7H181B119jUt/mYZwM3zAy9DJal4+q52LvmluT95/eTyhYD46vEGr3
+			0axSGcOIhwKBgDRx+Hw1IQvXeMXdJyiBKusNKG0CVn3QAols3973Dn+X30Vbg/af
+			45zCnaydXEvrLVQWrMlEQUZoV85WvJiAEBBo939wF4Mbs3DUUnn0MTp9aQx5kFL0
+			a19gK3UoIF5NVLKxv7xQJrsVwlE55rP5bn5kiFbHzs0PhYTKURy9YMPhAoGAVkeO
+			at8Xd4bQUeOuX+px7wBftAoe+e7Y7LlHTT7hGA+GWXSNRpuk7PrCOQkwxS1HtgdO
+			n4rCLgzt9Miwx29xihHq/Quani/LI/FKXZ32Xmv3rsl+E4ZIRaHnORzGBxGpKsUH
+			zoyLqiJCXJ4PKArpjnupBb7qZjc5QcsNMdg1XasCgYEAv6SkwgcRCVliGtphJVxg
+			xODkI+YOufnDGpD5OGECY0/O5FQ8u4PzvQ5FuOBElJzpbKmDqKqMX2UsgpvPzyT2
+			2JtW0Xpo/UiApIyuUuF5CxIvxfsD3VSjC7MrmqBCEU/iRdQv11alFRg4KOXZXst6
+			oclGtrgSiI3n3kJ2Xy3oO38=";
+$icbcPublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB";
+// 以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+$client = new DefaultIcbcClient($appId, $privateKey, IcbcConstants::$SIGN_TYPE_RSA2, '', '', $icbcPublicKey, '', '', '', '');
+$resp = $client->execute($request, '2022020715103425112', ''); // 执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+echo $resp;
+$respObj = json_decode($resp, true);
+if ($respObj["return_code"] == 0) { // sucess
+    echo $respObj["return_msg"];
+} else { // fail
+    echo $respObj["return_msg"];
+}
+
+// 正常返回结果:{"orderCurr":"1","goodsList":[{"goodsNumber":"1","payeeCompanyName":"饮豆另增古技号午娇缝乓忘嘴易","payeeAccName":"饮豆另增古技号午娇缝乓忘嘴易","goodsName":"测试商品2","goodsAmt":"10"},{"goodsNumber":"1","payeeCompanyName":"饮豆另增古技号午娇缝乓忘嘴易","payeeAccName":"饮豆另增古技号午娇缝乓忘嘴易","goodsName":"测试商品","goodsAmt":"10"}],"sumPayamt":"20","payRemark":"","feeList":[],"czCardInfoList":[],"payerAccname":"","payerWalletName":"","payType":"301","applBrno":"","payeeList":[{"payeeSysflag":1,"mallName":"工银聚测试001","agentbic":"","rbankname":"","payeeAccCurr":1,"payeeCountry":"","payAmount":"20","payeeAcckind":"C11","payeeBrno":"","payeeWalletName":"","payeeCompanyName":"总阵醉","racpostcode":"","racaddress4":"","racaddress2":"","racaddress3":"","payeeBrnoZoneno":"","racaddress1":"","payeeAddress":"","payeeOrgcode":"","payeeMemName":"工银聚测试001","payeeAccno":"6222081202000000859","payeeMemno":"gyjtest001","payeeWalletId":"","payeeBankCountry":"","payeeBankSign":""}],"isShowPayeeInfo":"1","reservDirect":0,"serialNo":"2022032510195646700000000002185004","agreeCode":"0160200238060410006041000000001490","payerAccno":"gyjtest002","payerWalletId":"","partnerSeqOrigin":"","payerSysFlag":"3","tppmBankCode":"102","bakchar8":"","transOk":0,"return_msg":"","agreeName":"唐厉活挥咐背氛凯误胞吆匈","orderAmount":"20","partnerSeq":"20123456121523625535","feeFlag":0,"applBrnoZoneno":"","enterpriseName":"工银聚测试002","payPlanList":[{"errno":0,"instrSerialno":"","reservNumCNY":"","uniqueSeq":"","errmsg":"","payAmount":"20","payCurr":"1","appendFlag":0,"holdDateCNY":"9999-12-31","payeeAccno":"6222081202000000859","payPlanSubcode":1,"payEntity":"1","billno":"","status":1}],"payMode":"3","payerBankName":"","payChannel":"1","return_code":"0","payStatus":"1"}
+?>

+ 152 - 0
extend/icbc/example/mybankpaycpaycppayapplyTestV2DBZF.php

@@ -0,0 +1,152 @@
+<?php
+// 担保支付 工行e企付支付申请
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+$request = array(
+    "serviceUrl" => 'https://apipcs3.dccnet.com.cn/api/mybank/pay/cpay/cppayapply/V2',
+    "method" => 'POST',
+    "isNeedEncrypt" => false,
+    "biz_content" => array(
+        "agreeCode" => "0160200238060410006041000000001490", // 合作方协议编号
+        "partnerSeq" => "20123456121523625535", // 交易流水号
+        "payChannel" => "1", // 渠道类型;1-PC端 2-移动端
+        "internationalFlag" => "1", // 境内外标志 1-境内 2-境外
+        "payMode" => "3", // 担保支付
+                           // "reservDirect" => "1", // 保留支付时上送(纯票据保留时无需上送),1-付方保留,2-收方保留(收方保留时,收款账号仅支持工行往来户),境内外币只支持付方保留
+        "operType" => "301", // 担保
+        "payEntitys" => "1000", // 1000第一位1代表现金第二位1代表票据
+        "asynFlag" => "0", // 0代表同步支付 1:代表异步支付
+                            // "logonId"=>"001",//企网登录ID 当异步支付需要指定提交人时才上送(预留字段,本期暂不支持)
+                            // "payerAccno" => "1202051109800066735", // 付款人账号 异步支付、安心账户退款时必须送账号;保证支付, 如果是采用平台方验证,必须上送付方保证金主账号;其他场景如果送,则为指定账号支付。
+                            // "payerAccname" => "埋赏使漱阵涕裹榛禁岩乓忘嘴易", // 付款人户名 付款人账号输入,付款人户名必须同时输入。付款人户名可单独输入,单独输入时,开启户名校验。
+                            // "payerFeeAccno"=>"",//付方付费账号 境外支付时上送。上送时,则取该账号付手续费;若不上送,则取付方账号付手续费。付方付费账号、付方付费账号户名、付方付费账号币种同时上送或者都不上送.
+                            // "payerFeeAccName"=>"",//付方付费账号户名
+                            // "payerFeeCurr"=>"",//付方付费账号币种
+        "payMemno" => "gyjtest002", // 付款人会员号
+                                     // "orgcode"=>"",//付款人组织机构代码 境内外币、境外必须上送。统一社会信用证的第九-十七位。
+        "orderCode" => "204801000512", // 订单号
+        "orderAmount" => "20", // 订单金额 单位分
+        "orderCurr" => "001", // 币种 001人民币
+        "sumPayamt" => "20", // 订单汇总金额 单位分
+                              // "orderRemark" => "测试", // 订单备注
+                              // "rceiptRemark" => "测试", // 回单补充信息备注
+                              // "purpose" => "", // 用途
+                              // "summary" => "", // 摘要
+        "submitTime" => "20220325101851", // 提交时间
+        "returnUrl" => "", // 支付成功后跳转连接
+        "callbackUrl" => "", // 回调通知地址
+                              // "agreementId"=>"",//合同号 境内外币必须上送,境外支付时上送,三单号不能都上送为空, Ascii字符集,不能有中文和全角字符
+                              // "invoiceId"=>"",//发票号 境外支付时上送,境内外币必须上送,Ascii字符集,不能有中文和全角字符
+                              // "manifestId"=>"",//报关单号 境外支付时上送
+                              // "agreementImageId"=>"",//影像批次号 境内外币必须上送,境外支付时上送
+        "enterpriseName" => "工银聚测试002", // 付款方企业名称 境内外币支付时上送,保证支付、担保支付时上送付款人会员名称
+                                         // "payRemark"=>"",//支付信息备注
+                                         // "bakReserve1"=>"",//境外交易特殊标志 网金部e链通专用,境外交易特殊标志。
+                                         // "bakReserve2"=>"",//备用字段2
+                                         // "bakReserve3"=>"",//备用字段3
+                                         // "partnerSeqOrigin"=>"201212221215202104",//原合作方支付流水号(待启用,退款时使用)
+                                         // "sumPayamtOrigin"=>"",//原汇总支付金额(备用字段) 待启用
+                                         // "reporterName"=>"",//填报人
+                                         // "reporterContact"=>"",//填报人电话
+                                         // "identityMode"=>"",//认证模式 1-免认证,0或空-其他;仅退款时使用,安心账户退款时必须上送1。使用免认证退款前需与工行签订相关协议,具体咨询客户经理。
+                                         // "payerPhone" => "", // 付款人手机号 11位手机号,线下异步支付时上送、线下异步支付:将收方信息推送给付款人手机号,付款人通过网银、柜面等渠道支付后自动关联订单为成功。使用线下异步支付前需与工行签订相关协议,具体咨询客户经理。
+                                         // "payerWalletId"=>"",//付款人钱包ID 待启用 数字人名币专用
+                                         // "payerWalletName"=>"",//付款人钱包名称 待启用 数字人名币专用
+                                         // "batchNo"=>"",//批次号 批量支付必送。
+                                         // "repetCard"=>"",//财智卡重用标志 财智卡重用模式下使用,重用模式1,其他模式0
+        "goodsList" => array(
+            array(
+                "goodsSubId" => "0968", // 商品信息子序号
+                "goodsName" => "测试商品", // 商品名称
+                "payeeCompanyName" => "饮豆另增古技号午娇缝乓忘嘴易", // 收款人户名
+                "goodsNumber" => "1", // 商品数量
+                "goodsUnit" => "个", // 商品单位
+                "goodsAmt" => "10" // 商品金额 单位分
+            ),
+            array(
+                "goodsSubId" => "0967", // 商品信息子序号
+                "goodsName" => "测试商品2", // 商品名称
+                "payeeCompanyName" => "饮豆另增古技号午娇缝乓忘嘴易", // 收款人户名
+                "goodsNumber" => "1", // 商品数量
+                "goodsUnit" => "个", // 商品单位
+                "goodsAmt" => "10" // 商品金额 单位分
+            )
+        ),
+
+        "payeeList" => array(
+            array(
+                "mallCode" => "gyjtest001", // 收方商户号 支付时必输,退款时非必输
+                                             // "mccCode" => "", // 商户类别(MCC码)
+                                             // "mccName" => "", // MCC码名称
+                                             // "businessLicense" => "", // 商户证件编号
+                                             // "businessLicenseType" => "", // 商户证件类型
+                "mallName" => "工银聚测试001", // 担保支付、保证支付上送收方会员名称
+                "payeeCompanyName" => "总阵醉", // 收款人户名
+                "payeeSysflag" => "1", // 境内外标志 1:境内工行,2:境内他行,3:境外
+                                        // "payeeBankCode" => "", // 收方行联行号 当收方为境内他行(payeeSysflag = 2)时上送,退款时不用上送。联行行号请合作方自行查询或联系客户经理。
+                                        // "payeeHeadBankCode" => "", // 收方行总行行号 暂未启用
+                "payeeAccno" => "6222081202000000859", // 收款人账号 担保支付、保证支付时上送会员号绑定的结算账号
+                "payAmount" => "20" // 收款金额(单位:分)
+                                    // "rbankname" => "", // 收款行全称 当收方为境外时必须上送
+                                    // "payeeBankCountry" => "", // 收款行所在国家地区代码 当收方为境外时必须上送
+                                    // "payeeBankSign" => "", // 收款行标识 当收方为境外时必须上送
+                                    // "payeeCountry" => "", // 收款人常驻国家/地区 当收方为境外时必须上送
+                                    // "payeeAddress" => "", // 收款人地址 境外非加拿大时必须上送
+                                    // "racaddress1" => "", // 收款人地址(国家) 境外加拿大时必须上送
+                                    // "racaddress2" => "", // 收款人地址(省/州) 加拿大地区必输
+                                    // "racaddress3" => "", // 收款人地址(城市/城镇) 加拿大地区必输
+                                    // "racaddress4" => "", // 收款人地址(街/路) 加拿大地区必输
+                                    // "racpostcode" => "", // 收款人地址(邮编) 加拿大地区必输
+                                    // "agentbic" => "", // 收款行之代理行BIC码(境外支付才上送)
+                                    // "payeePhone" => "", // 收款人手机号
+                                    // "payeeOrgcode" => "", // 收款人组织机构代码 境内外币必须上送
+                                    // "receivableAmount" => "", // 应收金额(单位:分) 担保支付专用,指本订单orderCode收方应收金额。
+                                    // "payeeWalletId" => "", // 收款人钱包ID 支持数字人民币支付时上送
+                                    // "payeeWalletName" => "" // 收款人钱包名称 支持数字人民币支付时上送
+            )
+        )
+    )
+);
+
+$appId = "10000000000000225069";
+$privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDPUsAxVOs46x7u
+			mfJDcw98UfPhD+/ZoFcJs4WqhoqWeLbSNHDOTFc+7r5qsWoTPiuaJdcxQbIF0bOT
+			lvIXXFNivTZy35aAQUpzILsPIVd0+Z+pCR2mosZkl8qhRk+5mGtc3OlzGvkGGnxx
+			O2fKxtwIRdEUaAnqg/k+8kSN3k8p9sXbJD9+r3imIvkswuGTEoEk0ARg3YSmlSTT
+			P0UqksT5/MQN3rZYDlE0baPCB2pKcTDncsNhvgwjGmI7fMyBB1tV0jGfaGq1IcGy
+			fY5WUcIaiveYUq5Gta6+9J/B333hztCCWdtbM+YoI4UpMcV5B1056P3X1hPRbCri
+			Id5uI4sXAgMBAAECggEAdluBiSg3mSjxYbnVSphXUNvgZK4aeZ1F0y3/sxhX6gtE
+			I8D4XW3LqQvW/UYHjrDBZ6EOtvoQTa4n3KwhzSBSIl5uxSnL27BqdktLPxoDua4A
+			bhncKZNnu2nErklbnlLbiAo95A6T994LCQGnAWaBmt9wuzuh3ZY2Jq9cX7l4bDWD
+			3OaKLER56n8KgMM0hyUffm2+ediCVy0CfL/50gscWLQKrDx52uohtgORw4OiAzx/
+			YwgnnvSAgXQK21ChDcN5GQA5hZOeFMRY0vshSiA6/Zz8GvHfa4u/fEWVpZhsJrow
+			97Fk3he8NHc9M6mLIxKeGFLknpkNHgDZXqCD5vvVwQKBgQDauoRR8EAjU+jjZDUi
+			5qyPXSUELthqMbn4oHT33pgjSvQgoLfMtn95FHgFZJjEZfAnKgNSjFddPqB6vy0d
+			PLXRSyqG0b+ap+f2e2kuNnbngijCO9WWDdpU1k7e/Lvo5Ohgz0ODAxRqrst+QqmW
+			5C6nt+g0Il4ctdoUQ3oBeWTc8QKBgQDyprRvGqThXSsJ64wpiPUKieZ+562FFwZE
+			pBU1Sy3PS9EfroQa2/NlL5eiLPOOpmY5tUhIyNZzL7YE4n+iI/pZFpC23+gz4Qjt
+			sQnBGXQn+D7H181B119jUt/mYZwM3zAy9DJal4+q52LvmluT95/eTyhYD46vEGr3
+			0axSGcOIhwKBgDRx+Hw1IQvXeMXdJyiBKusNKG0CVn3QAols3973Dn+X30Vbg/af
+			45zCnaydXEvrLVQWrMlEQUZoV85WvJiAEBBo939wF4Mbs3DUUnn0MTp9aQx5kFL0
+			a19gK3UoIF5NVLKxv7xQJrsVwlE55rP5bn5kiFbHzs0PhYTKURy9YMPhAoGAVkeO
+			at8Xd4bQUeOuX+px7wBftAoe+e7Y7LlHTT7hGA+GWXSNRpuk7PrCOQkwxS1HtgdO
+			n4rCLgzt9Miwx29xihHq/Quani/LI/FKXZ32Xmv3rsl+E4ZIRaHnORzGBxGpKsUH
+			zoyLqiJCXJ4PKArpjnupBb7qZjc5QcsNMdg1XasCgYEAv6SkwgcRCVliGtphJVxg
+			xODkI+YOufnDGpD5OGECY0/O5FQ8u4PzvQ5FuOBElJzpbKmDqKqMX2UsgpvPzyT2
+			2JtW0Xpo/UiApIyuUuF5CxIvxfsD3VSjC7MrmqBCEU/iRdQv11alFRg4KOXZXst6
+			oclGtrgSiI3n3kJ2Xy3oO38=";
+$icbcPublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB";
+// 以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+$client = new DefaultIcbcClient($appId, $privateKey, IcbcConstants::$SIGN_TYPE_RSA2, '', '', $icbcPublicKey, '', '', '', '');
+$resp = $client->execute($request, '202202281278103429955', ''); // 执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+echo $resp;
+$respObj = json_decode($resp, true);
+// if ($respObj["return_code"] == 0) { // sucess
+// $url = 'location:' . $respObj["redirectParam"];
+// header($url); // 跳转支付页面
+// } else { // fail
+// echo $respObj["return_msg"];
+// }
+
+// 正常返回示例:{"transOk":0,"orderCurr":"","payMode":"","return_msg":"成功。","sumPayamt":"","agreeName":"","serialNo":"","agreeCode":"","orderAmount":"","redirectParam":"","partnerSeq":"20123456121523625535","return_code":0,"status":1}
+?>

+ 76 - 0
extend/icbc/example/mybankpaycpaycppreservationcancelTestV2.php

@@ -0,0 +1,76 @@
+<?php
+// 担保支付 工银e企付取消支付
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+
+$request = array(
+    "serviceUrl" => 'https://apipcs3.dccnet.com.cn/api/mybank/pay/cpay/cppreservationcancel/V2',
+    "method" => 'POST',
+    "isNeedEncrypt" => false,
+    "biz_content" => array(
+        "agreeCode" => "0160200238060410006041000000001490", // 合作方协议编号
+        "orderCode" => "204801000512", // 订单编号——与支付申请订单号一致
+        "partnerSeq" => "203346693215202231", // 合作方交易流水号
+        "partnerSeqOrigin" => "20123456121523625535", // 原合作方支付流水号
+        "payAmount" => "3", // 本次取消金额(单位:分)
+        "orderCurr" => "1", // 交易币种
+        "payeeAccno" => "6222081202000000859", // 收款人账号
+        "payeeCompanyName" => "总阵醉", // 收款人户名
+                                                  // "payerAccno" => "", // 付款人是他行的情况必须上送,且上送账号必须和付款时账号一致
+                                                  // "payerAccname" => "", // 选输。付款人是他行的情况上送,上送则校验,不送不校验
+                                                  // "payerBankCode" => "", // 付款人是他行的情况必须上送,且上送账号必须和付款时账号一致
+        "submitTime" => "20220325101851", // 交易平台提交时间
+        "orderRemark" => "测试取消支付", // 订单备注
+                                    // "receiptRemark" => "补充信息备注", // 回单补充信息备注
+                                    // "purpose" => "用途", // 用途
+                                    // "summary" => "摘要", // 摘要
+        "operType" => "303", // 业务种类 担保/保证支付必输,303-取消支付 805-保证取消支付 809-缴存金释放
+        "payerMemberNo" => "gyjtest002", // 付款方会员编号(担保支付必输/保证支付必输,会员必须开立保证支付会员)
+        "payerMemberName" => "工银聚测试002", // 付款方会员名称(担保支付必输/保证支付必输)
+        "crmemberNo" => "gyjtest001", // 收款方会员编号,业务种类为取消支付/805时必须上送
+        "crmemberName" => "工银聚测试001" // 收款方会员名称,业务种类为取消支付/805时必须上送
+                                     // "enSummry" => "英文备注" // 英文备注)
+    )
+);
+
+$appId = "10000000000000225069";
+$privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDPUsAxVOs46x7u
+			mfJDcw98UfPhD+/ZoFcJs4WqhoqWeLbSNHDOTFc+7r5qsWoTPiuaJdcxQbIF0bOT
+			lvIXXFNivTZy35aAQUpzILsPIVd0+Z+pCR2mosZkl8qhRk+5mGtc3OlzGvkGGnxx
+			O2fKxtwIRdEUaAnqg/k+8kSN3k8p9sXbJD9+r3imIvkswuGTEoEk0ARg3YSmlSTT
+			P0UqksT5/MQN3rZYDlE0baPCB2pKcTDncsNhvgwjGmI7fMyBB1tV0jGfaGq1IcGy
+			fY5WUcIaiveYUq5Gta6+9J/B333hztCCWdtbM+YoI4UpMcV5B1056P3X1hPRbCri
+			Id5uI4sXAgMBAAECggEAdluBiSg3mSjxYbnVSphXUNvgZK4aeZ1F0y3/sxhX6gtE
+			I8D4XW3LqQvW/UYHjrDBZ6EOtvoQTa4n3KwhzSBSIl5uxSnL27BqdktLPxoDua4A
+			bhncKZNnu2nErklbnlLbiAo95A6T994LCQGnAWaBmt9wuzuh3ZY2Jq9cX7l4bDWD
+			3OaKLER56n8KgMM0hyUffm2+ediCVy0CfL/50gscWLQKrDx52uohtgORw4OiAzx/
+			YwgnnvSAgXQK21ChDcN5GQA5hZOeFMRY0vshSiA6/Zz8GvHfa4u/fEWVpZhsJrow
+			97Fk3he8NHc9M6mLIxKeGFLknpkNHgDZXqCD5vvVwQKBgQDauoRR8EAjU+jjZDUi
+			5qyPXSUELthqMbn4oHT33pgjSvQgoLfMtn95FHgFZJjEZfAnKgNSjFddPqB6vy0d
+			PLXRSyqG0b+ap+f2e2kuNnbngijCO9WWDdpU1k7e/Lvo5Ohgz0ODAxRqrst+QqmW
+			5C6nt+g0Il4ctdoUQ3oBeWTc8QKBgQDyprRvGqThXSsJ64wpiPUKieZ+562FFwZE
+			pBU1Sy3PS9EfroQa2/NlL5eiLPOOpmY5tUhIyNZzL7YE4n+iI/pZFpC23+gz4Qjt
+			sQnBGXQn+D7H181B119jUt/mYZwM3zAy9DJal4+q52LvmluT95/eTyhYD46vEGr3
+			0axSGcOIhwKBgDRx+Hw1IQvXeMXdJyiBKusNKG0CVn3QAols3973Dn+X30Vbg/af
+			45zCnaydXEvrLVQWrMlEQUZoV85WvJiAEBBo939wF4Mbs3DUUnn0MTp9aQx5kFL0
+			a19gK3UoIF5NVLKxv7xQJrsVwlE55rP5bn5kiFbHzs0PhYTKURy9YMPhAoGAVkeO
+			at8Xd4bQUeOuX+px7wBftAoe+e7Y7LlHTT7hGA+GWXSNRpuk7PrCOQkwxS1HtgdO
+			n4rCLgzt9Miwx29xihHq/Quani/LI/FKXZ32Xmv3rsl+E4ZIRaHnORzGBxGpKsUH
+			zoyLqiJCXJ4PKArpjnupBb7qZjc5QcsNMdg1XasCgYEAv6SkwgcRCVliGtphJVxg
+			xODkI+YOufnDGpD5OGECY0/O5FQ8u4PzvQ5FuOBElJzpbKmDqKqMX2UsgpvPzyT2
+			2JtW0Xpo/UiApIyuUuF5CxIvxfsD3VSjC7MrmqBCEU/iRdQv11alFRg4KOXZXst6
+			oclGtrgSiI3n3kJ2Xy3oO38=";
+$icbcPublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB";
+// 以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+$client = new DefaultIcbcClient($appId, $privateKey, IcbcConstants::$SIGN_TYPE_RSA2, '', '', $icbcPublicKey, '', '', '', '');
+$resp = $client->execute($request, '2022020712345425111', ''); // 执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+echo $resp;
+$respObj = json_decode($resp, true);
+if ($respObj["return_code"] == 0) { // sucess
+    echo $respObj["return_msg"];
+} else { // fail
+    echo $respObj["return_msg"];
+}
+
+// 正常返回示例:{"payAmount":0,"partnerSeq":"203346693215202231","return_msg":"取消支付成功。","return_code":0,"status":"1"}
+?>

+ 83 - 0
extend/icbc/example/mybankpaycpaycppreservationpayTestV2DBZF.php

@@ -0,0 +1,83 @@
+<?php
+// 担保支付 工银e企付确认支付
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+
+$request = array(
+    "serviceUrl" => 'https://apipcs3.dccnet.com.cn/api/mybank/pay/cpay/cppreservationpay/V2',
+    "method" => 'POST',
+    "isNeedEncrypt" => false,
+    "biz_content" => array(
+        "agreeCode" => "0160200238060410006041000000001490", // 合作方协议编号
+        "orderCode" => "204801000512", // 订单编号——与支付申请订单号一致
+        "partnerSeq" => "203342293215202227", // 合作方交易流水号
+        "partnerSeqOrigin" => "20123456121523625535", // 原合作方支付流水号
+        "payAmount" => "10", // 本次解保留划拨金额(单位:分)
+        "orderCurr" => "1", // 交易币种
+        "payeeSysflag" => "1", // 收款方系统内外标志(1-境内工行,2-境内他行,3-境外)
+        "payeeAccno" => "6222081202000000859", // 收款人账号
+        "payeeCompanyName" => "总阵醉", // 收款人户名
+                                // "payeeBankCode" => "", // 收方行联行号(收款方系统内外标志为2时必输)
+        "submitTime" => "20220325101851", // 交易平台提交时间
+        "orderRemark" => "测试担保确认支付", // 订单备注
+                                      // "receiptRemark" => "", // 回单补充信息备注,当需要打印在回单信息中时上送
+                                      // "purpose" => "", // 用途,打印到回单的用途栏
+                                      // "summary" => "", // 摘要,打印到回单的摘要栏
+        "operType" => "302", // 担保/保证业务种类(担保支付/保证支付必输 ,302-担保支付,803-保证支付(农夫专用模式),804-保证支付确认收货,810-保证支付缴存金支付)
+        "payerMemberNo" => "gyjtest002", // 付款方会员编号(担保支付必输/保证支付必输,会员必须开立保证支付会员)
+        "payerMemberName" => "工银聚测试002", // 付款方会员名称(担保支付必输/保证支付必输)
+                                      // "realpayerAccno" => "", // 真实付方账号(仅限分行使用)
+                                      // "realpayerAccnoName" => "", // 真实付方户名(仅限分行使用)
+                                      // "realpayerBankName" => "", // 真实付方行名,非必输(保证支付新增,仅限分行使用)
+                                      // "realpayerBankNo" => "", // 真实付方行号,非必输(保证支付新增,仅限分行使用)
+                                      // "note" => "", // 附言
+        "crmemberNo" => "gyjtest001", // 收款方会员编号(担保/保证支付必输)
+        "crmemberName" => "工银聚测试001", // 收款方会员名称(担保/保证支付必输)
+        "tradeName" => "王者币", // 商品名称(担保支付必输)
+        "tradeNum" => "10", // 商品数量(担保支付必输)
+        "tradeUnit" => "10" // 商品单位(担保支付必输)
+                            // "fundDealDirect" => "" // 资金到账方向(1-自有资金 3-结算账号 803-保证支付(农夫专用模式),804-保证支付确认收货输入。不输入默认资金入到收方3-结算账号)
+    )
+);
+
+$appId = "10000000000000225069";
+$privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDPUsAxVOs46x7u
+			mfJDcw98UfPhD+/ZoFcJs4WqhoqWeLbSNHDOTFc+7r5qsWoTPiuaJdcxQbIF0bOT
+			lvIXXFNivTZy35aAQUpzILsPIVd0+Z+pCR2mosZkl8qhRk+5mGtc3OlzGvkGGnxx
+			O2fKxtwIRdEUaAnqg/k+8kSN3k8p9sXbJD9+r3imIvkswuGTEoEk0ARg3YSmlSTT
+			P0UqksT5/MQN3rZYDlE0baPCB2pKcTDncsNhvgwjGmI7fMyBB1tV0jGfaGq1IcGy
+			fY5WUcIaiveYUq5Gta6+9J/B333hztCCWdtbM+YoI4UpMcV5B1056P3X1hPRbCri
+			Id5uI4sXAgMBAAECggEAdluBiSg3mSjxYbnVSphXUNvgZK4aeZ1F0y3/sxhX6gtE
+			I8D4XW3LqQvW/UYHjrDBZ6EOtvoQTa4n3KwhzSBSIl5uxSnL27BqdktLPxoDua4A
+			bhncKZNnu2nErklbnlLbiAo95A6T994LCQGnAWaBmt9wuzuh3ZY2Jq9cX7l4bDWD
+			3OaKLER56n8KgMM0hyUffm2+ediCVy0CfL/50gscWLQKrDx52uohtgORw4OiAzx/
+			YwgnnvSAgXQK21ChDcN5GQA5hZOeFMRY0vshSiA6/Zz8GvHfa4u/fEWVpZhsJrow
+			97Fk3he8NHc9M6mLIxKeGFLknpkNHgDZXqCD5vvVwQKBgQDauoRR8EAjU+jjZDUi
+			5qyPXSUELthqMbn4oHT33pgjSvQgoLfMtn95FHgFZJjEZfAnKgNSjFddPqB6vy0d
+			PLXRSyqG0b+ap+f2e2kuNnbngijCO9WWDdpU1k7e/Lvo5Ohgz0ODAxRqrst+QqmW
+			5C6nt+g0Il4ctdoUQ3oBeWTc8QKBgQDyprRvGqThXSsJ64wpiPUKieZ+562FFwZE
+			pBU1Sy3PS9EfroQa2/NlL5eiLPOOpmY5tUhIyNZzL7YE4n+iI/pZFpC23+gz4Qjt
+			sQnBGXQn+D7H181B119jUt/mYZwM3zAy9DJal4+q52LvmluT95/eTyhYD46vEGr3
+			0axSGcOIhwKBgDRx+Hw1IQvXeMXdJyiBKusNKG0CVn3QAols3973Dn+X30Vbg/af
+			45zCnaydXEvrLVQWrMlEQUZoV85WvJiAEBBo939wF4Mbs3DUUnn0MTp9aQx5kFL0
+			a19gK3UoIF5NVLKxv7xQJrsVwlE55rP5bn5kiFbHzs0PhYTKURy9YMPhAoGAVkeO
+			at8Xd4bQUeOuX+px7wBftAoe+e7Y7LlHTT7hGA+GWXSNRpuk7PrCOQkwxS1HtgdO
+			n4rCLgzt9Miwx29xihHq/Quani/LI/FKXZ32Xmv3rsl+E4ZIRaHnORzGBxGpKsUH
+			zoyLqiJCXJ4PKArpjnupBb7qZjc5QcsNMdg1XasCgYEAv6SkwgcRCVliGtphJVxg
+			xODkI+YOufnDGpD5OGECY0/O5FQ8u4PzvQ5FuOBElJzpbKmDqKqMX2UsgpvPzyT2
+			2JtW0Xpo/UiApIyuUuF5CxIvxfsD3VSjC7MrmqBCEU/iRdQv11alFRg4KOXZXst6
+			oclGtrgSiI3n3kJ2Xy3oO38=";
+$icbcPublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB";
+// 以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+$client = new DefaultIcbcClient($appId, $privateKey, IcbcConstants::$SIGN_TYPE_RSA2, '', '', $icbcPublicKey, '', '', '', '');
+$resp = $client->execute($request, '2022020712345425111', ''); // 执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+echo $resp;
+$respObj = json_decode($resp, true);
+if ($respObj["return_code"] == 0) { // sucess
+    echo $respObj["return_msg"];
+} else { // fail
+    echo $respObj["return_msg"];
+}
+//返回一个url,调用url通过手机号验证,去确认支付
+// 正常返回示例:{"orderCurr":"1","transOk":0,"return_msg":"","serialNo":"20123456121523625535","agreeCode":"0160200238060410006041000000001490","errorNo":"","errorName":"","payAmount":"10","redirectParam":"https://cpay3.dccnet.com.cn/corporpay/servlet/ICBCCPayBusinessServlet?unique_serialno=2022032510212945200000000001799014&signstr=734820D7A0B2CB995B22047B1573F834934841A158C778FC682DA1BEA68D4E42D5CEBBF7FCE625D2","partnerSeq":"203342293215202227","return_code":"0","status":"1"}
+?>

+ 89 - 0
extend/icbc/example/mybankpaycpaymemberapplyTestV1LegalPerson.php

@@ -0,0 +1,89 @@
+<?php
+// 合作方会员档案录入    付方法人
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+$request = array(
+    "serviceUrl" => 'https://apipcs3.dccnet.com.cn/api/mybank/pay/cpay/memberapply/V1',
+    "method" => 'POST',
+    "isNeedEncrypt" => false,
+    "biz_content" => array(
+        "agreeCode" => "0160200238060410006041000000001490", // 合作方协议编号
+        "memberNo" => "yybtest002", // 合作方会员号
+        "memberName" => "埋赏使漱阵涕裹榛禁岩乓忘嘴易", // 会员名称
+        "memberRole" => "1", // 会员角色(1-付款方 2-收款方)
+        "memberType" => "01", // 会员类型( 01-法人 02-其他组织 03-个体工商户 04-自然人)
+        "certificateType" => "101", // 注册登记证件类型(0-身份证 1-护照2-军官证 3-士兵证4-港澳台通行证 5-临时身份证 6-户口簿 9-警官证 12-外国人居留证 101-营业执照 100-组织机构代码证 112-税务登记证 107-统一社会信用代码证 99-其他)不必输 operType为5和6不输入,其他必输,示例:101
+        "certificateId" => "97327403OD4M94RV7G", // 注册登记证件号码 operType为5和6不输入,其他必输,示例:101
+        "corpRepreName" => "叁五", // 法人代表姓名 会员类型为01-法人 02-其他组织 03-个体工商户 时必输
+        "corpRepreIdType" => "0", // 法人代表证件类型(0-身份证 1-护照2-军官证 3-士兵证4-港澳台通行证 5-临时身份证 6-户口簿 9-警官证 12-外国人居留证 101-营业执照 100-组织机构代码证 112-税务登记证 107-统一社会信用代码证 99-其他)会员类型为01-法人 02-其他组织 03-个体工商户 时必输
+        "corpRepreId" => "330103198709010052 ", // 法人代表证件号码 会员类型为01-法人 02-其他组织 03-个体工商户 时必输
+        "corpRepreSignDate" => "", // 法人身份证签发日期 2001-01-01 不必输
+        "dealName" => "叁五", // 经办人姓名 会员类型为01-法人 02-其他组织 03-个体工商户 时必输
+        "dealTelphoneNo" => "13958033335", // operType为5和6不输入,其他必输,此手机号默认做会员认证及支付使用,示例:13111111111
+                                            // "mallUrl"=>"",//商户主页URL 不必输
+        "icpCode" => "2323232ffg", // ICP备案编号 会员角色为收方必输,可输入合作方平台的ICP备案编号
+                                    // "singNoNoteAmtd"=>"",//单笔免短信验证码额度(单位分) 默认为0 不必输
+                                    // "enterAmtType"=>"",//0-逐笔,1-并笔,担保支付入账方式,默认逐笔
+        "accBankFlag" => "1", // operType为5和6不输入,其他必输,示例:1-本行2-他行
+        "accno" => "1202051109800066735", // operType为5和6不输入,其他必输,示例:会员绑定结算账号
+        "accName" => "埋赏使漱阵涕裹榛禁岩乓忘嘴易", // operType为5和6不输入,其他必输,示例:会员绑定结算账号户名
+                                        // "accBankNo"=>"",//账户开户行行号 账号本他行标志为他行必输
+                                        // "accBankName"=>"",//账户开户行行名 账号本他行标志为他行必输
+                                        // "merEname"=>"test",//特约商户英文名 specialsupplyer(会员类型为04-自然人 时必输)
+                                        // "merShname"=>"test",//商户简称 特约商户(会员类型为04-自然人 时必输)
+                                        // "saleDepName"=>"test",//门店名称 门店(会员类型为04-自然人 时必输)
+                                        // "shopAddr"=>"test",//商城地址 商城地址(会员类型为04-自然人 时必输)
+                                        // "postCode"=>"311400",//邮编编码 235001(会员类型为04-自然人 时必输)
+                                        // "linkCode"=>"330106199011052713",//联系人身份证号 123456123456123(会员类型为04-自然人 时必输)
+                                        // "eMail"=>"605439284@qq.com",//联系人邮箱 325614@163.com(会员类型为04-自然人 时必输)
+                                        // "regAmt"=>"100000000"//注册资金 123654123(会员类型为04-自然人 时必输)
+                                        // "callbackUrl"=>"",//回调通知
+        "operType" => "1" // 1-新增 2-修改 3-绑定 4-解绑(3、4只票据信息绑定时使用);保证支付专用,5-保证支付订单开卡 6-保证支付分润维护(只支持2个收方,用于开卡设置分润比例后的后续维护) 不必输
+                          // "enSurePayCardApply"=>"",//operType为5-保证支付订单开卡、operType为6-保证支付分润维护时必输。请求参数中保证支付开卡参数集合,每次最多支持开1张卡。保证支付专用。详见4.1 保证支付开卡参数
+                          // "ensureInfo"=>"",//保证支付会员信息
+                          // "billPlaNo"=>"",//票付通平台编号 10000001(operType=3或4时必输)
+                          // "billAccInfo"=>"",//电票账户信息 10000001(operType=3或4时必输,最多不超过5笔)
+    )
+);
+
+$appId = "10000000000000225069";
+$privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDPUsAxVOs46x7u
+			mfJDcw98UfPhD+/ZoFcJs4WqhoqWeLbSNHDOTFc+7r5qsWoTPiuaJdcxQbIF0bOT
+			lvIXXFNivTZy35aAQUpzILsPIVd0+Z+pCR2mosZkl8qhRk+5mGtc3OlzGvkGGnxx
+			O2fKxtwIRdEUaAnqg/k+8kSN3k8p9sXbJD9+r3imIvkswuGTEoEk0ARg3YSmlSTT
+			P0UqksT5/MQN3rZYDlE0baPCB2pKcTDncsNhvgwjGmI7fMyBB1tV0jGfaGq1IcGy
+			fY5WUcIaiveYUq5Gta6+9J/B333hztCCWdtbM+YoI4UpMcV5B1056P3X1hPRbCri
+			Id5uI4sXAgMBAAECggEAdluBiSg3mSjxYbnVSphXUNvgZK4aeZ1F0y3/sxhX6gtE
+			I8D4XW3LqQvW/UYHjrDBZ6EOtvoQTa4n3KwhzSBSIl5uxSnL27BqdktLPxoDua4A
+			bhncKZNnu2nErklbnlLbiAo95A6T994LCQGnAWaBmt9wuzuh3ZY2Jq9cX7l4bDWD
+			3OaKLER56n8KgMM0hyUffm2+ediCVy0CfL/50gscWLQKrDx52uohtgORw4OiAzx/
+			YwgnnvSAgXQK21ChDcN5GQA5hZOeFMRY0vshSiA6/Zz8GvHfa4u/fEWVpZhsJrow
+			97Fk3he8NHc9M6mLIxKeGFLknpkNHgDZXqCD5vvVwQKBgQDauoRR8EAjU+jjZDUi
+			5qyPXSUELthqMbn4oHT33pgjSvQgoLfMtn95FHgFZJjEZfAnKgNSjFddPqB6vy0d
+			PLXRSyqG0b+ap+f2e2kuNnbngijCO9WWDdpU1k7e/Lvo5Ohgz0ODAxRqrst+QqmW
+			5C6nt+g0Il4ctdoUQ3oBeWTc8QKBgQDyprRvGqThXSsJ64wpiPUKieZ+562FFwZE
+			pBU1Sy3PS9EfroQa2/NlL5eiLPOOpmY5tUhIyNZzL7YE4n+iI/pZFpC23+gz4Qjt
+			sQnBGXQn+D7H181B119jUt/mYZwM3zAy9DJal4+q52LvmluT95/eTyhYD46vEGr3
+			0axSGcOIhwKBgDRx+Hw1IQvXeMXdJyiBKusNKG0CVn3QAols3973Dn+X30Vbg/af
+			45zCnaydXEvrLVQWrMlEQUZoV85WvJiAEBBo939wF4Mbs3DUUnn0MTp9aQx5kFL0
+			a19gK3UoIF5NVLKxv7xQJrsVwlE55rP5bn5kiFbHzs0PhYTKURy9YMPhAoGAVkeO
+			at8Xd4bQUeOuX+px7wBftAoe+e7Y7LlHTT7hGA+GWXSNRpuk7PrCOQkwxS1HtgdO
+			n4rCLgzt9Miwx29xihHq/Quani/LI/FKXZ32Xmv3rsl+E4ZIRaHnORzGBxGpKsUH
+			zoyLqiJCXJ4PKArpjnupBb7qZjc5QcsNMdg1XasCgYEAv6SkwgcRCVliGtphJVxg
+			xODkI+YOufnDGpD5OGECY0/O5FQ8u4PzvQ5FuOBElJzpbKmDqKqMX2UsgpvPzyT2
+			2JtW0Xpo/UiApIyuUuF5CxIvxfsD3VSjC7MrmqBCEU/iRdQv11alFRg4KOXZXst6
+			oclGtrgSiI3n3kJ2Xy3oO38=";
+$icbcPublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB";
+// 以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+$client = new DefaultIcbcClient($appId, $privateKey, IcbcConstants::$SIGN_TYPE_RSA2, '', '', $icbcPublicKey, '', '', '', '');
+$resp = $client->execute($request, '2022040715103425113', ''); // 执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+echo $resp;
+$respObj = json_decode($resp, true);
+if ($respObj["return_code"] == 0) { // sucess
+    echo $respObj["return_msg"];
+} else { // fail
+    echo $respObj["return_msg"];
+}
+// 返回成功:{"transOk":0,"return_msg":"会员档案管理执行成功","return_code":"0"}
+
+?>

+ 89 - 0
extend/icbc/example/mybankpaycpaymemberapplyTestV1NaturalPerson.php

@@ -0,0 +1,89 @@
+<?php
+// 合作方会员档案录入   付方自然人
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+$request = array(
+    "serviceUrl" => 'https://apipcs3.dccnet.com.cn/api/mybank/pay/cpay/memberapply/V1',
+    "method" => 'POST',
+    "isNeedEncrypt" => false,
+    "biz_content" => array(
+        "agreeCode" => "0160200238060410006041000000001490", // 合作方协议编号
+        "memberNo" => "gyjtest002", // 合作方会员号
+        "memberName" => "工银聚测试002", // 会员名称
+        "memberRole" => "1", // 会员角色(1-付款方 2-收款方)
+        "memberType" => "04", // 会员类型( 01-法人 02-其他组织 03-个体工商户 04-自然人)
+        "certificateType" => "0", // 注册登记证件类型(0-身份证 1-护照2-军官证 3-士兵证4-港澳台通行证 5-临时身份证 6-户口簿 9-警官证 12-外国人居留证 101-营业执照 100-组织机构代码证 112-税务登记证 107-统一社会信用代码证 99-其他)不必输 operType为5和6不输入,其他必输,示例:101
+        "certificateId" => "388818196105112285", // 注册登记证件号码 operType为5和6不输入,其他必输,示例:101
+                                                  // "corpRepreName" => "叁五", // 法人代表姓名 会员类型为01-法人 02-其他组织 03-个体工商户 时必输
+                                                  // "corpRepreIdType" => "0", // 法人代表证件类型(0-身份证 1-护照2-军官证 3-士兵证4-港澳台通行证 5-临时身份证 6-户口簿 9-警官证 12-外国人居留证 101-营业执照 100-组织机构代码证 112-税务登记证 107-统一社会信用代码证 99-其他)会员类型为01-法人 02-其他组织 03-个体工商户 时必输
+                                                  // "corpRepreId" => "330103198709010052 ", // 法人代表证件号码 会员类型为01-法人 02-其他组织 03-个体工商户 时必输
+                                                  // "corpRepreSignDate" => "", // 法人身份证签发日期 2001-01-01 不必输
+                                                  // "dealName" => "叁五", // 经办人姓名 会员类型为01-法人 02-其他组织 03-个体工商户 时必输
+        "dealTelphoneNo" => "13606396048", // operType为5和6不输入,其他必输,此手机号默认做会员认证及支付使用,示例:13111111111
+                                            // "mallUrl"=>"",//商户主页URL 不必输
+        "icpCode" => "2323232ffg", // ICP备案编号 会员角色为收方必输,可输入合作方平台的ICP备案编号
+                                    // "singNoNoteAmtd"=>"",//单笔免短信验证码额度(单位分) 默认为0 不必输
+                                    // "enterAmtType"=>"",//0-逐笔,1-并笔,担保支付入账方式,默认逐笔
+        "accBankFlag" => "1", // operType为5和6不输入,其他必输,示例:1-本行2-他行
+        "accno" => "6222081202000002046", // operType为5和6不输入,其他必输,示例:会员绑定结算账号
+        "accName" => "狱擦", // operType为5和6不输入,其他必输,示例:会员绑定结算账号户名
+                            // "accBankNo"=>"",//账户开户行行号 账号本他行标志为他行必输
+                            // "accBankName"=>"",//账户开户行行名 账号本他行标志为他行必输
+        "merEname" => "test", // 特约商户英文名 specialsupplyer(会员类型为04-自然人 时必输)
+        "merShname" => "test", // 商户简称 特约商户(会员类型为04-自然人 时必输)
+        "saleDepName" => "test", // 门店名称 门店(会员类型为04-自然人 时必输)
+        "shopAddr" => "test", // 商城地址 商城地址(会员类型为04-自然人 时必输)
+        "postCode" => "311400", // 邮编编码 235001(会员类型为04-自然人 时必输)
+        "linkCode" => "330106199011052713", // 联系人身份证号 123456123456123(会员类型为04-自然人 时必输)
+        "eMail" => "605439284@qq.com", // 联系人邮箱 325614@163.com(会员类型为04-自然人 时必输)
+        "regAmt" => "100000000", // 注册资金 123654123(会员类型为04-自然人 时必输)
+                                  // "callbackUrl"=>"",//回调通知
+        "operType" => "2" // 1-新增 2-修改 3-绑定 4-解绑(3、4只票据信息绑定时使用);保证支付专用,5-保证支付订单开卡 6-保证支付分润维护(只支持2个收方,用于开卡设置分润比例后的后续维护) 不必输
+                          // "enSurePayCardApply"=>"",//operType为5-保证支付订单开卡、operType为6-保证支付分润维护时必输。请求参数中保证支付开卡参数集合,每次最多支持开1张卡。保证支付专用。详见4.1 保证支付开卡参数
+                          // "ensureInfo"=>"",//保证支付会员信息
+                          // "billPlaNo"=>"",//票付通平台编号 10000001(operType=3或4时必输)
+                          // "billAccInfo"=>"",//电票账户信息 10000001(operType=3或4时必输,最多不超过5笔)
+    )
+);
+
+$appId = "10000000000000225069";
+$privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDPUsAxVOs46x7u
+			mfJDcw98UfPhD+/ZoFcJs4WqhoqWeLbSNHDOTFc+7r5qsWoTPiuaJdcxQbIF0bOT
+			lvIXXFNivTZy35aAQUpzILsPIVd0+Z+pCR2mosZkl8qhRk+5mGtc3OlzGvkGGnxx
+			O2fKxtwIRdEUaAnqg/k+8kSN3k8p9sXbJD9+r3imIvkswuGTEoEk0ARg3YSmlSTT
+			P0UqksT5/MQN3rZYDlE0baPCB2pKcTDncsNhvgwjGmI7fMyBB1tV0jGfaGq1IcGy
+			fY5WUcIaiveYUq5Gta6+9J/B333hztCCWdtbM+YoI4UpMcV5B1056P3X1hPRbCri
+			Id5uI4sXAgMBAAECggEAdluBiSg3mSjxYbnVSphXUNvgZK4aeZ1F0y3/sxhX6gtE
+			I8D4XW3LqQvW/UYHjrDBZ6EOtvoQTa4n3KwhzSBSIl5uxSnL27BqdktLPxoDua4A
+			bhncKZNnu2nErklbnlLbiAo95A6T994LCQGnAWaBmt9wuzuh3ZY2Jq9cX7l4bDWD
+			3OaKLER56n8KgMM0hyUffm2+ediCVy0CfL/50gscWLQKrDx52uohtgORw4OiAzx/
+			YwgnnvSAgXQK21ChDcN5GQA5hZOeFMRY0vshSiA6/Zz8GvHfa4u/fEWVpZhsJrow
+			97Fk3he8NHc9M6mLIxKeGFLknpkNHgDZXqCD5vvVwQKBgQDauoRR8EAjU+jjZDUi
+			5qyPXSUELthqMbn4oHT33pgjSvQgoLfMtn95FHgFZJjEZfAnKgNSjFddPqB6vy0d
+			PLXRSyqG0b+ap+f2e2kuNnbngijCO9WWDdpU1k7e/Lvo5Ohgz0ODAxRqrst+QqmW
+			5C6nt+g0Il4ctdoUQ3oBeWTc8QKBgQDyprRvGqThXSsJ64wpiPUKieZ+562FFwZE
+			pBU1Sy3PS9EfroQa2/NlL5eiLPOOpmY5tUhIyNZzL7YE4n+iI/pZFpC23+gz4Qjt
+			sQnBGXQn+D7H181B119jUt/mYZwM3zAy9DJal4+q52LvmluT95/eTyhYD46vEGr3
+			0axSGcOIhwKBgDRx+Hw1IQvXeMXdJyiBKusNKG0CVn3QAols3973Dn+X30Vbg/af
+			45zCnaydXEvrLVQWrMlEQUZoV85WvJiAEBBo939wF4Mbs3DUUnn0MTp9aQx5kFL0
+			a19gK3UoIF5NVLKxv7xQJrsVwlE55rP5bn5kiFbHzs0PhYTKURy9YMPhAoGAVkeO
+			at8Xd4bQUeOuX+px7wBftAoe+e7Y7LlHTT7hGA+GWXSNRpuk7PrCOQkwxS1HtgdO
+			n4rCLgzt9Miwx29xihHq/Quani/LI/FKXZ32Xmv3rsl+E4ZIRaHnORzGBxGpKsUH
+			zoyLqiJCXJ4PKArpjnupBb7qZjc5QcsNMdg1XasCgYEAv6SkwgcRCVliGtphJVxg
+			xODkI+YOufnDGpD5OGECY0/O5FQ8u4PzvQ5FuOBElJzpbKmDqKqMX2UsgpvPzyT2
+			2JtW0Xpo/UiApIyuUuF5CxIvxfsD3VSjC7MrmqBCEU/iRdQv11alFRg4KOXZXst6
+			oclGtrgSiI3n3kJ2Xy3oO38=";
+$icbcPublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB";
+// 以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+$client = new DefaultIcbcClient($appId, $privateKey, IcbcConstants::$SIGN_TYPE_RSA2, '', '', $icbcPublicKey, '', '', '', '');
+$resp = $client->execute($request, '2022040715103425113', ''); // 执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+echo $resp;
+$respObj = json_decode($resp, true);
+if ($respObj["return_code"] == 0) { // sucess
+    echo $respObj["return_msg"];
+} else { // fail
+    echo $respObj["return_msg"];
+}
+// 返回成功:{"transOk":0,"return_msg":"会员档案管理执行成功","return_code":"0"}
+
+?>

+ 56 - 0
extend/icbc/example/mybankpaycpaymemberconfirmTestV1DBZF.php

@@ -0,0 +1,56 @@
+<?php
+// 合作方会员档案认证
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+$request = array(
+    "serviceUrl" => 'https://apipcs3.dccnet.com.cn/api/mybank/pay/cpay/memberconfirm/V1',
+    "method" => 'POST',
+    "isNeedEncrypt" => false,
+    "biz_content" => array(
+        "agreeCode" => "0160200238060410006041000000001490", // 合作方协议编号
+        "memberNo" => "yybtest002", // 合作方会员
+        "returnUrl" => "www.baidu.com"
+    )
+);
+
+$appId = "10000000000000225069";
+$privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDPUsAxVOs46x7u
+			mfJDcw98UfPhD+/ZoFcJs4WqhoqWeLbSNHDOTFc+7r5qsWoTPiuaJdcxQbIF0bOT
+			lvIXXFNivTZy35aAQUpzILsPIVd0+Z+pCR2mosZkl8qhRk+5mGtc3OlzGvkGGnxx
+			O2fKxtwIRdEUaAnqg/k+8kSN3k8p9sXbJD9+r3imIvkswuGTEoEk0ARg3YSmlSTT
+			P0UqksT5/MQN3rZYDlE0baPCB2pKcTDncsNhvgwjGmI7fMyBB1tV0jGfaGq1IcGy
+			fY5WUcIaiveYUq5Gta6+9J/B333hztCCWdtbM+YoI4UpMcV5B1056P3X1hPRbCri
+			Id5uI4sXAgMBAAECggEAdluBiSg3mSjxYbnVSphXUNvgZK4aeZ1F0y3/sxhX6gtE
+			I8D4XW3LqQvW/UYHjrDBZ6EOtvoQTa4n3KwhzSBSIl5uxSnL27BqdktLPxoDua4A
+			bhncKZNnu2nErklbnlLbiAo95A6T994LCQGnAWaBmt9wuzuh3ZY2Jq9cX7l4bDWD
+			3OaKLER56n8KgMM0hyUffm2+ediCVy0CfL/50gscWLQKrDx52uohtgORw4OiAzx/
+			YwgnnvSAgXQK21ChDcN5GQA5hZOeFMRY0vshSiA6/Zz8GvHfa4u/fEWVpZhsJrow
+			97Fk3he8NHc9M6mLIxKeGFLknpkNHgDZXqCD5vvVwQKBgQDauoRR8EAjU+jjZDUi
+			5qyPXSUELthqMbn4oHT33pgjSvQgoLfMtn95FHgFZJjEZfAnKgNSjFddPqB6vy0d
+			PLXRSyqG0b+ap+f2e2kuNnbngijCO9WWDdpU1k7e/Lvo5Ohgz0ODAxRqrst+QqmW
+			5C6nt+g0Il4ctdoUQ3oBeWTc8QKBgQDyprRvGqThXSsJ64wpiPUKieZ+562FFwZE
+			pBU1Sy3PS9EfroQa2/NlL5eiLPOOpmY5tUhIyNZzL7YE4n+iI/pZFpC23+gz4Qjt
+			sQnBGXQn+D7H181B119jUt/mYZwM3zAy9DJal4+q52LvmluT95/eTyhYD46vEGr3
+			0axSGcOIhwKBgDRx+Hw1IQvXeMXdJyiBKusNKG0CVn3QAols3973Dn+X30Vbg/af
+			45zCnaydXEvrLVQWrMlEQUZoV85WvJiAEBBo939wF4Mbs3DUUnn0MTp9aQx5kFL0
+			a19gK3UoIF5NVLKxv7xQJrsVwlE55rP5bn5kiFbHzs0PhYTKURy9YMPhAoGAVkeO
+			at8Xd4bQUeOuX+px7wBftAoe+e7Y7LlHTT7hGA+GWXSNRpuk7PrCOQkwxS1HtgdO
+			n4rCLgzt9Miwx29xihHq/Quani/LI/FKXZ32Xmv3rsl+E4ZIRaHnORzGBxGpKsUH
+			zoyLqiJCXJ4PKArpjnupBb7qZjc5QcsNMdg1XasCgYEAv6SkwgcRCVliGtphJVxg
+			xODkI+YOufnDGpD5OGECY0/O5FQ8u4PzvQ5FuOBElJzpbKmDqKqMX2UsgpvPzyT2
+			2JtW0Xpo/UiApIyuUuF5CxIvxfsD3VSjC7MrmqBCEU/iRdQv11alFRg4KOXZXst6
+			oclGtrgSiI3n3kJ2Xy3oO38=";
+$icbcPublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB";
+// 以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+$client = new DefaultIcbcClient($appId, $privateKey, IcbcConstants::$SIGN_TYPE_RSA2, '', '', $icbcPublicKey, '', '', '', '');
+$resp = $client->execute($request, '2022020715103425113', ''); // 执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+echo $resp;
+$respObj = json_decode($resp, true);
+if ($respObj["return_code"] == 0) { // sucess
+    echo $respObj["return_msg"];
+} else { // fail
+    echo $respObj["return_msg"];
+}
+// 正常返回示例:{"transOk":0,"redirectParam":"https://cpay3.dccnet.com.cn/corporpay/servlet/ICBCCPayBusinessServlet?unique_serialno=2022032510292687800000000001798003&signstr=026953414A9285DFC9DDD52BE688F210AE16BCD48D15DF8FF283B8B436172214D5CEBBF7FCE625D2","return_msg":"","return_code":0}
+
+?>

+ 55 - 0
extend/icbc/example/mybankpaycpaymemberqueryTestV1DBZF.php

@@ -0,0 +1,55 @@
+<?php
+// 合作方会员档案查询
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+$request = array(
+    "serviceUrl" => 'https://apipcs3.dccnet.com.cn/api/mybank/pay/cpay/memberquery/V1',
+    "method" => 'POST',
+    "isNeedEncrypt" => false,
+    "biz_content" => array(
+        "agreeCode" => "0160200238060410006041000000001490", // 合作方协议编号
+        "memberNo" => "yyb331" // 合作方会员
+    )
+);
+
+$appId = "10000000000000225069";
+$privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDPUsAxVOs46x7u
+			mfJDcw98UfPhD+/ZoFcJs4WqhoqWeLbSNHDOTFc+7r5qsWoTPiuaJdcxQbIF0bOT
+			lvIXXFNivTZy35aAQUpzILsPIVd0+Z+pCR2mosZkl8qhRk+5mGtc3OlzGvkGGnxx
+			O2fKxtwIRdEUaAnqg/k+8kSN3k8p9sXbJD9+r3imIvkswuGTEoEk0ARg3YSmlSTT
+			P0UqksT5/MQN3rZYDlE0baPCB2pKcTDncsNhvgwjGmI7fMyBB1tV0jGfaGq1IcGy
+			fY5WUcIaiveYUq5Gta6+9J/B333hztCCWdtbM+YoI4UpMcV5B1056P3X1hPRbCri
+			Id5uI4sXAgMBAAECggEAdluBiSg3mSjxYbnVSphXUNvgZK4aeZ1F0y3/sxhX6gtE
+			I8D4XW3LqQvW/UYHjrDBZ6EOtvoQTa4n3KwhzSBSIl5uxSnL27BqdktLPxoDua4A
+			bhncKZNnu2nErklbnlLbiAo95A6T994LCQGnAWaBmt9wuzuh3ZY2Jq9cX7l4bDWD
+			3OaKLER56n8KgMM0hyUffm2+ediCVy0CfL/50gscWLQKrDx52uohtgORw4OiAzx/
+			YwgnnvSAgXQK21ChDcN5GQA5hZOeFMRY0vshSiA6/Zz8GvHfa4u/fEWVpZhsJrow
+			97Fk3he8NHc9M6mLIxKeGFLknpkNHgDZXqCD5vvVwQKBgQDauoRR8EAjU+jjZDUi
+			5qyPXSUELthqMbn4oHT33pgjSvQgoLfMtn95FHgFZJjEZfAnKgNSjFddPqB6vy0d
+			PLXRSyqG0b+ap+f2e2kuNnbngijCO9WWDdpU1k7e/Lvo5Ohgz0ODAxRqrst+QqmW
+			5C6nt+g0Il4ctdoUQ3oBeWTc8QKBgQDyprRvGqThXSsJ64wpiPUKieZ+562FFwZE
+			pBU1Sy3PS9EfroQa2/NlL5eiLPOOpmY5tUhIyNZzL7YE4n+iI/pZFpC23+gz4Qjt
+			sQnBGXQn+D7H181B119jUt/mYZwM3zAy9DJal4+q52LvmluT95/eTyhYD46vEGr3
+			0axSGcOIhwKBgDRx+Hw1IQvXeMXdJyiBKusNKG0CVn3QAols3973Dn+X30Vbg/af
+			45zCnaydXEvrLVQWrMlEQUZoV85WvJiAEBBo939wF4Mbs3DUUnn0MTp9aQx5kFL0
+			a19gK3UoIF5NVLKxv7xQJrsVwlE55rP5bn5kiFbHzs0PhYTKURy9YMPhAoGAVkeO
+			at8Xd4bQUeOuX+px7wBftAoe+e7Y7LlHTT7hGA+GWXSNRpuk7PrCOQkwxS1HtgdO
+			n4rCLgzt9Miwx29xihHq/Quani/LI/FKXZ32Xmv3rsl+E4ZIRaHnORzGBxGpKsUH
+			zoyLqiJCXJ4PKArpjnupBb7qZjc5QcsNMdg1XasCgYEAv6SkwgcRCVliGtphJVxg
+			xODkI+YOufnDGpD5OGECY0/O5FQ8u4PzvQ5FuOBElJzpbKmDqKqMX2UsgpvPzyT2
+			2JtW0Xpo/UiApIyuUuF5CxIvxfsD3VSjC7MrmqBCEU/iRdQv11alFRg4KOXZXst6
+			oclGtrgSiI3n3kJ2Xy3oO38=";
+$icbcPublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB";
+// 以下构造函数第1个参数为appid,第2个参数为RSA密钥对中私钥,第6个参数为API平台网关公钥
+$client = new DefaultIcbcClient($appId, $privateKey, IcbcConstants::$SIGN_TYPE_RSA2, '', '', $icbcPublicKey, '', '', '', '');
+$resp = $client->executeQry($request, '2022020715103425113', ''); // 执行调用;msgId消息通讯唯一编号,要求每次调用独立生成,APP级唯一
+echo $resp;
+$respObj = json_decode($resp, true);
+if ($respObj["return_code"] == 0) { // sucess
+    echo $respObj["return_msg"];
+} else { // fail
+    echo $respObj["return_msg"];
+}
+
+//正常返回示例:{"transOk":0,"totalNum":1,"return_msg":"","return_code":"0","memInfoList":[{"erecstat":"","memberNo":"yyb331","billInfo":{},"failReason":"","cardNo":"9558831602000211405","agreeCode":"0160200238060410006041000000001490","status":1,"jrecstat":""}]}
+?>

+ 59 - 0
extend/icbc/example/test_ca.php

@@ -0,0 +1,59 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../IcbcConstants.php';
+	          $request = array(
+          		"serviceUrl" => 'http://122.19.77.226:8081/api/b2c/order/V1/query',
+          		"method" => 'POST',
+          		"isNeedEncrypt" => false,
+              "extraParams" => null,
+          		"biz_content" => array(
+          							"common_info" => array("bank_code" => "102",
+          								                   "cis" => "020090001693059",
+          								                   "fseqno" => "98111314511403031941352",
+          									               "id" => "2t321.y.0200",
+          								                   "tran_date" => "20170224",
+          								                   "tran_time" => "204438000",
+          								                   "trans_code" => "B2CPAYINF"
+          								                   ),
+          							"trade_info" => array("acct_seq" => "",
+          												  "begin_date" => "20170101",
+          												  "begin_time" => "",
+          												  "end_date" => "20171231",
+          												  "end_time" => "",
+          												  "erp_order" => "",
+          												  "next_tag" => "",
+          												  "qry_flag" => "1",
+          												  "qry_order_num" => "",
+          												  "qry_serial_no" => "HEZ000008312732913",
+          												  "query_type" => "1",
+          												  "result_type" => "",
+          												  "shop_acct" => "0200041909200052886",
+          												  "shop_code" => "0200EC27246674",
+          												  "shop_type" => "2"
+          											      ) 
+          						 )
+
+          	);
+            $client = new DefaultIcbcClient('10000000000000002116',
+            	                             'AmEvvpDym7qi4Tmw/gO9v1/Ku8R3Qt46t16I6FA/CPwLopau7fNKcUxYCL9pqjb76phR4NPBr+Fa9O3PqZ5bJm7/io3hwqnmtu9KHs57HO6HOXycjQi9ZH4fqVZJbPtXQpGGXZhX1VB5teIcoKf5PxWgahBH2p7GnBZA7VgpO/1z2ZkxbqR1yUNR+gq2MpJQvMSab07+Vgz9l9dYDsl1UX6RqsAN7IgpZoZhlSpmxvt04i/um78hrGVuf0Y/KqACxZbyS8rz2nE8m1R1xys8wziEu18hKVZtl0v3yKTjvAqDuwV2aFXjumfkcsQTHLnPk0X/BdTpNSDDgDkw1p9nQhYrPTYUe05U3WyZBBDLmeJ/Niuj3RrPkc6z96TmLRdL/gzHoedeMtcjWHFbZLh8vGi9FLzKaRQo2/AbYqT2DWAatw0nDePsQk+9Av7ZS+7vZ51h5cv16ZP8lge5z1DeAYxMjV3RB5He5u8NPgehPd26bZQv7PUmyn2Br3SS6SAZcqvrN4dcLwV+Xb6QnjHEV5eUeEKky6qy/EwUC6DPJi/PSFPkUbzDR3KlJGw35f0oQbulJ3NnYv2UQ+wf3WhBQu82uGw7MKJrQDjE4bv018ycI47tFsW1kTqVNs1LNpafRcZbizfEphEbynz0UvQiL0YORUqT5RaS1pSYvCo1qXpCNILmW4bQ0Hz3W8eEDYpjSmBWnQTOpDHVfm0rXFGMsJxJRfGiSZh5gSQTbgEsTCa/Wauzx+tgL39EYYKVQn+1wQHQEZ1NvbPbzB6KHOG9XahzUcgMGb51t6zz+hX8y712lfE=',
+            	                             IcbcConstants::$SIGN_TYPE_CA,
+            	                             '',//字符集,仅支持UTF-8,可填空‘’
+            	                             '',//请求参数格式,仅支持json,可填空‘’
+            	                             'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCwFgHD4kzEVPdOj03ctKM7KV+16bWZ5BMNgvEeuEQwfQYkRVwI9HFOGkwNTMn5hiJXHnlXYCX+zp5r6R52MY0O7BsTCLT7aHaxsANsvI9ABGx3OaTVlPB59M6GPbJh0uXvio0m1r/lTW3Z60RU6Q3oid/rNhP3CiNgg0W6O3AGqwIDAQAB',//网关公钥,必填
+			                                 '',//AES加密密钥,缺省为空‘’
+			                                 '',//前仅支持AES加密
+			                                 'MIIDCTCCAfGgAwIBAgIKbaHKEE0tAAAVmTANBgkqhkiG9w0BAQUFADA3MRowGAYDVQQDExFjb3JiYW5rMTAzIHNkYyBDTjEZMBcGA1UEChMQY29yYmFuazQzLmNvbS5jbjAeFw0xMzA2MDEwNjE5NTFaFw0xNDA2MDEwNjE5NTFaMEAxFDASBgNVBAMTC0xMTEwuZS4wMjAwMQ0wCwYDVQQLEwQwMjAwMRkwFwYDVQQKExBjb3JiYW5rNDMuY29tLmNuMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDUebVQUS8jnDERJopOwNgRlKEafEQUryj9EV64TUsaR850v/3KnctPRJ09GCqeucvbbOXlHz/RlwJSVWqryCTOldOUv1F58KQ0C59sY/dhh+W57fLIQKO90Sd344o/fPiytqmGtBc2m+DE/3L6morgC8m05Ygm16MkIk89Nz184wIDAQABo4GRMIGOMB8GA1UdIwQYMBaAFKnyXV7yfyOkd7D4zZtPLyquqLWdMEwGA1UdHwRFMEMwQaA/oD2kOzA5MQ0wCwYDVQQDEwRjcmw2MQ0wCwYDVQQLEwRjY3JsMRkwFwYDVQQKExBjb3JiYW5rNDMuY29tLmNuMB0GA1UdDgQWBBTkDBRsd9NghIrtNaUe6gSxZQ9CfzANBgkqhkiG9w0BAQUFAAOCAQEAXTWymvrTDMgV9LK7Ps6o52mlZIPmp3n7hmZttgJR/6KmZ/uCChPqHd9Ixw3DBnzHvoxmgtCKNVNc+iYQ4ks8cZgQoQ3uKT9bYinRCgECOv0Hiv7Q63DHJB46QamYcPc9dmmKAAOMd5AtnKI8QBRG3kxEmD6DPAcyx7hZ9Iw0MVwu4J1RfByJ1kM/bnhFpGwTma+5kxQlP+8Zurx4Cow/TUIj+kiLa/1ZmKXok7XOUr1UTFJhIqe0v3w2ekidchVML/t6n6Yw8Q5UCAbvKP4iHWdxeEGYsn+/a38oqCqIya66d5FCUqcOXXdRTdwdaSg6IGA4X6//O9TCvle1SCn7LQ==',//签名类型为CA时,通过该字段上送证书公钥
+			                                 '12345678');
+            try{
+              $resp = $client->execute($request,'msgId',''); //执行调用
+              $respObj = json_decode($resp,true);
+              if($respObj["return_code"] == 0){ //成功
+                 echo $respObj["return_msg"];
+              }else{//失败
+                 echo $respObj["return_msg"];
+              }
+            }catch(Exception $e){//捕获异常
+              echo 'Exception:'.$e->getMessage()."\n";
+            }
+
+?>

+ 53 - 0
extend/icbc/example/test_ui_ca.php

@@ -0,0 +1,53 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../UiIcbcClient.php';
+include_once '../IcbcConstants.php';
+	          $request = array(
+          		"serviceUrl" => 'https://122.19.77.226:8081/ui/personal/sign/V1/verify',
+          		"method" => 'POST',
+          		"isNeedEncrypt" => false,
+          		"biz_content" => array(
+                        "authen_acct_name"=>"x9G3wg==",
+                        "authen_acct_no"=>"6222020200106190966",
+                        "authen_name"=>"x9G3wg==",
+                        "auto_turn_flag"=>"0",
+                        "cert_no"=>"428767198408147542",
+                        "cert_type"=>"0",
+                        "language"=>"ZH_CN",
+                        "logon_id"=>"020000206164898.p.0200",
+                        "notify_type"=>"HS",
+                        "request_ip"=>"192.168.1.1",
+                        "tran_time"=>"20161021144040",
+                        "verified_corp_id"=>"2000EG0000136",
+                        "verified_corp_name"=>"uaTJzL7W",
+                        "verified_flag"=>"1",
+                        "verified_id"=>"800136",
+                        "verified_info"=>"1eLKx9K7uPbHqcP7xNrI3cW2",
+                        "verified_kind"=>"0",
+                        "verified_type"=>"0"
+          						 ),
+              "extraParams" => array(
+                        "notify_url" => 'https://www.scgsj.com/notify.do',
+                        "interfaceName" => 'ICBC_PEEBANK_CERTVERIFY_NEW'
+              )
+
+          	);
+            $client = new UiIcbcClient('10000000000000016542',
+            	                             'AmEvvpDym7qi4Tmw/gO9v1/Ku8R3Qt46t16I6FA/CPwLopau7fNKcUxYCL9pqjb76phR4NPBr+Fa9O3PqZ5bJm7/io3hwqnmtu9KHs57HO6HOXycjQi9ZH4fqVZJbPtXQpGGXZhX1VB5teIcoKf5PxWgahBH2p7GnBZA7VgpO/1z2ZkxbqR1yUNR+gq2MpJQvMSab07+Vgz9l9dYDsl1UX6RqsAN7IgpZoZhlSpmxvt04i/um78hrGVuf0Y/KqACxZbyS8rz2nE8m1R1xys8wziEu18hKVZtl0v3yKTjvAqDuwV2aFXjumfkcsQTHLnPk0X/BdTpNSDDgDkw1p9nQhYrPTYUe05U3WyZBBDLmeJ/Niuj3RrPkc6z96TmLRdL/gzHoedeMtcjWHFbZLh8vGi9FLzKaRQo2/AbYqT2DWAatw0nDePsQk+9Av7ZS+7vZ51h5cv16ZP8lge5z1DeAYxMjV3RB5He5u8NPgehPd26bZQv7PUmyn2Br3SS6SAZcqvrN4dcLwV+Xb6QnjHEV5eUeEKky6qy/EwUC6DPJi/PSFPkUbzDR3KlJGw35f0oQbulJ3NnYv2UQ+wf3WhBQu82uGw7MKJrQDjE4bv018ycI47tFsW1kTqVNs1LNpafRcZbizfEphEbynz0UvQiL0YORUqT5RaS1pSYvCo1qXpCNILmW4bQ0Hz3W8eEDYpjSmBWnQTOpDHVfm0rXFGMsJxJRfGiSZh5gSQTbgEsTCa/Wauzx+tgL39EYYKVQn+1wQHQEZ1NvbPbzB6KHOG9XahzUcgMGb51t6zz+hX8y712lfE=',
+            	                             IcbcConstants::$SIGN_TYPE_CA,
+            	                             '',
+            	                             '',
+            	                             '',
+			                                 '',
+			                                 '',
+			                                 'MIIDCTCCAfGgAwIBAgIKbaHKEE0tAAAVmTANBgkqhkiG9w0BAQUFADA3MRowGAYDVQQDExFjb3JiYW5rMTAzIHNkYyBDTjEZMBcGA1UEChMQY29yYmFuazQzLmNvbS5jbjAeFw0xMzA2MDEwNjE5NTFaFw0xNDA2MDEwNjE5NTFaMEAxFDASBgNVBAMTC0xMTEwuZS4wMjAwMQ0wCwYDVQQLEwQwMjAwMRkwFwYDVQQKExBjb3JiYW5rNDMuY29tLmNuMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDUebVQUS8jnDERJopOwNgRlKEafEQUryj9EV64TUsaR850v/3KnctPRJ09GCqeucvbbOXlHz/RlwJSVWqryCTOldOUv1F58KQ0C59sY/dhh+W57fLIQKO90Sd344o/fPiytqmGtBc2m+DE/3L6morgC8m05Ygm16MkIk89Nz184wIDAQABo4GRMIGOMB8GA1UdIwQYMBaAFKnyXV7yfyOkd7D4zZtPLyquqLWdMEwGA1UdHwRFMEMwQaA/oD2kOzA5MQ0wCwYDVQQDEwRjcmw2MQ0wCwYDVQQLEwRjY3JsMRkwFwYDVQQKExBjb3JiYW5rNDMuY29tLmNuMB0GA1UdDgQWBBTkDBRsd9NghIrtNaUe6gSxZQ9CfzANBgkqhkiG9w0BAQUFAAOCAQEAXTWymvrTDMgV9LK7Ps6o52mlZIPmp3n7hmZttgJR/6KmZ/uCChPqHd9Ixw3DBnzHvoxmgtCKNVNc+iYQ4ks8cZgQoQ3uKT9bYinRCgECOv0Hiv7Q63DHJB46QamYcPc9dmmKAAOMd5AtnKI8QBRG3kxEmD6DPAcyx7hZ9Iw0MVwu4J1RfByJ1kM/bnhFpGwTma+5kxQlP+8Zurx4Cow/TUIj+kiLa/1ZmKXok7XOUr1UTFJhIqe0v3w2ekidchVML/t6n6Yw8Q5UCAbvKP4iHWdxeEGYsn+/a38oqCqIya66d5FCUqcOXXdRTdwdaSg6IGA4X6//O9TCvle1SCn7LQ==',
+			                                 '12345678');
+            try{
+              $resp = $client->buildPostForm($request); //执行调用
+              echo $resp;
+            }catch(Exception $e){//捕获异常
+              echo 'Exception:'.$e->getMessage()."\n";
+            }
+
+
+?>

+ 53 - 0
extend/icbc/example/test_ui_rsa.php

@@ -0,0 +1,53 @@
+<?php
+include_once '../DefaultIcbcClient.php';
+include_once '../UiIcbcClient.php';
+include_once '../IcbcConstants.php';
+	          $request = array(
+          		"serviceUrl" => 'https://122.19.77.226:8081/ui/personal/sign/V1/verify',
+          		"method" => 'POST',
+          		"isNeedEncrypt" => false,
+          		"biz_content" => array(
+                        "authen_acct_name"=>"x9G3wg==",
+                        "authen_acct_no"=>"6222020200106190966",
+                        "authen_name"=>"x9G3wg==",
+                        "auto_turn_flag"=>"0",
+                        "cert_no"=>"428767198408147542",
+                        "cert_type"=>"0",
+                        "language"=>"ZH_CN",
+                        "logon_id"=>"020000206164898.p.0200",
+                        "notify_type"=>"HS",
+                        "request_ip"=>"192.168.1.1",
+                        "tran_time"=>"20161021144040",
+                        "verified_corp_id"=>"2000EG0000136",
+                        "verified_corp_name"=>"uaTJzL7W",
+                        "verified_flag"=>"1",
+                        "verified_id"=>"800136",
+                        "verified_info"=>"1eLKx9K7uPbHqcP7xNrI3cW2",
+                        "verified_kind"=>"0",
+                        "verified_type"=>"0"
+          						 ),
+              "extraParams" => array(
+                        "notify_url" => 'https://www.scgsj.com/notify.do',
+                        "interfaceName" => 'ICBC_PEEBANK_CERTVERIFY_NEW'
+              )
+
+          	);
+            $client = new UiIcbcClient('10000000000000016542',
+            	                             'MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALAWAcPiTMRU906PTdy0ozspX7XptZnkEw2C8R64RDB9BiRFXAj0cU4aTA1MyfmGIlceeVdgJf7OnmvpHnYxjQ7sGxMItPtodrGwA2y8j0AEbHc5pNWU8Hn0zoY9smHS5e+KjSbWv+VNbdnrRFTpDeiJ3+s2E/cKI2CDRbo7cAarAgMBAAECgYABiA933q4APyTvf/uTYdbRmuiEMoYr0nn/8hWayMt/CHdXNWs5gLbDkSL8MqDHFM2TqGYxxlpOPwnNsndbW874QIEKmtH/SSHuVUJSPyDW4B6MazA+/e6Hy0TZg2VAYwkB1IwGJox+OyfWzmbqpQGgs3FvuH9q25cDxkWntWbDcQJBAP2RDXlqx7UKsLfM17uu+ol9UvpdGoNEed+5cpScjFcsB0XzdVdCpp7JLlxR+UZNwr9Wf1V6FbD2kDflqZRBuV8CQQCxxpq7CJUaLHfm2kjmVtaQwDDw1ZKRb/Dm+5MZ67bQbvbXFHCRKkGI4qqNRlKwGhqIAUN8Ynp+9WhrEe0lnxo1AkEA0flSDR9tbPADUtDgPN0zPrN3CTgcAmOsAKXSylmwpWciRrzKiI366DZ0m6KOJ7ew8z0viJrmZ3pmBsO537llRQJAZLrRxZRRV6lGrwmUMN+XaCFeGbgJ+lphN5/oc9F5npShTLEKL1awF23HkZD9HUdNLS76HCp4miNXbQOVSbHi2QJAUw7KSaWENXbCl5c7M43ESo9paHHXHT+/5bmzebq2eoBofn+IFsyJB8Lz5L7WciDK7WvrGC2JEbqwpFhWwCOl/w==',
+            	                             IcbcConstants::$SIGN_TYPE_RSA,
+            	                             '',
+            	                             '',
+            	                             '',
+    			                                 '',
+    			                                 '',
+    			                                 '',
+    			                                 '');
+            try{
+              $resp = $client->buildPostForm($request); //执行调用
+              echo $resp;
+            }catch(Exception $e){//捕获异常
+              echo 'Exception:'.$e->getMessage()."\n";
+            }
+
+
+?>