通过简单实现 PHP 请求模拟赚了 50 元
(资料图片仅供参考)
这个周末发生了一件有趣的事情:在群里看到有人需要做 PHP 开发的协助,并承诺有报酬,我自荐后解决了问题,获得了 50 元。
接下来我详细的说说整个事情的经过。
周六下班后打开了 QQ,在浏览群消息的时候看到这样一句话:“群里有没有会写 PHP 代码的,有偿”。我立马添加他的 QQ,并告诉他我是做 PHP 开发的,我可以提供帮助。
周日早上收到了他的回复,他给了我一个文档,让我看看是否能实现,我仔细浏览了整个文档,发现是第三方接口文档,我告诉他对接这种接口很简单,想知道他的具体业务是什么,而他告诉我只需要帮忙调通就行,以下是我们的对话截图:
虽然他出的钱并不多,但是当时我恰好没有什么事情,就接了,我拷贝了之前写的代码,然后再改一下,很快就调通了,截图给他看,他确认没有问题后给我发了 50 元的红包,我也把文件发给他了,整个事情就结束了。
接下来我要说的是这个事情背后的技术问题。
首先他是懂 PHP 开发的,是在开发中遇到了难题,不知道是他懒得去搜索还是没有搜索到解决方案,而这个难题实际上就是一个 PHP 实现请求模拟的小问题。
现在我把整个文件代码分享出来,希望对遇到同样问题的人有一些帮助,实现代码:
<?phpclass 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中文网其它相关文章!