Appearance
简介
本文档以【采购风险管理】需求为案例,此需求里,云ERP需要调用返利接口,返利接口以AMS形式提供。
准备工作
- 首先需要对方提供接口,并确保对方已注册AMS接口
- 确定调用方使用的AMS配置(accessUrl、clientId、clientSecret)
步骤1:查看对方接口信息
对方提供接口文档信息,这里主要是先要看到接口地址,例如本次需求:
接口地址: POST /api/interfacingErp/query/collectionGroupNo
步骤2:确定我方AMS配置
确定我方AMS配置,配置到nacos里去,如果此模块已经有此配置,则无需重新配置

步骤3:找到我方AMS应用
- 登录AMS平台,进入【应用列表】菜单
- 根据上面看到的我方AMS配置,找到我们的应用

步骤4:订阅对方接口
- 点击应用的【授权】图标,打开【API授权】弹窗
- 查询对方接口信息(如果没查到,请先联系对方发布接口)
- 我们勾选需要的接口,并点击【确定】,即可完成接口订阅(生产环境可能还需要审核)

步骤5:查看订阅情况
- 点击应用的【查看】图标,打开【应用详情】
- 找到对应的接口,可以复制完整的调用url

步骤6:调用AMS接口
- AMS接口的调用方式就是基本的http请求(可以自行选择方便的技术选型),只需要在请求头里加上token信息
- 云ERP里,有一个工具类可以获取AMS的token 【com.jzt.weberp.common.config.cache.ams.AmsUtils】
- AmsUtils 有做缓存,但在以前的版本里,多个应用会共用同一个redisKey,可能导致token失效风险,请确认自己使用的工具版本
部分代码样例
java
private Map<String, String> getHeader() {
TokenInfo token = amsUtils.getToken(accessUrl, clientId, clientSecret);
Map<String, String> header = new HashMap<>();
header.put("Authorization", token.getTokenType() + " " + token.getAccessToken());
return header;
}
private R<PurchaseRiskPolicyCollectionApiWrapper> queryByApi(PurchaseRiskPolicyCollectionApiRequest request) {
String jsonStr = JSONUtil.toJsonStr(request);
String body;
try {
log.info("返利接口调用 - 入参:{}", jsonStr);
log.info("返利接口调用 - url:{}", getUrl());
// 调用接口
ApacheHttpUtil.ResponseContent resp = ApacheHttpUtil.postJson(getUrl(), getHeader(), jsonStr);
log.info("返利接口调用 - 返回:{}", resp);
if (!resp.isSuccess()) {
return R.error("返利接口调用 - 失败:" + resp);
}
body = resp.getBody();
if (StrUtil.isBlank(body)) {
return R.error("返利接口调用 - 返回空值:" + resp);
}
} catch (Exception e) {
log.error("返利接口调用 - 异常:{}", e.getMessage(), e);
return R.error("返利接口调用 - 异常:" + e.getMessage());
}
try {
// 解析body
PurchaseRiskPolicyCollectionApiResponse response = JSONUtil.toBean(body, PurchaseRiskPolicyCollectionApiResponse.class);
if (response.isSuccess()) {
return R.ok(response.getData());
} else {
return R.error(response.getMsg());
}
} catch (Exception e) {
log.error("返利接口调用 - 返参 body:{} 转换json异常:[{}]", body, e.getMessage(), e);
return R.error("返利接口调用 - 返参转换json异常,body:[" + body + "]");
}
}