对接temu平台api的一个简单示例

文章展示了如何在Java中创建一个公共API服务基类,包含获取公共参数和请求接口的方法。此外,还定义了一个销售API接口,用于获取订单列表信息,并提供其实现类。代码利用了Hutool库进行参数处理和HTTP请求,以及Lombok进行代码简化。
摘要由CSDN通过智能技术生成

1.提供一个公共基类,公共方法都可以写到这里

@Service
@Slf4j
public abstract class BaseApiServiceImpl {

    /**
     * 获取公共参数
     *
     * @param appSecret app类型
     * @param param     param请求参数
     * @return 公共参数
     */
    public Map<String, String> getPublicParam(String appSecret, Map<String, String> param) {
        param.put("app_key", AppConfig.APP_KEY);
        param.put("access_token",param.get("accessToken"));
        param.put("data_type","JSON");
        param.put("timestamp",String.valueOf(System.currentTimeMillis()));
        //请求参数排序处理
        if (ObjectUtil.isNotEmpty(param)){
            List<String> list = param.keySet().stream().sorted(Comparator.comparing(String::valueOf)).collect(Collectors.toList());
            StringBuilder builder = new StringBuilder(appSecret);
            for (String key : list) {
                builder.append(key).append(param.get(key));
            }
            builder.append(appSecret);

            MD5 md5 = MD5.create();
            String sign = md5.digestHex(builder.toString()).toUpperCase();
            //设置签名
            param.put("sign",sign);
        }
        return param;
    }

    /**
     * 请求接口
     * @param url               请求路径
     * @param param             公共参数
     * @return                  响应结果
     */
    public static GbApiResponse getResponse(String url, Map<String, String> param){
        log.info("========>>>>>>> 请求url:{},参数:{}<<<<<<=======", url,JSONUtil.toJsonStr(param));
        String post = HttpUtil.post(url, JSONUtil.toJsonStr(param));
        log.info("==========>>>>>>>接口返回:{}<<<<<<=======", JSONUtil.toJsonStr(post));
        if (ObjectUtil.isNotEmpty(post)){
            GbApiResponse gbApiResponse = JSONUtil.toBean(post, GbApiResponse.class);
            if (gbApiResponse.getSuccess()){
                return gbApiResponse;
            }
            throw new RuntimeException("请求接口出错,响应结果:" + post);
        }
        throw new RuntimeException("请求接口出错,响应结果为空");
    }
}

2.提供一个接口,供外部调用

public interface SaleApi {
    /**
     * 获取订单列表信息
     * @param getSalesReq   请求参数
     * @return              订单列表信息
     */
    GbApiResponse<OrderListResp> getSales(Map<String, String> getSalesReq);

    String test(String s);
}

3.实现上述接口,具体的业务逻辑

@Service
@Slf4j
public class SaleApiServiceImpl extends BaseApiServiceImpl implements SaleApi {
    private static final String BG_GOODS_SALES_GET = "bg.goods.sales.get";
    /**
     * 获取公共参数
     *
     * @param appSecret app类型
     * @param param     param请求参数
     * @return 公共参数
     */
    @Override
    public Map<String, String> getPublicParam(String appSecret, Map<String, String> param) {
        return super.getPublicParam(appSecret, param);
    }

    /**
     * 获取订单列表信息
     *
     * @param salesReq  请求参数
     * @return          订单列表信息
     */
    @Override
    public GbApiResponse<OrderListResp> getSales(Map<String,String> salesReq) {
        GbApiResponse<OrderListResp> result = new GbApiResponse<>();
        HashMap<String, String> hashMap = new HashMap<>();
        hashMap.put("type",BG_GOODS_SALES_GET);
        //转换为map
        hashMap.putAll(salesReq);
        Map<String, String> publicParam = getPublicParam(AppConfig.APP_SECRET,hashMap);
        GbApiResponse response = getResponse(AppConfig.PATH, publicParam);
        OrderListResp orderListResp = JSONUtil.toBean(response.getResult().toString(), OrderListResp.class);
        result.setResult(orderListResp);
        result.setSuccess(response.getSuccess());
        return result;
    }

    @Override
    public String test(String s) {
        return s;
    }
}

4.使用到的类和配置

<dependencies>
        <!--简化对象封装的工具-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <!--引入hutool工具包-->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>4.6.1</version>
        </dependency>
    </dependencies>
@Data
public class GbApiResponse<T> {
    private Boolean success;
    private Integer errorCode;
    private String errorMsg;
    private T result;
}

@Data
public class OrderListResp {
    /**
     * 总数
     */
    private Integer total;
    /**
     * 订单信息
     */
    private List<SubOrderVo> subOrderList;
}

这里只展现部分,具体类请根据接口文档说明

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值