iT邦幫忙

1

API 行為有辦法攔截嗎?

  • 分享至 

  • xImage

情境如下:
如果是支付的行為,使用者在任何可能的外在因素下(例如一直Loading,或是網頁直接掛掉),有辦法取消API執行嗎(不扣款)?

DennisLu iT邦研究生 1 級 ‧ 2024-03-22 15:13:41 檢舉
送出去到API之後已經開始跑工作了,
軟體/網頁介面上只是等待回應完成而已並不是畫面上的程式本身在做,無法中斷。
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
3

大多數來說是不可能的。
如果已經進入運行的話,是無法強制中斷的。

0
harutsuki
iT邦新手 5 級 ‧ 2024-03-23 15:00:43

https://stackoverflow.com/questions/31061838/how-do-i-cancel-an-http-fetch-request

TL/DR:
送出的請求雖然有fetch有支援,但並沒有全部的瀏覽器都支持control abort
如果是送出需要對方執行的,則沒有任何方法可以中斷

0
h3786010
iT邦新手 5 級 ‧ 2024-03-28 15:03:10

因為經過任一處都有可能發生異常(客戶端、伺服端、金流商...網路)
比較好的作法是建立控卡點和檢查機制
重點要確保交易資料的一致性(我方與金流端)

例如:
為避免訂單重複付款:未付款訂單重新付款前,先去金流API確認先前交易結果。
為避免沒收到API交易結果:未付款訂單,定時去金流API確認先前交易結果。

補充:
如使用AJAX可以設定Timeout等JS支援功能中斷它,但強制中斷有資料不同步風險
如透過URL轉址方式則無法中斷,只能由用戶端中斷,因為頁面已經跳轉出去了

我要發表回答

立即登入回答