公部門 · 協力外包牛寶 3Q電腦已上線

旅宿消費登錄抽獎平台 — 不靠財政部 API 也要驗出真發票

六百多家合作旅宿、近七百組統編,發票登錄要能擋掉造假又不能刁難民眾

官方的發票查驗 API 有資安驗證門檻、我們不具申請資格。與其卡在這裡,不如換個問法:不呼叫官方 API,還能不能判斷這張發票是真的?答案是可以 —— 用六層彼此獨立的檢核疊起來。

01

背景痛點

這類振興活動的核心矛盾很簡單:要擋得住造假,又不能讓一般民眾覺得難用。門檻太鬆,活動預算被有心人洗走;門檻太嚴,真的去消費的人登錄失敗就客訴。

最直覺的做法是串接官方的電子發票查驗 API,一翻兩瞪眼。但實際評估後發現,該 API 的使用規範訂有資安驗證門檻,我們與主辦端都不具申請資格

另一個現實是資料結構比想像複雜:合作旅宿有六百多家,但同一家旅宿常常有多組統一編號(不同營業項目或分館),實際要比對的是「旅宿 × 統編」的配對關係,將近千筆。

02

我們怎麼做

不繞過問題,換一個問法。 既然拿不到官方 API,就回頭問:一張真發票本身帶了哪些資訊、可以自己驗證?答案比想像中多 —— 電子發票的 QR Code 裡就包含號碼格式、開立日期、金額編碼與加密驗證資訊。

第一層,條碼結構檢核。 解析 QR Code,檢查發票號碼格式、開立日期是否合理、金額編碼與加密驗證資訊是否自洽。亂編的條碼在這一層就掉了。

第二層,統一編號檢查碼。 賣方統編必須通過財政部公布的檢查碼演算法。這是數學規則,不需要連線任何系統就能驗。

第三層,合作店家名單。 賣方統編必須落在主辦提供的合作旅宿名單內。這一層同時擋掉「發票是真的,但不是在合作旅宿消費」的情況。

第四層,唯一性檢核。 同一張憑證全站只能登錄一次,杜絕同一張發票重複參加。

第五層,多重來源交叉比對。 條碼解析的結果、民眾自己填寫的內容、OCR 讀到的文字,三者互相對照。手開發票沒有 QR Code,就靠 OCR 輔助加人工確認補上。

第六層,異常行為偵測。 同一位參加者或同一來源在短時間內大量登錄會被標記。前五層驗的是「這張發票對不對」,第六層驗的是「這個人的行為正不正常」。

每一層的結果都獨立記錄,不是單純的通過或不通過。後台看得到某筆登錄是卡在哪一層、原因是什麼,人工審查時才有依據,而不是只能看到一個「失敗」。

03

成果

在不具備官方 API 申請資格的前提下,仍然建立了可運作的發票驗證機制,活動如期上線。

六層彼此獨立,任何一層被繞過,其他五層仍然有效 —— 這比單一驗證來源更耐打。

主辦後台九大類 59 項功能全數完成,資料型頁面一律具備新增、編輯、刪除、排序、篩選、搜尋、分頁,不做半套。

這套驗證思路可以直接搬到其他消費登錄型活動 —— 商圈振興、觀光票券、消費抽獎,只要涉及「用發票證明消費」就適用。

想做類似的東西?

告訴我們現況。諮詢免費,依工時報價。

聯絡我們