iT邦幫忙

2021 iThome 鐵人賽

DAY 2
1
永豐金融APIs

永豐Vue一下-從生活尋找靈感系列 第 12

[day12]串接API實測-永豐訂單查詢API(日期查詢)

訂單單筆查詢API設定

系統需要留存所有訂單資訊,配合繳款截止日,設定每天抓取兩日前資料進行資料留存,以供未來網頁呈現歷史交易。

  • 訂單建置API
    • 程式
    @app.post("/sinopacApi_OrderQuery_date", summary="永豐訂單查詢API(批次日期)" )# , response_model=ApiResultGet
    async def sinopacApi_Order(dateparams:OrderQueryDate):
        start = time.time()
        # ShopNo 由主辦單位提供,此處示例以 xxx 取代
        Shop_No = {'ShopNo':"NAxxx_001"}
        NonceValue=getNonce(Shop_No)
        SHAValue ,IVValue= getSHAValue(NonceValue)
    
        hashID = getAESKey()
    
        send_message_ori = {
        "ShopNo": Shop_No["ShopNo"],
        "PayDateTimeS": DateTimeS.DateTimeS,
        "PayDateTimeE": DateTimeS.DateTimeE,
        "PayFlag": ""
        }
    
        print('send_message_ori => ',send_message_ori)
    
        send_message_TextHash=getMessageTextHash(send_message_ori,NonceValue,hashID)
        print('send_message_TextHash => ',send_message_TextHash)
    
        SignValue = getSignValue(send_message_TextHash)
    
        jsonText=json.dumps(send_message_ori, ensure_ascii=False).replace(' ', "")
    
        aes_encrypt_str = AES_CBC_Encrpt(hashID, IVValue, jsonText)
        print(f'加密結果為: {aes_encrypt_str}')
    
        send_POST_message={
        "Version": "1.0.0",
        "ShopNo": Shop_No["ShopNo"],
        "APIService": "OrderQuery",
        "Sign": SignValue,
        "Nonce": NonceValue,
        "Message": aes_encrypt_str
        }
        requests_link = 'https://apisbx.sinopac.com/funBIZ/QPay.WebAPI/api/Order'    
        r = requests.post(url = requests_link, json = send_POST_message )
        print('status_code => ',r.status_code)
        # print('status_json => ',r.json())
        print('status_Nonce => ',r.json()["Nonce"])
    
        NonceValue=r.json()["Nonce"]
        SHAValue ,IVValue= getSHAValue(NonceValue)
        hashID = getAESKey()
        aes_decrypt_str = AES_CBC_Decrypt(hashID, iv=IVValue, data=r.json()["Message"])
    
        print(f'解密結果為: {aes_decrypt_str}')
        decrypt_dist=json.loads(aes_decrypt_str)
        r.close()
    
        return {"message": "success", 'time': time.time() - start ,"decrypt_dist" : decrypt_dist}
    
    
    • 執行
    uvicorn app.main:app --host 0.0.0.0 --port 80
    
    • 測試
      直接使用fastapi自建的swagger測試。
      • 設定
        以20210924為例,參數為20210922及20210923,設定如下
        https://ithelp.ithome.com.tw/upload/images/20210925/20140924BWy3P19ms9.png

      • 執行結果
        以下為執行結果,主要得到的資訊為建立訂單程序為處理成功,訂單清單為OrderList,以list留存,未來再將資料寫入歷史資料庫。
        https://ithelp.ithome.com.tw/upload/images/20210925/20140924dOwgIeWByg.png

大致上跟交易有關的API就是這幾隻囉,即時回饋的部分,之後再來看有沒有時間弄了~~
明天開始要處理暫存資料庫及網頁的部分,希望繼續順利走下去~


上一篇
[day11]串接API實測-訂單單筆查詢API
下一篇
[day13] 快速建構JSON Server
系列文
永豐Vue一下-從生活尋找靈感30

尚未有邦友留言

立即登入留言