Maison  >  Article  >  développement back-end  >  Une chose intéressante à propos de ma simulation de requête en PHP !

Une chose intéressante à propos de ma simulation de requête en PHP !

藏色散人
藏色散人avant
2022-10-26 17:19:234375parcourir

Ce qui suit est une chose intéressante sur l'implémentation de la simulation de requête PHP dans la colonne du didacticiel PHP. J'espère que cela vous sera utile !

J'ai gagné 50 yuans en implémentant simplement la simulation de requête PHP

Une chose intéressante s'est produite ce week-end : j'ai vu quelqu'un dans le groupe qui avait besoin d'aide pour le développement PHP et j'ai promis d'être payé, je me suis recommandé et j'ai résolu le problème. reçu 50 yuans.

Ensuite, je parlerai de tout cela en détail.

J'ai ouvert QQ après avoir quitté le travail samedi, et en parcourant les messages du groupe, j'ai vu cette phrase : "Y a-t-il quelqu'un dans le groupe qui sait écrire du code PHP, c'est payé." J'ai immédiatement ajouté son QQ et lui ai dit que je faisais du développement PHP et que je pouvais l'aider.

J'ai reçu sa réponse dimanche matin. Il m'a donné un document et m'a demandé de voir s'il pouvait être mis en œuvre. J'ai parcouru attentivement l'intégralité du document et j'ai découvert qu'il s'agissait d'un document d'interface tiers. très simple de connecter cette interface. Je voulais savoir quelle était son activité spécifique, et il m'a dit qu'il avait juste besoin d'aide pour s'en sortir. Voici une capture d'écran de notre conversation :

Une chose intéressante à propos de ma simulation de requête en PHP !

Une chose intéressante à propos de ma simulation de requête en PHP !

Bien qu'il ait de l'argent. l'offre n'était pas grande, je n'avais rien au moment où j'ai pris le problème et je l'ai pris. J'ai copié le code que j'avais écrit auparavant puis je l'ai modifié rapidement, je lui ai montré la capture d'écran. pas de problème, il m'a envoyé une enveloppe rouge de 50 yuans. J'ai aussi envoyé le dossier. Donnez-le-lui et tout est fini.

La prochaine chose dont je veux parler, ce sont les problèmes techniques derrière cette affaire.

Tout d'abord, il comprend le développement PHP. Il a rencontré un problème lors du développement. Je ne sais pas s'il a eu la flemme de chercher ou s'il n'a pas trouvé de solution. Ce problème était en fait un petit problème dans la simulation de requête PHP. .

Maintenant, je partage l'intégralité du code du fichier, dans l'espoir d'aider les personnes qui rencontrent le même problème. Code d'implémentation :

<?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);

Apprentissage recommandé : "Tutoriel vidéo PHP"

.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer