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.TokenUtil;
|
||||
import cn.pluss.platform.vo.MemberScanVO;
|
||||
import cn.pluss.platform.vo.MerchantOrderPosVO;
|
||||
import cn.pluss.platform.vo.MerchantOrderVO;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
@@ -49,6 +50,8 @@ import javax.validation.Valid;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
|
||||
import static cn.hutool.poi.excel.sax.AttributeName.s;
|
||||
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequiredArgsConstructor
|
||||
@@ -436,10 +439,7 @@ public class MerchantOrderController {
|
||||
@PostMapping("/posScanPay")
|
||||
public Result<Object> posScanPay(@RequestBody MerChantOrderDTO merchantOrderDTO) {
|
||||
//首先验签
|
||||
Map<String, String> token = TokenUtil.getToken(merchantOrderDTO.getTimestamp(), merchantOrderDTO.getRequestId());
|
||||
boolean sign = token.get("TOKEN").equals(merchantOrderDTO.getToken());
|
||||
System.out.println(token);
|
||||
MsgException.check(!sign,"签名错误");
|
||||
verify(merchantOrderDTO.getTimestamp(), merchantOrderDTO.getRequestId(), merchantOrderDTO.getAppId(), merchantOrderDTO.getToken());
|
||||
//通过后查询商户信息
|
||||
DeviceStock deviceStock = deviceStockService.checkBind(merchantOrderDTO.getSn());
|
||||
MerchantBaseInfo merchantBaseInfoById = merchantBaseInfoService.getMerchantBaseInfoById(Integer.valueOf(deviceStock.getActMercId()));
|
||||
@@ -451,14 +451,19 @@ public class MerchantOrderController {
|
||||
}
|
||||
//进行支付操作
|
||||
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){
|
||||
e.printStackTrace();
|
||||
return ResultGenerator.genFailResult(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 主扫会员支付
|
||||
* @param memberScanPayDTO
|
||||
@@ -775,6 +780,69 @@ public class MerchantOrderController {
|
||||
}
|
||||
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")
|
||||
@ApiOperation(value = "订单关闭", notes = "订单关闭", httpMethod = "POST")
|
||||
@@ -1233,4 +1301,13 @@ public class MerchantOrderController {
|
||||
List<Map<String, Object>> couponList = merchantOrderService.getCouponList(orderNumber);
|
||||
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/index.html");
|
||||
limitUri.add("/api/merchantOrder/posScanPay");
|
||||
limitUri.add("/api/merchantOrder/pos/tradeQuery");
|
||||
boolean passFlag = limitUri.stream().anyMatch(s -> s.equals(requestUri) || requestUri.startsWith(s));
|
||||
if (passFlag) {
|
||||
return true;
|
||||
|
||||
@@ -34,11 +34,11 @@ public class TokenUtil {
|
||||
* @param requestId 请求ID,自定义
|
||||
* @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 encode = "";
|
||||
SortedMap<String, Object> map = new TreeMap();
|
||||
map.put("appId", APP_ID);
|
||||
map.put("appId", appId);
|
||||
map.put("timestamp", timestamp);
|
||||
map.put("requestId", requestId);
|
||||
Iterator<Map.Entry<String, Object>> iterator = map.entrySet().iterator();
|
||||
@@ -62,7 +62,7 @@ public class TokenUtil {
|
||||
System.out.println(s);
|
||||
String s1 = UUID.randomUUID().toString();
|
||||
System.out.println(s1);
|
||||
Map<String, String> token = getToken(s, s1);
|
||||
Map<String, String> token = getToken(s, s1,APP_SECRET);
|
||||
System.out.println(token);
|
||||
}
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ public class MerchantChannelStatusController {
|
||||
@ResponseBody
|
||||
public Result<Object> openOnlinePay(String merchantCode) {
|
||||
MerchantChannelStatus mcs = mcsService.getByMerchantCode(merchantCode, 4);
|
||||
((YsAuditServiceImpl) ysAuditServiceV3).openOnlinePay(mcs);
|
||||
ysAuditServiceV3.openOnlinePay(mcs);
|
||||
return ResultGenerator.genSuccessResult("操作成功", null);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user