マイクロチャネルの有料た後、約コールバック検証プロセス

参考資料:

https://www.php.cn/php-weizijiaocheng-407545.html

https://blog.csdn.net/rain_silently/article/details/79390377

https://blog.csdn.net/chenrui310/article/details/80830798

 

直接コードでADO、:

 パブリック 関数デモ()
    { 
        // 取得し、マイクロチャネル・データ・コールバック
        $ notifiedData = のfile_get_contents( 'PHP:// INPUT' ); 

        // XMLフォーマット変換
        $ xmlObj = simplexml_load_string$ notifiedData、 'にSimpleXMLElement'、LIBXML_NOCDATA);
         $ xmlObj = json_decode(json_encode(の$ xmlObj)、trueに;)
        
        $キー = "公開鍵の数" ; 

        // バックデータ形式への要求
// $ xmlObj = [ 
// 'のAppID' => 'wxf546a8df41c2ce18'、
// '添付' => '製品'、 
//」「=> 'CFT' bank_type、
// 'cash_fee' => '1'、 
// 'TRANSACTION_ID' => '4200000342201908088760422065'
// 'fee_type' => 'CNY'、
// 'is_subscribe' => 'Y'、
// 'mch_id' => '1534940151'、
// 'nonce_str' => 'jld6md2ky75emve7spsrf2tolturngrm'、
// 'のOpenID' = > 'oyljP5y2HbOHsEAuOLpHP2dXQChw'、
// 'out_trade_no' => '20190808164259728748651734197807'、
// 'RESULT_CODE' => 'SUCCESS'、
// 'RETURN_CODE' => 'SUCCESS'、
// '記号' => 'A68DC8C8E61DCA90D4454963982A7B12'、
/ / 'TIME_END' => '20190808164308'、
// 'total_fee' => '1'、
// 'trade_type' => 'JSAPI'、
//]; 
        

        //かどうか成功した支払
        IF$ xmlObj[ 'RETURN_CODE'] == "成功" && $ xmlObj [ 'RESULT_CODE'] == "成功" ){ 

            // 署名が削除
            $ xmlSign = $ xmlObj [ 'サイン' ];
             解除$ xmlObj [ 'ログイン' ] ); 


            $サイン = $この - > appgetSign($ xmlObj$キー); 

            IF$サイン === $ xmlSignを
            { 
                // 検証し、確認が支払われました

                //マイクロチャネルは、通知繰り返されませ知らせる
"<XML> <RETURN_CODE>リターンを <![CDATA [SUCCESS]]> <![CDATA [OK]]> </ RETURN_CODE> <return_msg> </ return_msg> </ XML>";
            } 
            
        } 
    } 


    / * 
     * URLパラメータは、署名サイン生成するフォーマットのパラメータにフォーマット
     * / 
    プライベート 関数 appgetSign($のObj$のappwxpay_key 
    { 

        foreachの$ OBJの AS  $ K => $のV 
        { 
            パラメータ$を [ $ K ] = $ V ; 
        } 


        // 署名ステップ:辞書パラメータに従って順序付け
        ksort$パラメータ);
         $文字列 = $この - > ToUrlParams($パラメータ); 


        //キー文字列を追加した後:署名ステップ2 

        IF$のappwxpay_key ){
             $文字列 = $文字列 "キー=&"。$ Appwxpay_key ; 
        } 


        // 署名ステップ3:MD5は、暗号化された
        $文字列 = MD5$文字列); 



        // 署名ステップ4:上部にすべての文字
        $のresult_ = strtoupper$文字列); 


        戻り の$ result_ ; 
    } 


    プライベート 関数 ToUrlParams($パラメータ
    { 
        $のBUFF = "" ;
         foreachの$パラメータ として $ K => $ V 
        { 
            場合$ K!= "記号" && $ V!= "" &&!IS_ARRAY$ V )){
                 $バフ。= $ kを"="。$のV"&" ; 
            } 
        } 

        $バフ = トリム$バフ、 "&"を)。
        リターン $バフ
    }

 

おすすめ

転載: www.cnblogs.com/laijinquan/p/11325249.html