手把手|支付寶非同步通知如何使用

来源:https://www.cnblogs.com/yjdmx/archive/2023/10/23/17774839.html
-Advertisement-
Play Games

最近在接支付寶的支付相關功能,用到非同步通知比較多,也比較容易出現問題。 這裡總結了一下支付寶非同步通知的相關內容,希望能對大家有所幫助。 一、什麼是非同步通知 非同步通知是指支付寶通過主動向開發者發送消息通知的方式來告知商家目前交易變更的情況。 支付寶建議主要通過這種方式來確定實際的交易狀態,實際是通過 ...


最近在接支付寶的支付相關功能,用到非同步通知比較多,也比較容易出現問題。

這裡總結了一下支付寶非同步通知的相關內容,希望能對大家有所幫助。

一、什麼是非同步通知

非同步通知是指支付寶通過主動向開發者發送消息通知的方式來告知商家目前交易變更的情況。

支付寶建議主要通過這種方式來確定實際的交易狀態,實際是通過 POST 的方式去發送通知的。

 

二、如何設置非同步通知地址

既然是支付寶主動通知,需要預先給到支付寶提供一個通知的地址,而根據不同的產品,非同步通知的地址設置的也不同,主要分為以下兩個情況:

  • 通過介面參數配置的非同步通知地址
  • 通過平臺配置的非同步通知地址

 

通過介面參數配置的非同步通知地址

使用場景:交易類收單產品,例如當面付、手機網站支付等

配置方式:在介面的 notify_url 參數中設置接收的地址 [如何設置notify_url]

地址要求:能正常訪問(http 狀態為 200)

介面是否支持非同步通知就看對應的介面文檔參數裡面是否有 notify_url 參數。

 

通過平臺配置的非同步通知地址

使用場景:資金營銷類產品例如轉賬到支付寶賬號、商家券、螞蟻門店等

配置方式:在開發應用下的應用網關里進行地址配置 [如何設置應用網關]

地址要求:能正常訪問(http 狀態為 200)

⚠️ 特別說明:需要先對消息通知進行訂閱操作,不訂閱不發哦 [如何訂閱螞蟻消息]

 

三、非同步通知如何觸發

支付寶的非同步通知也不是你想要就能給你發的,他發送的邏輯主要是按照該事件是否達到了某個【狀態】

對於交易類的產品,支付寶統一設定了交易狀態,針對不同產品的狀態有基本是否發送配置,下麵將對各類交易狀態進行逐一介紹。

支付寶交易狀態說明

支付寶給訂單設置了四個交易狀態,分別為:

  • WAIT_BUYER_PAY(交易創建,等待買家付款)
  • TRADE_SUCCESS(交易支付成功,可退款)
  • TRADE_FINISHED(交易結束,不可退款)
  • TRADE_CLOSED(未付款交易超時關閉,或支付完成後全額退款)

 

經驗分享:交易成功(TRADE_SUCCESS)和交易結束(TRADE_FINISHED)的區別在於是否可以退款,這個怎麼理解呢?

關鍵點在於這筆交易 是否允許退款 或者是 允許多久時間內可以退款

如果交易是不允許退款的交易,訂單的交易狀態會直接變為交易結束(TRADE_FINISHED),並不會經過交易成功(TRADE_SUCCESS);

如果是允許6個月內退款的,在交易成功之後的6個月後才會由交易成功(TRADE_SUCCESS)變為交易結束(TRADE_FINISHED)。

因為這個邏輯,就會出現一些奇奇怪怪的問題 (。_ 。) 例如:

 

支付寶交易狀態觸發條件

那麼,是所有的狀態都會發送嗎?可不可以不發送?

當然不是所有狀態都發送的,比如交易創建,等待買家付款(WAIT_BUYER_PAY)這個狀態對於我們來說就沒什麼用。

對於不同的產品,交易狀態是否觸發都不一樣,例如手機網站支付:

除了交易創建之外,其他都是預設會發送的。參考:[各支付產品非同步通知觸發說明]

 

訂閱消息的觸發條件

上面介紹支付寶交易的觸發條件,下麵來簡單說明下訂閱消息是如何觸髮狀態的。

訂閱消息的觸髮狀態就有很多了,不同的產品有不同的觸髮狀態。下麵以商家券產品為例:

 

 

