iT邦幫忙

2021 iThome 鐵人賽

DAY 21
0
永豐金融APIs

試著讀懂與串接永豐金融APIs系列 第 21

Day 0x15 - 代碼建立 (Part 1: 回覆訊息代碼)

0x1 前言

錯誤碼不管是在開發或是正式環境中不可或缺的一環,能為開發或維護帶來不少的方便性,有個方向來協助處理遇到的問題,所以今天就是來搬訊息代碼到程式裡,有時間再看有哪邊需要再修正的。

0x2 回覆訊息代碼

建立回覆訊息代碼

// app/Http/Controllers/Sinopac.php
static function code_message($code): string
{
    $code_map = [
        'E0000' => "E0000 – 安全簽章錯誤",
        'E0001' => "E0001 – 請求格式錯誤",
        'E0100' => "E0100 – 商店編號錯誤",
        'E0101' => "E0101 – 商店編號不存在",
        'E0102' => "E0102 – 商店狀態錯誤",
        'E0300' => "E0300 – 訂單編號錯誤",
        'E0301' => "E0301 – 訂單編號長度錯誤",
        'E0302' => "E0302 – 訂單編號重覆",
        'E0303' => "E0303 – 訂單編號不可包含特殊字元",
        'E0400' => "E0400 – 訂單金額格式錯誤",
        'E0401' => "E0401 – 訂單金額後 2 位數必須為 00",
        'E0402' => "E0402 – 訂單金額低於手續費金額",
        'E0403' => "E0403 – ATM 轉帳最高金額:30,000 元",
        'E0404' => "E0404 – 金額不一致",
        'E0405' => "E0405 – 訂單金額錯誤",
        'E0406' => "E0406 – 訂單日期錯誤",
        'E0407' => "E0407 – 訂單金額不得超過代收金額上限",
        'E0500' => "E0500 – 幣別錯誤",
        'E0600' => "E0600 – 收款方式錯誤",
        'E0601' => "E0601 – 收款方式格式錯誤",
        'E0602' => "E0602 – 收款方式未啟用",
        'E0700' => "E0700 – 收款名稱錯誤",
        'E0701' => "E0701 – 收款名稱長度錯誤",
        'E0702' => "E0702 – 收款名稱不可包含特殊字元",
        'E0800' => "E0800 – 付款截止日期錯誤",
        'E0801' => "E0801 – 付款截止日期格式錯誤",
        'E0802' => "E0802 – 付款截止日期設定範圍錯誤",
        'E0900' => "E0900 – 自動請款錯誤",
        'E0901' => "E0901 – 自動請款格式錯誤",
        'E1000' => "E1000 – 自動請款天數格式錯誤",
        'E1001' => "E1001 – 自動請款天數設定範圍錯誤",
        'E1100' => "E1100 – 訂單有效時間格式錯誤",
        'E1101' => "E1101 – 訂單有效時間設定範圍錯誤",
        'E1200' => "E1200 – 付款完成轉入 URL 錯誤",
        'E1201' => "E1201 – 付款完成轉入 URL 長度錯誤",
        'E1202' => "E1202 – 付款完成轉入 URL 不可包含特殊字元",
        'E1301' => "E1301 – 付款完成背端通知 URL 長度錯誤",
        'E1302' => "E1302 – 付款完成背端通知 URL 不可包含特殊字元",
        'E1400' => "E1400 – 備註錯誤",
        'E1401' => "E1401 – 備註長度錯誤",
        'E1402' => "E1402 – 備註不可包含特殊字元",
        'E1501' => "E1501 – 自訂參數一長度錯誤",
        'E1502' => "E1502 – 自訂參數一不可包含特殊字元",
        'E1601' => "E1601 – 自訂參數二長度錯誤",
        'E1602' => "E1602 – 自訂參數二不可包含特殊字元",
        'E1701' => "E1701 – 自訂參數三長度錯誤",
        'E1702' => "E1702 – 自訂參數三不可包含特殊字元",
        'E1800' => "E1800 – 發送要求錯誤",
        'E1801' => "E1801 – 發送要求格式錯誤",
        'E1802' => "E1802 – 發送要求訂單不可執行",
        'E1803' => "E1803 – 發送要求執行失敗",
        'E1901' => "E1901 – 交易開始日期格式錯誤",
        'E1902' => "E1902 – 交易結束日期格式錯誤",
        'E1903' => "E1903 – 交易開始日期與交易結束日期必須同時有值",
        'E1904' => "E1904 – 交易開始日期不可大於交易結束日期",
        'E2001' => "E2001 – 訂單狀態格式錯誤",
        'E2002' => "E2002 – 訂單狀態不為待付款",
        'E2003' => "E2003 – 訂單狀態不正確",
        'E2004' => "E2004 – 訂單狀態已逾期",
        'E2005' => "E2005 – 訂單付款時間已被更新",
        'E2006' => "E2006 – 訂單重複入帳",
        'E2007' => "E2007 – 訂單是否重複入帳檢查失敗",
        'E2101' => "E2101 – 訂單查詢條件不足",
        'E2199' => "E2199 – 訂單查詢失敗",
        'E2200' => "E2200 – 使用者 IP 錯誤",
        'E2201' => "E2201 – 使用者 IP 格式錯誤",
        'E2301' => "E2301 – 使用者 UserAgent 錯誤",
        'E2401' => "E2401 – Token 不正確",
        'E2501' => "E2501 – 付款查詢 Token 錯誤",
        'E2601' => "E2601 – 資料不存在",
        'E2700' => "E2700 – 交易失敗",
        'E2709' => "E2709 – 取得銀聯卡付款連結失敗",
        'E2710' => "E2710 – 訂單驗證失敗",
        'E2711' => "E2711 – 訂單驗證失敗",
        'E2712' => "E2712 – 訂單驗證失敗",
        'E2713' => "E2713 – 訂單驗證失敗",
        'E2730' => "E2730 – 銀聯卡請款失敗",
        'E2740' => "E2740 – 銀聯卡交易處理中",
        'E2801' => "E2801 – 信用卡卡號非本行卡",
        'E2802' => "E2802 – 信用卡卡號非台灣卡",
        'E2901' => "E2901 – 交易對帳日期錯誤",
        'E2902' => "E2902 – 交易對帳日期格式錯誤",
        'E2903' => "E2903 – 交易對帳日期設定範圍錯誤",
        'E3001' => "E3001 – 一次性數值錯誤",
        'E3002' => "E3002 – 一次性數值合法性錯誤",
        'E3003' => "E3003 – 一次性數值已超過有效時限",
        'E3100' => "E3100 – 撥款日期(起/迄)錯誤",
        'E3101' => "E3101 – 撥款日期(起)格式錯誤",
        'E3102' => "E3102 – 撥款日期(迄)格式錯誤",
        'E3103' => "E3103 – 撥款日期區間超過予許查詢範圍",
        'E3201' => "E3201 – 付款日期(起)格式錯誤",
        'E3202' => "E3202 – 付款日期(迄)格式錯誤",
        'E3203' => "E3203 – 付款日期(起)不可大於付款日期(迄)",
        'E3204' => "E3204 – 付款開始日期與付款結束日期必須同時有值",
        'E3301' => "E3301 – 要求版本不符",
        'E3401' => "E3401 – 指定服務不存在",
        'E3501' => "E3501 – 訊息內容錯誤",
        'E3600' => "E3600 – 分期付款/紅利折抵/銀聯卡訂單不接受部分退款",
        'E3601' => "E3601 – 退款金額錯誤",
        'E3602' => "E3602 – 退款金額大於代收金額",
        'E3700' => "E3700 – 快速付款 Token 格式錯誤",
        'E3701' => "E3701 – 快速付款 Token 不存在",
        'E3702' => "E3702 – 快速付款未啟用",
        'E3801' => "E3801 – 統一編號錯誤",
        'E4001' => "E4001 – 寄件人手機號碼格式錯誤",
        'E4002' => "E4002 – 取件人手機號碼格式錯誤",
        'E4004' => "E4004 – 廠商訂單編號錯誤",
        'E4005' => "E4005 – 未輸入寄件人姓名",
        'E4006' => "E4006 – 未輸入收件人姓名",
        'E4007' => "E4007 – 姓名長度不得超過 10 碼",
        'E4008' => "E4008 – 姓名格式錯誤, 不得有特殊符號字元",
        'E4009' => "E4009 – 未輸入收件人手機號碼",
        'E4101' => "E4101 – 出貨日期錯誤",
        'E4102' => "E4102 – 出貨日期必須大於今天",
        'E4103' => "E4103 – 出貨日期必須在期限內",
        'E4201' => "E4201 – 訂單金額格式錯誤",
        'E4202' => "E4202 – 訂單金額錯誤,金額應介於 1 到 20,000 之間",
        'E4301' => "E4301 – 代收金額格式錯誤",
        'E4302' => "E4302 – 代收金額錯誤,金額應介於 0 到 20,000 之間",
        'E4400' => "E4400 – 商品價值格式錯誤",
        'E4401' => "E4401 – 商品價值不得為 0 或空值",
        'E4402' => "E4402 – 商品價值不得超過代收金額上限",
        'E4403' => "E4403 – 商品價值後 2 位數必須為 00",
        'E4404' => "E4404 – 商品價值不得超過代收金額",
        'E4405' => "E4405 – 商品價值錯誤",
        'E4501' => "E4501 – 取件店代碼長度必須為 6 碼",
        'E4502' => "E4502 – 取件店不存在或無法使用",
        'E4601' => "E4601 – 建立超商取貨付款訂單失敗",
        'E4602' => "E4602 – 取件店及送貨日期只可擇一修改",
        'E4603' => "E4603 – 送貨日期無效",
        'E4604' => "E4604 – 物流狀態錯誤",
        'E4605' => "E4605 – 修改超商取貨付款訂單失敗",
        'E4606' => "E4606 – 修改超商付款退貨訂單失敗",
        'E4701' => "E4701 – 超商付款訂單編號不存在",
        'E4702' => "E4702 – 退貨金額不得小於退貨物流費",
        'E4801' => "E4801 – 退貨申請起始日期格式錯誤",
        'E4802' => "E4802 – 退貨申請結束日期格式錯誤",
        'E4901' => "E4901 – 退貨狀態格式錯誤",
        'E5001' => "E5001 – 信用卡定期定額期數無效",
        'E5002' => "E5002 – 信用卡定期定額扣款週期錯誤",
        'E5003' => "E5003 – 信用卡定期定額扣款頻率錯誤",
        'E5101' => "E5101 – 信用卡定期扣款失敗",
        'E5201' => "E5201 – 取得行動支付付款連結失敗",
        'E5301' => "E5301 – 建立 LINE Pay 訂單失敗",
        'E5401' => "E5401 – 查詢 LINE Pay 訂單失敗",
        'E6000' => "E6000 – 信用卡卡號、效期、CVV2 解密錯誤",
        'E6001' => "E6001 – 信用卡卡號加密文字超過 255 字元",
        'E6002' => "E6002 – 信用卡效期加密文字超過 255 字元",
        'E6003' => "E6003 – 信用卡 CVV2 加密文字超過 255 字元",
        'E6010' => "E6010 – 信用卡卡號錯誤(非 VISA、MASTER、JVC)",
        'E6011' => "E6011 – 信用卡卡號格式錯誤",
        'E6012' => "E6012 – 信用卡效期格式錯誤",
        'E6013' => "E6013 – 信用卡 CVV2 格式錯誤",
        'E9900' => "E9900 – 系統忙碌中",
        'E9901' => "E9901 – 取得系統參數「設定有效分鐘區間 - 信用卡」錯誤",
        'E9902' => "E9902 – 取得系統參數「設定可自動請款天數上限」錯誤",
        'E9903' => "E9903 – 取得系統參數「核銷天數」錯誤",
        'E9904' => "E9904 – 取得「交易編號(TSID)」失敗",
        'E9905' => "E9905 – 取得「專案代號」失敗",
        'E9906' => "E9906 – 取得「虛擬帳號」失敗",
        'E9907' => "E9907 – 取得「對 PaymentGetway 應用的 Key(PGOrderNo)」失敗",
        'E9908' => "E9908 – 取得系統參數「對帳天數」錯誤",
        'E9909' => "E9909 – 取得「商店轉撥款天數」錯誤",
        'E9910' => "E9910 – 計算手續費失敗",
        'E9911' => "E9911 – 取得系統參數「設定有效天數區間 - 虛擬帳號」錯誤",
        'E9912' => "E9912 – 取得系統參數「刷卡頁 URL」失敗",
        'E9913' => "E9913 – 取得系統參數「OTP URL」失敗",
        'E9914' => "E9914 – 取得系統參數「WebAtm URL」失敗",
        'E9915' => "E9915 – 取得系統參數「查詢資料筆數上限」失敗",
        'E9916' => "E9916 – 取得系統參數「查詢資料有效月份」失敗",
        'E9917' => "E9917 – 取得系統參數「訂單可退款次數」失敗",
        'E9918' => "E9918 – 訂單已申請退款",
        'E9919' => "E9919 – 訂單剩餘退款金額不足",
        'E9920' => "E9920 – 取得「可退款天數」失敗",
        'E9921' => "E9921 – 取得系統參數「對帳檔-每日收退款查詢區間」失敗",
        'E9922' => "E9922 – 超過商店可退款天數",
        'E9923' => "E9923 – 驗證碼錯誤",
        'E9924' => "E9924 – 無驗證碼資料",
        'E9925' => "E9925 – 查詢主機已繳款資料失敗",
        'E9926' => "E9926 – 査無主機已繳款資料",
        'E9927' => "E9927 – 取得定期定額期數範圍失敗",
        'E9928' => "E9928 – 取得定期定額扣款頻率範圍失敗",
        'E9999' => "E9999 – 發生未知系統錯誤",
        'S0000' => "S0000 – 處理成功",
        'S0001' => "S0001 – 處理成功,查無資料或是查詢條件組合不相符",
        'M0001' => "M0001 – 系統維護中",
    ];

    return $code === 'S0000' ? '' : $code_map[$code];
}

0x3 今日結語

今天把回覆訊息碼對應的部分處理好了,時間不是很多 (混個篇幅)
明天接著把 交易狀態代碼退款狀態代碼 完成,
並且檢視訊息的更新與對應是否正確,要多花一點時間微調


上一篇
Day 0x14 - 訂單查詢 (Part2 : View)
下一篇
Day 0x16 - 代碼建立 (Part 2: 交易狀態、退款狀態)
系列文
試著讀懂與串接永豐金融APIs30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言