python 对接饿了么零售开放平台
2022/3/21 12:58:10
本文主要是介绍python 对接饿了么零售开放平台,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
花了两天时间对接饿了么平台的接口,在这我要说说一些坑
1.平台的文档写得有时候看得不是很明天。特别时调试接口的时候
坑一:提交格式为:格式为:content-type=application/x-www-form-urlencoded,如果按照其他格式提交会有问题。废话不多说,直接上代码!
# requests发送application/x-www-form-urlencoded请求数据 head = {"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", 'Connection': 'close'} post_url='https://api-be.ele.me/' data = parse.urlencode(post_dict) # 请求方式 content = requests.post(url=post_url, headers=head, data=data).text print('@@@@@@@@@@@@@@@@@@@@@@@@@data:') print(data) print('@@@@@@@@@@@@@@@@@@@@@@@@@post_url:') print(post_url) content = json.loads(content) print(content)
坑二:接口请求文档写得有问题!!
1.签名工具问题,官网给的签名工具是有问题的,如果按照那个去写始终返回20114:也就是sign验证错误(不要问我为什么知道,应为我被坑了好久,爬了两天才爬出来)
2.官方给的例子使用时会有问题(小问题)
正确的代码如下:用于生成sign
def sign1(params): # //原始参数 biz_params={} biz_params['cmd'] = params['cmd'] biz_params['source'] = params['source'] biz_params['secret'] = params['secret'] biz_params['ticket'] = params['ticket'] biz_params['version'] = 3 biz_params['encrypt'] = params['encrypt'] biz_params['timestamp'] = params['timestamp'] biz_params['body'] = params['body'] params_list = [] # //sort排序后的参数 params_key = sorted(biz_params.keys()) for key in params_key: params_list.append(key + "=" + str(biz_params[key])) # //用&拼接成字符串 source_str = "&".join(params_list) # //md5 32位 return hashlib.md5(source_str.encode(encoding='UTF-8')).hexdigest().upper()
为了便于使用封装了一个函数
def sendparams(cmd='shop.get',source='*********',secret='***************'): time_temp='1647830954'#int(time.time())#时间戳 ticket_temp='BF46EC33-67DB-4006-8D03-4866FB517EFD'#生成ticket body_temp={ "shop_id":"***************" } params={} params['cmd'] = cmd params['source'] =source params['secret'] =secret params['ticket'] = ticket_temp params['version'] = 3 params['encrypt'] = 'aes' params['timestamp'] = str(time_temp) params['body'] = body_temp params['access_token']='' print('@@@@@@@@@@@@@@@@@@@@@params参数') print(params) sign_temp=sign1(params)#获取token值 print('@@@@@@@@@@@@@@@@@@@@@签名结果') print(sign_temp) # 最终提交的参数 post_dict={} post_dict.update({ 'cmd':params['cmd'], 'timestamp':params['timestamp'], 'version':params['version'], 'ticket':params['ticket'], 'source':params['source'], 'sign':sign_temp, 'body':params['body'], 'encrypt':'aes' }) # requests发送application/x-www-form-urlencoded请求数据 head = {"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8", 'Connection': 'close'} post_url='https://api-be.ele.me/' data = parse.urlencode(post_dict) # 请求方式 content = requests.post(url=post_url, headers=head, data=data).text print('@@@@@@@@@@@@@@@@@@@@@@@@@data:') print(data) print('@@@@@@@@@@@@@@@@@@@@@@@@@post_url:') print(post_url) content = json.loads(content) print(content) return content
最后输入参数调用它:
def ykyd_elm_gaikuncun(): content=sendparams('shop.get','276683333','**************') return content
结果如图:
坑三、关于获取access_token我到现在我不知道怎么获取,官方文档有只字片语但是具体的没有说,不过不需要access_token也可以调用接口,也就无所谓了 - -!,这个以后需要的时候我再来补充
这篇关于python 对接饿了么零售开放平台的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门