第三方支付異步通知的陷阱

版權聲明:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/j16421881/article/details/78703792

??用戶下單后調用第三方支付付款,然后接收第三方支付的異步通知,以便確認支付是否成功。
如下圖
交互時序圖

??但異步通知可能由于網絡原因,或者應用服務崩潰沒有接收到。為了應對這種情況需要后臺創建一個定時任務去調用第三方接口,主動查詢支付結果。這種情形下就涉及并發的問題,可能后臺定時任務跟異步通知同時收到了支付成功結果,同時對響應數據進行處理。通常通過加鎖來避免這種問題。
??到了這里一切看起來很美好。代碼提交后在測試環境順利通過。由于測試環境情形單一,測試用例不夠,異步通知總是成功的,做為備用手段的后臺定時任務沒有被測試覆蓋到就進入了生產環境。后臺定時任務的邏輯有可能是錯的,而由于生產環境配置了負載平衡,保證了高可用,直到很久都不會發現定時任務的錯誤。筆者就遇到過在長達一年的時間里定時任務從來就不起作用。
??所以開發要在qa階段跟測試人員緊密配合,保證每個測試用例都覆蓋到,比如關掉異步通知服務,看定時任務是否能正確處理。直到有一天我發現其他部門一位同事采用了一個很有創意的做法,既然異步通知不靠譜,干脆就不要,完全靠后臺定時任務主動查詢第三方支付結果,然后進一步處理。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/281745.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/281745.shtml
英文地址,請注明出處:http://en.pswp.cn/news/281745.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

js請求php文件 302,采集某個 url, js 請求 200,瀏覽器訪問 302

