Administrator
2025-03-18 124c85c184236ae4efa1047c4c203b0815ad215a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
package com.taoke.autopay.utils.order;
 
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.taoke.autopay.dto.DYOrderDto;
import com.taoke.autopay.dto.DYSkuOrderDto;
import com.taoke.autopay.dto.DYSubsidyDto;
import com.taoke.autopay.exception.KeyOrderException;
import com.taoke.autopay.utils.Constant;
import com.taoke.autopay.utils.HttpUtil;
import com.taoke.autopay.utils.JsonUtil;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
/**
 * @author hxh
 * @title: DYOrderApi
 * @description: 抖音订单接口
 * @date 2024/6/14 17:47
 */
public class DYOrderApi {
    private static Logger logger = LoggerFactory.getLogger("dyorderApiLogger");
 
    private static Gson gson=JsonUtil.getSimpleGson();
 
    private static String requestByOrderNo1(String orderNo) {
        String url = String.format("https://api.youihuo.com/open/order.getFreeOrder?apiKey=sTIFFTyunIFZfp5i4V6g19PN9biudl4v&orderId=%s", orderNo);
        String result = HttpUtil.get(url);
        System.out.println(result);
        return result;
    }
 
    private static String requestByOrderNo2(String orderNo) {
        String url = String.format("https://api.bpshe.com/mall/douyinOMS/getSubsidyOrderInfo?appKey=cdaef330f1324961a73e15a85ab67fd2&orderId=%s", orderNo);
        Map<String,String> headers=new HashMap<>();
        headers.put("Accept","application/json;charset=utf-8");
        String result = HttpUtil.get(url, headers);
        return result;
    }
 
    private static DYOrderDto getOrderDetail1(String orderNo) throws KeyOrderException {
        String result = requestByOrderNo1(orderNo);
        try {
            JSONObject root = JSONObject.fromObject(result);
            if (root.optInt("code") != 1000) {
                logger.error(String.format("抖音订单查询出错(超享佣):%s - %s", orderNo, result));
                throw new KeyOrderException(root.optString("message"));
            }
            JSONObject data = root.optJSONObject("data");
            DYOrderDto dto = JsonUtil.getSimpleGson().fromJson(data.toString(), DYOrderDto.class);
            dto.setOrderChannel(Constant.ORDER_CHANNEL_CYX);
            return dto;
        }catch(Exception e){
            throw new KeyOrderException(e.getMessage());
        }
    }
 
    private static DYOrderDto getOrderDetail2(String orderNo) throws KeyOrderException {
        String result = requestByOrderNo2(orderNo);
        logger.info(String.format("爆品社接口%s:%s", orderNo, result));
        System.out.println(result);
        JSONObject data = null;
        try {
            JSONObject root = JSONObject.fromObject(result);
            if (root.optInt("errCode") != 0) {
                logger.error(String.format("抖音订单查询出错(爆品社):%s - %s", orderNo, result));
                throw new KeyOrderException(root.optString("errMsg"));
            }
            data = root.optJSONObject("data");
        }catch(Exception e){
 
        }
        if(data==null){
            logger.error(String.format("抖音订单查询无数据(2):%s - %s",orderNo, result));
            throw new KeyOrderException("订单查询无数据");
        }
        if(!data.optBoolean("subsidyFullyCoversOrder")){
            throw new KeyOrderException("不满足支付条件");
        }
 
 
        JSONObject orderDetailData = data.optJSONObject("orderDetail");
 
        if(orderDetailData==null){
            logger.error(String.format("订单无数据(2):%s - %s",orderNo, result));
            throw new KeyOrderException("订单无数据");
        }
        orderDetailData = orderDetailData.optJSONObject("shop_order_detail");
        DYOrderDto dyOrder =   gson.fromJson(orderDetailData.toString(),DYOrderDto.class);
        dyOrder.setOrderChannel(Constant.ORDER_CHANNEL_BPS);
        return  dyOrder;
    }
 
 
    public static DYOrderDto getOrderDetail(String orderNo) throws KeyOrderException {
        DYOrderDto dto=null;
        List<KeyOrderException> exceptions=new ArrayList<>();
        try {
            dto = getOrderDetail1(orderNo);
        }catch(KeyOrderException e){
            exceptions.add(e);
        }
        if(dto==null){
            try {
                dto = getOrderDetail2(orderNo);
            }catch(KeyOrderException e){
                exceptions.add(e);
            }
        }
 
        if(dto!=null){
            return dto;
        }
        String exception="";
        for(KeyOrderException e:exceptions){
            exception+=e.getMessage()+";";
        }
       throw new KeyOrderException(exception);
    }
 
    public static void main(String[] args) throws Exception {
//        DYOrderDto dto = (DYOrderApi.getOrderDetail("6932591080266339994"));
//        DYOrderDto result = getOrderDetail("6933551928932504940");
//        System.out.println(result);
        System.out.println(getOrderDetail("6934328696568616274"));
    }
 
}