接入淘寶客+拼多多(多多客)+京東進行優惠券推廣
記錄:
開發配置:java、jdk1.8、idea、springboot、windows
一、拼多多
2、進入控制檯,建立一個應用,選擇多多客聯盟(也可選擇其它),等待稽核通過。
3、稽核通過之後能夠拿到client_id和client_secret
4、(PS:因我本地maven沒安裝,因此只能用線上)在pom.xml中引入配置
<dependency> <groupId>javax.websocket</groupId> <artifactId>javax.websocket-client-api</artifactId> <version>1.0</version> </dependency> <dependency> <groupId>org.glassfish.tyrus.bundles</groupId> <artifactId>tyrus-standalone-client</artifactId> <version>1.13.1</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.6</version> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.10</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.11.1</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.11.1</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>2.11.1</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.3</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.11</version> </dependency>
具體配置可以參考 拼多多開發者文件->sdk指南,有明確標識有哪些jar包
然後先點選某個api,拉到最下面點選api工具測試,先測試是否可用(有的沒有許可權,需要申請)
最後在控制器裡面進行測試呼叫:拼多多是post請求,並且有簽名。看官網的教程是有類的,可以直接set設定值,但不知道為啥引入jar包之後還是不能用。就只能手動拼接
1、生成簽名,簽名的規則在sdk指南中有明確說明,對於資料進行首字母排序,並在資料的首尾加上client_secret
我個人用了兩種方式:第一,最原始的,自己看有哪些引數,然後一個一個拼接
//拼接簽名 String signD = pddUtil.client_secret +"client_id"+ pddUtil.client_id + "data_typeJSON" + "sort_type0" +"timestamp"+timestamp+ "typepdd.ddk.goods.search" + "with_coupontrue"+pddUtil.client_secret; //生成簽名 String encode = MD5Util.encode(signD);
第二種採用map,然後轉為string
//獲得時間戳(10位) long timeStampSec = System.currentTimeMillis()/1000; String timestamp = String.format("%010d", timeStampSec); //設定引數 Map<String, String> 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(); //檢測引數是否為空 if (this.areNotEmpty(new String[]{name, value})) { sb.append(name).append(value); } } 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×tamp="+
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
二、淘寶
2、進入建立應用,建立成功能夠得到appkey和appsecret
3、下載sdk,進入控制檯,進入其中一個應用的SDK下載頁面,選擇自己語言的sdk下載
4、Java下載出來就倆jar包加上一個空資料夾 進行引用
<dependency>
<groupId>com.taobao</groupId>
<artifactId>taobao-sdk-java-auto_1468685308771</artifactId>
<version>20181109</version>
</dependency>
<dependency>
<groupId>com.taobao</groupId>
<artifactId>taobao-sdk-java-auto_1468685308771-20181109</artifactId>
<version>source</version>
</dependency>
具體怎麼引入可以百度maven怎麼引入外部jar包(我這裡大概說下1、pom.xml中配置好,名字隨便取,只要<artifactId>taobao-sdk-java-auto_1468685308771-20181109</artifactId>這裡和jar包名字一樣即可。2、寫好之後點選Import Changes就會自動生成對應的資料夾還會有幾個幾kb的檔案。3、找到.m2資料夾,然後跟著順序找到<version>source</version>這個資料夾,把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表示商城
到此淘寶結束
三、京東
2、建立 應用(根據需要是網站還是app)
3、稽核通過(7個工作日)之後,在推廣管理裡面找到你的app或者網站,點選檢視,獲得appkey和secretkey
4、下載sdk(這裡有個坑,京東聯盟裡面死都找不到進入sdk的路徑最後問的客服>_<)https://news.jd.com/153_1.html 下載下來就一個jar包
5、專案引入sdk
<dependency>
<groupId>com.jingdong</groupId>
<artifactId>jd-cps-client</artifactId>
<version>1.0</version>
</dependency>
6、若沒有引用好,就如上面的拼多多,那就只能自己拼接寫原生
public Object test(){
Map<String, String> 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);
StringBuilder sb = new StringBuilder(appSecret);
for (Map.Entry entry : map.entrySet()) {
String name = (String) entry.getKey();
String value = (String) entry.getValue();
//檢測引數是否為空
if (this.areNotEmpty(new String[]{name, value})) {
sb.append(name).append(value);
}
}
sb.append(appSecret);
String encode = MD5Util.encode(sb.toString());
//拼接請求引數
String prarm = "sign="+encode+"×tamp="+map.get("timestamp")+"&v=1.0"+
"&sign_method=md5&format=json&method=jd.union.open.order.query"+
"¶m_json={\"orderReq\":{\"time\":\"20181112\",\"pageNo\":1,\"pageSize\":20,\"type\":1}}"+
"&access_token="+accessToken+"&app_key="+appKey;
ApiController api = new ApiController();
String s = api.sendPost(SERVER_URL, prarm);
return s;
}
若引用上了,則可以使用類
public Object test2(){
//構建系統引數
JdClient client=new DefaultJdClient(SERVER_URL,accessToken,appKey,appSecret);
//例項化封裝請求引數類
UnionOpenOrderQueryRequest unionOpenOrderQueryRequest = new UnionOpenOrderQueryRequest();
//設定變動引數
OrderReq orderReq = new OrderReq();
orderReq.setPageNo(1);
orderReq.setPageSize(3);
orderReq.setType(1);
orderReq.setTime("2018092018");
//封裝
unionOpenOrderQueryRequest.setOrderReq(orderReq);
//請求
UnionOpenOrderQueryResponse response = null;
try {
response= client.execute(unionOpenOrderQueryRequest);
} catch (JdException e) {
e.printStackTrace();
}
//列印結果
return response;
}
若生成優惠券~~~~~~~~~~還需要申請許可權。。麻煩,後面在發