應(yīng)用場(chǎng)景
支付完成后,微信會(huì)把相關(guān)支付結(jié)果和用戶(hù)信息發(fā)送給商戶(hù),商戶(hù)需要接收處理,并返回應(yīng)答。
對(duì)后臺(tái)通知交互時(shí),如果微信收到商戶(hù)的應(yīng)答不是成功或超時(shí),微信認(rèn)為通知失敗,微信會(huì)通過(guò)一定的策略定期重新發(fā)起通知,盡可能提高通知的成功率,但微信不保證通知最終能成功。 (通知頻率為15/15/30/180/1800/1800/1800/1800/3600,單位:秒)
注意:同樣的通知可能會(huì)多次發(fā)送給商戶(hù)系統(tǒng)。商戶(hù)系統(tǒng)必須能夠正確處理重復(fù)的通知。
推薦的做法是,當(dāng)收到通知進(jìn)行處理時(shí),首先檢查對(duì)應(yīng)業(yè)務(wù)數(shù)據(jù)的狀態(tài),判斷該通知是否已經(jīng)處理過(guò),如果沒(méi)有處理過(guò)再進(jìn)行處理,如果處理過(guò)直接返回結(jié)果成功。在對(duì)業(yè)務(wù)數(shù)據(jù)進(jìn)行狀態(tài)檢查和處理之前,要采用數(shù)據(jù)鎖進(jìn)行并發(fā)控制,以避免函數(shù)重入造成的數(shù)據(jù)混亂。
特別提醒:商戶(hù)系統(tǒng)對(duì)于支付結(jié)果通知的內(nèi)容一定要做簽名驗(yàn)證,并校驗(yàn)返回的訂單金額是否與商戶(hù)側(cè)的訂單金額一致,防止數(shù)據(jù)泄漏導(dǎo)致出現(xiàn)“假通知”,造成資金損失。
微信支付回調(diào)處理分為
1.同步
2.異步
這里微信官方推薦使用 第二種
php對(duì)微信回調(diào)異步處理
//獲取返回的xml
$testxml = file_get_contents("php://input");
//將xml轉(zhuǎn)化為json格式
$jsonxml = json_encode(simplexml_load_string($testxml, 'SimpleXMLElement', LIBXML_NOCDATA));
//轉(zhuǎn)成數(shù)組
$result = json_decode($jsonxml, true);
if($result){
//如果成功返回了
if($result['return_code'] == 'SUCCESS' $result['result_code'] == 'SUCCESS'){
//進(jìn)行改變訂單狀態(tài)等操作。。。。
}
}
本次微信支付返回的xml轉(zhuǎn)化為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"
}
其中
"result_code": "SUCCESS",
"return_code": "SUCCESS",
是判斷用戶(hù)是否已經(jīng)支付的依據(jù)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:- springboot整合微信支付sdk過(guò)程解析
- Android自定義View實(shí)現(xiàn)微信支付密碼輸入框
- 微信小程序與webview交互實(shí)現(xiàn)支付功能
- Vue實(shí)現(xiàn)微信支付功能遇到的坑
- 微信小程序調(diào)用微信支付接口的實(shí)現(xiàn)方法
- java實(shí)現(xiàn)微信支付結(jié)果通知
- 快速對(duì)接payjq的個(gè)人微信支付接口過(guò)程解析