"App.Order.Pay", "timestamp"=>date('Y-m-d H:i:s'), "nonce"=>time(), "member_id"=>"220431411", "mem_order"=>"2205947".time(), "bank_code"=>"953", "notifyurl"=>"https://".$_SERVER['SERVER_NAME']."/api/Pay/alipayOrderNotify", "callbackurl"=>"https://".$_SERVER['SERVER_NAME']."/pages/mine/order-list?num=1", "amount"=>"5.00", "productname"=>"MEME世界商品", "attach"=>"" ]; $apiKey = "4n79o0izlo0ax9z45lopjj0hgwl249bk";//商户中心的APIKEY ksort($params); $signString = ""; foreach($params as $key => $val){ $signString .= $val; } $signString .= $apiKey; $params['sign'] = strtoupper(md5($signString)); var_dump($params); //var_dump($params); //到这里签名完成 //对notifyurl进行rsa加密 $params['notifyurl'] = sslEn($params['notifyurl'],$keypri);//$key是商户私钥 var_dump($params); //最后POST提交 $params $url = "https://apis.wqkeji.cn"; $re = httpPost($url,$params);//提交返回 //判断是否为数组 $re = is_array($re)?$re:json_decode($re,true); print_r($re);die; //对data进行平台公钥解密 $data = sslDe($re['data'],$keypub); var_dump($data); /** * RSA 私钥、公钥加密 * @param $data * @param $key * @param $type * @return string */ function sslEn($data, $key, $type = 'pi') { $encrypted = ""; if ($type == 'pi') { $r = openssl_pkey_get_private($key); //私钥加密 foreach (str_split($data, 117) as $chunk) { openssl_private_encrypt($chunk, $encryptData, $key); $encrypted .= $encryptData; } } elseif ($type == 'pu') { $r = openssl_pkey_get_public($key); //公钥加密 foreach (str_split($data, 117) as $chunk) { openssl_public_encrypt($chunk, $encryptData, $key); $encrypted .= $encryptData; } } $encrypt_data = base64_encode($encrypted); return $encrypt_data; } /** * RSA 私钥、公钥解密 * @param $data * @param $key * @param $type * @return string */ function sslDe($data, $key, $type = 'pu') { $hex_encrypt_data = trim($data); $encrypt_data = base64_decode($hex_encrypt_data);//对BASE64进行转换 $decrypted = ""; if ($type == 'pu') { $r = openssl_pkey_get_public($key); //公钥解密 $arrThrunk = str_split($encrypt_data, 256); foreach ($arrThrunk as $trunk) { $temp = ''; if (openssl_public_decrypt($trunk, $temp, $key)) { $decrypted .= $temp; } else { return ''; } } } elseif ($type == 'pi') { $r = openssl_pkey_get_private($key); //私钥解密 ---- 分段解密 $arrThrunk = str_split($encrypt_data, 256); foreach ($arrThrunk as $trunk) { $temp = ''; if (openssl_private_decrypt($trunk, $temp, $key)) { $decrypted .= $temp; } else { return ''; } } } return $decrypted; } //HTTP post 工具 function httpPost($url, $post_data) { // 模拟提交数据函数 $curl = curl_init(); // 启动一个CURL会话 curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); // 对认证证书来源的检查 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); // 从证书中检查SSL加密算法是否存在 if (isset($_SERVER['HTTP_USER_AGENT'])) { curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器 } curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转 curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer if (!empty($post_data)) { curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post_data)); // Post提交的数据包 } curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求 curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环 curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回 // 发出请求 $response = curl_exec($curl); curl_close($curl); // 关闭CURL会话 return $response; } ?>