在作支付開發時,發現一個問題,就是說異步回調會一直不停的回調,這樣會致使有些業務邏輯的問題,好比說本人在作的一個項目,支付成功後,會有一系列的業務,好比會員升級,錢包判斷等功能,若是一直回調進行處理那出現問題的,那麼如何解決了,也挺簡單的,就是在處理完看,你給支付寶或微信進行一個輸出,告訴支付寶或微信,我已處理完成,那麼就不會一直在出現回調sql
支付寶很簡單,只要輸出 echo success;便可,而微信則須要return 一個xml 數據 微信
<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>
//支付寶 $sql="select id,is_pay,mem_id from `order` where ordernum='{$out_trade_no}'"; //更新訂單 $order = $dosql->GetOne($sql); //若是已支付過,就無需再進行遊戲規則 1表明你也走過這個流程 if($order['is_pay']===1){ echo "success"; }
$order = $dosql->GetOne("select id,is_pay,mem_id from `order` where ordernum={$data['out_trade_no']}"); //微信支付回覆 if ($order['is_pay']==1) { return '<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>'; }
主要思想就是先判斷下是否已支付過,若是已支付過,就直接告訴支付寶或微信,已支付。無需再進行異步回調。異步