WxCusController.java 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package com.emato.cuspay.wx.controller;
  2. import com.emato.cuspay.wx.entity.WxCbPayDoc;
  3. import com.emato.cuspay.support.msg.resp.ResponseMessage;
  4. import com.emato.cuspay.support.msg.resp.ResponseStatus;
  5. import com.emato.cuspay.util.MapBeanUtils;
  6. import com.emato.cuspay.util.Validator;
  7. import com.emato.cuspay.util.jackson.JacksonUtil;
  8. import com.emato.cuspay.wx.service.WxCbPayDocService;
  9. import com.fasterxml.jackson.core.type.TypeReference;
  10. import com.google.common.base.Strings;
  11. import com.google.common.collect.Maps;
  12. import org.slf4j.Logger;
  13. import org.slf4j.LoggerFactory;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.util.StringUtils;
  16. import org.springframework.web.bind.annotation.RequestMapping;
  17. import org.springframework.web.bind.annotation.RequestMethod;
  18. import org.springframework.web.bind.annotation.RestController;
  19. import javax.servlet.http.HttpServletRequest;
  20. import java.util.List;
  21. import java.util.Map;
  22. /**
  23. * @author zx
  24. * @version 1.0
  25. * 2018-05-15 09:31
  26. */
  27. @RestController
  28. @RequestMapping("/wx/custom")
  29. public class WxCusController {
  30. private static final Logger logger = LoggerFactory.getLogger(WxCusController.class);
  31. @Autowired
  32. private WxCbPayDocService wxCbPayDocService;
  33. /**
  34. *
  35. * @param request
  36. * @return
  37. */
  38. @RequestMapping(value = "/declarepayment")
  39. public ResponseMessage declarePayment(HttpServletRequest request){
  40. String data = request.getParameter("data");
  41. return new ResponseMessage.Builder()
  42. .setCode(ResponseStatus.SUCCESS.getItem())
  43. .setMsg("ok")
  44. .setData(data)
  45. .build();
  46. }
  47. /**
  48. * 支付单信息入库接口
  49. * @param request
  50. * @return
  51. */
  52. @RequestMapping(value = "/wxCbPay", method = RequestMethod.POST)
  53. public ResponseMessage addWxCbPayDoc(HttpServletRequest request) {
  54. logger.info("微信支付单信息入库接口请求开始");
  55. String data = request.getParameter("data");
  56. // 检查参数是否齐全
  57. if (Strings.isNullOrEmpty(data)) {
  58. return new ResponseMessage.Builder().setCode(ResponseStatus.ERROR.getItem())
  59. .setMsg("微信支付推单业务数据为空").build();
  60. }
  61. logger.info("微信支付单信息入库接口请求数据:【{}】",data);
  62. //解析数据
  63. List<WxCbPayDoc> wxCbPayDocList = JacksonUtil.fromListJson(data, new TypeReference<List<WxCbPayDoc>>(){});
  64. WxCbPayDoc wxCbPayDoc = null;
  65. if (wxCbPayDocList != null && wxCbPayDocList.size() > 0){
  66. wxCbPayDoc = wxCbPayDocList.get(0);
  67. }
  68. //数据校验
  69. Map<String, Object> validate = MapBeanUtils.fromObject(wxCbPayDoc);
  70. Map<String, Object> beVerified = Maps.newHashMap();
  71. beVerified.put("merchSn", "商户编号");
  72. beVerified.put("merchName", "商户名称");
  73. beVerified.put("appid", "微信公众号ID");
  74. beVerified.put("mchId","微信支付商户号");
  75. beVerified.put("outTradeNo", "商户订单号");
  76. beVerified.put("transactionId","微信支付订单号");
  77. beVerified.put("customs","报送海关");
  78. beVerified.put("mchCustomsNo","商户海关备案号");
  79. beVerified.put("merchErpOrderSn","商户erp订单编号");
  80. ResponseMessage rst = Validator.isEmpty(beVerified, validate);
  81. if (ResponseStatus.ERROR.getItem().equals(rst.getCode())) {
  82. return rst;
  83. }
  84. //身份证如不为空则校验身份证格式是否正确
  85. if(StringUtils.hasText(wxCbPayDoc.getCertId()) && !Validator.isCardNo(wxCbPayDoc.getCertId())){
  86. return new ResponseMessage.Builder().setCode(ResponseStatus.ERROR.getItem()).setMsg("身份证格式不正确,请填写正确的号码!").build();
  87. }
  88. return wxCbPayDocService.addWxCbPayDoc(wxCbPayDoc);
  89. }
  90. }