利用京东联盟API获取自定义推广链接
2019独角兽企业重金招聘Python工程师标准>>>
本文将简单介绍下京东联盟、京东宙斯两个平台,以及如何利用京东宙斯平台的京东联盟API来快速获取自定义推广链接。
关于京东联盟
京东联盟(去官网看看)是一个CPS模式的营销平台,我们可以使用自己的网站放置联盟的推广链接为京东推销产品,当用户在我们的网站上点击了某个推广链接,并促成了真实的订单,那么我们将获得一定的佣金。
申请京东联盟的条件是必须有一个在国内的备案网站,这个是重点哦。使用京东帐号登录后,填写网站信息,等待审核即可。
强烈推荐先看下联盟的介绍和规则:http://media.jd.com/statc/help/hc.htm
关于京东宙斯
京东宙斯(去官网看看)是一个京东提供的API接口平台(基于oauth2验证),通过使用API,我们可以自己创建各种网站、无线应用来读取京东商品信息、活动信息等。商家可以通过API将自己的信息系统嵌入京东的各种服务系统。
本文将介绍如何使用京东宙斯中的京东联盟API来获取京东联盟自定义推广链接。
京东联盟自定义推广链接
自定义推广链接,可以使用京东上各种商品,各种活动页面的链接,其范围非常的广泛和实用。
在联盟管理界面中,我们可以看到生成自定义推广链接的操作非常简单:
自定义推广链接支持的链接有:京东首页、商品detail页、活动页面、店铺页面。
点击获取代码按钮后,会生成一个union开头的链接,我们把这个链接放置在网站上即可(这个链接只能在注册的网站上使用,通过其他方式打开的无效)。
我们自己可以点击这个链接,当我们自己在京东上购买商品时,也能获得佣金哦!(详细信息请看联盟帮助)
在京东宙斯平台注册为京东开发者
我们可以在京东联盟管理界面获取推广链接,但是每次都要登录,非常的繁琐!幸好,京东开放了京东联盟API,我们可以使用代码来自动获取!
首先,先用您的京东帐号登录京东宙斯平台(打开官网),然后填写开发者基本信息,即可完成注册开发者(不需要认证开发者),接着授权服务页面申请京东宙斯服务。
完成后会显示您已获得授权的服务:
创建一个应用
当我们成为注册开发者,授权京东宙斯服务后,我们需要创建一个应用,因为使用API是需要授权(access_token)的,而这个token是由我们创建的应用的APP key和App Secret生成,我们对API的请求记录都会记录在这个应用下面。
在创建应用界面,我们选择【买家】【无线应用】:
完成后,我们还需要完善下应用信息,填写下回调地址,回调地址的作用是在获取访问API的授权码(accecc_token)时的一个中间地址:
下一步,然后提交审核,应用的状态就变成上线运行中了,这时我们就可以正式开始使用应用证书中的APP key来获取Token了!
使用APPkey和APPSecrect获取Token
首先,奉上官网的文档:http://jos.jd.com/doc/channel.htm?id=152,有能力的你可以自行研究下~
这里,我使用的是第一种:Authorization Code来获取Token,好处是Token有效期能保持1年时间,每天30万次请求!我们现在只需要获取一次即可!
由于是基于Oauth2.0,所以流程很简单,先使用APPKey获取一个Code,然后结合Code再获取Token!
Code的获取是使用京东的登录页面,输入您的京东帐号信息后,得到授权之后会回到我们的回调地址上,此时回调地址上会带有一个code参数,这个参数就是我们需要的!
获取Code的请求(GET请求)链接:
https://oauth.jd.com/oauth/authorize
有几个参数需要带上:
参数名称 | 参数选项 | 描述 |
---|---|---|
response_type | 必须 | 此流程下,该值固定为code |
client_id | 必须 | 即创建应用时的Appkey(从JOS控制台->管理应用中获取) |
redirect_uri | 必须 | 即应用的回调地址,必须与创建应用时所填回调页面url一致 |
state | 可选 | 状态参数,由ISV自定义,颁发授权后会原封不动返回 |
scope | 可选 | 权限参数,API组名串。多个组名时,用","分隔,目前支持参数值:read |
view | 可选 |
移动端授权,该值固定为wap;非移动端授权,无需传值 |
整理后完整的请求链接为:
https://oauth.jd.com/oauth/authorize?response_type=code&client_id=YOUR_CLIENT_ID& redirect_uri=YOUR_REGISTERED_REDIRECT_URI
只需要修改下client_id(即APP Key)和redirect_uri(回调地址,必须和创建应用时写的一样)即可。
使用浏览器访问这个链接,会定向到登录页面:
登录成功后,会跳转到我们写的回调地址上,此时我们可以获得code参数值!
现在我们可以使用Code值来获得token了。
获取token的请求链接:
https://oauth.jd.com/oauth/token
参数有:
参数名称 | 参数选项 | 描述 |
---|---|---|
grant_type | 必须 | 授权类型,此流程下,该值固定为authorization_code |
code | 必须 | 授权请求返回的授权码 |
redirect_uri | 必须 | 应用的回调地址,必须与创建应用时所填回调页面url一致 |
client_id | 必须 | 即创建应用时的Appkey(从JOS控制台->管理应用中获取) |
client_secret | 必须 | 即创建应用时的Appsecret(从JOS控制台->管理应用中获取) |
state | 可选 | 状态参数,由ISV自定义,颁发授权后会原封不动返回 |
整理后完整的请求链接为:
https://oauth.jd.com/oauth/token?grant_type=authorization_code&client_id=YOUR_CLIENT_ID&
redirect_uri=YOUR_REGISTERED_REDIRECT_URI&code=GET_CODE&client_secret= YOUR_APP_SECRET
使用浏览器访问这个链接,返回的是标准的json格式:
{"access_token": "您的Token值","code": 0,"expires_in": 31622400,"refresh_token": "4a07031d-5122-4100-a60d-4ab982a55307","time": "1435499129281","token_type": "bearer","uid": "您的京东帐号ID","user_nick": "您的京东帐号昵称"
}
自此一个理论流程完成了!现在我们用php自动下,即获取code后自动发送获取token的请求,然后显示token内容。
PHP实现自动获取token的简单Demo
直接看代码把,非常简单哦,一个php文件:
<?php$response_type = "code";
$grant_type = "authorization_code";
$client_id = "这里改为您的APP Key";
$client_secret = "这里改为您的APP Secret";
$redirect_uri = "这里改为你的回调地址";
$state = "jdunion";
$codeurl = 'https://oauth.jd.com/oauth/authorize';
$tokenurl = "https://oauth.jd.com/oauth/token?";$code = $_GET["code"];if ($code != "")
{$fields = ["grant_type" => urlencode($grant_type),"client_id" => urlencode($client_id),"redirect_uri" => urlencode($redirect_uri),"code" => urlencode($code),"state" => urlencode($state),"client_secret" => urlencode($client_secret)];$fields_string = "";foreach($fields as $key=>$value) {$fields_string .= $key.'='.$value.'&';}rtrim($fields_string, '&');$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $tokenurl.$fields_string);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$result = curl_exec($ch);curl_close($ch);echo "Response:<br />".mb_convert_encoding($result,"UTF-8","GBK");}
else
{header("Location: ".$codeurl."?response_type=".$response_type."&client_id=".$client_id."&redirect_uri=".$redirect_uri."&state=".$state);
}
您只需要将开头的几个值修改为自己的,然后访问这个php文件。
使用京东联盟API获取自定义推广链接
得到token后,妥善保管,现在开始的每个API请求都需要带上这个token值。
首先,我们要知道的是,访问API有个BaseUrl,这是整个宙斯(JOS)平台所有API的主链接,只是不同API的参数不同:
https://api.jd.com/routerjson
JOS API里面有两种参数大类,一个是系统参数,即APP Key、Token这些验证信息,这是所有API都通用的,另一个是应用参数,即不同API它有自己的参数列表。
系统参数有下面这些:
名称 |
类型 |
必须 |
描述 |
method |
String |
是 |
API接口名称 |
access_token |
String |
是 |
采用OAuth授权方式为必填参数 |
app_key |
String |
是 |
应用的app_key |
sign |
String |
是 |
签名 |
timestamp |
String |
是 |
时间戳,格式为yyyy-MM-ddHH:mm:ss,例如:2011-06-16 13:23:30。京东API服务端允许客户端请求时间误差为6分钟 |
v |
String |
是 |
API协议版本,可选值:2.0. |
其中的method参数为API接口的名称,京东联盟API接口的名称是:
jingdong.service.promotion.getcode
sign参数是对完整的请求链接md5加密后的字符串,加密规则如下:
- 所有参数名称按字母先后排序
- 将参数名与参数值拼起来,去掉&和=两个字符
- 在第2步中得到的字符串两端拼上App Secret值
- 对第3步中得到的字符串计算md5
- 把计算得到的MD5值转为大写形式
- 最后这个大写的MD5值即为我们要使用的sign参数的值
京东联盟API接口的应用参数有下面这些:
名称 | 类型 | 必须 | 示例值 | 描述 |
promotionType | Number | 是 | 7 | 推广类型 1:商品推广,2:店铺推广,3:专柜推广,4:频道推广,7:自定义推广 系统目前暂时只支持自定义推广。 |
materialId | String | 是 | http://www.jd.com | 物料ID 1、推广类型是商品推广,推广物料ID对应着”skuid” 2、推广类型为店铺推广,推广物料ID对应着”shopID” 3、推广类型为频道页推广,推广物料ID对应着”频道页类目ID” 4、推广类型为自定义推广时,则该物料ID对应着”着陆页URL” 5、推广类型为专柜推广时,则该物料ID对应着“类目ID_类目ID_类目ID…” |
unionId | Number | 是 | 联盟ID(京东客ID) | |
subUnionId | String | 否 | 子联盟Id(不能超过16个字符) | |
siteSize | String | 否 | 推广位尺寸,具体尺寸见FQA | |
siteId | String | 否 | 推广位ID | |
channel | String | 是 | 推广渠道 PC:pc推广,WL:无线推广 | |
webId | String | 是 | 网站ID | |
extendId | String | 否 | 扩展ID | |
ext1 | String | 否 | 扩展字段1 |
promotionType参数这里目前只支持自定义推广,值为7。
materiaId参数为我们需要转换的京东网站链接(推广类型4,自定义推广),比如京东首页。
unionID参数为您的京东联盟帐号的ID,这个可以登录京东联盟网站后查看到。
webId参数为您在京东联盟网站注册的网站编号,也可以在联盟网站上找到。
知道这些参数后,我们需要开始构建请求的链接了。
首先应用参数在使用时需要构建成json格式拼接在BaseUrl上,使用的参数名叫:
360buy_param_json
php实例:
$_360buy_param_json =
'{"channel":"'.$channel.'","materialId":"'.$sourceurl.'","promotionType":'.$type.',"unionId":"'.$unionId.'","webId":"'.$webId.'"}';
现在根据以上系统和应用参数信息,拼接成完整的请求链接,使用浏览器请求即可,返回的格式是json。
下面是我写好的php代码:
<?php$sourceurl = $_GET["u"];if($sourceurl == ""){echo "error:请输入url参数";exit();
}$method = "jingdong.service.promotion.getcode";
$channel = "PC";
$type = 7;
$unionId = "您的京东联盟ID";
$webId = "您在京东联盟注册的网站的ID";
$token = "您的Token";
$appkey = "您的APPKey";
$appSecret = "您的APPSecret";
$v = "2.0";
$time = date('Y-m-d H:i:s',time());$baseurl = "https://api.jd.com/routerjson?";//应用参数,json格式
$_360buy_param_json =
'{"channel":"'.$channel.'","materialId":"'.$sourceurl.'","promotionType":'.$type.',"unionId":"'.$unionId.'","webId":"'.$webId.'"}';//系统参数
$fields = ["360buy_param_json" => urlencode($_360buy_param_json),"access_token" => urlencode($token),"app_key" => urlencode($appkey),"method" => urlencode($method),"timestamp" => urlencode($time),"v" => urlencode($v)
];$fields_string = "";//用来计算md5,以appSecret开头
$_tempString = $appSecret;foreach($fields as $key=>$value)
{//直接将参数和值拼在一起$_tempString .= $key.$value;//作为url参数的字符串$fields_string .= $key.'='.$value.'&';
}//最后再拼上appSecret
$_tempString .= $appSecret;//计算md5,然后转为大写,sign参数作为url中的最后一个参数
$sign = strtoupper(md5($_tempString));//加到最后
$fields_string .= ("sign=".$sign);//最终请求的url
$link = $baseurl.$fields_string;//发送get请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $link);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);//转换为json
$jsonArray = json_decode($result,true);
$queryjs_result= $jsonArray["jingdong_service_promotion_getcode_responce"]["queryjs_result"];$url = json_decode($queryjs_result,true);
echo urldecode($url["url"]);
?>
修改文件中的几个参数值,然后访问这个php文件,带上参数:u=京东链接(比如u=http://www.jd.com)。
最后页面将直接输出union打头的推广链接。
结束
到目前为止,我们已经有了一个php文件,通过参数u=京东链接形式,即可快速的得到推广链接。
注意,得到推广链接,直接访问它是没有任何效果的,需要将链接添加在京东联盟注册的网站中去,从这个网站点击跳转才能生效。
查看Demo:http://devonios.com/app/jd/index.php
tips:
本文由wp2osc导入,原文链接:http://devonios.com/use-jos-api-get-link.html
由于OSChina的OpenAPI在处理content参数时会自动过滤img标签,所以无法显示图片,详见。
转载于:https://my.oschina.net/lijialong/blog/474385
利用京东联盟API获取自定义推广链接相关推荐
- php对接京东宙斯平台,利用京东联盟API获取自定义推广链接
本文将简单介绍下京东联盟.京东宙斯两个平台,以及如何利用京东宙斯平台的京东联盟API来快速获取自定义推广链接. 关于京东联盟 京东联盟(去官网看看)是一个CPS模式的营销平台,我们可以使用自己的网站放 ...
- 完整的京东联盟自定义推广链接生产程序
2019独角兽企业重金招聘Python工程师标准>>> 前言 前文<利用京东联盟API获取自定义推广链接>介绍了如何使用联盟API获取自定义推广链接. 这里我做一个小页面 ...
- 百度地图利用位置提供服务器,利用百度地图API获取当前位置信息的实例
利用百度地图API可以做很多事情,个人感觉最核心也是最基础的就是定位功能了.这里分享一个制作的JS可以实现登录网页后定位: var map; var gpsPoint; var baiduPoint; ...
- discuz 自定义联盟推广链接案例及百度分享自定义推广链接的方法
原理,推广者通过论坛自动生成的属于自己的推广链接,分发出去后,其它人通过该链接访问,广告联盟便可记录推广者并给予奖励. 涉及三个文件.cf_conn.php及cf_reg.php,为了让推广链接窗口在 ...
- python 根据地址求经纬度 谷歌_利用google的API获取世界城市经纬度(python实现)
google API 需要 --. #-*- coding: utf8 -*- from xml.dom import minidom import urllib2, urllib #这个KEY本来是 ...
- 利用高德地图API获取任意两座城市之间的距离!异地也有惊喜!
工作中有时会遇到这样一种场景:年末需要统计所有员工该年的航旅出差情况,然后根据他们的飞行距离补贴一定的交通费.例如如下所示情况: 然而,如果我们使用地图APP等工具逐一进行手工查询,在一家规模稍大的公 ...
- 利用百度地图api,自定义起始点进行驾车路线的搜索,并可以根据不同驾车策略给出驾驶指导
利用百度地图api,通过在输入框(带自动填充)输入起始点,然后根据用户选择的不同驾车策略来进行驾车路线搜索并显示具体的路线信息.驾车策略共三种,默认路线(时间最短).最短路程.不走高速.左侧搜索栏可以 ...
- 京东商品获取优惠券API接口-京东优惠券如何获取-京东联盟API接口
京东单品优惠券获取教程 一.应用场景 二.环境 三.详细操作 只有一个单品应该怎么获取优惠券接口? 一.应用场景 API接口说明: 通过商品链接或SKU,获取京东最优券,方便用户领券,提升用户体验 应 ...
- 想学爬虫的同学看过来,手把手教你利用Python网络爬虫获取APP推广信息
一.前言 CPA之家app推广平台是国内很大的推广平台.该网址的数据信息高达数万条,爬取该网址的信息进行数据的分析. 二.项目目的 实现将获取到的QQ,导入excel模板,并生成独立的excel文档. ...
最新文章
- 生产环境 JVM 内存溢出案例分析
- oracle9201怎么安装,Solaris10上安装64位Oracle9201
- 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和
- C++ cout 输出 16, 8 , 2进制
- STM32 ADC采样使用内部参考电压
- 『转』line-height
- 把握人工智能命脉的有效方法
- Linux查看文件内容命令:cat, tail, head, more, less
- linux删除文件_Linux中删除特殊名称文件的多种方式
- 代码简洁之道:一行Python代码解决问题是时尚还是玄学
- java 中如何连接 oracle 数据库
- 使用mpvue开发小程序需要注意和了解的知识点
- ftp工具破解版,细数6个ftp工具破解版
- 继电器(Relay)
- 上位机与下位机的通讯
- JS中判断某个字符串/数组中是否包含某个值
- 首字母大写--C++实现
- HDU - 1008ACM
- JNU教务系统一键成绩查询
- 【重磅最新】163篇ICML-2021强化学习领域论文整理汇总(2021.06.07)
热门文章
- 网络抓包工具Wireshark与tcpdump介绍
- PHP-----PHP程序设计基础教程----第二章PHP基本语法
- 第三方库Masonry自动布局AutoLayout使用
- 【秋招纪实录】一篇特别正经的【紫光展锐】求职经验分享
- 数字城市“质变”:青岛如何与华为云共谋高质量发展“新基准”
- 学习笔记1 直流微电网概述
- 火遍半边天的狼人杀APP只剩“曾经”,剧本杀APP成功上位?
- SqlSugar 插入emoji表情
- 【数学建模】灰色预测模型(预测)
- webgl实现发光线框(glow wireframe)效果