以下由php教學專欄跟大家介紹實作PHP請求模擬的一件趣事,希望對大家有幫助!
透過簡單實作PHP 請求模擬賺了50 元
#這個週末發生了一件有趣的事:在群組裡看到有人需要做PHP 開發的協助,並承諾有報酬,我自薦後解決了問題,獲得了50 元。
接下來我詳細的說說整個事情的經過。
週六下班後打開了 QQ,在瀏覽群組訊息的時候看到這樣一句話:「群組有沒有會寫 PHP 程式碼的,有償」。我立刻加入他的 QQ,並告訴他我是做 PHP 開發的,我可以幫忙。
週日早上收到了他的回复,他給了我一個文檔,讓我看看是否能實現,我仔細瀏覽了整個文檔,發現是第三方接口文檔,我告訴他對接這種介面很簡單,想知道他的具體業務是什麼,而他告訴我只需要幫忙調通就行,以下是我們的對話截圖:
雖然他出的錢不多,但是當時我剛好沒有什麼事情,就接了,我拷貝了之前寫的程式碼,然後再改一下,很快就調通了,截圖給他看,他確認沒有問題後給我發了50 元的紅包,我也把文件發給他了,整個事情就結束了。
接下來我要說的是這個事情背後的技術問題。
首先他是懂PHP 開發的,是在開發中遇到了難題,不知道是他懶得去搜尋還是沒有搜尋到解決方案,而這個難題其實就是一個PHP 實作請求模擬的小問題。
現在我把整個檔案程式碼分享出來,希望對遇到同樣問題的人有一些幫助,實作程式碼:
<?php class HttpClientUtil { public function sendRequest($type = '', $url = '', $data = [], $timeout = 60) { try { $type = strtoupper($type); $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url);//设置请求链接 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);//不直接输出页面 curl_setopt($curl, CURLOPT_HEADER, 0);//获取响应头向下 curl_setopt($curl, CURLOPT_TIMEOUT, $timeout); //请求超时时间,单位:秒 curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1'); if (substr($url, 0, 5) == 'https') { //自动判断是否是https提交 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); // https请求 不验证证书和hosts curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE); } curl_setopt($curl, CURLOPT_HTTPHEADER, ['Content-Type:application/json']); switch ($type) { case "GET" : curl_setopt($curl, CURLOPT_HTTPGET, true); break; case "POST": curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); break; case "PUT" : curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT"); curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); break; case "DELETE": curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "DELETE"); curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($data)); break; } $result = curl_exec($curl); $err_code = curl_errno($curl); $curlInfo = curl_getinfo($curl); curl_close($curl); if ($err_code) { return false; } if ($curlInfo['http_code'] == 200) { //只有200状态才返回数据 return json_decode($result, true); } return false; } catch (\Exception $e) { throw new \Exception($e->getMessage()); } } public function createSign($data){ // 拼接 $dataStr = ''; foreach ($data as $key=>$value){ $dataStr.="{$key}={$value}&"; } // 拼接商户密钥 $dataStr.='access_token=***B8'; // 加密 $sign =strtoupper(MD5($dataStr)); $data['sign']=$sign; return $data; } } $api = new HttpClientUtil(); $url = 'http://***/order/pay'; $data=[ 'userName'=>'test', 'version'=>'2.0', 'cardName'=>'张三', 'cardNum'=>'20932402940189310293', 'openBank'=>'招商银行', 'amount'=>'10.00', 'outOrderId'=>'JD123123123', 'returnUrl'=>'/', ]; $res = $api->sendRequest('post',$url,$api->createSign($data)); print_r($res);
推薦學習:《PHP影片教學 》
以上是關於我用PHP實作請求模擬的一件趣事!的詳細內容。更多資訊請關注PHP中文網其他相關文章!