pos相关

This commit is contained in:
liuyingfang 2023-06-12 16:13:52 +08:00
parent 704ab93093
commit 3dae9f31e4
8 changed files with 72 additions and 13 deletions

View File

@ -12,6 +12,7 @@ import cn.pluss.platform.dto.BusinessLicenseDTO;
import cn.pluss.platform.dto.ImgDTO; import cn.pluss.platform.dto.ImgDTO;
import cn.pluss.platform.dto.MerchantBaseInfoDTO; import cn.pluss.platform.dto.MerchantBaseInfoDTO;
import cn.pluss.platform.entity.*; import cn.pluss.platform.entity.*;
import cn.pluss.platform.exception.MsgException;
import cn.pluss.platform.mapper.MerchantImageMapper; import cn.pluss.platform.mapper.MerchantImageMapper;
import cn.pluss.platform.mapper.MerchantRateMapper; import cn.pluss.platform.mapper.MerchantRateMapper;
import cn.pluss.platform.merchant.MerchantBaseInfoService; import cn.pluss.platform.merchant.MerchantBaseInfoService;
@ -172,6 +173,9 @@ public class MerchantBaseInfoController {
@ApiImplicitParams({ @ApiImplicitParams({
@ApiImplicitParam(name = "MerchantBaseInfoDTO", value = "MerchantBaseInfoDTO实例", paramType = "body", dataType = "MerchantBaseInfoDTO", required = true)}) @ApiImplicitParam(name = "MerchantBaseInfoDTO", value = "MerchantBaseInfoDTO实例", paramType = "body", dataType = "MerchantBaseInfoDTO", required = true)})
public Result<?> saveMerchantBaseInfoV2(@RequestBody MerchantBaseInfoDTO merchantBaseInfoDTO) { public Result<?> saveMerchantBaseInfoV2(@RequestBody MerchantBaseInfoDTO merchantBaseInfoDTO) {
if (merchantBaseInfoDTO.getAlias().length() < 4 || merchantBaseInfoDTO.getAlias().length() > 18){
MsgException.check(true,"请输入4-18位商户简称");
}
try { try {
merchantBaseInfoService.saveMerchantBaseInfo(merchantBaseInfoDTO); merchantBaseInfoService.saveMerchantBaseInfo(merchantBaseInfoDTO);
return ResultGenerator.genSuccessResult("保存成功"); return ResultGenerator.genSuccessResult("保存成功");

View File

@ -444,11 +444,20 @@ public class MerchantOrderController {
* @return * @return
*/ */
@PostMapping("/posScanPay") @PostMapping("/posScanPay")
public Result<Object> posScanPay(HttpServletRequest request,@RequestBody MerChantOrderDTO merchantOrderDTO) { public Result<Object> posScanPay(HttpServletRequest request,@RequestBody MerChantOrderDTO merchantOrderDTO)throws Exception{
//首先验签 //首先验签
verify(merchantOrderDTO.getTimestamp(), merchantOrderDTO.getRequestId(), merchantOrderDTO.getAppId(), merchantOrderDTO.getToken()); verify(merchantOrderDTO.getTimestamp(), merchantOrderDTO.getRequestId(), merchantOrderDTO.getAppId(), merchantOrderDTO.getToken(),
merchantOrderDTO.getReqData());
//拆分参数
JSONObject jsonParam = JSONObject.parseObject(merchantOrderDTO.getReqData());
Object sn = jsonParam.get("sn");
Object authCode = jsonParam.get("authCode");
Object consumeFee = jsonParam.get("consumeFee");
Object type = jsonParam.get("type");
Object mercOrderNo = jsonParam.get("mercOrderNo");
Object remark = jsonParam.get("remark");
//通过后查询商户信息 //通过后查询商户信息
DeviceStock deviceStock = deviceStockService.checkBind(merchantOrderDTO.getSn()); DeviceStock deviceStock = deviceStockService.checkBind(sn.toString());
MerchantBaseInfo merchantBaseInfoById = merchantBaseInfoService.getMerchantBaseInfoById(Integer.valueOf(deviceStock.getActMercId())); MerchantBaseInfo merchantBaseInfoById = merchantBaseInfoService.getMerchantBaseInfoById(Integer.valueOf(deviceStock.getActMercId()));
MsgException.checkNull(merchantBaseInfoById, "找不到商户"); MsgException.checkNull(merchantBaseInfoById, "找不到商户");
merchantOrderDTO.setMerchantCode(merchantBaseInfoById.getMerchantCode()); merchantOrderDTO.setMerchantCode(merchantBaseInfoById.getMerchantCode());
@ -1354,6 +1363,31 @@ public class MerchantOrderController {
return ResultGenerator.genSuccessResult(couponList); return ResultGenerator.genSuccessResult(couponList);
} }
/**
* 加上参数的签名
* @param timestamp
* @param requestId
* @param appId
* @param token
* @param reqData
* @throws Exception
*/
public void verify(String timestamp, String requestId, String appId,
String token, String reqData)throws Exception{
//首先验证签
Map<String, String> tokenMap = TokenUtil.getToken(timestamp, requestId, appId, reqData);
boolean sign = tokenMap.get("TOKEN").equals(token);
System.out.println(token);
MsgException.check(!sign,"签名错误");
}
/**
* 不加参数的签名
* @param timestamp
* @param requestId
* @param appId
* @param token
*/
public void verify(String timestamp, String requestId, String appId, public void verify(String timestamp, String requestId, String appId,
String token){ String token){
//首先验证签 //首先验证签

View File

@ -58,11 +58,10 @@ public class TokenUtil {
finalMap.put("TOKEN", MD5Util.md5(token + APP_SECRET).toUpperCase()); finalMap.put("TOKEN", MD5Util.md5(token + APP_SECRET).toUpperCase());
return finalMap; return finalMap;
} }
//
public static Map<String, String> getToken(String timestamp, String requestId, String appId, String reqData)throws Exception { public static Map<String, String> getToken(String timestamp, String requestId, String appId, String reqData)throws Exception {
String token = ""; String token = "";
String encode = ""; String encode = "";
System.out.println(timestamp);
System.out.println(requestId);
System.out.println(appId); System.out.println(appId);
System.out.println(reqData); System.out.println(reqData);
SortedMap<String, Object> map = new TreeMap(); SortedMap<String, Object> map = new TreeMap();
@ -81,7 +80,7 @@ public class TokenUtil {
System.out.println(token); System.out.println(token);
Map<String, String> finalMap = new HashMap<>(); Map<String, String> finalMap = new HashMap<>();
finalMap.put("ENCODE",encode); finalMap.put("ENCODE",encode);
finalMap.put("TOKEN", RSASignature.sign(encode, RSAUtil.CERT)); finalMap.put("TOKEN", MD5Util.md5(token + APP_SECRET).toUpperCase());
return finalMap; return finalMap;
} }
@ -92,7 +91,14 @@ public class TokenUtil {
System.out.println(s); System.out.println(s);
String s1 = UUID.randomUUID().toString(); String s1 = UUID.randomUUID().toString();
System.out.println(s1); System.out.println(s1);
String param = "{\"date\":null,\"sn\":\"ZF544CG02S00001\",\"type\":null,\"page\":1,\"size\":10}"; String param = "{\n" +
" \"type\": \"4\",\n" +
" \"consumeFee\": \"0.01\",\n" +
" \"authCode\": \"283907976309543222\",\n" +
" \"sn\": \"BSJQG01YJ0001\",\n" +
" \"mercOrderNo\": \" \",\n" +
" \"remark\": \"测试\"\n" +
" }";
Map<String, String> token = getToken(s, s1, APP_ID,param); Map<String, String> token = getToken(s, s1, APP_ID,param);
System.out.println(token); System.out.println(token);

View File

@ -42,11 +42,11 @@ public class LoginController {
public Result<Object> jwtTest(HttpServletRequest request) { public Result<Object> jwtTest(HttpServletRequest request) {
String token = request.getHeader("token"); String token = request.getHeader("token");
String userId = request.getHeader("userId"); String userId = request.getHeader("userId");
//
if (!Objects.equals("244", userId)) { // if (!Objects.equals("244", userId)) {
// 此处不能返回401, 不然会形成死循环 // // 此处不能返回401, 不然会形成死循环
throw new MsgException("未授权"); // throw new MsgException("未授权");
} // }
Object tokenUserId = JwtUtils.get("uid", token); Object tokenUserId = JwtUtils.get("uid", token);
if (!Objects.equals(userId, tokenUserId.toString())) { if (!Objects.equals(userId, tokenUserId.toString())) {

View File

@ -1,7 +1,7 @@
spring: spring:
profiles: profiles:
include: common, ryx, ys include: common, ryx, ys
active: prod active: dev
servlet: servlet:
multipart: multipart:
max-file-size: 100MB max-file-size: 100MB

View File

@ -76,6 +76,10 @@ public class MerChantOrderDTO {
* 设备号 * 设备号
*/ */
private String sn; private String sn;
/**
* 业务参数
*/
private String reqData;
/** /**
* @description: * @description:

View File

@ -101,6 +101,7 @@ public interface DeviceStockService extends IService<DeviceStock> {
void bindDevcieV2(DeviceStockDTO dto); void bindDevcieV2(DeviceStockDTO dto);
DeviceStock checkBind(String sn); DeviceStock checkBind(String sn);
DeviceStock checkSN(String sn);
DeviceStock getDeviceBySnNo(String sn); DeviceStock getDeviceBySnNo(String sn);
} }

View File

@ -398,6 +398,16 @@ public class DeviceStockServiceImpl extends ServiceImpl<DeviceStockMapper, Devic
MsgException.checkBlank(deviceBySnNo.getActMercId(),"未绑定扫码pos"); MsgException.checkBlank(deviceBySnNo.getActMercId(),"未绑定扫码pos");
return deviceBySnNo; return deviceBySnNo;
} }
@Override
public DeviceStock checkSN(String sn) {
MsgException.checkBlank(sn, "缺失设备SN号");
DeviceStock deviceBySnNo = baseMapper.getDeviceBySnNo(sn);
if (deviceBySnNo == null){
MsgException.throwException("未绑定扫码pos");
}
return deviceBySnNo;
}
@Override @Override
public DeviceStock getDeviceBySnNo(String sn) { public DeviceStock getDeviceBySnNo(String sn) {