execute('/rest/Recharge/PushOrder', $request); return app('json')->success('话费推送成功', $arr); } protected function generateSign($params){ ksort($params); $stringToBeSigned = $this->secretKey; foreach ($params as $k => $v) { if (is_array($v)) { $stringToBeSigned .= $k; }else{ if ("@" != substr($v, 0, 1)) { $stringToBeSigned .= "$k$v"; } } } unset($k, $v); $stringToBeSigned .= $this->secretKey; return strtoupper(md5($stringToBeSigned)); } public function curl($url, $postFields = null,$timeOut = 20){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FAILONERROR, false); curl_setopt($ch, CURLOPT_REFERER, 'https://api.gdjbp.com'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT,$timeOut); //https 请求 if(strlen($url) > 5 && strtolower(substr($url,0,5)) == "https" ) { curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); } if (is_array($postFields) && 0 < count($postFields)){ $postBodyString = ""; $postMultipart = false; foreach ($postFields as $k => $v){ if("@" != substr($v, 0, 1))//判断是不是文件上传 { $postBodyString .= "$k=" . urlencode($v) . "&"; } else//文件上传用multipart/form-data,否则用www-form-urlencoded { $postMultipart = true; } $postMultipart = true; } unset($k, $v); curl_setopt($ch, CURLOPT_POST, true); if ($postMultipart){ curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields); }else{ curl_setopt($ch, CURLOPT_POSTFIELDS, substr($postBodyString,0,-1)); } } $reponse = curl_exec($ch); curl_close($ch); return json_decode($reponse, true); } /** * request api接口后缀,如 /recharge/pushOrder * apiParams 业务参数 数组 */ public function execute($request, $apiParams ,$timeOut =20){ //组装系统参数 $sysParams["app_key"] = $this->appkey; $sysParams["v"] = $this->apiVersion; $sysParams["format"] = $this->format; $sysParams["timestamp"] = time(); $sysParams["client"] = ''; //签名 $sysParams["sign"] = $this->generateSign(array_merge($apiParams, $sysParams)); //系统参数放入GET请求串 //$requestUrl = $this->gatewayUrl.$sysParams['method']. "?"; $requestUrl = $this->gatewayUrl.$request. "?"; foreach ($sysParams as $sysParamKey => $sysParamValue){ $requestUrl .= "$sysParamKey=" . urlencode($sysParamValue) . "&"; } $requestUrl = substr($requestUrl, 0, -1); return $this->curl($requestUrl, $apiParams ,$timeOut); } }