admin
2021-07-30 19533a17aa55fafc70d0a385928e785cb50e1ebc
src/main/java/com/yeshi/buwan/pptv/PPTVApiUtil.java
@@ -1,27 +1,38 @@
package com.yeshi.buwan.pptv;
import com.google.gson.Gson;
import com.yeshi.buwan.pptv.entity.PPTVGoodsInfo;
import com.yeshi.buwan.pptv.entity.PPTVProgram;
import com.yeshi.buwan.pptv.entity.PPTVSeries;
import com.yeshi.buwan.util.StringUtil;
import com.yeshi.buwan.util.TimeUtil;
import com.yeshi.buwan.util.log.LoggerUtil;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.yeshi.utils.HttpUtil;
import java.lang.reflect.Field;
import java.net.URLEncoder;
import java.util.*;
public class PPTVApiUtil {
    static Logger logger = LoggerFactory.getLogger(PPTVApiUtil.class);
    private final static String APP_KEY = "eb324ec4439e193c38fd8d7fdbdae9af";
    private final static String APP_SECRET = "163cf4fa3780091e61a48c6abb6246d3";
    private final static String CHANNEL_ID = "111111";
    //正式
    public final static String APP_KEY = "9227024a6c540a7f8571d75c469da9ba";
    private final static String APP_SECRET = "f3e922ac18f9da6c816d3012f8b7e575";
    //测试
//    private final static String APP_KEY = "eb324ec4439e193c38fd8d7fdbdae9af";
//    private final static String APP_SECRET = "163cf4fa3780091e61a48c6abb6246d3";
    public final static String CHANNEL_ID = "253350";
    private final static String CANAL = "buwan";
    private static String getBase64(String str) {
        String st = StringUtil.getBase64(str).replace("\r\n", "");
@@ -110,7 +121,7 @@
    }
    private static List<PPTVSeries> getList(String method) {
        String result = baseRequest(null, method);
        String result = baseRequest(new HashMap<>(), method);
        logger.error(result);
        List<String> list = parseUrls(result);
        List<PPTVSeries> totalList = new ArrayList<>();
@@ -136,11 +147,60 @@
    }
    public static PPTVSeries getDetail(String seriesCodes) {
        Gson gson = new Gson();
        Map<String, String> params = new HashMap<>();
        params.put("seriesCodes", seriesCodes);
        String result = baseRequest(params, "pptv.channel.content.detail");
        System.out.println(result);
        return null;
        JSONObject resultJSON = JSONObject.fromObject(result);
        JSONArray array = resultJSON.optJSONObject("response").optJSONObject("body").optJSONArray("contentInfos");
        List<PPTVProgram> programList = new ArrayList<>();
        PPTVSeries pptvSeries = null;
        for (int i = 0; i < array.size(); i++) {
            JSONObject item = array.optJSONObject(i);
            if (pptvSeries == null)
                pptvSeries = gson.fromJson(item.toString(), PPTVSeries.class);
            PPTVGoodsInfo goodsInfo = new PPTVGoodsInfo();
            goodsInfo.setGoodsNo(item.optString("goodsNo"));
            goodsInfo.setGoodsName(item.optString("goodsName"));
            goodsInfo.setStatus(item.optString("goodsStatus"));
            goodsInfo.setIsNoVipPricing(item.optString("isNoVipPricing"));
            goodsInfo.setIsTicket(item.optString("isTicket"));
            goodsInfo.setIsVipPricing(item.optString("isVipPricing"));
            pptvSeries.setGoodsInfo(goodsInfo);
            List<String> keys = new ArrayList<>();
            for (Iterator<String> its = item.keys(); its.hasNext(); ) {
                String key = its.next();
                if (!key.contains("series_")) {
                    keys.add(key);
                }
            }
            for (String key : keys) {
                item.remove(key);
            }
            String itemStr = item.toString().replace("series_", "");
            JSONObject pitem = JSONObject.fromObject(itemStr);
            goodsInfo = new PPTVGoodsInfo();
            goodsInfo.setGoodsNo(pitem.optString("goodsNo"));
            goodsInfo.setGoodsName(pitem.optString("goodsName"));
            goodsInfo.setStatus(pitem.optString("goodsStatus"));
            goodsInfo.setIsNoVipPricing(pitem.optString("isNoVipPricing"));
            goodsInfo.setIsTicket(pitem.optString("isTicket"));
            goodsInfo.setIsVipPricing(pitem.optString("isVipPricing"));
            PPTVProgram program = gson.fromJson(itemStr, PPTVProgram.class);
            program.setGoodsInfo(goodsInfo);
            programList.add(program);
        }
        pptvSeries.setSeries(programList);
        return pptvSeries;
    }
@@ -153,10 +213,21 @@
    public static String getOpenId(String uid) {
        Map<String, String> params = new HashMap<>();
        params.put("uid", uid);
//        String result = baseRequest("https://coapi.pptv.com/coapi-web/api/http/sopRequest", params, "pptv.channel.openid.get");
        String result = baseRequest("https://coapi.pptv.com/coapi-web/api/http/sopRequest", params, "pptv.channel.openid.get");
        logger.info(result);
        System.out.println(result);
        JSONObject resultJSON = JSONObject.fromObject(result);
        return resultJSON.optJSONObject("response").optJSONObject("body").optString("openId");
        JSONObject response = resultJSON.optJSONObject("response");
        if (StringUtil.isNullOrEmpty(response.optString("error_code")))
            return response.optJSONObject("body").optString("openId");
        return null;
    }
    public static void getVIPPriceList() {
        Map<String, String> params = new HashMap<>();
        String result = baseRequest("https://coapi.pptv.com/coapi-web/api/http/sopRequest", params, "pptv.channel.goods.associator");
        System.out.println(result);
    }
@@ -165,15 +236,57 @@
     *
     * @param code
     */
    public static void login(String code) {
        String url = String.format("https://coapi.pptv.com/coapi-web/api/getUserToken/%s/%s.htm", APP_KEY, code);
        Map<String, String> params = new HashMap<>();
        params.put("code", code);
        String result = baseRequest(url, params, "");
        logger.info(result);
    public static boolean login(String code) {
        String url = String.format("https://coapi.pptv.com/coapi-web/api/getUserToken/%s/%s.htm", APP_KEY, URLEncoder.encode(code));
        String result = HttpUtil.get(url);
        System.out.println(result);
        JSONObject resultJSON = JSONObject.fromObject(result);
        return resultJSON.optInt("errCode") == 1;
    }
//        JSONObject resultJSON = JSONObject.fromObject(result);
//        return resultJSON.optJSONObject("response").optJSONObject("body").optString("openId");
    /**
     * 买商品
     *
     * @param openId
     * @param orderNo
     * @param goodsNo
     * @param orderTime
     * @return
     */
    public static boolean buyGoods(String openId, String orderNo, String goodsNo, Date orderTime) {
        Map<String, String> params = new HashMap<>();
        params.put("openId", openId);
        params.put("canal", CHANNEL_ID);
        params.put("channel", "yeshi");
        params.put("goodsNo", goodsNo);
        params.put("outOrderId", orderNo);
        params.put("orderTime", TimeUtil.getGernalTime(orderTime.getTime(), "yyyy-MM-dd HH:mm:ss"));
        params.put("sign", StringUtil.Md5(String.format("%s&%s&%s&%s", openId, params.get("channel"), orderNo, "2MnD8nCWu7EzbiJ")));
        String result = get("http://billing.api.pptv.com/cusp/jointMember", params);
        LoggerUtil.getVIPLogger().info("开通会员-订单号:{},结果:{}", orderNo, result);
        System.out.println(result);
        JSONObject data = JSONObject.fromObject(result);
        if (data.optInt("errorCode") == 0) {
            return true;
        }
        return false;
    }
    private static String get(String url, Map<String, String> params) {
        List<String> list = new ArrayList<>();
        for (Iterator<String> its = params.keySet().iterator(); its.hasNext(); ) {
            String key = its.next();
            list.add(key + "=" + URLEncoder.encode(params.get(key)));
        }
        url += "?" + org.yeshi.utils.StringUtil.concat(list, "&");
        System.out.println(url);
        return HttpUtil.get(url);
    }
    public static void main(String[] args) {
        //DA7559531560894
        buyGoods("257dfd950c20ad25dee9f99ef926c0f8", "buwan_100", "DA7559531560894", new Date());
    }