/** 文件名: sso.js* 描述: 提供對 CAS 單點登錄的封裝** 功能說明:* 實現多個應用之間的單點登錄( SSO )功能,應用可以部署在不同的域名。容器的退出直接寫在頭里,避免 JS 過多加載** 版本: 1.0.0.1* 作者: [email protected]* 日期&#xf…

Jetty 類載入問題處理

前幾日使用 Jetty (9.2)部署公司一個 web 項目,這個項目原本部署在 Tomcat server上,一切正常,可是部署到 Jetty 后,啟動報錯.關鍵錯誤信息為"java.lang.NoClassDefFoundError: Could not initialize class org.apache.tomcat.jdbc.pool.DataSource" 項目使用了 Tomc…

2.3 萬 Star,Nginx 可視化配置工具

你好,這里是 Dotnet 工具箱,定期分享 Dotnet 有趣,實用的工具或組件,希望對您有用!對于前后端開發工程師來說, Nginx 是必須掌握的工具,因為它不僅僅是一個 Web Server,還包含了其他…

城市智慧停車系統方案的產品設計體系介紹

最近幾年隨著大數據技術快速發展與應用,智慧城市隨即被正式提出。而且,我們也可以深刻感受到“智慧”正在慢慢改變我們的生活方式和城市。要讓城市變智慧的地方太多太多,當前我們接觸做多的可能就是外出停車,比如很多商場的停車系…

vue.js:利用vue.js做一個抽獎小游戲

MVVM模式是什么:MModel(模型),VView(視圖),VM ViewModel(簡寫成MVVM) . 代碼如下: 運行代碼結果: 1.你沒有中獎: 2.恭喜你,你中獎了: 轉載于:https://www.cnblogs.com/ya…

滾動加載數據 php,無刷新動態加載數據 滾動條加載適合評論等頁面

滾屏加載更多數據,適合評論等頁面本例的數據庫很簡單,一看就明了復制代碼 代碼如下:$querymysql_query("select * from content order by id desc limit 0,10");while ($rowmysql_fetch_array($query)) {?>js文件復制代碼 代碼如下:$(function(){var …

Java之品優購課程講義_day20(5)

資源過濾與變量替換 修改 pom.xml &#xff0c;在 build 節點中添加如下配置 <filters><filter>src/main/resources/filters/db_${env}.properties</filter></filters><resources><resource><directory>src/main/resources</dir…

國際主流固件接口組織UEFI全面支持LoongArch,龍架構已完成上游TianoCore EDK2代碼合并...

2022年9月初&#xff0c;UEFI官方組織在發布的UEFI specification V2.10規范中全面支持了LoongArch64架構以及部分LoongArch32架構。近期&#xff0c;龍芯團隊又完成了LoongArch基礎代碼與UEFI上游TianoCore EDK2的合并&#xff0c;LoongArch進入TianoCore EDK2主分支&#xff…

Invalidate和postInvalidate

為什么80%的碼農都做不了架構師&#xff1f;>>> Android提供了Invalidate方法實現界面刷新&#xff0c;但是Invalidate不能直接在線程中調用&#xff0c;因為他是違背了單線程模型&#xff1a;android UI操作并不是線程安全的&#xff0c;并且這些操作必須在UI線程…

java比c好逆向,吐槽一下java的效率。。。比起C差的真的好遠。。。

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓刷計算機編程題目&#xff0c;USACO某道題&#xff0c;因為最近想用java&#xff0c;就寫了一個&#xff0c;各種查錯優化之后總算通過了&#xff1a;TASK: camelotLANG: JAVACompiling...Compile: OKExecuting...Test 1: TEST OK …

.Net輕松處理億級數據--clickhouse及可視化界面安裝介紹

前言我是在17年就聽說過Clickhouse,那時還未接觸過億數據的運算&#xff0c;那時我在的小公司對于千萬數據的解決方案還停留在分庫分表&#xff0c;最好的也是使用mycat做的集群。這些解決方案都比較復雜&#xff0c;畢竟通常來說那些需要大量存儲的數據基本都是像日志&#xf…

[USACO 4.2] 完美的牛欄

★★☆ 輸入文件&#xff1a;stall4.in 輸出文件&#xff1a;stall4.out 簡單對比 時間限制&#xff1a;1 s 內存限制&#xff1a;128 MB USACO/stall4(譯by Felicia Crazy)描述 農夫約翰上個星期剛剛建好了他的新牛棚&#xff0c;他使用了最新的擠奶技術。不幸的是&am…

003Java語言環境搭建

JRE,JDK JRE(Java Runtime Environment java運行環境)&#xff1a;包括java虛擬機和java程序所需要的核心類庫&#xff0c; 如果要運行一個開發好的java程序&#xff0c;計算機中只需要安裝一個JRE JDK&#xff08;Java Development Kit Java開發工具包&#xff09; JDK是提供給…

php 編寫mysql,自己寫的MySQL類

自己寫的MySQL類---------- php debug ----------Serverlocalhost;DataBasemysql;UserIDroot;PassWord123456resource(5) of type (mysql result)Output completed (1 sec consumed) - Normal Terminationclass DBCLS{//debug 調試開關var $debug true;//debuginfo 錯誤信息&a…

NET CORE讀取Excel.xlsx單元格內的圖片,并關聯當前業務ID推送圖片到指定服務器...

NET CORE讀取Excel.xlsx單元格圖片的場景&#xff0c;一般是批量導入業務數據&#xff0c;例如&#xff1a;藥品的圖片&#xff0c;醫師資格證&#xff0c;商品上架、商家營業資質、水果信息、用戶頭像等等這里我截個圖&#xff0c;圖文并茂更好理解特別聲明&#xff1a;粘貼圖…

CSS或HTML如何實現文字下面加點?

就像word里文字加著重號一樣&#xff0c;在字的下面加一個點&#xff0c;用CSS怎么做&#xff1f;注意&#xff0c;我說的是下面加點&#xff0c;不是文字加粗或傾斜&#xff0c;請不要回答<strong>或<em>之類的。 把要著重加點的文字用<span></span>…

數據庫常見錯誤

錯誤&#xff1a; You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 12123123123.0123.0) at line 1 解決辦法&#xff1a; 檢查對應到您的MySQL服務器版本附近使用正確的語法手冊 數…

RocketMQ 5.0 大手筆,擁抱云原生,支持流處理,高可用架構升級!

大家好&#xff0c;我是君哥。RocketMQ 5.0 已經發布一段時間了&#xff0c;今天來分享一下 RocketMQ 5.0 有哪些新特性。1 架構變化RocketMQ 5.0 架構上的變化主要是為了更好的走向云原生。RocketMQ 4.x 架構如下&#xff1a;Broker 向 Name Server 注冊 Topic 路由信息&#…

php驗證碼顯示亂碼,如何解決php驗證碼亂碼問題

php驗證碼亂碼的解決辦法&#xff1a;1、修改訪問驗證碼生成方法函數的路徑&#xff1b;2、修改文件編碼&#xff0c;并去掉BOM頭&#xff1b;3、檢查驗證碼生成方法&#xff1b;4、修改服務環境。具體問題&#xff1a;php驗證碼輸出全是亂碼...<?php session_start();head…

中國HBase技術社區第五屆MeetUp ——HBase技術解析及應用實踐(深圳站)

HBase—Hadoop Database是一個分布式的、面向列的開源數據庫&#xff0c;該技術來源于 Fay Chang 所撰寫的Google論文“Bigtable&#xff1a;一個結構化數據的分布式存儲系統”。HBase的特點是高可靠性、高性能、面向列、可伸縮的分布式存儲系統&#xff0c;如今HBase已經廣泛應…