合并话费修改

袁野 2 years ago
parent bfc7b13cbc
commit 80fbf4ae2a
  1. 2
      hai-bweb/src/main/java/com/bweb/controller/HighTestController.java
  2. 2
      hai-service/src/main/java/com/hai/common/exception/ErrorCode.java
  3. 31
      hai-service/src/main/java/com/hai/common/utils/WxUtils.java
  4. 12
      hai-service/src/main/java/com/hai/config/HuiLianTongUnionCardConfig.java
  5. 30
      hai-service/src/main/java/com/hai/dao/ApiProductConfigMapperExt.java
  6. 21
      hai-service/src/main/java/com/hai/service/ApiMerchantsService.java
  7. 25
      hai-service/src/main/java/com/hai/service/ApiOrderRecordService.java
  8. 13
      hai-service/src/main/java/com/hai/service/SecConfigService.java
  9. 18
      hai-service/src/main/java/com/hai/service/impl/ApiMerchantsServiceImpl.java
  10. 39
      hai-service/src/main/java/com/hai/service/impl/ApiOrderRecordServiceImpl.java
  11. 17
      hai-service/src/main/java/com/hai/service/impl/SecConfigServiceImpl.java
  12. 206
      v1/src/main/java/com/v1/controller/GzSinopecController.java
  13. 234
      v1/src/main/java/com/v1/controller/RechargeProductController.java

File diff suppressed because one or more lines are too long

@ -128,6 +128,8 @@ public enum ErrorCode {
REQUEST_ERROR("3005","请求错误"), REQUEST_ERROR("3005","请求错误"),
REQUEST_TIMED_OUT("3006","请求超时,请稍后重试"), REQUEST_TIMED_OUT("3006","请求超时,请稍后重试"),
SIGN_VERIFY("6001","签名校验失败"),
MSG_EVENT_NULL("2999","消息类型为空"), MSG_EVENT_NULL("2999","消息类型为空"),
USE_VISIT_ILLEGAL("4001","用户身份错误"), USE_VISIT_ILLEGAL("4001","用户身份错误"),
RC_VISIT_ERROR("2998",""), RC_VISIT_ERROR("2998",""),

@ -438,5 +438,36 @@ public class WxUtils {
} }
} }
/**
* 生成签名.
*
* @param data 待签名数据
* @param key API密钥
* @param signType 签名方式
* @return 签名
*/
public static String generateSignApi(final Map<String, Object> data, String key, WXPayConstants.SignType signType) throws Exception {
Set<String> keySet = data.keySet();
String[] keyArray = keySet.toArray(new String[keySet.size()]);
Arrays.sort(keyArray);
StringBuilder sb = new StringBuilder();
for (String k : keyArray) {
if (k.equals(WXPayConstants.FIELD_SIGN)) {
continue;
}
if (data.get(k) != null) // 参数值为空,则不参与签名
sb.append(k).append("=").append(data.get(k)).append("&");
}
sb.append("apiKey=").append(key);
if (WXPayConstants.SignType.MD5.equals(signType)) {
return MD5(sb.toString() , true);
}
else if (WXPayConstants.SignType.HMACSHA256.equals(signType)) {
return HMACSHA256(sb.toString(), key);
}
else {
throw new Exception(String.format("Invalid sign_type: %s", signType));
}
}
} }

@ -284,6 +284,18 @@ public class HuiLianTongUnionCardConfig {
} }
/**
* @Author Sum1Dream
* @name submitSms.java
* @Description // 同步加油券订单
* @Date 10:08 上午 2022/1/13
* @Param [java.lang.String]
* @return com.alibaba.fastjson.JSONObject
*/
public static JSONObject syncPayOrder(Map<String, Object> map) throws Exception {
return request("fuelCouponsTest/syncPayOrder", map);
}
} }

