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

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

@Service
@Slf4j
public abstract class BaseApiServiceImpl {/*** 获取公共参数** @param appSecret app类型* @param param     param请求参数* @return 公共参数*/public Map getPublicParam(String appSecret, Map 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 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 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 getSales(Map 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 公共参数*/@Overridepublic Map getPublicParam(String appSecret, Map param) {return super.getPublicParam(appSecret, param);}/*** 获取订单列表信息** @param salesReq  请求参数* @return          订单列表信息*/@Overridepublic GbApiResponse getSales(Map salesReq) {GbApiResponse result = new GbApiResponse<>();HashMap hashMap = new HashMap<>();hashMap.put("type",BG_GOODS_SALES_GET);//转换为maphashMap.putAll(salesReq);Map 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;}@Overridepublic String test(String s) {return s;}
}

4.使用到的类和配置

org.projectlomboklombokcn.hutoolhutool-all4.6.1
@Data
public class GbApiResponse {private Boolean success;private Integer errorCode;private String errorMsg;private T result;
}@Data
public class OrderListResp {/*** 总数*/private Integer total;/*** 订单信息*/private List subOrderList;
}

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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部