admin
2024-09-27 17caebabf7a6a529b7039c71e21e5a324e31ea20
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
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);
        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;
    }
 
    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 root = JSONObject.fromObject(result);
        if (root.optInt("errCode") != 0) {
            logger.error(String.format("抖音订单查询出错(爆品社):%s - %s",orderNo, result));
            throw new KeyOrderException(root.optString("errMsg"));
        }
        JSONObject data = root.optJSONObject("data");
        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"));
    }
 
}