紙本電子發票有兩種查詢方式,一個是輸入發票號碼、驗證碼和發票日期,而另一種則是用掃描紙本發票上面的 QRcode。這一篇會先介紹手動輸入的方式。
財政部電子發票應用規格書有提到, 一維條碼是 BarCode
、二維條碼是 QRcode
對照 source code 發現大小寫有一點點不一樣,不過不影響使用體驗。
依照下面 function 我們可以得知查詢紙本電子發票要輸入三個參數
(我這邊有個想法,其實發票期別應該可以透過發票日期去產生,應該就不用再輸入一次。但現在還是要輸入)
def get_invoice_detail(
self,
barcode_type: Literal["QRCode", "Barcode"],
invoice_number: str,
invoice_date: date,
invoice_random: str,
invoice_term: Union[str, None] = None,
invoice_encrypt: Union[str, None] = None,
seller_id: Union[str, None] = None,
):
"""
查詢發票明細 v0.6
`invoice_random`: 錯誤將僅回傳發票表頭,正確將回傳完整明細
`barcode_type`: "Barcode"
`invoice_number`: 發票號碼
`invoice_date`: 發票日期
`invoice_random`: 發票隨機碼 (4位)
`invoice_term`: 發票期別, 3 位民國年+ 2 位雙數月份,如:11006
or
`barcode_type`: "QRCode"
`invoice_number`: 發票號碼
`invoice_date`: 發票日期
`invoice_random`: 發票隨機碼 (4位)
`invoice_encrypt`: 發票檢驗碼 (左側QRCode中,24位)
`seller_id`: 商家統編
"""
這邊做了個小實驗
該筆發票並無開立
」該筆發票並無開立
」該筆發票並無開立
」基本上可以得知,如果發票號碼、發票日期、發票期別打錯的話,會得到「該筆發票並無開立
」(發票),只有隨機碼打錯回傳不一樣。在後續設計上,可以通知使用者發票的隨機碼是否有輸入錯誤。
以上完整程式碼可參考連結