laravel5.7 easywechat~4.0微信支付回調(diào)

回調(diào)函數(shù)

$response = $app->handlePaidNotify(function ($message, $fail) {
    // 你的邏輯
    return true;
    // 或者錯(cuò)誤消息
    $fail('Order not exists.');
});

$response->send(); // Laravel 里請(qǐng)使用:return $response;

注意

(1).wechat發(fā)送回調(diào)是通過post方式,在路由處定義了之后祥国,還需要在laravel項(xiàng)目中排除token驗(yàn)證,我建議在中間件中VerifyCsrfToken.php進(jìn)行排除路由。

protected $except = [

    '/pay_success_notify',
    
];
  • 重點(diǎn)荒典!重點(diǎn)!重點(diǎn)吞鸭! 回調(diào)這里的處理可以說是重中之重寺董,這里出岔子,可能會(huì)造成 用戶支付成功后刻剥,微信的 * 回調(diào)沒有進(jìn)來 * 遮咖,后臺(tái)回調(diào)的邏輯就沒有執(zhí)行,導(dǎo)致用戶錢花了造虏,東西沒買上(即你的服務(wù)器上沒有執(zhí)行給付費(fèi)用戶修改支付狀態(tài)等數(shù)據(jù)庫操作)御吞。
    另一種后果,如果沒有正確返回微信參數(shù)漓藕,微信會(huì)多次發(fā)送回調(diào)信息來提醒你支付成功了魄藕,導(dǎo)致你的服務(wù)器 * 接受回調(diào)函數(shù)多遍 * 。而此時(shí)你也馬馬虎虎撵术,沒有在支付成功的邏輯上對(duì)用戶的支付狀態(tài)進(jìn)行判斷背率,導(dǎo)致邏輯用戶充一次錢,在數(shù)據(jù)庫卻重復(fù)執(zhí)行了好幾次相關(guān)數(shù)據(jù)庫操作嫩与。前者坑了付費(fèi)用戶寝姿,后者坑了你的公司,這里如果不注意的話划滋,后果只會(huì)很嚴(yán)重饵筑,涉及到錢的地方要倍加小心。
  • 在回調(diào)路由指向的方法內(nèi)处坪,如果你的支付成功的邏輯成功運(yùn)行了根资,需要return true;如果沒有成功進(jìn)行數(shù)據(jù)庫操作同窘,需要返回false玄帕;或不返回,微信會(huì)再一次發(fā)送回調(diào)信息(post方式)想邦。

一些easywechat官方的建議:

這里需要注意的有幾個(gè)點(diǎn):

  • 退款結(jié)果通知和掃碼支付通知的使用方法均類似裤纹。

  • handlePaidNotify 只接收一個(gè) Closure 匿名函數(shù)。

  • 該匿名函數(shù)接收兩個(gè)參數(shù)丧没,這兩個(gè)參數(shù)分別為:

  • $message 為微信推送過來的通知信息鹰椒,為一個(gè)數(shù)組锡移; - $fail 為一個(gè)函數(shù),觸發(fā)該函數(shù)可向微信服務(wù)器返回對(duì)應(yīng)的錯(cuò)誤信息漆际,微信會(huì)稍后重試再通知淆珊。

  • 該函數(shù)返回值就是告訴微信 “我是否處理完成”。如果你觸發(fā) $fail 函數(shù)奸汇,那么微信會(huì)在稍后再次繼續(xù)通知你套蒂,直到你明確的告訴它:“我已經(jīng)處理完成了”,只有在函數(shù)里 return true; 才代表處理完成茫蛹。

  • handlePaidNotify 返回值 $response 是一個(gè) Response 對(duì)象操刀,如果你要直接輸出,使用 $response->send(), 在一些框架里(如 Laravel)不是輸出而是返回:return $response婴洼。

通常我們的處理邏輯大概是下面這樣(以下只是偽代碼):

$response = $app->handlePaidNotify(function($message, $fail){
    // 使用通知里的 "微信支付訂單號(hào)" 或者 "商戶訂單號(hào)" 去自己的數(shù)據(jù)庫找到訂單
    $order = 查詢訂單($message['out_trade_no']);

    if (!$order || $order->paid_at) { // 如果訂單不存在 或者 訂單已經(jīng)支付過了
        return true; // 告訴微信骨坑,我已經(jīng)處理完了,訂單沒找到柬采,別再通知我了
    }

    ///////////// <- 建議在這里調(diào)用微信的【訂單查詢】接口查一下該筆訂單的情況欢唾,確認(rèn)是已經(jīng)支付 /////////////

    if ($message['return_code'] === 'SUCCESS') { // return_code 表示通信狀態(tài),不代表支付狀態(tài)
        // 用戶是否支付成功
        if (array_get($message, 'result_code') === 'SUCCESS') {
            $order->paid_at = time(); // 更新支付時(shí)間為當(dāng)前時(shí)間
            $order->status = 'paid';

        // 用戶支付失敗
        } elseif (array_get($message, 'result_code') === 'FAIL') {
            $order->status = 'paid_fail';
        }
    } else {
        return $fail('通信失敗粉捻,請(qǐng)稍后再通知我');
    }

    $order->save(); // 保存訂單

    return true; // 返回處理完成
});

$response->send(); // return $response;
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末礁遣,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子肩刃,更是在濱河造成了極大的恐慌祟霍,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件盈包,死亡現(xiàn)場(chǎng)離奇詭異沸呐,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)呢燥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門崭添,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人叛氨,你說我怎么就攤上這事呼渣。” “怎么了寞埠?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵屁置,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我畸裳,道長(zhǎng)缰犁,這世上最難降的妖魔是什么淳地? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任怖糊,我火速辦了婚禮帅容,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘伍伤。我一直安慰自己并徘,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布扰魂。 她就那樣靜靜地躺著麦乞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪劝评。 梳的紋絲不亂的頭發(fā)上姐直,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音蒋畜,去河邊找鬼声畏。 笑死,一個(gè)胖子當(dāng)著我的面吹牛姻成,可吹牛的內(nèi)容都是我干的插龄。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼科展,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼均牢!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起才睹,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤徘跪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后琅攘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體真椿,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年乎澄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了突硝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡置济,死狀恐怖解恰,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情浙于,我是刑警寧澤护盈,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站羞酗,受9級(jí)特大地震影響腐宋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一胸竞、第九天 我趴在偏房一處隱蔽的房頂上張望欺嗤。 院中可真熱鬧,春花似錦卫枝、人聲如沸煎饼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吆玖。三九已至,卻和暖如春马篮,著一層夾襖步出監(jiān)牢的瞬間沾乘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工浑测, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留意鲸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓尽爆,卻偏偏與公主長(zhǎng)得像怎顾,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子漱贱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容