iT邦幫忙

2023 iThome 鐵人賽

DAY 5
0

寫完一陣子發票查詢 API,突然某天在網路上搜尋到 tw_invoice,真是相見恨晚

(不過也不算太晚XD) 雖然作者沒有提供如何使用的說明,但只要理解 class 怎麼寫其實很好上手。

https://github.com/tomy0000000/tw-invoice

最重要的可以查看 tw_invoice/app_client.py

起手式如下,將財政部申請的 ID 和 KEY 提供 AppAPIClient 做初始化,我們就可以開始用他的方法

import tw_invoice
from datetime import date
twi = tw_invoice.AppAPIClient(app_id="YOUR_APP_ID",
                              api_key="YOUR_APP_KEY")

接著我們要看有哪些方法的話可以查看 get 開頭的方法

如下,我們僅需要輸入 function 的參數 invoice_term 就可以呼叫該方法

def get_lottery_numbers(
        self, invoice_term: str
    ) -> Union[LotteryNumberResponse, dict]:
        """查詢中獎發票號碼清單 v0.2"""
        URL = build_api_url("invapp")
        VERSION = 0.2
        if not validate_invoice_term(invoice_term):
            raise ValueError(f"Invalid invoice_term: {invoice_term}")
        data = {
            "version": VERSION,
            "action": "QryWinningList",
            "invTerm": invoice_term,
            "UUID": self.uuid,
            "appID": self.app_id,
        }
        results = check_api_error(
            self.session.post(URL, data=data, timeout=self.timeout)
        )
        if not self.skip_validation:
            results = LotteryNumberResponse.parse_obj(results)
        return results

還記得昨天查紙本電子發票嗎?我們要輸入一大堆參數,包含 version、generation、uuid 等等,這些參數你通通不用管,套件已經包你準備好啦!

此外,這個套件支援重複嘗試(而這個嘗試機制是用 HTTPAdapter),不用像昨天自己額外寫一個裝飾器。僅需要在初始化的時候提供 max_retries 的參數,如果沒有提供也沒關係,default 是 20 也是一個不小的數字。

接著明天我會介紹怎麼使用查詢紙本電子發票,敬請期待!


上一篇
Day 4:寫第一個查詢的紙本電子發票
下一篇
Day 6:如何查詢紙本電子發票(手動篇)
系列文
透過 python 建立發票系統 - 自己的發票自己查30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言