接入淘宝客+拼多多(多多客)+京东进行优惠券推广

以你之姓@ 2022-01-31 01:19 748阅读 0赞

记录:

开发配置:java、jdk1.8、idea、springboot、windows

一、拼多多

1、进入拼多多开放平台 http://open.pinduoduo.com/\#/index 注册为开发者

2、进入控制台,创建一个应用,选择多多客联盟(也可选择其它),等待审核通过。

3、审核通过之后能够拿到client_id和client_secret

4、(PS:因我本地maven没安装,因此只能用线上)在pom.xml中引入配置


javax.websocket
javax.websocket-client-api
1.0
  1. <dependency>
  2. <groupId>org.glassfish.tyrus.bundles</groupId>
  3. <artifactId>tyrus-standalone-client</artifactId>
  4. <version>1.13.1</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>com.fasterxml.jackson.core</groupId>
  8. <artifactId>jackson-databind</artifactId>
  9. <version>2.9.6</version>
  10. </dependency>
  11. <dependency>
  12. <groupId>commons-codec</groupId>
  13. <artifactId>commons-codec</artifactId>
  14. <version>1.10</version>
  15. </dependency>
  16. <dependency>
  17. <groupId>org.apache.logging.log4j</groupId>
  18. <artifactId>log4j-core</artifactId>
  19. <version>2.11.1</version>
  20. </dependency>
  21. <dependency>
  22. <groupId>org.apache.logging.log4j</groupId>
  23. <artifactId>log4j-api</artifactId>
  24. <version>2.11.1</version>
  25. </dependency>
  26. <dependency>
  27. <groupId>org.apache.logging.log4j</groupId>
  28. <artifactId>log4j-slf4j-impl</artifactId>
  29. <version>2.11.1</version>
  30. </dependency>
  31. <dependency>
  32. <groupId>org.apache.httpcomponents</groupId>
  33. <artifactId>httpclient</artifactId>
  34. <version>4.5.3</version>
  35. </dependency>
  36. <dependency>
  37. <groupId>commons-io</groupId>
  38. <artifactId>commons-io</artifactId>
  39. <version>2.5</version>
  40. </dependency>
  41. <dependency>
  42. <groupId>com.fasterxml.jackson.core</groupId>
  43. <artifactId>jackson-databind</artifactId>
  44. <version>2.8.11</version>
  45. </dependency>

具体配置可以参考 拼多多开发者文档->sdk指南,有明确标识有哪些jar包

然后先点击某个api,拉到最下面点击api工具测试,先测试是否可用(有的没有权限,需要申请)

最后在控制器里面进行测试调用:拼多多是post请求,并且有签名。看官网的教程是有类的,可以直接set设置值,但不知道为啥引入jar包之后还是不能用。就只能手动拼接

1、生成签名,签名的规则在sdk指南中有明确说明,对于数据进行首字母排序,并在数据的首尾加上client_secret

  1. 我个人用了两种方式:第一,最原始的,自己看有哪些参数,然后一个一个拼接。

//拼接签名
String signD = pddUtil.client_secret +”client_id”+ pddUtil.client_id + “data_typeJSON”

  • “sort_type0” +”timestamp”+timestamp+ “typepdd.ddk.goods.search”

    1. + "with\_coupontrue"+pddUtil.client\_secret;
    2. //生成签名
    3. String encode = MD5Util.encode(signD);

    第二种采用map,然后转为string

//获得时间戳(10位)
long timeStampSec = System.currentTimeMillis()/1000;
String timestamp = String.format(“%010d”, timeStampSec);

//设置参数
Map map = new TreeMap();
map.put(“type”, “pdd.ddk.goods.search”);
map.put(“data_type”, “JSON”);
map.put(“timestamp”, timestamp);
map.put(“client_id”, pddUtil.client_id);
map.put(“sort_type”, “0”);
map.put(“with_coupon”, “true”);

//转换数据为String
StringBuilder sb = new StringBuilder(pddUtil.client_secret);//应规则首尾加上client_secret

