Heim  >  Artikel  >  Backend-Entwicklung  >  Eine interessante Sache an meiner Anfragesimulation mit PHP!

Eine interessante Sache an meiner Anfragesimulation mit PHP!

藏色散人
藏色散人nach vorne
2022-10-26 17:19:234519Durchsuche

Das Folgende ist eine interessante Sache über die Implementierung der PHP-Anforderungssimulation aus der PHP-Tutorial-Kolumne. Ich hoffe, es wird Ihnen hilfreich sein!

Ich habe 50 Yuan verdient, indem ich einfach die PHP-Anforderungssimulation implementiert habe. Eine interessante Sache ist dieses Wochenende passiert: Ich habe jemanden in der Gruppe gesehen, der Hilfe bei der PHP-Entwicklung brauchte und versprochen hat, bezahlt zu werden. Ich habe mich selbst empfohlen und das Problem gelöst. 50 Yuan erhalten.

Als nächstes werde ich ausführlich auf das Ganze eingehen.

Ich habe QQ nach der Arbeit am Samstag geöffnet und beim Durchsuchen der Gruppennachrichten habe ich diesen Satz gesehen: „Gibt es jemanden in der Gruppe, der PHP-Code schreiben kann, es wird bezahlt.“ Ich fügte sofort seinen QQ hinzu und sagte ihm, dass ich PHP-Entwicklung mache und helfen könne.

Ich erhielt seine Antwort am Sonntagmorgen und fragte mich, ob es sich umsetzen ließe. Ich habe das gesamte Dokument sorgfältig durchgesehen und festgestellt, dass es sich um ein Schnittstellendokument eines Drittanbieters handelt Es ist sehr einfach, diese Schnittstelle zu verbinden. Ich wollte wissen, was sein spezifisches Geschäft ist, und er sagte mir, dass er nur Hilfe brauchte, um durchzukommen:

Eine interessante Sache an meiner Anfragesimulation mit PHP!

Obwohl das Geld, das er hat Angeboten wurde nicht viel, ich hatte zu dem Zeitpunkt, als ich das Problem annahm, den Code, den ich zuvor geschrieben hatte, und habe ihn dann schnell angepasst Kein Problem, er hat mir einen roten Umschlag mit 50 Yuan geschickt. Ich habe ihn auch geschickt und die ganze Sache ist vorbei. Eine interessante Sache an meiner Anfragesimulation mit PHP!

Das nächste, worüber ich sprechen möchte, sind die technischen Probleme, die dieser Angelegenheit zugrunde liegen.

Zuallererst versteht er, dass er während der Entwicklung auf ein Problem gestoßen ist. Ich weiß nicht, ob er zu faul war, zu suchen, oder ob er tatsächlich keine Lösung in der Anforderungssimulation von PHP gefunden hat .

Jetzt teile ich den gesamten Dateicode und hoffe, denjenigen zu helfen, die auf das gleiche Problem stoßen. Implementierungscode:

<?php
class HttpClientUtil
{
    public function sendRequest($type = &#39;&#39;, $url = &#39;&#39;, $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, &#39;Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1&#39;);
            if (substr($url, 0, 5) == &#39;https&#39;) { //自动判断是否是https提交
                curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);  // https请求 不验证证书和hosts
                curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);
            }
            curl_setopt($curl, CURLOPT_HTTPHEADER, [&#39;Content-Type:application/json&#39;]);
            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[&#39;http_code&#39;] == 200) { //只有200状态才返回数据
                return json_decode($result, true);
            }
            return false;
        } catch (\Exception $e) {
            throw new \Exception($e->getMessage());
        }
    }
    public function createSign($data){
        // 拼接
        $dataStr = &#39;&#39;;
        foreach ($data as $key=>$value){
            $dataStr.="{$key}={$value}&";
        }
        // 拼接商户密钥
        $dataStr.=&#39;access_token=***B8&#39;;
        // 加密
        $sign =strtoupper(MD5($dataStr));
        $data[&#39;sign&#39;]=$sign;
        return $data;
    }
}
$api = new HttpClientUtil();
$url = &#39;http://***/order/pay&#39;;
$data=[
    &#39;userName&#39;=>&#39;test&#39;,
    &#39;version&#39;=>&#39;2.0&#39;,
    &#39;cardName&#39;=>&#39;张三&#39;,
    &#39;cardNum&#39;=>&#39;20932402940189310293&#39;,
    &#39;openBank&#39;=>&#39;招商银行&#39;,
    &#39;amount&#39;=>&#39;10.00&#39;,
    &#39;outOrderId&#39;=>&#39;JD123123123&#39;,
    &#39;returnUrl&#39;=>&#39;/&#39;,
];
$res = $api->sendRequest(&#39;post&#39;,$url,$api->createSign($data));
print_r($res);

Empfohlenes Lernen: „

PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonEine interessante Sache an meiner Anfragesimulation mit PHP!. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen