在 APP 商店有很多發票的 APP,但大部分的都會儲存你資料進行分析,從發票資料中,甚至可以知道你平常在哪消費等資訊,可以參考這篇文章:從 API 串接角度評估電子發票存摺 APP 可以怎樣出賣使用者個資

我真的沒有想繼續把資料賣給這些廠商,所以開發了一個發票儲存服務,我已經包成 Docker 格式,只要你有相關的經驗,應該能夠在十分鐘內架設好這個服務。

修改密碼

為了避免原本的發票 APP 繼續取得你的發票資訊,建議你可以把密碼改掉後再進行下面的步驟,你可以到 財政部電子發票整合服務平台 做這件事

架設 NocoDB

NocoDB 是一款資料庫的介面軟體,可以透過他查看資料庫內的資料,可以連接現有的資料庫,或是使用內建的 SQLite 來作為資料庫,可以參考 官方的部署指南 來了解如何部署。

在 NocoDB 建立 API Key 和取得 Base ID

這是等一下會用到的妙妙工具

架設 nocodb-einvoice

NocoDB einvoice 是由我開發的發票匯入工具,可以設定成每天自動執行把發票資料匯入到 NocoDB,你可以參考 README 文件 來了解如何架設

環境變數

必填

  • NOCODB_URL: NocoDB 的 URL
  • NOCODB_API_KEY: NocoDB 的 API Key
  • NOCODB_BASE_ID: NocoDB 的 Base ID (可以在瀏覽器的網址列中找到)
  • EINVOICE_USERNAME: 電子發票的帳號(電話號碼)
  • EINVOICE_PASSWORD: 電子發票的密碼(又稱驗證碼)

選填

  • CRON_SCHEDULE
    • 預設值:0 3 * * *,每天凌晨 3 點執行
    • 可參考 crontab.guru 了解如何設定
  • MAX_SYNC_MONTHS
    • 預設值:無限制
    • 同步的最大月份,預設同步可查詢到的全部發票,建議在首次同步後設定此值為 3,以避免同步過多資料造成電子發票系統的負擔
  • REQUEST_DELAY
    • 預設值:1000 毫秒,即 1 秒
    • 每個請求之間的延遲(毫秒),避免造成電子發票系統的負擔

在 Docker 上部署

docker run -d --name nocodb-einvoice \
  -e NOCODB_URL=https://<HOST>:<PORT> \
  -e NOCODB_API_KEY=your-api-key \
  -e NOCODB_BASE_ID=your-base-id \
  -e EINVOICE_USERNAME=your-username \
  -e EINVOICE_PASSWORD=your-password \
  -e CRON_SCHEDULE="0 3 * * *" \
  ghcr.io/gnehs/nocodb-einvoice:latest

完成

如果設定沒錯的話,你應該會在 nocodb-einvoice 的 log 看到同步的相關日誌,另外程式將自動建立相關資料表,請不要修改資料表與欄位名稱

3:00:10 AM [發票] 測試驗證碼:84585
3:00:15 AM [發票] 登入成功
3:00:15 AM [發票] 正在同步 20252 月發票
3:00:17 AM [發票] - 正在取得第 1/1 頁發票
3:00:19 AM [發票] - 發票 KJXXXXXXXX 新增成功
3:00:21 AM [發票] - 發票 KGXXXXXXXX 新增成功
3:00:22 AM [發票] 正在同步 20251 月發票
3:00:24 AM [發票] - 正在取得第 1/1 頁發票
3:00:24 AM [發票] 正在同步 202412 月發票
3:00:26 AM [發票] - 正在取得第 1/1 頁發票
3:00:27 AM [發票] 同步完成

接下來發票工具就會根據你設定的排程自動進行匯入了

載具小工具

iOS 的朋友可以透過 斯揪發票 小工具來產生載具圖片,並搭配 Widgetsmith 放置圖片小工具在桌面喔