我們已經知道,微信無論是微信內置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"
}