EasyCtidService.php 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <?php
  2. namespace App\Services;
  3. use App\Traits\EasyCtid;
  4. class EasyCtidService
  5. {
  6. use EasyCtid;
  7. public function verify(string $realName, string $idNo, string $photoData)
  8. {
  9. // 签名私钥
  10. $pri = 'MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAJtxSZ+l/BxsPQtzdVW+RMeGpjMJGoGXzSNQiPsXQdL0Apo72aXpRLizn6BNNexrO12WwfIKUlUzZ5WrUKvyQzKTwbKL2PWL7FCWdcqgi1KJ9tygfolGuSqLaY1lTB1HubSuLaTbpmiS5Khjdwkpg5VAZH2sFhz8hKfc1ir5tBFfAgMBAAECgYBo7pwFwtYjFcpLvaBaxnvFuZbeYunay+/2Q/qEjhmoX4KWPYranlL+4HsEirq5I1ZLAmdgjikwTOhDOAfYW02Se3+sproTyqAy3/qimk/MqbW/bT6whfYocZlZbnCdgeaPK+xyhRDYPDrRGCmiYLbuDdflSX3aNkbgFMNhRAuIKQJBANrxMQUMxiNe15zqq9b9Owm6hFWCQvFzBlHBebaQUge+lK4g6WIm0L7mfeXuo2Fc0M8j++hukxsmFhSpTDXv/JUCQQC1wKTy+MXaX3YXkoYKrfywbdMJMr0OdfboJ7KcEmaOZ6N6XGXrHS437lOUkIk6VCEEFB+v1b1YOS5O+vwVFyUjAkBG5NSPowxBhcNhXyeXbNYCF3AkVBKjJjDEplZoBCFbup1gKO4JRzJOrknT+0rSCwDeIfO+1pcxskpyFEPGL1hlAkBOduV/M6EO/mlYEdymXaiabj9OWEZAKPM4FHNKZ7M4xUtRNvSVBRr/8HbKy39C3DEItrtbSNYecUkptbcAT+arAkEAlCqVfwydy7oM7+lPU39jmPv6Mkj1I0qc/x+j2jp8gkJj91pogQOzQQd/wpNywYDCORD2r84lPyK+JrP+OjODQw==';
  11. // 加密公钥
  12. $pub = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCl23X1jCttl9A93NT1Uev8/5rXZezm83BwbJKQQFi8onP7lBRTBQh8/ahyhMX8Qc2QKEq4/t58Q0NVZE2/Yb8OqZk4LEu1pCt2ra57DSvgMQ41oxDere4kyTYAqFuMJoQQgEmyYpzpHQu1GlSYRtbJ3Oxd/JqHfOSjPVYJaDEBswIDAQAB';
  13. // 基本信息
  14. $orgCode = '29fb7b4673014b0da0833dafbcec9848';
  15. $appId = '1212';
  16. $userId = '123';
  17. $appName = 'dddd';
  18. $readCardCtrlVer = '0400.0001.0101.0006';
  19. $authCodeCtrlVer = '0400.0001.0101.0006';
  20. $photoCtrlVer = '0400.0001.0101.0006';
  21. // 请求模式
  22. $authMode = '0x42';
  23. $bizType = 6000;
  24. $applyData = '';
  25. $bizData = array('authMode' => $authMode, 'applyData' => $applyData, 'appName' => $appName
  26. , 'readCardCtrlVer' => $readCardCtrlVer, 'authCodeCtrlVer' => $authCodeCtrlVer, 'photoCtrlVer' => $photoCtrlVer);
  27. // 填充bizPckage
  28. $bizPackage = array('orgCode' => $orgCode, 'appId' => $appId, 'userId' => $userId, 'bizType' => $bizType, 'bizData' => $bizData);
  29. // 生成bizPackage的json字符串
  30. $bizPackage = json_encode($bizPackage,JSON_UNESCAPED_SLASHES);
  31. // 对bizPackage进行签名,并使用base64编码
  32. $sign = $this->getSign($bizPackage, $pri);
  33. //echo $sign;
  34. $sign = base64_encode($sign);
  35. // 生成完整请求参数
  36. $reqContent = array('bizPackage' => $bizPackage, 'sign' => $sign);
  37. $reqContent = json_encode($reqContent,JSON_UNESCAPED_SLASHES);
  38. // echo "======================== 申请一包:========================\n" . $reqContent . "\n";
  39. $result = $this->request_by_curl("http://api.easyctid.cn/v1/apply", $reqContent);
  40. // echo "结果:\n" . $result . "\n";
  41. // echo "======================== 请求结束 ========================\n";
  42. // 将一包返回json字符串转为普通参数
  43. $result = json_decode($result, true);
  44. // 获取bsn、randomNumber
  45. $bizPackage = json_decode($result['bizPackage'], true);
  46. $bizData = $bizPackage['bizData'];
  47. $bsn = $bizData['bsn'];
  48. $randomNumber = $bizData['randomNumber'];
  49. // echo "获取到参数:\n" . "bsn: " . $bsn . "\n" . "随机数: " . $randomNumber . "\n";
  50. // echo "======================== 一包结束 ========================\n\n\n";
  51. // ------------------------------------ 二包 --------------------------------------
  52. // 两项信息
  53. // $realName = '张三';
  54. // $idNo = '110101200001011297';
  55. $authApplyRetainData = array('name' => $realName, 'idNo' => $idNo);
  56. // 转为json
  57. $authApplyRetainData = json_encode($authApplyRetainData,JSON_UNESCAPED_SLASHES);
  58. // 加密
  59. $authApplyRetainData = $this->encrypt($authApplyRetainData, $pub);
  60. // 使用base64编码
  61. $authApplyRetainData = base64_encode($authApplyRetainData);
  62. // 填充bizData
  63. $bizData = array('authMode' => $authMode, 'appName' => $appName, 'authApplyRetainData' => $authApplyRetainData, 'photoData' => $photoData);
  64. // 填充bizPckage
  65. $bizPackage = array('orgCode' => $orgCode, 'appId' => $appId, 'userId' => $userId, 'bizType' => $bizType, 'bizData' => $bizData
  66. , 'bsn' => $bsn, 'randomNumber' => $randomNumber);
  67. // 生成bizPackage的json字符串
  68. $bizPackage = json_encode($bizPackage,JSON_UNESCAPED_SLASHES);
  69. // 对bizPackage进行签名,并使用base64编码
  70. $sign = $this->getSign($bizPackage, $pri);
  71. $sign = base64_encode($sign);
  72. // 生成完整请求参数
  73. $reqContent = array('bizPackage' => $bizPackage, 'sign' => $sign);
  74. $reqContent = json_encode($reqContent,JSON_UNESCAPED_SLASHES);
  75. // echo "======================== 请求二包:========================\n" . $reqContent . "\n";
  76. $result = $this->request_by_curl("http://api.easyctid.cn/ctid/v1/verification", $reqContent);
  77. $result = json_decode($result, TRUE);
  78. $result = json_decode($result['bizPackage'],TRUE);
  79. return $result;
  80. }
  81. }