iT邦幫忙

2024 iThome 鐵人賽

DAY 19
0
自我挑戰組

串接綠界服務的疑難雜症詳解系列 第 19

【綠界金流】重發機制

  • 分享至 

  • xImage
  •  

今天來帶大家了解綠界的「重發機制」

昨天的「模擬付款」功能文章有提到
有幾種可能導致模擬付款失敗:

  • ReturnURL使用loaclhost,沒有對外
  • 防火牆阻擋綠界連線
  • 沒有正確回傳1|OK

其實對綠界而言,會判斷失敗的主因就是
沒有收到你的ReturnURL回傳1|OK

只要綠界沒正確收到1|OK回覆
就會啟動重發機制

那甚麼是重發機制呢?

正常來說,當付款完成,綠界會回傳第一次的付款結果通知
若綠界沒有收到ReturnURL正確回傳1|OK訊息
就會排程每「5~15分鐘」重發一次付款結果通知
最多重發「四次
若中途有收到ReturnURL正確回傳1|OK,就會停止重發機制

也就是說,若從頭到尾都沒有正確回1|OK
那就會收到「共5次(第一次)+(4次補發)」的付款結果通知

要注意的是,如果是付款成功
那第一次的payload內的RtnMsg會是中文

RtnMsg=交易成功

第二次開始的補發,RtnMsg會是英文

RtnMsg=paid

我們來實際做看看吧

第一步: 設定ReturnURL

先寫好ReturnURL程式,並故意回傳錯誤的格式

echo 'GOOD';

完成後將ReturnURL對外:

https://75c7-211-23-76-78.ngrok-free.app/hi/ReturnURL.php

第二步: 建立訂單

帶入自己的ReturnURL

"ReturnURL" => "https://75c7-211-23-76-78.ngrok-free.app/hi/ReturnURL.php",

建立訂單並完成付款:
https://ithelp.ithome.com.tw/upload/images/20240912/20168877FEcjdHfYds.png

第三步: 確認接收

完成付款後可以看我們的ReturnURL的收發狀況
由下圖可以看到
我的ReturnURL回給綠界的是GOOD:
https://ithelp.ithome.com.tw/upload/images/20240912/2016887784runDxxjI.png

第四步: 補發機制

由於我們故意回錯誤的格式給綠界
所以就會開始收到綠界的補發機制囉

第一次接收到的payload:

+++++++++++++++++++++++++++++++++++++++ 接收回傳參數 2024-09-10 15:17:31 ++++++++++++++++++++++++++++++++++++++++++++
來源IP: 175.99.72.1
請求方法: POST
CustomField1=&CustomField2=&CustomField3=&CustomField4=&MerchantID=1099236&MerchantTradeNo=ECPaytest1725952597&PaymentDate=2024/09/10 15:17:28&PaymentType=Credit_CreditCard&PaymentTypeChargeFee=2&RtnCode=1&RtnMsg=交易成功&SimulatePaid=0&StoreID=&TradeAmt=100&TradeDate=2024/09/10 15:16:51&TradeNo=2409101516518014&CheckMacValue=BD538BDB2B2C6F21B4C7613DD91F3C364ED876117E6A0CABF604A2FAA5059DCB

第一次補發:

+++++++++++++++++++++++++++++++++++++++ 接收回傳參數 2024-09-10 15:25:46 ++++++++++++++++++++++++++++++++++++++++++++
來源IP: 175.99.72.1
請求方法: POST
CheckMacValue=91E9AD294032DE696AEA4825D43A24965968D1EDEDB64A727FFD907B7B2C5E4F&CustomField1=&CustomField2=&CustomField3=&CustomField4=&MerchantID=1099236&MerchantTradeNo=ECPaytest1725952597&PaymentDate=2024/09/10 15:17:28&PaymentType=Credit_CreditCard&PaymentTypeChargeFee=2&RtnCode=1&RtnMsg=paid&SimulatePaid=0&StoreID=&TradeAmt=100&TradeDate=2024/09/10 15:16:51&TradeNo=2409101516518014

第二次補發:

+++++++++++++++++++++++++++++++++++++++ 接收回傳參數 2024-09-10 15:30:30 ++++++++++++++++++++++++++++++++++++++++++++
來源IP: 175.99.72.1
請求方法: POST
CheckMacValue=91E9AD294032DE696AEA4825D43A24965968D1EDEDB64A727FFD907B7B2C5E4F&CustomField1=&CustomField2=&CustomField3=&CustomField4=&MerchantID=1099236&MerchantTradeNo=ECPaytest1725952597&PaymentDate=2024/09/10 15:17:28&PaymentType=Credit_CreditCard&PaymentTypeChargeFee=2&RtnCode=1&RtnMsg=paid&SimulatePaid=0&StoreID=&TradeAmt=100&TradeDate=2024/09/10 15:16:51&TradeNo=2409101516518014

第三次補發:

+++++++++++++++++++++++++++++++++++++++ 接收回傳參數 2024-09-10 15:35:30 ++++++++++++++++++++++++++++++++++++++++++++
來源IP: 175.99.72.1
請求方法: POST
CheckMacValue=91E9AD294032DE696AEA4825D43A24965968D1EDEDB64A727FFD907B7B2C5E4F&CustomField1=&CustomField2=&CustomField3=&CustomField4=&MerchantID=1099236&MerchantTradeNo=ECPaytest1725952597&PaymentDate=2024/09/10 15:17:28&PaymentType=Credit_CreditCard&PaymentTypeChargeFee=2&RtnCode=1&RtnMsg=paid&SimulatePaid=0&StoreID=&TradeAmt=100&TradeDate=2024/09/10 15:16:51&TradeNo=2409101516518014

第四次補發:

+++++++++++++++++++++++++++++++++++++++ 接收回傳參數 2024-09-10 15:40:11 ++++++++++++++++++++++++++++++++++++++++++++
來源IP: 175.99.72.1
請求方法: POST
CheckMacValue=91E9AD294032DE696AEA4825D43A24965968D1EDEDB64A727FFD907B7B2C5E4F&CustomField1=&CustomField2=&CustomField3=&CustomField4=&MerchantID=1099236&MerchantTradeNo=ECPaytest1725952597&PaymentDate=2024/09/10 15:17:28&PaymentType=Credit_CreditCard&PaymentTypeChargeFee=2&RtnCode=1&RtnMsg=paid&SimulatePaid=0&StoreID=&TradeAmt=100&TradeDate=2024/09/10 15:16:51&TradeNo=2409101516518014

你可以看到,每次補發的時間間隔都是5-15分
一共只會補發4次

以上就是整個補發機制的流程
這樣有沒有更了解了呢?


這樣你可能會想問

我其實都有收到綠界回傳的付款結果通知
那這樣是不是不用管重發機制?

這就要看各位的網站怎麼設計的
有些人不知到綠界有重發機制
也沒正確回傳1|OK

最後總共收到五筆付款成功的payload
以為消費者重複付款了五次

這裡就看各位怎麼進行邏輯處理了

這裡提供兩個比較直接的處理方式:

  • 收到第一筆交易成功後,就直接忽略後面的payload
  • 正確回傳1|OK

以上,就是今天說明綠界「重發機制」的文章
希望對你有幫助

我們明天見


上一篇
【綠界金流】模擬付款
下一篇
【綠界金流】重新付款
系列文
串接綠界服務的疑難雜症詳解30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言