python修改允许京东下单_京东Python开发(二)

今天终于搞通了京东的API开发,记录一下备忘。

一.注册成为开发者

链接:https://dev.jd.com/

然后在应用中心新建一个应用。

然后京东审核通过就可以了。审核通过之后,在应用信息里有一个“回调url”,这个需要你的网站通过京东审核才可以。

二、提交网站给京东审核

在京东联盟的后台(https://media.jd.com/),“推广管理”里面的“网站管理”里,新增一个网站,然后等待京东审核通过,一般3-4天就可以查看审核结果了。

网站审核通过之后,将网址填入第一步中的“回调url”当中,记住形式为“http://www.xxx.com”,不要忘记前面的http:。

三、获取code

在浏览器中请求:https://oauth.jd.com/oauth/authorize?response_type=code&client_id=2B8E53069FA43C654FCAC6D00569ECC3&

redirect_uri=http://www.baidu.com&state=quanyi

client_id为应用的appkey,response_type为固定值填code,redirect_uri写上面创建应用是填写的回调url

然后在出现的界面中填写账号,密码等信息。

一切填写正确之后,会出现你的网站地址,并且在地址栏显示为http://www.xxx.com/?state=quanyi&code=xxxx 的形式,code=后面的代码就是你的Code.

四、获取access_token

直接在地址栏上按照下面的格式拼上参数,client_id就是appkey,code就是上面获取的code,state可填可不填,client_srecet的值是appsrecet,其他参数不用管。

https://auth.360buy.com/oauth/token?grant_type=authorization_code&client_id=2B8E53069FA43C654FCAC6D00569ECC3&

redirect_uri=http://www.baidu.com&code=P6SgDi&state=quanyi&client_secret=37dccc2b43ac4f77a681fe9f56bd7d49

调用之后返回如下格式的json

{

“access_token”: “bbf4709d-c404-416f-9bd2-ee01b1b84424”,

“code”: 0,

“expires_in”: 86399,

“refresh_token”: “1ec8990d-0ea4-47d2-9fe6-25cc53355606”,

“time”: “1484009717389”,

“token_type”: “bearer”,

“uid”: “4582600365”,

“user_nick”: “jmdonghao”

}

(注意,测试的accress_token的时效性只有24小时,之后需要重新获取一次)

然后就可以根据京东提供的调用实例调用了。

五、测试API

地址:http://jos.jd.com/api/showTools.htm?id=1413&groupId=117

这里又有一个小坑,就是我输入app_key的时候前面不小心多了一个空格,结果老是提示app_key无效,后来多次尝试才发现这个问题。

不过我所有参数都输正确了,还是提示:

{"error_response": {"code":"88","zh_desc":"该appKey=xxxx6993B2005377750xxE2D22E5无权调用method=jingdong.service.promotion.goodsInfo","en_desc":"The appKey has no right to call this interface. Please go to dev.jd.com for interface application"}}

六、申请API

出现上面的问题是没有申请API权限,在京东开发平台(https://dev.jd.com/)中“应用管理--接口管理”申请接口权限,这些都是基础免费接口,申请之后不用审核即可通过。

这时再访问获取推广商品详细信息 API-的时候,提交测试,就可以正常返回了。

但是还有一个问题,访问优惠券,商品二合一转接API-的时候,又提示“您无权限调用此API接口”,所以像获取爆款商品列表、获取优惠商品列表、商品优惠券二合一转链这类API属于高权API,不是一般用户可以申请的。据说需要日千单以上才能申请。

所以,如果您没有达到这个条件,又想使用这类的接口,只能用别人提供的了。

七、优惠券,商品二合一转接

请求URL:https://jd.open.beeapi.cn/union/getCouponCodeByUnionId

参数如下:

京东的原始文档在这里,

使用的代码如下:

https://jd.oxxx.xxx.cn/union/getCouponCodeByUnionId?couponUrl=https://coupon.jd.com/ilink/couponSendFront/send_index.action?key=322aa5be19d44e46xxxxxc768e066a61&roleId=12973680&to=mall.jd.com/index-745308.html&materialIds=%2226730354468%22&unionId=你的京东联盟ID

返回结果:

到这里我们就可以获得了商品优惠券的链接了,而且只要确保参数里的unionid写成你的,你就可以获得佣金,大功告成。

UPdated on Jun.12.2019

八、京东接口的权限

以下为联盟API接口详情,您可选择适合您的接口进行调用(高级API接口需发邮件到京东申请,通用接口可直接调用),谢谢!

通用API

【查询数据】jd.union.open.order.query(订单查询接口)

【商品信息】jd.union.open.goods.jingfen.query (京粉精选商品查询接口)

【商品信息】jd.union.open.goods.promotiongoodsinfo.query(获取推广商品信息接口)

【获取链接】jd.union.open.promotion.common.get(获取通用推广链接)

【商品信息】jd.union.open.category.goods.get(商品类目查询)

高级API

【商品信息】jd.union.open.goods.query(关键词商品查询接口【申请】)

【商品信息】jd.union.open.goods.seckill.query(秒杀商品查询接口【申请】)

【商品信息】jd.union.open.goods.stuprice.query(学生价商品查询接口【申请】)

【获取链接】jd.union.open.promotion.byunionid.get(通过unionId获取推广链接【申请】)

【获取链接】jd.union.open.promotion.bysubunionid.get(通过subUnionId获取推广链接【申请】)

【查询数据】jd.union.open.coupon.query(优惠券领取情况查询接口【申请】)

【其他】jd.union.open.position.create(创建推广位【申请】)

【其他】jd.union.open.position.query(查询推广位【申请】)

【其他】jd.union.open.user.pid.get(获取PID)

可以参考:http://news.jd.com/153_1.html

九、新版本如何获取二合一链接

如何获得商品优惠券,商品详情的二合一链接?

首先使用关键词查询接口获得优惠券商品的URL以及优惠券:

然后利用优惠券url和商品详情页的url,可以生成二合一的链接。

而且这个二合一的链接是短网址。

使用的接口是“通过unionid获取推广链接”

测试内容:

http://coupon.jd.com/ilink/couponActiveFront/front_index.action?key=d227891573bd4ff39aacab19531fc4e7&roleId=20358522&to=item.jd.com/42129131370.html

item.jd.com/42129131370.html

请求URL: https://jd.vip.apith.cn/unionv2/getByUnionidPromotion

这里又遇到了一个大坑,在将签名算法从python2.x移植到python3.x的时候,被“\n”这个符号折腾得要死。

附最终代码:

import requests

import datetime

import hashlib

import hmac

import base64

import json

GMT_FORMAT = '%a, %d %b %Y %H:%M:%S GMT'

url = "xxxxx"

SecretId = 'xx'

SecretKey ='xx'

def getSimpleSign(SecretId, SecretKey) :

dateTime = datetime.datetime.utcnow().strftime(GMT_FORMAT)

auth = "hmac id=\"" + SecretId + "\", algorithm=\"hmac-sha1\", headers=\"date\", signature=\""

signStr = "date: " + dateTime

sign = hmac.new(SecretKey.encode('utf-8'), signStr.encode('utf-8'), hashlib.sha1).digest()

sign = base64.b64encode(sign).decode('utf-8')

sign = auth + sign + "\""

return sign, dateTime

sign, dateTime = getSimpleSign(SecretId,SecretKey)

header = { 'Host':'jd.vip.apith.cn',

'Accept': '*/*',

}

header['Date'] = dateTime

header['Authorization'] = sign

print (header)

r = requests.get(url, headers=header)

print (r)

print (r.text)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值