目前有創建、修改、停止、追加四種通知,需要哪個狀態觸發通知,就訂閱哪個通知。

目前的訂閱方式有兩種:WebSocket 和 HTTP。

 

 

  • 如果是 HTTP 的方式,接收的地址直接配置在應用網關上;
  • WebSocket 的方式無需配置應用網關,按照文檔進行接入即可。

 

四、獲取到非同步通知之後要做什麼

上面說過,支付寶的非同步通知是以 post 方式獲取的,用來判斷交易的狀態,那麼接收到非同步通知之後除了進行交易狀態的判斷之外我們還需要做什麼呢?直接進行邏輯處理?數據落庫?

 

都不是,重要的是 安全! 安全! 安全!(▼ヘ▼#) 嚴肅強調

 

收到非同步通知消息之後一定要判斷清楚這條消息是不是真的是支付寶發出的,現在外面不法分子很多,大家要小心。

為了判斷消息的真偽,我們需要 先對接收到的數據進行驗簽。

驗簽的方式這邊就不做較多的敘述了,放在這裡大家自己看 [SDK 如何實現簽名驗簽]。

 

驗證成功之後需要直接在頁面上列印出 success 七個字元給支付寶,告訴支付寶你已經成功收到這個消息了。

 

如果你不想列印也行,只不過就是接下來的 24 個小時以內,支付寶會一直給你發這筆消息

        [重覆收到非同步通知]

 

驗簽處理完成之後,你想幹嘛就可以幹嘛啦~

 

以上就是關於支付寶非同步通知基本邏輯啦,歡迎大家一起補充訂正,✿✿ヽ(°▽°)ノ✿ 一起交流進步~


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • List 是 Python 中常用的數據類型,它一個有序集合,即其中的元素始終保持著初始時的定義的順序(除非你對它們進行排序或其他修改操作)。 在Python中,向List添加元素,方法有如下4種方法(append(),extend(),insert(), +加號) 1. append() 追加單個 ...
  • 方式一:使用切片 [:] 列表 # 淺拷貝 [:] old_list = [1, 2, [3, 4]] new_list = old_list[:] old_list.append(5) old_list[2][0] += 97 print("Old list:", old_list, "old l ...
  • 在Word文檔中,可以添加半透明的圖形或文字作為水印,以保護文檔的原創性,防止未經授權的複製或使用。除了提供安全功能外,水印還可以展示文檔創作者的信息、附加的文檔信息,或者僅用於文檔的裝飾。本文將介紹如何使用Spire.Doc for Python在程式中的輕鬆添加文字和圖像水印到Word文檔。 引 ...
  • 本文深入探討了Go語言中代碼斷行的各個方面,從基礎概念到實際應用實踐。 關註【TechLeadCloud】,分享互聯網架構、雲服務技術的全維度知識。作者擁有10+年互聯網服務架構、AI產品研發經驗、團隊管理經驗,同濟本復旦碩,復旦機器人智能實驗室成員,阿裡雲認證的資深架構師,項目管理專業人士,上億營 ...
  • 自定義MyBatis攔截器可以在方法執行前後插入自己的邏輯,這非常有利於擴展和定製 MyBatis 的功能。本篇文章實現自定義一個攔截器去改變要插入或者查詢的數據源。 ...
  • 日常開發中接到這樣的需求,上游系統請求獲取一張A4單據用於倉庫列印及展示,要求PNG圖片格式,但是我們內部得到的單據格式為PDF,需要提取PDF文檔的元素並生成一張PNG圖片。目前已經有不少開源工具實現了這一功能,我們找了網上使用比較多的Apache PDFBox庫來實現功能 ...
  • 小景最近在做程式和資料庫的壓測工作,期間監控壓測數據,分析程式原因變成了一個待解決的問題,根據公司小伙伴的建議,接觸了阿爾薩斯這個診斷工具,下麵小景分別基於Linux操作系統和Windows操作系統,來詳細的說下使用說明和使用心得。 Arthas(阿爾薩斯)是一個用於診斷Java應用程式的開源工具, ...
  • 本文介紹一下zookeeper-3.9.0源碼下載、編譯及本地啟動。 下載源碼 git clone https://gitee.com/apache/zookeeper.git cd zookeeper git checkout release-3.9.0 git checkout -b relea ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...