Browse Source

微信第三方平台

dev_shibei_match
zxc 5 years ago
parent
commit
6d4770a6d9
  1. 10
      epmet-module/epmet-third-platform/epmet-third-platform-client/src/main/java/com/epmet/dto/form/ThirdPlatformEventFormDTO.java
  2. 2
      epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/constant/ModuleConstant.java
  3. 16
      epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/controller/ComponentVerifyTicketController.java
  4. 2
      epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/service/impl/DbyWechatExtServiceImpl.java
  5. 63
      epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/util/PKCS7EncoderUtil.java

10
epmet-module/epmet-third-platform/epmet-third-platform-client/src/main/java/com/epmet/dto/form/ThirdPlatformEventFormDTO.java

@ -1,7 +1,9 @@
package com.epmet.dto.form; package com.epmet.dto.form;
import com.epmet.commons.tools.validator.group.CustomerClientShowGroup;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.io.Serializable; import java.io.Serializable;
/** /**
@ -13,24 +15,30 @@ public class ThirdPlatformEventFormDTO implements Serializable {
private static final long serialVersionUID = -8855993636150332559L; private static final long serialVersionUID = -8855993636150332559L;
public interface ThirdPlatForm extends CustomerClientShowGroup{}
/** /**
* 时间戳 * 时间戳
*/ */
@NotBlank(message = "timeStamp不能为空",groups = {ThirdPlatForm.class})
private String timeStamp; private String timeStamp;
/** /**
* 随机数 * 随机数
*/ */
@NotBlank(message = "nonce不能为空",groups = {ThirdPlatForm.class})
private String nonce; private String nonce;
/** /**
* 消息体签名 * 消息体签名
*/ */@NotBlank(message = "msgSignature不能为空",groups = {ThirdPlatForm.class})
private String msgSignature; private String msgSignature;
/** /**
* 消息体 * 消息体
*/ */
@NotBlank(message = "postData不能为空",groups = {ThirdPlatForm.class})
private String postData; private String postData;
} }

2
epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/util/ModuleConstant.java → epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/constant/ModuleConstant.java

@ -1,4 +1,4 @@
package com.epmet.util; package com.epmet.constant;
/** /**
* @Description * @Description

16
epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/controller/ComponentVerifyTicketController.java

@ -1,11 +1,13 @@
package com.epmet.controller; package com.epmet.controller;
import com.epmet.commons.tools.utils.Result; import com.epmet.commons.tools.utils.Result;
import com.epmet.commons.tools.validator.ValidatorUtils;
import com.epmet.dto.form.ThirdPlatformEventFormDTO; import com.epmet.dto.form.ThirdPlatformEventFormDTO;
import com.epmet.dto.result.ResultBean; import com.epmet.dto.result.ResultBean;
import com.epmet.service.DbyWechatExtService; import com.epmet.service.DbyWechatExtService;
import com.epmet.util.ModuleConstant; import com.epmet.constant.ModuleConstant;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus; import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@ -20,21 +22,17 @@ import org.springframework.web.bind.annotation.RestController;
@RestController @RestController
public class ComponentVerifyTicketController { public class ComponentVerifyTicketController {
@Autowired
private DbyWechatExtService dbyWechatExtService; private DbyWechatExtService dbyWechatExtService;
@PostMapping(value = "/event") @PostMapping(value = "/event")
public Result wechatPlatformEvent(@RequestBody ThirdPlatformEventFormDTO formDTO) { public Result<ResultBean> wechatPlatformEvent(@RequestBody ThirdPlatformEventFormDTO formDTO) {
ValidatorUtils.validateEntity(formDTO, ThirdPlatformEventFormDTO.ThirdPlatForm.class);
ResultBean resultBean = new ResultBean(); ResultBean resultBean = new ResultBean();
ResponseEntity<ResultBean> responseEntity;
log.info(ModuleConstant.URL_TICKET); log.info(ModuleConstant.URL_TICKET);
try {
resultBean.setData(dbyWechatExtService.parseRequest(formDTO)); resultBean.setData(dbyWechatExtService.parseRequest(formDTO));
responseEntity = new ResponseEntity<ResultBean>(resultBean, HttpStatus.OK);
log.info(ModuleConstant.SUCCESS_TICKET); log.info(ModuleConstant.SUCCESS_TICKET);
} catch (Exception e) { return new Result<ResultBean>().ok(resultBean);
log.error(ModuleConstant.ERROR_URL_TICKET, e.getMessage(), e);
}
return new Result();
} }

2
epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/service/impl/DbyWechatExtServiceImpl.java

@ -4,7 +4,7 @@ import com.epmet.constant.ThirdPlatformConstant;
import com.epmet.dto.form.ThirdPlatformEventFormDTO; import com.epmet.dto.form.ThirdPlatformEventFormDTO;
import com.epmet.exception.AesException; import com.epmet.exception.AesException;
import com.epmet.service.DbyWechatExtService; import com.epmet.service.DbyWechatExtService;
import com.epmet.util.ModuleConstant; import com.epmet.constant.ModuleConstant;
import com.epmet.util.WXBizMsgCrypt; import com.epmet.util.WXBizMsgCrypt;
import com.epmet.util.WXXmlToMapUtil; import com.epmet.util.WXXmlToMapUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;

63
epmet-module/epmet-third-platform/epmet-third-platform-server/src/main/java/com/epmet/util/PKCS7EncoderUtil.java

@ -0,0 +1,63 @@
package com.epmet.util;
import com.epmet.commons.tools.constant.NumConstant;
import java.nio.charset.Charset;
import java.util.Arrays;
/**
* @Author zxc
* @CreateTime 2020/7/6 10:45
*/
public class PKCS7EncoderUtil {
static Charset CHARSET = Charset.forName("utf-8");
static int BLOCK_SIZE = 32;
/**
* 获得对明文进行补位填充的字节.
*
* @param count 需要进行填充补位操作的明文字节个数
* @return 补齐用的字节数组
*/
static byte[] encode(int count) {
// 计算需要填充的位数
int amountToPad = BLOCK_SIZE - (count % BLOCK_SIZE);
if (amountToPad == NumConstant.ZERO) {
amountToPad = BLOCK_SIZE;
}
// 获得补位所用的字符
char padChr = chr(amountToPad);
String tmp = new String();
for (int index = NumConstant.ZERO; index < amountToPad; index++) {
tmp += padChr;
}
return tmp.getBytes(CHARSET);
}
/**
* 删除解密后明文的补位字符
*
* @param decrypted 解密后的明文
* @return 删除补位字符后的明文
*/
static byte[] decode(byte[] decrypted) {
int pad = (int) decrypted[decrypted.length - 1];
if (pad < NumConstant.ONE || pad > 32) {
pad = NumConstant.ZERO;
}
return Arrays.copyOfRange(decrypted, 0, decrypted.length - pad);
}
/**
* 将数字转化成ASCII码对应的字符用于对明文进行补码
*
* @param a 需要转化的数字
* @return 转化得到的字符
*/
static char chr(int a) {
byte target = (byte) (a & 0xFF);
return (char) target;
}
}
Loading…
Cancel
Save