[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就是这几只罗,即时回馈的部分,之後再来看有没有时间弄了~~
明天开始要处理暂存资料库及网页的部分,希望继续顺利走下去~


<<:  [Day 12] 切版就从布局开始 Application

>>:  [第十三天]从0开始的UnityAR手机游戏开发-如何在辨识图卡时拨放影片02

每个人都该学的30个Python技巧|技巧 9:快速建立数列—range函式(字幕、衬乐、练习)

昨天的巢状判断式有没有成功扰乱你呢?不管懂不懂,都要记得常常去复习哦,这样才会有深刻的印象!(๑•̀...

【第十七天 - 文件读取漏洞】

Q1. 什麽是文件读取漏洞? 骇客可以透过一些手段读取无授权的档案,时常作为资讯收集的一种手段,例如...

[Day14]Fourth Point!!

上一篇介绍了Parking,题目是说在一条很长的道路上,选择任意位子停车,要输出走去各点并回到停车处...

Day6 我承认我是视觉动物

Chart 表格可以看出资料中的细节,所以一开始从表格开始搭建,而进一步,图表可以更直觉的看出整体...

Day37 ( 游戏设计 ) 台湾地图拼图

台湾地图拼图 教学原文参考:台湾地图拼图 这篇文章延伸「形状配对拼图」的范例,在 Scratch 3...