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

记录:

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

一、拼多多

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

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&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包加上一个空文件夹 进行引用

       

<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表示商城

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

<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);//应规则首尾加上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);//应规则首尾加上appSecret
    
        //生成签名
        String encode = MD5Util.encode(sb.toString());

        //拼接请求参数
        String prarm = "sign="+encode+"&timestamp="+map.get("timestamp")+"&v=1.0"+
                "&sign_method=md5&format=json&method=jd.union.open.order.query"+
                "&param_json={\"orderReq\":{\"time\":\"20181112\",\"pageNo\":1,\"pageSize\":20,\"type\":1}}"+
                "&access_token="+accessToken+"&app_key="+appKey;
        
        String s = api.sendPost(SERVER_URL, prarm);//发送post请求

        //打印
        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;
    }

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

 

京东开始只能采取嵌入广告的形式,等订单量起来了,才能申请权限。具体京东开放平台有写,就是获取京东的代码放到自己的app或者网站里面,达到推广的效果。

相关推荐
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页