@ -44,4 +44,34 @@ public interface ApiProductConfigMapperExt {
}) })
List<ApiProductConfigModel> getListMerchProduct(Long merchantsId); List<ApiProductConfigModel> getListMerchProduct(Long merchantsId);
@Select(value = {
"<script>",
" select ap.* , discount_price , apc.id as api_config_product_id , discount , apc.status as config_status from api_product ap join api_product_config apc on ap.id = apc.product_id where apc.status = 101",
" and merchants_id = #{merchantsId} and ap.recharge_type = = #{rechargeType}" +
"</script>"
})
@Results({
@Result(column="id", property="id", jdbcType=JdbcType.BIGINT, id=true),
@Result(column="recharge_type", property="rechargeType", jdbcType=JdbcType.INTEGER),
@Result(column="recharge_platform", property="rechargePlatform", jdbcType=JdbcType.VARCHAR),
@Result(column="phone_recharge_type", property="phoneRechargeType", jdbcType=JdbcType.INTEGER),
@Result(column="operator_type", property="operatorType", jdbcType=JdbcType.INTEGER),
@Result(column="recharge_price", property="rechargePrice", jdbcType=JdbcType.DECIMAL),
@Result(column="product_id", property="productId", jdbcType=JdbcType.BIGINT),
@Result(column="api_config_product_id", property="apiConfigProductId", jdbcType=JdbcType.BIGINT),
@Result(column="sort", property="sort", jdbcType=JdbcType.INTEGER),
@Result(column="discount", property="discount", jdbcType=JdbcType.DECIMAL),
@Result(column="discount_price", property="discountPrice", jdbcType=JdbcType.DECIMAL),
@Result(column="operator_id", property="operatorId", jdbcType=JdbcType.BIGINT),
@Result(column="operator_name", property="operatorName", jdbcType=JdbcType.VARCHAR),
@Result(column="create_time", property="createTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="update_time", property="updateTime", jdbcType=JdbcType.TIMESTAMP),
@Result(column="status", property="status", jdbcType=JdbcType.INTEGER),
@Result(column="config_status", property="configStatus", jdbcType=JdbcType.INTEGER),
@Result(column="ext_1", property="ext1", jdbcType=JdbcType.VARCHAR),
@Result(column="ext_2", property="ext2", jdbcType=JdbcType.VARCHAR),
@Result(column="ext_3", property="ext3", jdbcType=JdbcType.VARCHAR)
})
List<ApiProductConfigModel> getMerchProduct(Long merchantsId , Integer rechargeType);
} }

@ -59,6 +59,16 @@ public interface ApiMerchantsService {
*/ */
ApiMerchants findById(Long id); ApiMerchants findById(Long id);
/**
* @Author Sum1Dream
* @name findByMchId.java
* @Description // 根据商户号查询商户
* @Date 10:05 2022/6/10
* @Param [java.lang.String]
* @return com.hai.entity.ApiMerchants
*/
ApiMerchants findByMchId(String mchId);
/** /**
* @Author Sum1Dream * @Author Sum1Dream
* @name recharge.java * @name recharge.java
@ -89,8 +99,15 @@ public interface ApiMerchantsService {
*/ */
List<ApiProductConfigModel> getListMerchProduct(Long merchantId); List<ApiProductConfigModel> getListMerchProduct(Long merchantId);
/**
* @Author Sum1Dream
* @name getListMerchProduct.java
* @Description // 查询商户可用产品
* @Date 10:10 2022/6/9
* @Param [java.lang.Long]
* @return java.util.List<com.hai.entity.ApiProductConfig>
*/
List<ApiProductConfigModel> getMerchProduct(Long merchantId , Integer rechargeType);
} }

@ -0,0 +1,25 @@
package com.hai.service;
import com.hai.entity.ApiOrderRecord;
import java.util.Map;
/**
* @serviceName ApiOrderRecordService.java
* @author Sum1Dream
* @version 1.0.0
* @Description // 订单记录查询
* @createTime 15:17 2022/6/10
**/
public interface ApiOrderRecordService {
/**
* @Author Sum1Dream
* @name queryOrderResult.java
* @Description // 查询订单详情
* @Date 15:18 2022/6/10
* @Param [java.util.Map<java.lang.String,java.lang.Object>]
* @return com.hai.entity.ApiOrderRecord
*/
ApiOrderRecord queryOrderResult(Map<String , Object> map);
}

