参考資料:
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。"&" ; } } $バフ = トリム($バフ、 "&"を)。 リターン $バフ。 }