php對微信支付回調處理的方法(合集)

我們已經知道,微信無論是微信內置JSAPI支付、H5外部瀏覽器支付、掃碼支付,都需要通過異步回調接收支付結果。

本文簡介如何獲取微信支付通知。

僅需要一個在之前設置好的回調地址的方法裏寫上如下:

//處理微信支付回調
    public function notify(){
    
        $testxml  = file_get_contents("php://input");
        
        $jsonxml = json_encode(simplexml_load_string($testxml, 'SimpleXMLElement', LIBXML_NOCDATA));

        $result = json_decode($jsonxml, true);//轉成數組,
        if($result){
            //如果成功返回了
            $out_trade_no = $result['out_trade_no'];
                    if($result['return_code'] == 'SUCCESS' && $result['result_code'] == 'SUCCESS'){
      //執行業務邏輯
                    }
        }
    }

對後臺通知交互時,如果微信收到商戶的應答不是成功或超時,微信認爲通知失敗,
微信會通過一定的策略定期重新發起通知,儘可能提高通知的成功率,但微信不保證通知最終能成功。 
(通知頻率爲15/15/30/180/1800/1800/1800/1800/3600,單位:秒)    
    
結束微信重新通知用代碼:echo 'SUCCESS';

附上:
微信支付返回的xml轉化爲json格式如下:

{
  "appid": "12345",
  "attach": "pay",
  "bank_type": "CFT",
  "cash_fee": "1",
  "fee_type": "CNY",
  "is_subscribe": "Y",
  "mch_id": "12345",
  "nonce_str": "dZYFpaDYRpF5rwhv",
  "openid": "onhwF1hiutUySKCsrV21A6MCtT5Q",
  "out_trade_no": "SH201808222055598628",
  "result_code": "SUCCESS",
  "return_code": "SUCCESS",
  "sign": "5A019F52BEF1C3A98AE0F1FF29D01574",
  "time_end": "20180822205606",
  "total_fee": "1",
  "trade_type": "MWEB",
  "transaction_id": "4200000171201808221550954201"
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章