@ -2,6 +2,9 @@ package com.hai.service;
import com.hai.entity.SecConfig; import com.hai.entity.SecConfig;
import java.util.Map;
import java.util.SortedMap;
/** /**
* @ClassName SecConfigService.java * @ClassName SecConfigService.java
* @author Sum1Dream * @author Sum1Dream
@ -48,4 +51,14 @@ public interface SecConfigService {
*/ */
Boolean isConfig(String codeType , String codeValue); Boolean isConfig(String codeType , String codeValue);
/**
* @Author Sum1Dream
* @name SignVerify.java
* @Description // 校验签名
* @Date 09:33 2022/6/10
* @Param [java.util.Map<java.lang.String,java.lang.Object>]
* @return java.lang.Boolean
*/
Boolean isSignVerify(Map<String, Object> map) throws Exception;
} }

@ -78,6 +78,18 @@ public class ApiMerchantsServiceImpl implements ApiMerchantsService {
return apiMerchantsMapper.selectByPrimaryKey(id); return apiMerchantsMapper.selectByPrimaryKey(id);
} }
@Override
public ApiMerchants findByMchId(String mchId) {
ApiMerchantsExample example = new ApiMerchantsExample();
example.createCriteria().andMchIdEqualTo(mchId).andStatusEqualTo(100);
List<ApiMerchants> list = apiMerchantsMapper.selectByExample(example);
if (list.size() > 0) {
return apiMerchantsMapper.selectByExample(example).get(0);
}
return null;
}
@Override @Override
@Transactional(rollbackFor=Exception.class,isolation = Isolation.SERIALIZABLE,propagation= Propagation.REQUIRES_NEW) @Transactional(rollbackFor=Exception.class,isolation = Isolation.SERIALIZABLE,propagation= Propagation.REQUIRES_NEW)
public void recharge(Long merchantId, BigDecimal amount, Map<String, Object> otherParam) { public void recharge(Long merchantId, BigDecimal amount, Map<String, Object> otherParam) {
@ -145,4 +157,10 @@ public class ApiMerchantsServiceImpl implements ApiMerchantsService {
return apiProductConfigMapper.getListMerchProduct(merchantId); return apiProductConfigMapper.getListMerchProduct(merchantId);
} }
@Override
public List<ApiProductConfigModel> getMerchProduct(Long merchantId , Integer rechargeType) {
return apiProductConfigMapper.getMerchProduct(merchantId , rechargeType);
}
} }

@ -0,0 +1,39 @@
package com.hai.service.impl;
import com.hai.dao.ApiOrderRecordMapper;
import com.hai.entity.ApiOrderRecord;
import com.hai.entity.ApiOrderRecordExample;
import com.hai.service.ApiOrderRecordService;
import com.itextpdf.text.pdf.qrcode.MaskUtil;
import org.apache.commons.collections4.MapUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
@Service("apiOrderRecordService")
public class ApiOrderRecordServiceImpl implements ApiOrderRecordService {
@Resource
private ApiOrderRecordMapper apiOrderRecordMapper;
@Override
public ApiOrderRecord queryOrderResult(Map<String, Object> map) {
ApiOrderRecordExample example = new ApiOrderRecordExample();
ApiOrderRecordExample.Criteria criteria = example.createCriteria();
criteria.andSourceOrderNoEqualTo(MapUtils.getString(map , "sourceOrderNo"));
criteria.andMchIdEqualTo(MapUtils.getString(map , "merchId"));
List<ApiOrderRecord> list = apiOrderRecordMapper.selectByExample(example);
if (list.size() > 0) {
return list.get(0);
} else {
return null;
}
}
}

