本人工科小白一枚,毕业做运营,为了工作方便研究起了py,总结了一下饿了么开放平台API的python方法,希望各路大神批评指正探讨。
首先当然是注册开放平台账号了,我是直接问主管要来了开放平台,下辖100多家的某西式餐饮连锁机构的饿了么商家账号,可以直接去管理中心申请开发应用,商家有店都可以的,不像美团餐饮开放条条框框多的要命。商家账号直接申请的好处是授权简单,少了很多步骤。服务商和普通个人(也作为服务商)需要商家授权,具体开放平台有介绍==》点此了解
接下来就到了最激动人心(最恶心的反复调试)环节了,因为api的算法是按照javascript来的,应用实例是参考具有SDK的,对于使用普通http协议的开发者很不友好。
话不多说上代码

import base64
import json
import requests#方便http请求的第三方库,要pip安装
import uuid
import time
import hashlib#导入hash加密模块
#需要的模块都在了
key=""
secret=""
#这两个参数管理中心查看应用里面都有,自己复制过来
#接下来注意了,第一大坑!!!!!
Authorization=base64.b64encode((key+":"+secret).encode('utf-8')).decode("utf-8")#base64加密只有字节码可以编码,编码后解码字节才能变回字符串才可以传参
#注:py的base64是小写b开头,需要转化为Basic开头才可以,python需要人工用字符串拼接构造为浏览器xhr那样的请求,就问你坑不坑,不加"Basic "字符串报错
header={"Authorization":"Basic "+Authorization,"Content-Type": "application/x-www-form-urlencoded"}
data={"grant_type":"client_credentials","scope":"all"}#个人账户grant_type"参数就是"client_credentials"
res=requests.post("https://open-api.shop.ele.me/token",data=data,headers=header)#参数顺序不能调换
accesstoken=json.loads(res.text)["access_token"]#json模块的load函数解析json字符串为字典#接下来就是构造函数方便调用啦
def commoneleopenapi(actionparams,action):第一个参数为api特有参数,直接api测试工具复制参数就行,第二个为接口名称,eleme.开头的那个body={"token": accesstoken,"nop": "1.0.0","metas": {"app_key": key,"timestamp":timestamp#使用time模块的time.time()函数获取带小数10位秒级时间戳,然后Int一下获取十位整形时间戳},"params": actionparams,"action": action,#接口名字"id": str(uuid.uuid4()),#这就是所谓的requestid,通用唯一标识符,开放平台提问别忘了带上这个,他们可以查本次请求内容与过程"signature": ""}body["params"]=actionparamsnewdic={}#构造签名所需元素newdic.update(body["params"])newdic.update(body["metas"])newlist=[]#构造新列表准备对签名参数进行排序for (key,value) in newdic.items():newlist.append(str(key+'='+json.dumps(value)))#json.dumps等同于js中json.stringifynewlist.sort()#首字母排序#开始拼接md5字符串md5str=body["action"]+body["token"]for item in newlist:md5str+=itemmd5str+=secret#字符串拼接完毕,开始md5编码m=hashlib.md5()m.update(md5str.encode('utf-8'))#MD5编码必须传入字节格式psw = m.hexdigest()psw=psw.upper()#md5编码的字符串中字母转化为大写body["signature"]=pswheader1={"Content-Type": "application/json;charset=utf-8"}return json.loads(requests.post("https://open-api.shop.ele.me/api/v1",data=json.dumps(body),headers=header1))#我测试的时候反正是直接用了,严谨点的话还是要判断返回的status.code是否200这样的然后设定一定的callback
#饿了么开放平台感觉还不是很完善,比如评论最多只能获取20条,比如获取店铺活动商品居然返回为空???

python饿了么商家开放平台模拟网页http请求实战相关推荐

  1. 饿了么商家开放平台踩坑记录2,php更新商品信息提示attribute:[]不是一个有效的JSON对象 By勤勤学长 Qq318692996

    需要注意的是,这个attribute:[]不是一个有效的JSON对象的错误提示,并不是attributes这个参数出错. 经过我一天的排查,终于发现问题所在,是你其中一个参数不正确. 我这里报错是设置 ...

  2. 饿了么商家开放平台踩坑记录1,php更新商品信息提示业务异常BUSINESS_ERROR by勤勤学长 318692996

    ["error"] => array(2) {["code"] => string(14) "BUSINESS_ERROR"[& ...

  3. 饿了么零售开放平台-.Net Core

    1.准备材料 申请人身份证正反面, 有限制责任公司资质 企业支付宝账号,用于入塔 入塔还有一堆强制条件,必须在啊里重新买. 2.接入流程 主要是官网的信息,这里主要是做一些说明 申请成为开发者 首先注 ...

  4. 京东京麦商家开放平台的消息推送架构演进之路

    1.前言 京麦实时消息推送是京东的京麦商家开放平台的核心组成部分.从消息源到消息中心再到触达用户,以及最终根据消息协议呼起操作页面,京麦实时消息推送是一个完整且健康的生态闭环.下面我会详细的介绍下京麦 ...

  5. 【精准三点定位求解汇总】利用Python或JavaScript高德地图开放平台实现精准三点定位(经纬度坐标与平面坐标转换法求解、几何绘图法求解)

    [精准三点定位求解汇总]利用Python或JavaScript高德地图开放平台实现精准三点定位(经纬度坐标与平面坐标转换法求解.几何绘图法求解) 众所周知,如果已知三个点的坐标,到一个未知点的距离,则 ...

  6. 新版支付宝开放平台 手机网页支付 整个流程

    新版支付宝开放平台  手机网页支付 整个流程 在支付宝签约如下产品 然后,使用支付宝最新的签名工具生成商户的私钥和公钥 值得注意的是,如果是.net c# 请选择PKCS1,我只采用1024密钥长度. ...

  7. 微信开放平台开发——网页微信扫码登录(OAuth2.0)

    1.OAuth2.0 OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用. 允许用户提供 ...

  8. python 对接饿了么零售开放平台

    花了两天时间对接饿了么平台的接口,在这我要说说一些坑 1.平台的文档写得有时候看得不是很明天.特别时调试接口的时候 坑一:提交格式为:格式为:content-type=application/x-ww ...

  9. python调用百度网盘开放平台接口上传本地文件

    本文章是为如何在没有GUI的环境下,使用指令行上传文件到百度网盘提供一个思路,其他操作请自行查询官方文档拓展. 前期工作 申请成为开发者 创建应用 记录AppKey和SecreKey,后续开发需要使用 ...

最新文章

  1. php js混淆加密工具,求混淆js加密算法解密
  2. 500 - Internal server error.
  3. 详解mysql什么时候不走索引
  4. wdatepicker不展示秒_十一出游去哪里?苏州人都不一定知道的地方!
  5. Linux字符设备驱动中container_of宏的作用
  6. Linux下重修烧录(修改)Mac地址---Eeupdate for Intel
  7. 2022年系统分析师论文模拟题--押题
  8. 手工查杀威金病毒,完全恢复exe程序
  9. android手机无法root成功,安卓手机不能ROOT怎么办
  10. 【Android 逆向】Android 逆向用途 | Android 逆向原理
  11. 什么是ESP/MSR 分区,如何建立ESP/MSR 分区
  12. In-band network telemetry
  13. 0-SIM卡的迭代(SIM-USIM-eSIM-vSIM-softSIM)
  14. java map集合的等号改为逗号_老司机用一篇博客带你快速熟悉Dart语法
  15. CRM客户信息管理系统
  16. 如何在ArcGIS中应用七参数对影像进行坐标投影变换
  17. Electron简介、安装、实践
  18. 能把音频转换成文字的软件推荐,快收藏起来
  19. 个人邮箱注册怎么申请?163邮箱适合个人用吗?
  20. 查询企业电话号码有哪些平台?怎样查找企业联系方式

热门文章

  1. RL 笔记(3)PPO(Proximal Policy Optimization)近端策略优化
  2. xshell下载链接及安装步骤
  3. 2011微软校园招聘笔试题
  4. 他曾被视为马斯克第二,现在是等着坐牢的骗子
  5. Canvas绘图教程及简单实践
  6. oenwrt 进不了bios_J1900在openwrt不能正常重启的BIOS选项说明
  7. flink sql读取kafka-入门级
  8. C1驾考成都胜利考场科目二经验
  9. opencv 显示无边框
  10. 简述固定资产的全生命周期管理流程