for (Map.Entry entry : map.entrySet()) {
String name = (String) entry.getKey();
String value = (String) entry.getValue();

  1. //检测参数是否为空
  2. if (this.areNotEmpty(new String\[\]\{name, value\})) \{
  3. sb.append(name).append(value);
  4. \}

}
sb.append(pddUtil.client_secret);//应规则首尾加上client_secret

//进行签名
String sign = MD5Util.encode(sb.toString());

//验证是否为空
public static boolean areNotEmpty(String[] values) {
boolean result = true;
if ((values == null) || (values.length == 0))
result = false;
else {
for (String value : values) {
result &= !isEmpty(value);
}
}
return result;
}
2、发送请求,正式请求地址:https://gw-api.pinduoduo.com/api/router

//post参数
String param = “type=pdd.ddk.goods.search&data_type=JSON&timestamp=”+
timestamp +”&client_id=”+pddUtil.client_id+
“&sort_type=0&with_coupon=true&opt_id”+id+”&sign=”+encode;

//发起请求
String s = api.sendPost(pddUtil.getURL(), param);

//打印结果
return s;
结果:到此拼多多结束
最后记录,推广采用优惠券,调用接口为:1、pdd.ddk.goods.search 2、pdd.ddk.goods.promotion.url.generate即可最后结果为 拼多多接口有返回数据,对应的可以拉起拼多多或者就网页等可以自行选择

做了工具类,经过工具类就可以直接这样:

不需要去自己拼接,不需要注意参数的顺序,工具类已经上传。

PS:若是注册的多多客,应用是多多客(即我文章这种,当你应用审核通过之后拿到了client_id以后,需要到http://jinbao.pinduoduo.com/ 多多进宝去绑定client_id)否则没有权限调用API

二、淘宝

1、进入 淘宝开发者平台 http://open.taobao.com/ 进行开发者注册

2、进入创建应用,创建成功能够得到appkey和appsecret

3、下载sdk,进入控制台,进入其中一个应用的SDK下载页面,选择自己语言的sdk下载

4、Java下载出来就俩jar包加上一个空文件夹 进行引用


com.taobao
taobao-sdk-java-auto_1468685308771
20181109


com.taobao
taobao-sdk-java-auto_1468685308771-20181109
source

具体怎么引入可以百度maven怎么引入外部jar包(我这里大概说下1、pom.xml中配置好,名字随便取,只要taobao-sdk-java-auto_1468685308771-20181109这里和jar包名字一样即可。2、写好之后点击Import Changes就会自动生成对应的文件夹还会有几个几kb的文件。3、找到.m2文件夹,然后跟着顺序找到source这个文件夹,把jar包复制进去即可 例如:C:\Users\Administrator\.m2\repository\com\taobao\taobao-sdk-java-auto_1468685308771-20181109\source)

5、查看 淘宝客api 进行调用(看看调用以及示例)淘宝只要引入了jar包就可以直接使用对象方便快捷。

结果:

//构建系统参数
TaobaoClient client = new DefaultTaobaoClient(url, appkey, appsecret);

//构建可变参数
TbkDgItemCouponGetRequest req = new TbkDgItemCouponGetRequest();
req.setAdzoneId(56322550367L);
req.setQ(name);
req.setPageSize(20L);

//实例化请求类
TbkDgItemCouponGetResponse response = new TbkDgItemCouponGetResponse();
try {
//请求
response = client.execute(req);
} catch (ApiException e) {
e.printStackTrace();
}
//打印结果
return response.getResults();
通过swagger查看页面效果:

若是优惠券需要:1、taobao.tbk.item.get(商品查询接口) 2、taobao.tbk.dg.item.coupon.get 在进行一点匹配,判断操作即可

结果:
PS:若是要区分天猫或者淘宝,判断 user_type Number 1 卖家类型,0表示集市,1表示商城

PS:对于淘宝的商品详情

第一种采用爬取,根据接口返回的详情页转换为h5手机页面,然后爬取图片。

第二种是采用第三方,如大淘客啥的等通过第三方平台查询(数据没那么同步,有的查询不到)。

第三种采用接口,淘宝接口查询详情。

到此淘宝结束

三、京东

1、进入京东联盟 https://media.jd.com

2、创建 应用(根据需要是网站还是app)

3、审核通过(7个工作日)之后,在推广管理里面找到你的app或者网站,点击查看,获得appkey和secretkey

4、下载sdk(这里有个坑,京东联盟里面死都找不到进入sdk的路径最后问的客服>_<)https://news.jd.com/153\_1.html 下载下来就一个jar包

5、项目引入sdk


com.jingdong
jd-cps-client
1.0

6、若没有引用好,就如上面的拼多多,那就只能自己拼接写原生

public Object test(){
//设置参数
Map map = new TreeMap();
SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);//时间格式
map.put(“timestamp”, sdf.format(new Date()));
map.put(“v”, “1.0”);
map.put(“sign_method”, “md5”);
map.put(“format”, “json”);
map.put(“method”, “jd.union.open.order.query”);
//param_json为空的时候需要写成 “{}“
map.put(“param_json”, “{\“orderReq\“:{\“time\“:\“20181112\“,\“pageNo\“:1,\“pageSize\“:20,\“type\“:1}}“);
map.put(“access_token”, accessToken);
map.put(“app_key”, appKey);

  1. StringBuilder sb = new StringBuilder(appSecret);//应规则首尾加上appSecret
  2. for (Map.Entry entry : map.entrySet()) \{
  3. String name = (String) entry.getKey();
  4. String value = (String) entry.getValue();
  5. //检测参数是否为空
  6. if (this.areNotEmpty(new String\[\]\{name, value\})) \{
  7. sb.append(name).append(value);
  8. \}
  9. \}
  10. sb.append(appSecret);//应规则首尾加上appSecret
  11. //生成签名
  12. String encode = MD5Util.encode(sb.toString());
  13. //拼接请求参数
  14. String prarm = "sign="+encode+"&timestamp="+map.get("timestamp")+"&v=1.0"+
  15. "&sign\_method=md5&format=json&method=jd.union.open.order.query"+
  16. "&param\_json=\{\\"orderReq\\":\{\\"time\\":\\"20181112\\",\\"pageNo\\":1,\\"pageSize\\":20,\\"type\\":1\}\}"+
  17. "&access\_token="+accessToken+"&app\_key="+appKey;
  18. String s = api.sendPost(SERVER\_URL, prarm);//发送post请求
  19. //打印
  20. return s;
  21. \}

