需求
通过调京东财务余额接口,在项目中显示京东方的财务余额。
思路
思路如下:
- 熟悉京东接口文档
- 通过apifox来测试接口是否能成功获取数据
- 去nacos写好相应配置文件
- 开发
实现
配置JDConfigProperties
**
* @Description: 京东分配给分销商的参数
*/
@RefreshScope
@Configuration
@ConfigurationProperties(prefix = "jd.openapi")
@Setter
@Getter
public class JDConfigProperties {
private String grantType;//获取accesstoken接口的固定值,access_token
private String clientId;//对接账号
private String clientSecret;//由京东分配
private String userName;//京东用户名
private String password;//京东的密码
private String url;//对接京东的接口地址,配置示例:https://bizapi.jd.com
//接口地址
private String accessToken;//获取AccessToken接口,配置示例:/oauth2/access_token
private String refreshToken;//刷新AccessToken接口,配置示例:/oauth2/refreshToken
/**
* 查询余额接口
*/
private String queryBalance;
/**
* 查询余额变动明细接口
*/
}
京东财务余额Controller
/**
* @Description: 京东财务余额Controller
*/
@RestController
@Slf4j
@AllArgsConstructor
@RequestMapping("/jdbalance")
@Api(value = "jdbalance", tags = "京东财务余额API")
public class JDBalanceController {
@Autowired
private JDBalanceService jinDongBalanceService;
@GetMapping("/callbackUnionBalance")
public R callbackUnionBalance(){
return R.ok(jinDongBalanceService.handleCallbackUnionBalance());
}
}
京东财务余额Service
/**
* @Description: 京东财务余额Service
*/
public interface JDBalanceService {
/**
* @Description: 触发查询余额回调
*/
JSONObject handleCallbackUnionBalance();;
}
京东财务余额ServiceImpl
/**
* @Description: 京东财务余额ServiceImpl
*/
@Service
@Slf4j
@AllArgsConstructor
public class JDBalanceServiceImpl implements JDBalanceService {
@Autowired
private JDConfigProperties jDConfigProperties;
@Override
public JSONObject handleCallbackUnionBalance() {
Map<String, String> params = new HashMap<>();
params.put("token", "");
params.put("pin", "");
params.put("type", "");
String callbackUnionBalancerPath= jDConfigProperties.getQueryBalance();
JSONObject result = handle(callbackUnionBalancerPath, params);
return result;
}
private JSONObject handle(String path, Map<String, String> params) {
String url = jDConfigProperties.getUrl() + path;
log.info("请求url={}, params={}", url, params);
// 执行请求
String respStr = JDHttpUtils.httpPost(url, params);
JSONObject js = new JSONObject(respStr);
if (!JSONUtil.isJson(respStr)) {
log.warn("查询余额明细返回的信息不是JSON格式,实际为[{}]", respStr);
return js;
}
JSONObject jsResult = null;
if (js.getStr(JDConstants.RESULTCODE).equals(JDResponseCode.SUCCESS)) {
jsResult = js.getJSONObject(JDConstants.RESULT);
}
return jsResult;
}
}