pos机部分逻辑
This commit is contained in:
@@ -28,6 +28,7 @@ import cn.pluss.platform.userApp.UserAppService;
|
|||||||
import cn.pluss.platform.util.StringUtil;
|
import cn.pluss.platform.util.StringUtil;
|
||||||
import cn.pluss.platform.util.TokenUtil;
|
import cn.pluss.platform.util.TokenUtil;
|
||||||
import cn.pluss.platform.vo.MemberScanVO;
|
import cn.pluss.platform.vo.MemberScanVO;
|
||||||
|
import cn.pluss.platform.vo.MerchantOrderPosVO;
|
||||||
import cn.pluss.platform.vo.MerchantOrderVO;
|
import cn.pluss.platform.vo.MerchantOrderVO;
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
@@ -49,6 +50,8 @@ import javax.validation.Valid;
|
|||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
|
import static cn.hutool.poi.excel.sax.AttributeName.s;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@RestController
|
@RestController
|
||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
@@ -436,10 +439,7 @@ public class MerchantOrderController {
|
|||||||
@PostMapping("/posScanPay")
|
@PostMapping("/posScanPay")
|
||||||
public Result<Object> posScanPay(@RequestBody MerChantOrderDTO merchantOrderDTO) {
|
public Result<Object> posScanPay(@RequestBody MerChantOrderDTO merchantOrderDTO) {
|
||||||
//首先验签
|
//首先验签
|
||||||
Map<String, String> token = TokenUtil.getToken(merchantOrderDTO.getTimestamp(), merchantOrderDTO.getRequestId());
|
verify(merchantOrderDTO.getTimestamp(), merchantOrderDTO.getRequestId(), merchantOrderDTO.getAppId(), merchantOrderDTO.getToken());
|
||||||
boolean sign = token.get("TOKEN").equals(merchantOrderDTO.getToken());
|
|
||||||
System.out.println(token);
|
|
||||||
MsgException.check(!sign,"签名错误");
|
|
||||||
//通过后查询商户信息
|
//通过后查询商户信息
|
||||||
DeviceStock deviceStock = deviceStockService.checkBind(merchantOrderDTO.getSn());
|
DeviceStock deviceStock = deviceStockService.checkBind(merchantOrderDTO.getSn());
|
||||||
MerchantBaseInfo merchantBaseInfoById = merchantBaseInfoService.getMerchantBaseInfoById(Integer.valueOf(deviceStock.getActMercId()));
|
MerchantBaseInfo merchantBaseInfoById = merchantBaseInfoService.getMerchantBaseInfoById(Integer.valueOf(deviceStock.getActMercId()));
|
||||||
@@ -451,14 +451,19 @@ public class MerchantOrderController {
|
|||||||
}
|
}
|
||||||
//进行支付操作
|
//进行支付操作
|
||||||
try {
|
try {
|
||||||
return merchantOrderService.toActivePay(merchantOrderDTO);
|
Result<Object> activePay = merchantOrderService.toActivePay(merchantOrderDTO);
|
||||||
|
String result = activePay.toString();
|
||||||
|
JSONObject jsonData = JSONObject.parseObject(result);
|
||||||
|
Object orderNumber = jsonData.getJSONObject("data").get("orderNumber");
|
||||||
|
HashMap<String, Object> map = new HashMap<>();
|
||||||
|
map.put("orderNumber", orderNumber);
|
||||||
|
return ResultGenerator.genSuccessResult(map);
|
||||||
} catch (Exception e){
|
} catch (Exception e){
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
return ResultGenerator.genFailResult(e.getMessage());
|
return ResultGenerator.genFailResult(e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 主扫会员支付
|
* 主扫会员支付
|
||||||
* @param memberScanPayDTO
|
* @param memberScanPayDTO
|
||||||
@@ -775,6 +780,69 @@ public class MerchantOrderController {
|
|||||||
}
|
}
|
||||||
return ResultGenerator.genSuccessResult("获取成功",order);
|
return ResultGenerator.genSuccessResult("获取成功",order);
|
||||||
}
|
}
|
||||||
|
@GetMapping("/pos/tradeQuery/{orderNumber}")
|
||||||
|
@ApiOperation(value = "pos交易订单支付结果查询", notes = "交易订单支付结果查询", httpMethod = "GET")
|
||||||
|
@ApiImplicitParams({
|
||||||
|
@ApiImplicitParam(name = "orderNumber", value = "查询的orderNumber", paramType = "orderNumber", required = true, dataType = "String")})
|
||||||
|
public Result<Object> posTradeQuery(@PathVariable String orderNumber, String timestamp,
|
||||||
|
String requestId, String token, String appId) throws Exception {
|
||||||
|
//首先验签
|
||||||
|
verify(timestamp, requestId, appId, token);
|
||||||
|
// 校验参数是否完整
|
||||||
|
if (StringUtil.isEmpty(orderNumber)) {
|
||||||
|
return ResultGenerator.genFailResult("无订单号");
|
||||||
|
}
|
||||||
|
QueryWrapper<MerchantOrder> queryWrapper = new QueryWrapper<MerchantOrder>()
|
||||||
|
.eq("orderNumber",orderNumber);
|
||||||
|
MerchantOrder order = merchantOrderService.getOne(queryWrapper);
|
||||||
|
if(order == null){
|
||||||
|
return ResultGenerator.genFailResult("订单数据异常");
|
||||||
|
}
|
||||||
|
MerchantOrderPosVO orderPosVO = new MerchantOrderPosVO();
|
||||||
|
//支付成功
|
||||||
|
if("1".equals(order.getStatus())){
|
||||||
|
orderPosVO.setConsumeFee(order.getConsumeFee());
|
||||||
|
orderPosVO.setStatus(order.getStatus());
|
||||||
|
orderPosVO.setPayTypeCode(order.getPayTypeCode());
|
||||||
|
return ResultGenerator.genSuccessResult("获取成功",orderPosVO);
|
||||||
|
}
|
||||||
|
String aisleSwitch = order.getAisleSwitch();
|
||||||
|
MerchantChannelStatus channel = null;
|
||||||
|
switch (aisleSwitch){
|
||||||
|
case "2":
|
||||||
|
channel = merchantChannelStatusMapper.getByMerchantCode(order.getMerchantCode(),1);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
channel = merchantChannelStatusMapper.getByMerchantCode(order.getMerchantCode(),Integer.valueOf(aisleSwitch));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(channel != null){
|
||||||
|
JSONObject result = null;
|
||||||
|
switch (channel.getChannel()){
|
||||||
|
case 1:
|
||||||
|
result = sxfPayService.tradeQuery(order,channel.getMerchantId());
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
result = ryxPayService.tradeQuery(order,channel.getMerchantId());
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
result = ysPayOldService.tradeQuery(order,channel.getMerchantId());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(result != null){
|
||||||
|
merchantOrderService.updateOrderStatus(result,order);
|
||||||
|
String status = result.getString("payStatus");
|
||||||
|
if("1".equals(status)){
|
||||||
|
order.setStatus("1");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
orderPosVO.setConsumeFee(order.getConsumeFee());
|
||||||
|
orderPosVO.setStatus(order.getStatus());
|
||||||
|
orderPosVO.setPayTypeCode(order.getPayTypeCode());
|
||||||
|
}
|
||||||
|
return ResultGenerator.genSuccessResult("获取成功", orderPosVO);
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("/closeOrder")
|
@GetMapping("/closeOrder")
|
||||||
@ApiOperation(value = "订单关闭", notes = "订单关闭", httpMethod = "POST")
|
@ApiOperation(value = "订单关闭", notes = "订单关闭", httpMethod = "POST")
|
||||||
@@ -1233,4 +1301,13 @@ public class MerchantOrderController {
|
|||||||
List<Map<String, Object>> couponList = merchantOrderService.getCouponList(orderNumber);
|
List<Map<String, Object>> couponList = merchantOrderService.getCouponList(orderNumber);
|
||||||
return ResultGenerator.genSuccessResult(couponList);
|
return ResultGenerator.genSuccessResult(couponList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void verify(String timestamp, String requestId, String appId,
|
||||||
|
String token){
|
||||||
|
//首先验证签
|
||||||
|
Map<String, String> tokenMap = TokenUtil.getToken(timestamp, requestId, appId);
|
||||||
|
boolean sign = tokenMap.get("TOKEN").equals(token);
|
||||||
|
System.out.println(token);
|
||||||
|
MsgException.check(!sign,"签名错误");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ public class TokenRegistryInterceptor extends HandlerInterceptorAdapter {
|
|||||||
limitUri.add("/api/open/login");
|
limitUri.add("/api/open/login");
|
||||||
limitUri.add("/api/index.html");
|
limitUri.add("/api/index.html");
|
||||||
limitUri.add("/api/merchantOrder/posScanPay");
|
limitUri.add("/api/merchantOrder/posScanPay");
|
||||||
|
limitUri.add("/api/merchantOrder/pos/tradeQuery");
|
||||||
boolean passFlag = limitUri.stream().anyMatch(s -> s.equals(requestUri) || requestUri.startsWith(s));
|
boolean passFlag = limitUri.stream().anyMatch(s -> s.equals(requestUri) || requestUri.startsWith(s));
|
||||||
if (passFlag) {
|
if (passFlag) {
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -34,11 +34,11 @@ public class TokenUtil {
|
|||||||
* @param requestId 请求ID,自定义
|
* @param requestId 请求ID,自定义
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static Map<String, String> getToken(String timestamp, String requestId) {
|
public static Map<String, String> getToken(String timestamp, String requestId,String appId) {
|
||||||
String token = "";
|
String token = "";
|
||||||
String encode = "";
|
String encode = "";
|
||||||
SortedMap<String, Object> map = new TreeMap();
|
SortedMap<String, Object> map = new TreeMap();
|
||||||
map.put("appId", APP_ID);
|
map.put("appId", appId);
|
||||||
map.put("timestamp", timestamp);
|
map.put("timestamp", timestamp);
|
||||||
map.put("requestId", requestId);
|
map.put("requestId", requestId);
|
||||||
Iterator<Map.Entry<String, Object>> iterator = map.entrySet().iterator();
|
Iterator<Map.Entry<String, Object>> iterator = map.entrySet().iterator();
|
||||||
@@ -62,7 +62,7 @@ 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);
|
||||||
Map<String, String> token = getToken(s, s1);
|
Map<String, String> token = getToken(s, s1,APP_SECRET);
|
||||||
System.out.println(token);
|
System.out.println(token);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ public class MerchantChannelStatusController {
|
|||||||
@ResponseBody
|
@ResponseBody
|
||||||
public Result<Object> openOnlinePay(String merchantCode) {
|
public Result<Object> openOnlinePay(String merchantCode) {
|
||||||
MerchantChannelStatus mcs = mcsService.getByMerchantCode(merchantCode, 4);
|
MerchantChannelStatus mcs = mcsService.getByMerchantCode(merchantCode, 4);
|
||||||
((YsAuditServiceImpl) ysAuditServiceV3).openOnlinePay(mcs);
|
ysAuditServiceV3.openOnlinePay(mcs);
|
||||||
return ResultGenerator.genSuccessResult("操作成功", null);
|
return ResultGenerator.genSuccessResult("操作成功", null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user