wangzhenhui1991 / Notes

3 stars 0 forks source link

周报:2016.4.10-4.14 #34

Closed wangzhenhui1991 closed 7 years ago

wangzhenhui1991 commented 7 years ago

众安对接

  1. 对接众安API文档,获取众安API接口所需的权限:
    • appKey
    • 网关
    • 众安公钥
    • 易车私钥(暂用) 通过测试众安API提供的签名延签SDK,在预发布环境简单通过车辆查询接口以及车型查询接口
  2. 划分众安API接口的测试任务,
    • <车辆信息查询>,<车型信息查询>,<核保及订单确认>,<收银台>四个接口,编写测试类,
    • 完成对应接口所需的Request和Response实体类。

      PS:<核保及订单确认>的测试需要从<申请询价>获得insureFlowCode,并经过<实际车辆价格查询>及<报价>接口之后,才能走通正常流程。

  3. 对接众安收银台SDK,获取收银台所需:
    • 收银台MERCHANT_CODE
    • 收银台APP_KEY 初步测试获取收银台地址(payUrl)的拼接,完成以下测试:
    • [√] 支付成功时,同步回调到前端页面,
    • [√] 支付取消时,同步回调到前端页面;
    • [x] 待测:支付完成时,异步回调系统的服务端

      PS:由于异步回调需要提供个众安一个外网可访问的服务地址,并且由系统接受处理。

  4. 通过泛型和JSON.parseObject(),解决从JSON大量字段转为POJO的过程,详见ZhongAnApiServiceImpl.getResponseEntity();

        public static <T> T getResponseEntity(CommonResponse response, Class<T> clazz){
        //TODO 对错误异常的判断
        if(StringUtil.isNotBlank(response.getErrorCode())){
            return null;
        }
        return getResponseEntity(JSON.parseObject(response.getBizContent()).getJSONObject("responseResult"),clazz);
    }
    
    public static <T> T getResponseEntity(JSONObject json, Class<T> clazz) {
    
        return JSONObject.parseObject(json.toString(),clazz);
    }
  5. 完成对众安API接口(除收银台外)的流程测试,发现存在大量公共逻辑,对其进行抽象到callApiService(ZhongAnServiceEnum service, ZhongAnBaseRequest serviceRequest, Class<T> serviceResponse)

    private <T> T callApiService(ZhongAnServiceEnum service, ZhongAnBaseRequest serviceRequest, Class<T> serviceResponse) throws ZhongAnOpenException {
    
        CommonRequest request = new CommonRequest(service.serviceUrl);
        //业务参数
        JSONObject param = new JSONObject();
        param.put("requestParam", JSON.toJSONString(serviceRequest));
        request.setParams(param);
        //调用
        logger.info("开始调用众安API-{},request={}",service.serviceShowName,serviceRequest);
        CommonResponse response = (CommonResponse) getZhongAnApiClient().call(request);
        logger.info("结束调用众安API-{},response={}",service.serviceShowName,response);
        return getResponseEntity(response,serviceResponse);
    }

车险项目重构

  1. 分析重构车险(car_boot)接口:
    • 1.保存车主信息
    • 2.获取车辆信息
    • 3.查询车型
    • 4.保存车辆信息
    • 5.下单
    • 6.同步

下周(4.17-4.21)工作 TODO

  1. 进一步分析重构车险(car_boot)接口,周二前初步完成每个接口的重构方案,并与团队其他成员进行沟通接口之间所需的
  2. 开始具体实施重构,并编写每个接口的单元测试。
  3. 由于下单和同步接口需要之前所有流程测通才能进行测试,对于这两个接口,需要等待<险种>和<报价>步骤的完成。