【项目】实现对接京东余额查询接口

需求

通过调京东财务余额接口,在项目中显示京东方的财务余额。

思路

思路如下:

  1. 熟悉京东接口文档
  2. 通过apifox来测试接口是否能成功获取数据
  3. 去nacos写好相应配置文件
  4. 开发

实现

配置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;
	}

}

猜你喜欢

转载自blog.csdn.net/someday____/article/details/129280915