'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 "
";
        $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 "
";
//        echo "

加密参数

"; // var_dump($json); // echo ($json_content); //aes 加密 $data['data'] = $this->aesEncode($json_content, $aes_key,$aes_iv); // echo "

AES 加密之后

"; // echo ( $data['data'] ); // var_dump( $private_rsa_key ); //用商户ras私钥签名 $data['sign'] = $this->sign($data['data'], $private_rsa_key); // echo ("

---数字签名---

"); // echo ($data['sign']); $data['ptcode'] = $this->config['ptcode']; $data['bussiness_code'] = $bussiness_code; // echo "

请求数据

"; // 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 "
"; // echo "

响应数据

"; // 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; } }