<?php //https协议是否需要验证证书 define('SSL_VERIFYPEER', true); $key="您申请的key,在会员中心->我的数据->对应数据的下方"; $url="https://v.1dq.com/api/c43"; $param["appid"]="您的appid,在会员中心->安全设置->对应数据->appid"; $param['bankcard'] = '123456789'; $param['apiversion'] = '2.0.5'; ksort($param); //对字符串进行字典(a-z)排序,需排除sign字段; $param["sign"] = md5(urlencode(http_build_query($param)).$key); //生成sign //发送远程请求; $result = APIStore($url, $param, true); if ($result['error_code'] == 0) { //处理成功 echo $result['reason']; } else { //处理失败 echo $result['reason']; } //打印返回数据 print_r($result); /** * APIStore 获取数据 * @param $url 接口地址 * @param null $param 要发送的数据 * @param bool $ispost 是否采用POST发送,默认GET * @return mixed */ function APIStore($url, $param = null, $ispost = false) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $ispost ? $url : $url . '?' . http_build_query($param)); //如果是https协议 if (stripos($url, "https://") !== FALSE) { /** * 如果需要验证证书 */ if (SSL_VERIFYPEER) { //验证交换证书 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, true); //检查SSL证书公用名是否存在,并且是否与提供的主机名匹配 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2); //设置实现协议为TLS1.0版本 curl_setopt($curl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1); //根证书文件路径,相对路径和绝对路径均可, //推荐使用绝对路径;为了安全证书文件最好不要和应用代码放在一起; //用户请保持更新 使用https接口需要设置该证书文件为可信任根证书, //以最大限度满足安全性(使用信任任何证书的方式并不安全)。 curl_setopt($curl, CURLOPT_CAINFO, dirname(__FILE__) . '/cacert.pem'); } /** * 如果不需要验证证书 */ else { curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); //CURL_SSLVERSION_TLSv1 curl_setopt($curl, CURLOPT_SSLVERSION, 1); } } //USERAGENT curl_setopt($curl, CURLOPT_USERAGENT, 'APIStore'); //超时时间 curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 120); curl_setopt($curl, CURLOPT_TIMEOUT, 120); //通过POST方式提交 if ($ispost) { curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($param)); } curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //返回内容 $callbcak = curl_exec($curl); //关闭,释放资源 curl_close($curl); //返回内容JSON_DECODE return json_decode($callbcak, true); }