如果你的Python环境没有requests模组
pip install requests
向网站/网路资源请求资料(request),主要有GET/POST两种方式,如果沟通正常,通常会获得回应response,除了资料外还会有一个http status code,关於网路HTTP具体技术细节这边不会讲解,有兴趣可以自行Google
个人建议会重复使用的常数都集中写在设定档案中,再用ConfigParser读取,这样可以统一修改整份专案的常数
[Server]
#永丰消费支付API服务网址
Api_URL = https://apisbx.sinopac.com/funBIZ/QPay.WebAPI/api/Order
#永丰消费支付API-Nonce服务网址
Nonce_URL = https://apisbx.sinopac.com/funBIZ/QPay.WebAPI/api/Nonce
API以Json格式沟通,建立一个基本的Json Headers
jsonheaders = {
'Content-Type': 'application/json'
}
实作发送request
#读取设定档
env = ConfigParser()
env.read('env.ini')
cfg = SimpleNamespace(Api_URL = env['Server']['Api_URL'], Nonce_URL = env['Server']['Nonce_URL'])
#发送POST的request
def sendreq(method="POST", url = None, headers=jsonheaders, data = None):
try:
response = requests.request(method=method, url=url, headers=headers, data=data)
return response
except Exception as err:
print(err)
产生JSON格式的Request实作
def GenRequest(cfg, APIService, sign, nonce, message):
req = {'Version':cfg.Version, 'ShopNo':cfg.ShopNo, 'APIService':APIService, 'Sign':sign, 'Nonce': nonce, 'Message':message}
#ensure_ascii=False,关闭中文ascii转换
js_req = json.dumps(req, indent=4, ensure_ascii=False)
return js_req
返回的Response中的参数定义可以参考w3schools,实际会使用到的只有statud_code与content
#判断是否Ok
response.OK
# TRUE/FALSE
#将content转成str
response.text
#将content转成json
response.json()
说明请见数位金流 API 技术规格文件p.13,以下为完成签章与内文加密的完整Request
{
"Version": "1.0.0",
"ShopNo": "NA0001_001",
"APIService": "OrderCreate",
"Sign": "7788EE61DD450944992641B3B2F8210B81A0AE97908BC19825F2A82C0F72EA43",
"Nonce": "NjM2NjY5MDQ3OTQwMzIuMTphZmJjODBhOTM5NzQ1NjMyNDFhZTczMjVjYzg0Mjg5ZjQxYTk2MWI2ZjNkYTA0NDdmOTRhZjU3ZTIzOWJlNDgz",
"Message": "4FE341D3A8C30C9A50573F3008F7B1CA8DD96FB2A4346D83936E5C4FDB21E87BA9E3D36A6635C6F5EBBD5438F3CA8FE97DEBB2ADBC82F92BF3C840B3128D8F00116536E7C936D7D587F6220C52C1367DF2BE9CBB16C6A7C6242AA8B38CD2E576328CF727E50FFA49B4F9FBE5DF10986C5299F9FC26E23E956AFDFB92B731FDA84ABEF1C89E0CD0A8CA8F7C23DC2D06E12A6F916EC47CDD9B4D4F87AC0B687EE1088A19F2C35C0FD8B0C97745B926FBAA48FEEDEB826C2C22743DB46781FF220ECA409FC150908540271E60184729C08C73275C54125C3F814FF33CA79A0E1B3902D446925FCC8235809FCBAB7E372D8C29E424CEFF0AD1CBD41E843714EB365158F2FC0B2E6FB48176D5CFF6B68F4BED4D7484C1A4723ABD059DA64A6703B30B0199B170FDF059899552FA1818ABA5B0D0E21014513985A738D59851EDF0B1CFB36A7B7B727109BE7789D284C75E5D694DFC9B7060DCBFD8C7915C95C4E0F29B"
}
最後一个Message参数怎麽看不懂,安啦明天将说明如何进行内文的ABS CBC加密
>>: Day17 - 铁人付外挂前置作业(二)- 开发环境
Keyword: Koin 到Day20 使用Koin管理依赖注入显示在Android上 放在这边 ...
今天似乎是第 30 天,轻松一下~ 来介绍一些好用的 package (伪)结赛感言 总之晃的一下就...
废话不多说,直接附上code 影片含有程序码详细解说,若有误再烦请告知,谢谢 library(ggp...
Hello 大家, 上三天就放假了~~ 但还是觉得好累= = 周休二日真的不够, 至少每周可以在家上...
哈罗~~大家好!!星期五好愉快~~马上进入主题吧!! 今天要介绍的是使用NodeJs建立後端的服务器...