国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

大家好,請問輪詢用workerman有解決方案嗎?謝謝大家!

gxnnlj6

問題描述

微信支付除了異步回調(diào)通知,還要求后端主動輪詢訂單是否支付成功做為輔助,

前端輪詢方案比較多,后端PHP不懂有什么方法?

TP6+使用Workerman執(zhí)行定時任務(wù)?

Workerman有輪詢方案嗎?

先謝謝了!

1740 7 1
7個回答

chaz6chez
  1. 創(chuàng)建一個自定義進(jìn)程,進(jìn)程啟動加載一個timer,timer定時收集一部分超過閾值的未完結(jié)訂單,然后主動請求微信訂單狀態(tài);
  2. 創(chuàng)建webhook回調(diào)地址,用于接收異步通知消息;
  • gxnnlj6 2024-01-31

    感謝您的回復(fù)!如果客戶訂單一提交,后端就主動timer定時發(fā)起輪詢,這樣會對服務(wù)器有壓力嗎?

  • chaz6chez 2024-01-31

    通常來說后端輪詢只是為了兜底的手段策略,實時性依賴webhook回調(diào)

  • gxnnlj6 2024-01-31

    明白,非常感謝!官方說一般異步回調(diào)不會有問題,就怕通訊有時會出問題,后端輪詢做為輔助手段,最好按規(guī)范來做

luohonen

這叫什么輪詢,這不就是定時器定時調(diào)微信接口么,開個定時器調(diào)就完事了

  • gxnnlj6 2024-01-31

    嗯,就是下單后過幾秒開啟定時器調(diào)微信接口查詢,感謝!

army

我是這樣干的,創(chuàng)建一個2秒定時器,下單時將訂單信息存儲在緩存中,在定時器里從緩存里讀取訂單信息向微信接口請求狀態(tài)再更新。

  • gxnnlj6 2024-01-31

    感謝兄弟指導(dǎo)!我之前一直是依賴異步回調(diào)處理訂單,現(xiàn)在對接第三方支付要求在回調(diào)的基礎(chǔ)上加上輪詢,如果每筆訂單后端都用定時器調(diào)接口查詢,服務(wù)器會有壓力嗎?

  • army 2024-01-31

    這跟壓力都沾不上邊,隨便整

  • gxnnlj6 2024-01-31

    每天1萬單訂單,是不是理解為1萬個定時任務(wù)?每個定時任務(wù)6分鐘,6分鐘后不管結(jié)果如何都結(jié)束定時任務(wù)

  • army 2024-02-04

    就一個定時任務(wù)處理

864328615

為啥不是在前端處理定時呢,我們最近有個購票的業(yè)務(wù),需要h5下單成功后去票務(wù)系統(tǒng)下單,但是靠微信異步通知再去票務(wù)系統(tǒng)下單會出現(xiàn)延遲問題 還有就是用戶h5下單成功了 票務(wù)可能會出票失敗,基于這個問題我們解決的方式是
1.前端用戶支付成功后,開啟定時請求后臺訂單支付結(jié)果查詢接口
2.查詢支付成功后對票務(wù)系統(tǒng)下單,票務(wù)系統(tǒng)下單成功,h5訂單下單才算成功,票務(wù)系統(tǒng)失敗,對該筆訂單自動執(zhí)行退款,退款失敗提醒客戶聯(lián)系平臺(一般不會出現(xiàn)這種情況)

做完這個小系統(tǒng)后 我思索了很久之前做過的支付,其實都存在支付問題,單純的靠異步通知是解決不了訂單的狀態(tài)更新問題的,尤其前端要求下單成功后進(jìn)入訂單詳情的場景,回調(diào)稍微延遲下,按我以前的做法都會面臨客戶明明支付成功了,進(jìn)入訂單卻是待支付

  • gxnnlj6 2024-01-31

    前端不確實因素太多。比如用戶剛支付完就關(guān)閉頁面,前端關(guān)閉了就發(fā)不起請求,只能靠后端主動輪詢

  • 864328615 2024-02-02

    這塊沒測試過用戶關(guān)閉的情況 異步正常接受,前端正常輪訓(xùn),輪訓(xùn)為了用戶支付完了進(jìn)入訂單時保證看到的是已支付訂單,而不是異步處理阻塞下訂單狀態(tài)未及時更新 用戶看到的是未支付訂單

  • 初心by 2024-03-02

    這種不要前端去,不然同時1萬個人去請求你的接口,小心炸了

Caesar-Tang

微信下單,后端只是生成前端拉起支付的數(shù)據(jù)。若想后端獲取該筆交易的支付狀態(tài),有以下方案:

  1. 依據(jù)微信的支付通知回調(diào)。微信支付通知回調(diào),會在用戶成功支付后,下發(fā)給統(tǒng)一下單時配置的通知回調(diào)url;若業(yè)務(wù)服務(wù)器未按照微信官方約定返回給微信,微信會按照策略繼續(xù)下發(fā)。
  2. 使用定時器查詢訂單。使用定時器定時批量查詢未完結(jié)訂單,然后請求微信接口查詢訂單的支付狀態(tài)。這種方式在訂單量大的情況下會導(dǎo)致訂單狀態(tài)更新慢的問題。
  3. 使用消息中間件。在每次下單時,將訂單信息下發(fā)給消息中間件的生產(chǎn)者,在消息中間件的消費者里請求微信接口查詢訂單的支付狀態(tài)并做更新。這里可設(shè)置消費者的數(shù)量及該筆交易消費次數(shù)和延時消費時間等,若某一筆交易在處理 M次*N秒 后仍然時未支付,則可認(rèn)為該交易用戶未支付。
  4. 開發(fā)微信支付中臺服務(wù)。將微信支付相關(guān)接口封裝,在中臺里開發(fā)服務(wù)接管微信的通知回調(diào)并做記錄,需要保證中臺服務(wù)的安全性,穩(wěn)定性等。后續(xù)所有的支付業(yè)務(wù)和中臺對接。
  5. 前端輪詢。該 "支付結(jié)果查詢中" 的展示是僅面向用戶的,輪訓(xùn)查詢本系統(tǒng)的訂單狀態(tài)即可。
    目前,我們公司的做法是:1+3+4+5。
  • gxnnlj6 2024-02-29

    感謝回復(fù)!第3點消息中間件就是想實現(xiàn)的

darcy

其實也很簡單了
1、用戶下單創(chuàng)建支付訂單時,把支付信息也一起放到隊列去
2、在創(chuàng)建一個時間任務(wù)去查詢隊列(消費),查詢是否已經(jīng)支付成功
3、查詢用戶未支付時,再放到隊列去
4、設(shè)置一個閥值,輪詢N次還是未支付情況下基本上用戶是不會去支付了,所以可以關(guān)閉此條消費記錄了(創(chuàng)建微信支付時,有一個支付超時,可以聯(lián)動起來)

  • gxnnlj6 2024-02-29

    感謝回復(fù)!現(xiàn)在下單時是建有queue隊列任務(wù)檢查是否支付超時。文檔要求前兩分鐘間隔3~5秒查一次,之后間隔10秒查一次,如果超出 6 分鐘后還未獲取到訂單最終狀態(tài),停止輪詢。不懂是用什么來做時間任務(wù)

TM

加個延遲隊列,下單后塞進(jìn)去5分鐘后查看這條訂單是否已經(jīng)支付了,沒支付就查一次微信判斷就可以了吧

  • gxnnlj6 2024-02-29

    感謝回復(fù)!延遲隊列我是用在了5分鐘內(nèi)未支付狀態(tài)改為已取消

年代過于久遠(yuǎn),無法發(fā)表回答
??