@ -1,15 +1,21 @@
package com.hai.service.impl; package com.hai.service.impl;
import com.hai.common.pay.util.sdk.WXPayConstants;
import com.hai.common.utils.WxUtils;
import com.hai.dao.SecConfigMapper; import com.hai.dao.SecConfigMapper;
import com.hai.entity.SecConfig; import com.hai.entity.SecConfig;
import com.hai.entity.SecConfigExample; import com.hai.entity.SecConfigExample;
import com.hai.entity.SecDictionary; import com.hai.entity.SecDictionary;
import com.hai.entity.SecDictionaryExample; import com.hai.entity.SecDictionaryExample;
import com.hai.service.ApiMerchantsService;
import com.hai.service.SecConfigService; import com.hai.service.SecConfigService;
import org.apache.commons.collections4.MapUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.SortedMap;
@Service("secConfigServiceImpl") @Service("secConfigServiceImpl")
public class SecConfigServiceImpl implements SecConfigService { public class SecConfigServiceImpl implements SecConfigService {
@ -17,6 +23,9 @@ public class SecConfigServiceImpl implements SecConfigService {
@Resource @Resource
private SecConfigMapper secConfigMapper; private SecConfigMapper secConfigMapper;
@Resource
private ApiMerchantsService apiMerchantsService;
@Override @Override
public SecConfig findById(Integer id) { public SecConfig findById(Integer id) {
return secConfigMapper.selectByPrimaryKey(id); return secConfigMapper.selectByPrimaryKey(id);
@ -41,4 +50,12 @@ public class SecConfigServiceImpl implements SecConfigService {
List<SecConfig> list = secConfigMapper.selectByExample(example); List<SecConfig> list = secConfigMapper.selectByExample(example);
return list.size() > 0; return list.size() > 0;
} }
@Override
public Boolean isSignVerify(Map<String, Object> map) throws Exception {
String sign = WxUtils.generateSignApi(map , MapUtils.getString(map , "apiKey"), WXPayConstants.SignType.MD5);
return MapUtils.getString(map, "sign").equals(sign);
}
} }

@ -0,0 +1,206 @@
package com.v1.controller;
import com.alibaba.fastjson.JSONObject;
import com.hai.common.exception.ErrorCode;
import com.hai.common.exception.ErrorHelp;
import com.hai.common.exception.SysCode;
import com.hai.common.utils.ResponseMsgUtil;
import com.hai.config.HuiLianTongConfig;
import com.hai.entity.HighUser;
import com.hai.model.ResponseData;
import com.hai.service.HighOpenApiService;
import com.hai.service.HighUserService;
import com.hai.service.SecConfigService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
@Controller
@RequestMapping(value = "/gzSinopec")
@Api(value = "贵州中石化")
public class GzSinopecController {
private static Logger log = LoggerFactory.getLogger(GzSinopecController.class);
@Resource
private HighOpenApiService highOpenApiService;
@Resource
private HighUserService highUserService;
@Resource
private SecConfigService secConfigService;
@Resource
private HuiLianTongConfig huiLianTongConfig;
@RequestMapping(value = "/getGuizhouSinopecList", method = RequestMethod.GET)
@ResponseBody
@ApiOperation(value = "获取专属优惠券")
public ResponseData getUserExclusiveDiscount(@RequestParam(name = "useScope", required = false) Integer useScope,
@RequestParam(name = "phone", required = true) String phone,
@RequestParam(name = "year", required = false) String year) {
try {
HighUser highUser = highUserService.findByPhone(phone);
if (highUser == null || highUser.getStatus() == 0) {
log.error("getUserOrderPreList error!", "未找到用户");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "当前手机号暂无用户");
}
Map<String,Object> map = new HashMap<>();
map.put("userId", highUser.getId());
map.put("useScope", useScope);
if (year != null) {
map.put("createTimeS", year + "-01-01 00:00:00");
map.put("createTimeE", year + "-12-31 23:59:59");
}
return ResponseMsgUtil.success(highOpenApiService.getUserCouponsList(map));
} catch (Exception e) {
log.error("HighOpenApiController --> getGuizhouSinopecList() error!", e);
return ResponseMsgUtil.exception(e);
}
}
@RequestMapping(value="/getGuizhouSinopecList",method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "获取贵州中石化电子卡券")
public ResponseData getGuizhouSinopecList(HttpServletRequest request) {
try {
String ip = "";
// 有的user可能使用代理,为处理用户使用代理的情况,使用x-forwarded-for
if (request.getHeader("x-forwarded-for") == null) {
ip = request.getRemoteAddr();
} else {
ip = request.getHeader("x-forwarded-for");
}
if (!secConfigService.isConfig("IP_WHITE" , ip)) {
log.error("getGuizhouSinopec error!", "非法ip地址,请联系管理人员!");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "非法ip地址,请联系管理人员!");
}
// 获取token
String token = huiLianTongConfig.getToken();
// 查询电子卡券类型
JSONObject corpCouTypes = HuiLianTongConfig.getCorpCouTypes(token);
System.out.println(corpCouTypes.toJSONString());
if (!corpCouTypes.getString("result").equals("success")) {
log.error("HighOpenApiController -> getGuizhouSinopecList() error!","获取电子卡券列表失败");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "获取电子卡券列表失败");
}
return ResponseMsgUtil.success(corpCouTypes.getJSONArray("data"));
} catch (Exception e) {
log.error("HighCouponController -> getGuizhouSinopec() error!",e);
return ResponseMsgUtil.exception(e);
}
}
@RequestMapping(value="/checkCouponStatus",method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "查询电子券状态")
public ResponseData checkCouponStatus(@RequestBody JSONObject object, HttpServletRequest request) {
try {
String ip = "";
// 有的user可能使用代理,为处理用户使用代理的情况,使用x-forwarded-for
if (request.getHeader("x-forwarded-for") == null) {
ip = request.getRemoteAddr();
} else {
ip = request.getHeader("x-forwarded-for");
}
if (!secConfigService.isConfig("IP_WHITE" , ip)) {
log.error("getGuizhouSinopec error!", "非法ip地址,请联系管理人员!");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "非法ip地址,请联系管理人员!");
}
// 获取token
String token = huiLianTongConfig.getToken();
// 查询电子卡券类型
JSONObject data = HuiLianTongConfig.getCouState(token, object.getString("couNo"));
if (!data.getString("result").equals("success")) {
log.error("HighOpenApiController -> insertCoupon() error!","查询电子券状态失败");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "查询电子券状态失败");
}
return ResponseMsgUtil.success(data.getJSONObject("data"));
} catch (Exception e) {
log.error("HighCouponController -> getGuizhouSinopec() error!",e);
return ResponseMsgUtil.exception(e);
}
}
@RequestMapping(value="/couJointDist",method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "商户派发电子券")
public ResponseData couJointDist(@RequestBody JSONObject object, HttpServletRequest request) {
try {
String ip = "";
// 有的user可能使用代理,为处理用户使用代理的情况,使用x-forwarded-for
if (request.getHeader("x-forwarded-for") == null) {
ip = request.getRemoteAddr();
} else {
ip = request.getHeader("x-forwarded-for");
}
if (!secConfigService.isConfig("IP_WHITE" , ip)) {
log.error("couJointDist error!", "非法ip地址,请联系管理人员!");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "非法ip地址,请联系管理人员!");
}
// 获取token
String token = huiLianTongConfig.getToken();
// 商户派发电子券
JSONObject returnParam = HuiLianTongConfig.couJointDist(token, object.getString("orderNo"), object.getString("couTypeCode"), object.getInteger("distCouCount"), object.getString("phone"), object.getString("thirdUserId"));
if (returnParam == null || !returnParam.getString("result").equals("success")) {
log.error("HighOpenApiController -> couJointDist() error!","商户派发电子券失败");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "商户派发电子券失败");
}
return ResponseMsgUtil.success(returnParam.getJSONArray("data"));
} catch (Exception e) {
log.error("HighOpenApiController -> couJointDist() error!",e);
return ResponseMsgUtil.exception(e);
}
}
@RequestMapping(value="/test",method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "测试")
public ResponseData test(HttpServletRequest request) {
try {
String ip = "";
if (request.getHeader("x-forwarded-for") == null) {
ip = request.getRemoteAddr();
}
ip = request.getHeader("x-forwarded-for");
return ResponseMsgUtil.success(ip);
} catch (Exception e) {
log.error("HighCouponController -> getGuizhouSinopec() error!",e);
return ResponseMsgUtil.exception(e);
}
}
}

