RensheService.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. namespace app\common\service;
  3. use OneSm\Sm4;
  4. class RensheService
  5. {
  6. //网址
  7. const BASE_URL = 'https://12333.jinjiang.gov.cn/interface-jjlgsc-wbjk';
  8. //密钥
  9. const KEY = 'be2daba9afed4b75';
  10. //偏移量
  11. const IV = 'b33f8ac8cca782b9';
  12. //版本号
  13. const VERSION = 'lgyz1.0';
  14. //要发送的数据
  15. private $_data = [];
  16. //当前时间
  17. private $_time = 0;
  18. /**
  19. * 构造函数
  20. * @param array $data 要发送的数据
  21. */
  22. public function __construct($data = [])
  23. {
  24. $this->_data = $data;
  25. $this->_time = date('YmdHis');
  26. }
  27. /**
  28. * 设置参数
  29. * @param $data
  30. */
  31. public function setData($data)
  32. {
  33. foreach ($data as $k => $v) {
  34. $this->_data[$k] = $v;
  35. }
  36. }
  37. /**
  38. * 岗位信息库提交
  39. */
  40. public function JobInfo()
  41. {
  42. $url = self::BASE_URL . '/dayjob/submitJobInfo.html';
  43. $res = $this->_send($url);
  44. return $res;
  45. }
  46. /**
  47. * 参数加密
  48. * @return string
  49. */
  50. private function _enDataCbc()
  51. {
  52. $data = $this->_time . json_encode($this->_data);
  53. return base64_encode(openssl_encrypt($data, "sm4", self::KEY, 0, self::IV));
  54. }
  55. /**
  56. * 参数解密
  57. * @param $data
  58. * @return mixed
  59. */
  60. private function _deDataCbc($data)
  61. {
  62. $res = openssl_decrypt(base64_decode($data), "sm4", self::KEY, 0, self::IV);
  63. if ($res[0] != "{") {
  64. $res = mb_substr($res, 14, strlen($res), 'UTF-8');
  65. }
  66. return json_decode($res, true);
  67. }
  68. /**
  69. * 发送数据
  70. * @param $url
  71. * @return mixed
  72. */
  73. private function _send($url)
  74. {
  75. //请求头
  76. $enTime = base64_encode(openssl_encrypt($this->_time, "sm4", self::KEY, 0, self::IV));
  77. $header = [
  78. 'Content-Type: application/json',
  79. 'Author-source: 1',
  80. 'Author-token: ' . $enTime,
  81. 'Author-version: ' . self::VERSION,
  82. ];
  83. //发送数据
  84. $enData = $this->_enDataCbc();
  85. $response = http_request($url, 'POST', $enData, $header);
  86. $deData = $this->_deDataCbc($response);
  87. return $deData;
  88. }
  89. }