
将配置信息放入项目文件中(tp框架为例),这里我把它放入到application下的extra目录下
调取银联接口实例
<?php /** * 获取银行卡信息 */ namespace app\common\extend; use think\Session; use think\Config; class UnionPay { /** *获取请求token令牌 */ public function getToken(){ $token = Session::get("bank_token"); if (empty($token)) { $url = sprintf(Config::get("配置文件名称.get_token_url"), Config::get("配置文件名称.appid"), Config::get("配置文件名称.appsecret")); $res = $this->curl_get($url); $res = json_decode($res, true); $token = $res['token']; Session::set("bank_token",$token,7000); } return $token; } /** *获取银行卡信息 */ public function getBank($bankCard){ $arr['cardNo'] = $bankCard; $json = json_encode($arr); $time = $this->getMillisecond(); $sign=Config::get("配置文件名称.sign").$json.$time; $newSign=hash('sha256',$sign); $url=sprintf(Config::get("get_bank_url"),$this->getToken(),$newSign,$time); $res=$this->https_request($url,$json); return json_decode($res,true)['data']['issNm']; } function https_request($url,$data=null){ $curl = curl_init(); curl_setopt($curl,CURLOPT_URL,$url); curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,FALSE); curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,FALSE); if(!empty($data)){ curl_setopt($curl,CURLOPT_POST,1); curl_setopt($curl,CURLOPT_POSTFIELDS,$data); } curl_setopt($curl, CURLOPT_TIMEOUT,600); //只需要设置一个秒的数量就可以 curl_setopt($curl,CURLOPT_RETURNTRANSFER,1); // Content-Type: application/json; // 下面这行是修改后增加的代码,就是配置设置host访问,发送的数据类型为application/json curl_setopt($curl, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json; charset=utf-8', // 'Content-Length: ' . strlen($data) )); $output = curl_exec($curl); curl_close($curl); return $output; } function curl_get($url) { $ch = curl_init(); $timeout = 300; curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); $res = curl_exec($ch); if (curl_errno($ch)) { echo 'Curl error: ' . curl_error($ch); } curl_close($ch); return $res; } function getMillisecond() { list($t1, $t2) = explode(' ', microtime()); return (float)sprintf('%.0f',(floatval($t1)+floatval($t2))*1000); } } ?>