@ -0,0 +1,234 @@
package com.v1.controller;
import com.alibaba.fastjson.JSONObject;
import com.hai.common.exception.ErrorCode;
import com.hai.common.exception.ErrorHelp;
import com.hai.common.exception.SysCode;
import com.hai.common.utils.ResponseMsgUtil;
import com.hai.entity.ApiMerchants;
import com.hai.entity.ApiOrderRecord;
import com.hai.entity.HighUser;
import com.hai.entity.OutRechargeOrder;
import com.hai.model.ResponseData;
import com.hai.service.*;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import jdk.jfr.consumer.RecordedObject;
import org.apache.commons.collections4.MapUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
/**
* @serviceName rechargeProductController.java
* @author Sum1Dream
* @version 1.0.0
* @Description // 充值产品接口
* @createTime 17:14 2022/6/9
**/
@Controller
@RequestMapping(value = "/rechargeProduct")
@Api(value = "充值产品接口")
public class RechargeProductController {
private static Logger log = LoggerFactory.getLogger(GzSinopecController.class);
@Resource
private ApiMerchantsService apiMerchantsService;
@Resource
private SecConfigService secConfigService;
@Resource
private OutRechargeOrderService outRechargeOrderService;
@Resource
private ApiOrderRecordService apiOrderRecordService;
@RequestMapping(value = "/getRechargeProduct", method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "获取充值产品")
public ResponseData getRechargeProduct(@RequestBody JSONObject object , HttpServletRequest request ) {
try {
String ip = "";
// 有的user可能使用代理,为处理用户使用代理的情况,使用x-forwarded-for
if (request.getHeader("x-forwarded-for") == null) {
ip = request.getRemoteAddr();
} else {
ip = request.getHeader("x-forwarded-for");
}
if (!secConfigService.isConfig("IP_WHITE" , ip)) {
log.error("getRechargeProduct error!", "非法ip地址,请联系管理人员!");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "非法ip地址,请联系管理人员!");
}
if (object.getString("apiKey") == null ||
object.getString("merchId") == null ||
object.getString("sign") == null ||
object.getInteger("rechargeType") == null
) {
log.error("getRechargeProduct error!", "请求参数校验失败!");
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR);
}
ApiMerchants apiMerchants = apiMerchantsService.findById(object.getLong("merchId"));
if (apiMerchants == null) {
log.error("getRechargeProduct error!", "商户号错误!");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "商户号错误!");
}
Map<String , Object> map = new HashMap<>();
map.put("apiKey" , object.getString("apiKey"));
map.put("merchId" , object.getString("merchId"));
map.put("rechargeType" , object.getString("type"));
map.put("sign" , object.getString("sign"));
if (!secConfigService.isSignVerify(map)) {
log.error("getRechargeProduct error!", "签名校验失败!");
throw ErrorHelp.genException(SysCode.System, ErrorCode.SIGN_VERIFY);
}
return ResponseMsgUtil.success(apiMerchantsService.getMerchProduct(apiMerchants.getId() , object.getInteger("rechargeType")));
} catch (Exception e) {
log.error("HighOpenApiController --> getRechargeProduct() error!", e);
return ResponseMsgUtil.exception(e);
}
}
@RequestMapping(value = "/checkAccountBalance", method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "查询帐户余额")
public ResponseData checkAccountBalance(@RequestBody JSONObject object , HttpServletRequest request ) {
try {
String ip = "";
// 有的user可能使用代理,为处理用户使用代理的情况,使用x-forwarded-for
if (request.getHeader("x-forwarded-for") == null) {
ip = request.getRemoteAddr();
} else {
ip = request.getHeader("x-forwarded-for");
}
if (!secConfigService.isConfig("IP_WHITE" , ip)) {
log.error("getRechargeProduct error!", "非法ip地址,请联系管理人员!");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "非法ip地址,请联系管理人员!");
}
if (object.getString("apiKey") == null ||
object.getString("sign") == null ||
object.getString("merchId") == null
) {
log.error("getRechargeProduct error!", "请求参数校验失败!");
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR);
}
ApiMerchants apiMerchants = apiMerchantsService.findById(object.getLong("merchId"));
if (apiMerchants == null) {
log.error("getRechargeProduct error!", "商户号错误!");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "商户号错误!");
}
Map<String , Object> map = new HashMap<>();
map.put("apiKey" , object.getString("apiKey"));
map.put("merchId" , object.getString("merchId"));
map.put("sign" , object.getString("sign"));
if (!secConfigService.isSignVerify(map)) {
log.error("getRechargeProduct error!", "签名校验失败!");
throw ErrorHelp.genException(SysCode.System, ErrorCode.SIGN_VERIFY);
}
return ResponseMsgUtil.success(apiMerchants.getAmounts());
} catch (Exception e) {
log.error("HighOpenApiController --> getRechargeProduct() error!", e);
return ResponseMsgUtil.exception(e);
}
}
@RequestMapping(value = "/queryOrderResult", method = RequestMethod.POST)
@ResponseBody
@ApiOperation(value = "查询订单结果")
public ResponseData queryOrderResult(@RequestBody JSONObject object , HttpServletRequest request ) {
try {
String ip = "";
// 有的user可能使用代理,为处理用户使用代理的情况,使用x-forwarded-for
if (request.getHeader("x-forwarded-for") == null) {
ip = request.getRemoteAddr();
} else {
ip = request.getHeader("x-forwarded-for");
}
if (!secConfigService.isConfig("IP_WHITE" , ip)) {
log.error("getRechargeProduct error!", "非法ip地址,请联系管理人员!");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "非法ip地址,请联系管理人员!");
}
if (object.getString("apiKey") == null ||
object.getString("merchId") == null ||
object.getString("sign") == null ||
object.getString("sourceOrderNo") == null
) {
log.error("getRechargeProduct error!", "请求参数校验失败!");
throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR);
}
ApiMerchants apiMerchants = apiMerchantsService.findById(object.getLong("merchId"));
if (apiMerchants == null) {
log.error("getRechargeProduct error!", "商户号错误!");
throw ErrorHelp.genException(SysCode.System, ErrorCode.COMMON_ERROR, "商户号错误!");
}
Map<String , Object> map = new HashMap<>();
map.put("apiKey" , object.getString("apiKey"));
map.put("merchId" , object.getString("merchId"));
map.put("sourceOrderNo" , object.getString("sourceOrderNo"));
map.put("sign" , object.getString("sign"));
if (!secConfigService.isSignVerify(map)) {
log.error("getRechargeProduct error!", "签名校验失败!");
throw ErrorHelp.genException(SysCode.System, ErrorCode.SIGN_VERIFY);
}
ApiOrderRecord apiOrderRecord = apiOrderRecordService.queryOrderResult(map);
OutRechargeOrder rechargeOrder = outRechargeOrderService.findByOrderNo(apiOrderRecord.getOrderNo());
JSONObject returnObject = new JSONObject();
returnObject.put("sourceOrderNo" , apiOrderRecord.getSourceOrderNo());
returnObject.put("callbackStatus" , apiOrderRecord.getStatus());
returnObject.put("goodsId" , apiOrderRecord.getGoodsId());
returnObject.put("type" , rechargeOrder.getType());
returnObject.put("operatorName" , rechargeOrder.getOperatorName());
returnObject.put("rechargeType" , rechargeOrder.getRechargeType());
returnObject.put("rechargeContent" , rechargeOrder.getRechargeContent());
returnObject.put("rechargePrice" , rechargeOrder.getRechargePrice());
returnObject.put("payRealPrice" , rechargeOrder.getPayRealPrice());
returnObject.put("createTimed" , rechargeOrder.getCreateTimed());
returnObject.put("payStatus" , rechargeOrder.getPayStatus());
returnObject.put("rechargeStatus" , rechargeOrder.getRechargeStatus());
return ResponseMsgUtil.success(returnObject);
} catch (Exception e) {
log.error("HighOpenApiController --> getRechargeProduct() error!", e);
return ResponseMsgUtil.exception(e);
}
}
}
Loading…
Cancel
Save