若引用上了,则可以使用类

public Object test2(){
//构建系统参数
JdClient client=new DefaultJdClient(SERVER_URL,accessToken,appKey,appSecret);

  1. //实例化封装请求参数类
  2. UnionOpenOrderQueryRequest unionOpenOrderQueryRequest = new UnionOpenOrderQueryRequest();
  3. //设置变动参数
  4. OrderReq orderReq = new OrderReq();
  5. orderReq.setPageNo(1);
  6. orderReq.setPageSize(3);
  7. orderReq.setType(1);
  8. orderReq.setTime("2018092018");
  9. //封装
  10. unionOpenOrderQueryRequest.setOrderReq(orderReq);
  11. //请求
  12. UnionOpenOrderQueryResponse response = null;
  13. try \{
  14. response= client.execute(unionOpenOrderQueryRequest);
  15. \} catch (JdException e) \{
  16. e.printStackTrace();
  17. \}
  18. //打印结果
  19. return response;
  20. \}

若生成优惠券~~还需要申请权限。。麻烦,后面在发

京东开始只能采取嵌入广告的形式,等订单量起来了,才能申请权限。具体京东开放平台有写,就是获取京东的代码放到自己的app或者网站里面,达到推广的效果。
-——————————
作者:pan_y95
来源:CSDN
原文:https://blog.csdn.net/pan\_y95/article/details/84106871
版权声明:本文为博主原创文章,转载请附上博文链接!

发表评论

表情:
评论列表 (有 0 条评论,748人围观)

还没有评论,来说两句吧...

相关阅读