| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- <?php
- namespace addons\AvoidTax\common\jdk\socialwork;
- /**
- * 一户一码
- */
- class Sign{
- const BUS_CODE_AUTH = "AUTHORIZE";
- const BUS_CODE_CREATE_ORDER = "CREATEORDER";
- const BUS_CODE_CREATE_ORDER_DETAIL = "ADDFREEDOMEEMP"; // 添加个人发放明细
- const BUS_CODE_ORDER_DETAIL_QUERY = "FREEDOMEMOSTATUS"; // 6.个人发放状态查询
- public $method = "aes-192-cbc";
- public $config = [
- 'url'=>'http://47.110.250.177:20000/socialwork/v1/external/atandard',
- 'aes_key'=>'fbb416bfd0a242419e6528f2',
- 'aes_iv'=>'0f6ce46636264d66',
- 'ptcode'=>'751219023890354176',
- 'mer_rsa_private_key'=>"MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAK3DPc+pT0PywNkx".
- "7JWJLM66/apoUTEAUW/W7uOZbrb097GYUiTY0JDnFw6hUCCJEywSMfAQvUY5GP2a".
- "dCGu5Szw5F4qmE020dV1EywqREwGltWNbhcLNDvK5uHGxgk+b9RE7SrHBh+lziOE".
- "Ejt8i5YOezBy/e4rWLa5ELwj/6WTAgMBAAECgYBWjR3IxkjZS52LkjaJ9Z4AC1w2".
- "+WcXxVTLJIAxlkdzkmmeaITiHa0lwDXX77n9usl19koxjeT5iY9NIxYdgQRdn6z8".
- "+QJ5XSEJjUVwqFqPhtIzYNVRAZHWKxRjQZ4UtmCjvbeiAqLr+SDRBKLcobJLiXwy".
- "4//AllAa7SU42TAqgQJBAOJW+9N+Pw8PVozJOD4e4Qi4EFF1b5vcQ+jcYp+8LiJd".
- "g1X1COGOxvIVeK22tpwNXKUoPSkHQ82BPOmcqrOxllECQQDEiHREeR1/apxoP+5b".
- "KogvY0k1wT4TgVB2BLzm2P8eCYQr5GdUML8WzxRBk6CyU6WyqodhB7m4lf/m2nCf".
- "sfCjAkEAvfIPnjqJgwL1OGs5lvBlG+MUVrg+NMfR+d7RqYnMEaz2pjFgBaLDlK+u".
- "OeJnN2kDQdsWEJN3NERsMQT4QJsdMQJAe9hI/AUeU3aJDSCMQSKyIrp8HcWiKoRo".
- "gZZGu2muie0RPt91RZZaNDNV3mT69KTFW6seGETYAbt0QLMSGW/15QJAJ+s5FLIj".
- "GoU63WHza9xbCY/vLPFeiBXNH3qwPLp3ME5zbxS/LlCxTfG+Q+201iuVzSgHD98u".
- "IA1pU0FOUUfpiw==",
- 'mer_rsa_public_key'=>"MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCtwz3PqU9D8sDZMeyViSzOuv2q".
- "aFExAFFv1u7jmW629PexmFIk2NCQ5xcOoVAgiRMsEjHwEL1GORj9mnQhruUs8ORe".
- "KphNNtHVdRMsKkRMBpbVjW4XCzQ7yubhxsYJPm/URO0qxwYfpc4jhBI7fIuWDnsw".
- "cv3uK1i2uRC8I/+lkwIDAQAB",
- ];
- public function sendEncodeData(array $json,$bussiness_code){
- // $bussiness_code = $json['items']['bussiness_code'];
- // unset($json['items']['bussiness_code']);
- // echo "<pre>";
- $json_content = json_encode($json,JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE);
- // $json_content = '{"items":{"payer_object_type":"customer","settlement_org_id":"635981601368444928","bill_month":1638288000,"name":"格式网络1","service_contract_no":"新服务合同543534543"}}';
- //aes密钥
- $aes_key = $this->config['aes_key'];
- $aes_iv = $this->config['aes_iv'];
- $private_rsa_key = $this->config['mer_rsa_private_key'];
- // var_dump("AES 加密之前的数据 ");
- // var_dump($json_content);
- // echo "<pre>";
- // echo "<h1>加密参数</h1>";
- // var_dump($json);
- // echo ($json_content);
- //aes 加密
- $data['data'] = $this->aesEncode($json_content, $aes_key,$aes_iv);
- // echo "<h1>AES 加密之后</h1>";
- // echo ( $data['data'] );
- // var_dump( $private_rsa_key );
- //用商户ras私钥签名
- $data['sign'] = $this->sign($data['data'], $private_rsa_key);
- // echo ("<h1>---数字签名---</h1>");
- // echo ($data['sign']);
- $data['ptcode'] = $this->config['ptcode'];
- $data['bussiness_code'] = $bussiness_code;
- // echo "<h1>请求数据</h1>";
- // var_dump($data);
- //发送请求
- // echo json_encode($data,JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE);
- $request_result = $this->httpPost(json_encode($data,JSON_UNESCAPED_SLASHES|JSON_UNESCAPED_UNICODE), $this->config['url']);
- // echo "<hr>";
- // echo "<h1>响应数据</h1>";
- // var_dump($request_result);
- // exit;
- //解密返回报文
- $result_json = json_decode($request_result,true);
- //用aes密钥解密报文
- $decode_content = $this->aesDecode($result_json['data'],$aes_key,$aes_iv);
- // var_dump($decode_content);
- return json_decode($decode_content,true);
- //
- }
- // ras生成签名
- protected function sign($data, $private_rsa_key)
- {
- $priKey = $private_rsa_key;
- $res = "-----BEGIN PRIVATE KEY-----\n" .
- wordwrap($priKey, 64, "\n", true) .
- "\n-----END PRIVATE KEY-----";
- // 生成密钥资源id
- $private_key_resource_id = openssl_get_privatekey($res);
- if (empty($private_key_resource_id))
- {
- throw new \Exception("秘钥不能为空");
- }
- $verify = openssl_sign($data, $signature, $private_key_resource_id, OPENSSL_ALGO_MD5);
- openssl_free_key($private_key_resource_id);
- if(!$verify){
- throw new \Exception("签名失败");
- }
- // 二次Base64编码
- return base64_encode($signature);
- }
- // AES加密
- private function aesEncode($data, $aes_key,$iv){
- $encrypt_data = openssl_encrypt($data, $this->method, $aes_key, OPENSSL_RAW_DATA, $iv);
- return base64_encode($encrypt_data);
- }
- // AES解密
- private function aesDecode($data,$aes_key,$iv){
- $data = base64_decode($data);
- return openssl_decrypt($data, $this->method, $aes_key, OPENSSL_RAW_DATA, $iv);
- }
- private function httpPost($data,$url){
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
- curl_setopt($ch,CURLOPT_TIMEOUT,600);
- curl_setopt($ch,CURLOPT_URL,$url);
- curl_setopt($ch,CURLOPT_POST,true);
- curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
- curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
- if (strpos($url, 'https') !== false) {
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
- curl_setopt($ch, CURLOPT_SSLVERSION, 1);
- }
- $ret_data = trim(curl_exec($ch));
- curl_close($ch);
- return $ret_data;
- }
- }
|