package com.tjjp.test;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.log4j.Logger;
import net.sf.json.JSONObject;
import com.taobao.api.ApiException;
import com.taobao.api.DefaultTaobaoClient;
import com.taobao.api.TaobaoClient;
import com.taobao.api.domain.NTbkItem;
import com.taobao.api.internal.util.WebUtils;
import com.taobao.api.request.TbkCouponGetRequest;
import com.taobao.api.request.TbkItemInfoGetRequest;
import com.taobao.api.request.TbkPrivilegeGetRequest;
import com.taobao.api.request.TbkTpwdCreateRequest;
import com.taobao.api.response.TbkCouponGetResponse;
import com.taobao.api.response.TbkCouponGetResponse.MapData;
import com.taobao.api.response.TbkItemInfoGetResponse;
import com.taobao.api.response.TbkPrivilegeGetResponse;
import com.taobao.api.response.TbkPrivilegeGetResponse.RpcResult;
import com.taobao.api.response.TbkTpwdCreateResponse;
import com.tjjp.bean.TBAuthorCode;
public class TaobaoApiService {
private static final Logger logger = Logger.getLogger(TaobaoApiService.class);
private static final String url = "http://gw.api.taobao.com/router/rest";
private static final String appkey = "XXX";
private static final String secret = "XXXa";
/**
* @param num_iid
* @param platform 链接形式:1:PC,2:无线
* @return
*/
public NTbkItem getNTbkItemByID(Long num_iid,Long platform) {
if(num_iid == null)
return null;
TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret);
TbkItemInfoGetRequest req=new TbkItemInfoGetRequest();
req.setPlatform(platform);
req.setNumIids(String.valueOf(num_iid));
req.setFields("num_iid,title,pict_url,small_images,reserve_price,zk_final_price,user_type,provcity,item_url,volume,nick,seller_id");
NTbkItem item = null;
try {
TbkItemInfoGetResponse response = client.execute(req);
List<NTbkItem> idlist = response.getResults();
if(idlist != null && idlist.size() > 0){
item = idlist.get(0);
}
} catch (ApiException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return item;
}
/**
* 授权 获取
*/
/**
* 单品券高效转链API
* @param num_iid
* @param adzoneId
* @param siteid
* @param platform 链接形式:1:PC,2:无线
* @return
*/
public RpcResult convertItem(Long num_iid,Long adzoneId,Long siteid,Long platform,String sessionKey) {
if(num_iid == null)
return null;
TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret);
TbkPrivilegeGetRequest req = new TbkPrivilegeGetRequest();
req.setItemId(num_iid);
req.setAdzoneId(adzoneId);
req.setPlatform(platform);
req.setSiteId(siteid);
//req.setMe("m%3D2%26s%3D94BYV45NHwgcQipKwQzePOeEDrYVVa64LKpWJ%2Bin0XLjf2vlNIV67pL2V8ikcqW7FfrEfJ4hp2q5rze35H1YEElKMSinFVD02hfsaefZn7H4%2Ff3V");
RpcResult result = null;
try {
TbkPrivilegeGetResponse response = client.execute(req,sessionKey);
System.out.println(response.getBody());
result = response.getResult();
} catch (ApiException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
/**
* 从商品链接获取淘宝商品id
* @param urlStr
* @return
*/
public String getTaobaoItemidFromurl(String urlStr){
Pattern p = null;
Matcher m = null;
String regEx_html = null;
String itemid = null;
urlStr = urlStr + "&mytest=1";
if(urlStr.toLowerCase().trim().contains("ju.taobao.com"))
regEx_html = "(http|https)://.*?&item_id=(.*?)&.*?";
else
regEx_html = "(http|https)://.*?&id=(.*?)&.*?";
p = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
m = p.matcher(urlStr);
if(m.find()){
itemid = m.group(2);
}
if(itemid == null){
regEx_html = "(http|https)://.*?\\?id=(.*?)&.*?";
p = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
m = p.matcher(urlStr);
if(m.find()){
itemid = m.group(2);
}
}
if(itemid == null){
regEx_html = "(http|https)://.*?&item_num\\_id=(.*?)&.*?";
p = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
m = p.matcher(urlStr);
if(m.find()){
itemid = m.group(2);
}
}
if(itemid == null){
regEx_html = "(http|https)://.*?\\?item_num\\_id=(.*?)&.*?";
p = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
m = p.matcher(urlStr);
if(m.find()){
itemid = m.group(2);
}
}
if(itemid == null){
regEx_html = "(http|https)://.*?&default_item_id=(.*?)&.*?";
p = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
m = p.matcher(urlStr);
if(m.find()){
itemid = m.group(2);
}
}
if(itemid == null){
regEx_html = "(http|https)://.*?&item_id=(.*?)&.*?";
p = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
m = p.matcher(urlStr);
if(m.find()){
itemid = m.group(2);
}
}
if(itemid == null){
regEx_html = "(http|https)://.*?&itemId=(.*?)&.*?";
p = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
m = p.matcher(urlStr);
if(m.find()){
itemid = m.group(2);
}
}
if(itemid == null){
if(urlStr.contains("://a.m.tmall.com/")){
regEx_html = "(http|https)://a.m.tmall.com/i(.+?).htm.*?";
p = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE);
m = p.matcher(urlStr);
if(m.find()){
itemid = m.group(2);
}
}
}
return itemid;
}
/**
* 获取优惠券信息
* @param couponlink
* @return
*/
public MapData getCoupondetail(String couponlink){
TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret);
int pos = couponlink.indexOf("?e=");
String me = null;
if(pos == -1){
pos = couponlink.indexOf("&e=");
}
if(pos != -1){
int pos1 = couponlink.indexOf("&",pos + 3);
if(pos1 == -1){
me = couponlink.substring(pos + 3);
}else{
me = couponlink.substring(pos + 3,pos1);
}
}
if(me == null)
return null;
TbkCouponGetRequest req = new TbkCouponGetRequest();
req.setMe(me);
MapData data = null;
try {
TbkCouponGetResponse rsp = client.execute(req);
data = rsp.getData();
} catch (Exception e) {
e.printStackTrace();
}
return data;
}
/**
* 获取优惠券信息
* @param itemid-商品ID,优惠劵链接
* @return
*/
public MapData getCoupondetail(Long itemid,String Juanlink ){
TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret);
int pos = Juanlink.indexOf("?activityId=")+9;
String activityId = null;
if(pos == -1){
pos = Juanlink.indexOf("&activityId=")+9;
}
if(pos != -1){
int pos1 = Juanlink.indexOf("&",pos + 3);
if(pos1 == -1){
activityId = Juanlink.substring(pos + 3);
}else{
activityId = Juanlink.substring(pos + 3,pos1);
}
}
if(activityId == null)
return null;
TbkCouponGetRequest req = new TbkCouponGetRequest();
//req.setMe(me);
req.setItemId(itemid);
req.setActivityId(activityId);
MapData data = null;
try {
TbkCouponGetResponse rsp = client.execute(req);
data = rsp.getData();
} catch (Exception e) {
e.printStackTrace();
}
return data;
}
/**
* 创建淘口令
* @param productname
* @param purl s.click.taobao or uland.taobao.com
* @param pic
* @return
*/
public com.taobao.api.response.TbkTpwdCreateResponse.MapData createTpwd(String productname,String purl,String pic){
TaobaoClient client = new DefaultTaobaoClient(url, appkey, secret);
TbkTpwdCreateRequest req = new TbkTpwdCreateRequest();
req.setText(productname);
req.setUrl(purl);
req.setLogo(pic);
com.taobao.api.response.TbkTpwdCreateResponse.MapData data = null;
try {
TbkTpwdCreateResponse rsp = client.execute(req);
data = rsp.getData();
} catch (Exception e) {
e.printStackTrace();
}
return data;
}
/**
* 解析授权地址
* @param URL
* @return 0 授权码,1 淘宝用户昵称
*/
public List<String> getAuthor(String URL){
List<String> list=new ArrayList<String>();
{
int pos = URL.indexOf("access_token")+10;
String author = null;
if(pos != -1){
int pos1 = URL.indexOf("&",pos + 3);
if(pos1 == -1){
author = URL.substring(pos + 3);
}else{
author = URL.substring(pos + 3,pos1);
}
}
//获取授权码
list.add(author);
}
return list;
}
/**
* PID解析
* @param PID
* @return 0 第一段,1 Site_id(第二段),2 adzone_id(第三段)
*/
public List<String> getPIDArr(String PID){
List<String> list=new ArrayList<String>();
String[] split = PID.split("_");
if(split.length!=4){
list.add("-1");
}
list.add(split[1]);
list.add(split[2]);
list.add(split[3]);
return list;
}
public static void main(String[] args) throws ApiException {
TaobaoApiService ta = new TaobaoApiService();
/* MapData coupondetail = ta.getCoupondetail("https://uland.taobao.com/coupon/edetail?e=obz5L6mJDswGQASttHIRqYvn9NU0Ylfc8s%2Bz5%2F%2FStC%2Fgdt5X0LhTyqvnv6Z1EEuDQYkhs0smMAO1Drc6SM9W4pQ5wfGz%2Fu%2BNoj%2Fe548bdaxFZsD%2BskSig7EsC315c4LYTOhfayx5xRwjDCBxCTMwAA%3D%3D&traceId=0bb7efd015213548431245460e");
System.out.println(coupondetail);*/
//ta.createTpwd(productname, purl, pic)
//优惠劵转链接 Test
/* String AuthorUrl="https://oauth.taobao.com/oauth2?view=web#access_token=700001005340f169b8c7e751485d2ebb306cda83cb79fa10dc1a391bf79f64ba31ab4d82734718445&token_type=Bearer&expires_in=2592000&refresh_token=7000110163427581a4b5be97915d6dba6fc35d4a3eb17c13deced549b758a4d68be4e4d2734718445&re_expires_in=0&r1_expires_in=2592000&r2_expires_in=259200&taobao_user_id=2734718445&taobao_user_nick=luoyuan357148766&w1_expires_in=2592000&w2_expires_in=1800&state=&top_sign=FF56C5AEA9835CE7AFB3D7A63E398C2A";
List<String> list = ta.getAuthor(AuthorUrl);
System.out.println(list);
Long numid=546602105013L;
String PID="mm_119373568_17560524_63624211";
RpcResult result = ta.convertItem(numid,63624211L,17560524L,1L,list.get(0));
String couponClikURL= result.getData().getCouponClickUrl();
System.out.println(couponClikURL);
com.taobao.api.response.TbkTpwdCreateResponse.MapData tpwd = ta.createTpwd("食物网45654",couponClikURL,"http://gaitaobao4.alicdn.com/tfscom/i8/TB1uOqidkSWBuNjSszdYXHeSpXa_M2.SS2_300x300q90.jpg_.webp");
System.out.println(tpwd.getModel());*/
// ta.codeGetRefresh_token("uiPks8kkuKLb5Nra6UkKN1tM185461");
// String taobaoItemidFromurl = ta.getTaobaoItemidFromurl("https://detail.tmall.com/item.htm?id=564039375909");
// System.out.println(taobaoItemidFromurl);
// //获取商品详情
// NTbkItem item = ta.getNTbkItemByID(Long.parseLong(taobaoItemidFromurl), 1l);
// List<String> ss = item.getSmallImages();
// String clickUrl = item.getClickUrl();
// System.out.println(clickUrl);
// System.out.println(item);
// for (String p : ss) {
// System.out.println(p);
// }
// String a="";
// if(a.isEmpty()){
// System.out.println("00.0.");
// }
// RpcResult result = ta.convertItem(561228324011L, 141380821L, 17506597L, 1L,"xxx");
// if(result != null){
// System.out.println(result.getData().getCouponClickUrl());
// }
MapData d = ta.getCoupondetail(550101189675L,"https://uland.taobao.com/quan/detail?activityId=2f40c648a2fd49409bf0264a8e872dee&sellerId=2985208698");
logger.info(d.getCouponRemainCount());
logger.info(d.getCouponAmount());
logger.info(d.getCouponStartFee());
// com.taobao.api.response.TbkTpwdCreateResponse.MapData ds = ta.createTpwd("nihao你电费单的的", "https://uland.taobao.com/coupon/edetail?e=aRu2sKAYW5EGQASttHIRqfwQArgEotTmrejLLGYEXAGz9dptthbpIrfohRrUI2TwtIO4mlT8XMqvvm9ZGKbE7b9fwBwwUiqlcCoFqbpg3AQmuWBlXFVRhPSs4zOlZ4se&traceId=0ab84a5815106646837662077e&activityId=ab6d00761ea24c3aa6792cb89efb7fa0&itemId=551417989280","http://ui.51bi.com/opt/siteimg/super/hd/2017/11/14/3b3b0298-deca-4011-ad0a-7b78c9680851.jpg");
// logger.info(ds.getModel());
}
}
测试授权