Heim  >  Artikel  >  PHP-Framework  >  ThinkPHP6-Docking realisiert WeChat H5-Zahlung

ThinkPHP6-Docking realisiert WeChat H5-Zahlung

王雪芹
王雪芹Original
2020-09-09 11:56:583704Durchsuche

WeChat H5-Zahlung ist eine unverzichtbare Funktion für mobile E-Commerce-Webseiten. Heute führen wir Sie durch die Implementierung des ThinkPHP6-Dockings zur Implementierung der WeChat H5-Zahlung.

1. Vorbereitung

Für die WeChat-Zahlung sind außerdem Unternehmensqualifikationen und ein zertifiziertes WeChat-Dienstkonto erforderlich. Dazu müssen natürlich 300 Yuan an WeChat gezahlt werden.

Nachdem wir uns speziell für Qualifikationen beworben haben, öffnen wir die WeChat-Zahlungsplattform, klicken in der Navigation auf „Produktcenter“ – „Klicken Sie auf „H5-Zahlung““ und geben Sie auf der sich öffnenden Seite die relevanten Domänennameninformationen ein und konfigurieren Sie sie. und dann können Sie warten, bis die offizielle WeChat-Überprüfung abgeschlossen ist. Wenn der Antrag nicht genehmigt wird, werden Sie von WeChat über den Grund informiert, bis die H5-Zahlung erfolgreich aktiviert wurde.

2. Verbinden Sie sich mit der WeChat H5-Zahlung

Wir öffnen zunächst die offiziellen Dokumente der WeChat H5-Zahlung, wie dies bei der Zahlung mit dem nativen Scan-Code der Fall ist es selbst integriert.

WeChat H5-Zahlung ist nicht schwierig, wir haben das Kapitel zur einheitlichen Bestellung vollständig gelesen.

1. Parameter vorbereiten.

Der WeChat-Beamte hat die Parameter für uns detailliert aufgelistet. Es ist nicht schwierig, diese Parameter zu erhalten. Wir müssen auf zwei Parameter achten: Einer ist das Signaturzeichen und der andere ist das Terminal IPspbill_create_ip.

Der Signaturbeamte hat detaillierte Anweisungen gegeben. Wir sortieren die ASCII-Codes von klein nach groß in der Form key1=value1&key2=value2. Nach dem Sortieren wird StringA erhalten. Anschließend werden StringA und Schlüssel zum Zusammenfügen verwendet und schließlich in Großbuchstaben umgewandelt. Schauen wir uns den detaillierten Code an:

public function index(){

        $url = "https://api.mch.weixin.qq.com/pay/unifiedorder";//微信传参地址

        //1.获取调用统一下单接口所需必备参数
        $appid = 'wxff5b6b241a4fb11';//微信公众号appid
        $mch_id = '152223331';//微信支付商户号
        $key = 'b304911d6a9f7728d264dfd695ebae1';//自己设置的微信商家key
        $out_trade_no = time();//平台内部订单号
        $nonce_str=MD5(time());//随机字符串
        $body = '商品购买';//付款内容
        $total_fee = 1;//订单总金额,单位为分
        $spbill_create_ip = $this -> get_client_ip(); //获得用户设备IP
        $attach = 'weixinh5';//附加数据(自定义,在支付通知中原样返回)        
        $notify_url = "http://www.xxx.cn/mobile/WechatPay/notify";//通知地址
        $trade_type = 'MWEB';//交易类型,微信H5支付时固定为MWEB

        //2.将参数按照key=value的格式,并按照参数名ASCII字典序排序生成字符串
        $signA ="appid=$appid&attach=$attach&body=$body&mch_id=$mch_id&nonce_str=$nonce_str&notify_url=$notify_url&out_trade_no=$out_trade_no&spbill_create_ip=$spbill_create_ip&total_fee=$total_fee&trade_type=$trade_type";
        
        //3.拼接字符串
        $strSignTmp = $signA."&key=$key";

        //4.MD5加密后转换成大写
        $sign = strtoupper(MD5($strSignTmp));

        //5.拼接成所需XML格式
        $post_data = "<xml> 
                <appid>$appid</appid> 
                <attach>$attach</attach> 
                <body>$body</body> 
                <mch_id>$mch_id</mch_id> 
                <nonce_str>$nonce_str</nonce_str> 
                <notify_url>$notify_url</notify_url> 
                <out_trade_no>$out_trade_no</out_trade_no> 
                <spbill_create_ip>$spbill_create_ip</spbill_create_ip> 
                <total_fee>$total_fee</total_fee> 
                <trade_type>$trade_type</trade_type>
                <sign>$sign</sign> 
                </xml>";

    }
2. Ändern Sie die Parameter. Posten Sie an die offizielle Adresse.

Die offizielle Adresse ist die URL-Adresse: https://api.mch.weixin.qq.com/pay/unifiedorder. Diese Adresse darf nicht geändert werden. Wir veröffentlichen die vorbereiteten XML-Parameter. ?? Schauen Sie sich den vollständigen Code an:

public function get_client_ip() {
        if(getenv(&#39;HTTP_CLIENT_IP&#39;) && strcasecmp(getenv(&#39;HTTP_CLIENT_IP&#39;), &#39;unknown&#39;)) {
            $ip = getenv(&#39;HTTP_CLIENT_IP&#39;);
        } elseif(getenv(&#39;HTTP_X_FORWARDED_FOR&#39;) && strcasecmp(getenv(&#39;HTTP_X_FORWARDED_FOR&#39;), &#39;unknown&#39;)) {
            $ip = getenv(&#39;HTTP_X_FORWARDED_FOR&#39;);
        } elseif(getenv(&#39;REMOTE_ADDR&#39;) && strcasecmp(getenv(&#39;REMOTE_ADDR&#39;), &#39;unknown&#39;)) {
            $ip = getenv(&#39;REMOTE_ADDR&#39;);
        } elseif(isset($_SERVER[&#39;REMOTE_ADDR&#39;]) && $_SERVER[&#39;REMOTE_ADDR&#39;] && strcasecmp($_SERVER[&#39;REMOTE_ADDR&#39;], &#39;unknown&#39;)) {
            $ip = $_SERVER[&#39;REMOTE_ADDR&#39;];
        }
        return preg_match ( &#39;/[\d\.]{7,15}/&#39;, $ip, $matches ) ? $matches [0] : &#39;&#39;;
    }

Es ist zu beachten, dass WeChat die Parameter return_code und result_code zurückgibt. Return_code stellt nur eine erfolgreiche Kommunikation dar, keinen Transaktionserfolg. Die Transaktion ist nur dann erfolgreich, wenn return_code und result_code beide SUCCESS sind.

Abschließend müssen wir zwischen der Benachrichtigungsadresse und der Rücksendeadresse unterscheiden. Die Benachrichtigungsadresse ist die Zahlungsbenachrichtigung von WeChat an den Händler. Sie ist dasselbe wie die native Zahlung und wird in Form eines Datenstroms gesendet. Die Absenderadresse ist die Sprungseite, nachdem der Benutzer bezahlt hat, und ist für den Benutzer sichtbar.

Das Obige ist die relevante Einführung in das ThinkPHP6-Docking zur Implementierung der WeChat H5-Zahlung, alle zusammen!

Das obige ist der detaillierte Inhalt vonThinkPHP6-Docking realisiert WeChat H5-Zahlung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn