Quellcode durchsuchen

//tt product

release_toaliyun_real
xhxu vor 4 Jahren
Ursprung
Commit
caa63e7c7e
3 geänderte Dateien mit 73 neuen und 173 gelöschten Zeilen
  1. +65
    -65
      mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java
  2. +0
    -5
      mallinkCallback/src/main/java/com/iformall/controller/callback/TtPayController.java
  3. +8
    -103
      mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java

+ 65
- 65
mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java Datei anzeigen

@@ -249,7 +249,7 @@ public class WxOrderController extends BaseController {
WxComposeOrder order = (WxComposeOrder) resultData.data;
Map<String, Object> data = new HashMap<>();
data.put("out_order_no",order.getMainOrderId().toString());
data.put("pay_expire_seconds",300);
// data.put("pay_expire_seconds",300);
data.put("order_entry_schema",wxOrderService.getOrderEntrySchema(order.getMainOrderId()));
List<Map<String,Object>> goodsValid = new ArrayList<>();
for (Long couponChannelId:order.getCouponChannelMap().keySet()) {
@@ -291,70 +291,70 @@ public class WxOrderController extends BaseController {
}
}

@ApiOperation(value = "更新订单状态", notes = "{\"payOrderId\":\"string\",\"composeOrderId\":\"string\",\"status\":integer,\"reason\":\"string\"}")
@PostMapping("/updatePayOrder")
public ResultData updatePayOrder(@RequestBody Map<String, Object> paramMap) {
logger.info("/api/pay/updatePayOrder" + paramMap.toString());
String orderIdStr = (String) paramMap.get("composeOrderId");
if (StringUtils.isBlank(orderIdStr)) {
logger.info("orderId不能为空: " + paramMap.toString());
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "orderId不能为空");
}
Long orderId = 0L;
try {
orderId = Long.valueOf(orderIdStr);
} catch (NumberFormatException e) {
logger.error("orderId参数不正确: " + paramMap.toString() + ", e:" + e.getMessage());
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "orderId参数不正确");
}
WxBatchOrder batchOrder = wxOrderService.getWxBatchOrder(getTenantInfo(),orderId);
if(batchOrder == null){
return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "未找到订单");
}
WxPayOrder payOrder = new WxPayOrder();
payOrder.setOrderId(orderId);
payOrder.updateTenantInfo(getTenantInfo());
payOrder.setPayVendor(getPayWay().getCode());
payOrder.setComposeOrder(batchOrder.getOrderType());
try {
WxPayOrder byObj = wxPayOrderService.getByObj(payOrder);
if(byObj != null){
return new ResultData(Result.SUCCESS, "支付状态更新成功");
}else{
WxComposeOrder composeOrder = orderFactory.getOrderAdapterService(payOrder.getComposeOrder()).getComposeOrder(payOrder.getOrderId(), payOrder.getTenantId());
WxAppinfo appInfo = wxAppinfoService.getCAppInfo(payOrder, EnumPayWay.getEnum(payOrder.getPayVendor()).getPlat());
//WxCUser user = getUser();
//WxAppinfo appInfo = getAppInfo(user.getAppId());
if (null == appInfo) {
return new ResultData(ErrorCode.PAY_ORDER_ERROR, "当前支付类型["+payOrder.getPayVendor()+"]找不到C端appInfo");
}
WxPayAccount payAccount = wxPayAccountService.getById(appInfo.getPayId());
try {
WxPayOrder wo = wxPayOrderService.handleWxOrderQuery(payOrder, composeOrder,appInfo, payAccount, IdWorker.get(),false);
if (null != wo) {
return new ResultData(Result.SUCCESS, "支付状态更新成功", composeOrder);
}
}catch(MallinkException e) {
//已经同步了微信的支付状态,表示已经更新
return new ResultData(Result.SUCCESS, "支付状态更新成功", composeOrder);
}
return new ResultData(ErrorCode.PAY_ORDER_ERROR, "查询微信订单支付状态失败,请稍后!");
}
} catch (MallinkException e) {
logger.error("支付状态更新失败2: " + payOrder.toString() + ", e:" + e.getMessage(),e);
return new ResultData(e.getErrorCode(), e.getMessage());
} catch (Exception e) {
logger.error("支付状态更新失败3: " + payOrder.toString() + ", e:" + e.getMessage(),e);
return new ResultData(ErrorCode.PAY_ORDER_ERROR, "支付状态更新失败3: " + payOrder.toString() + ", e:" + e.getMessage());
}
}
// @ApiOperation(value = "更新订单状态", notes = "{\"payOrderId\":\"string\",\"composeOrderId\":\"string\",\"status\":integer,\"reason\":\"string\"}")
// @PostMapping("/updatePayOrder")
// public ResultData updatePayOrder(@RequestBody Map<String, Object> paramMap) {
// logger.info("/api/pay/updatePayOrder" + paramMap.toString());
// String orderIdStr = (String) paramMap.get("composeOrderId");
// if (StringUtils.isBlank(orderIdStr)) {
// logger.info("orderId不能为空: " + paramMap.toString());
// return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "orderId不能为空");
// }
// Long orderId = 0L;
// try {
// orderId = Long.valueOf(orderIdStr);
// } catch (NumberFormatException e) {
// logger.error("orderId参数不正确: " + paramMap.toString() + ", e:" + e.getMessage());
// return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "orderId参数不正确");
// }
//
// WxBatchOrder batchOrder = wxOrderService.getWxBatchOrder(getTenantInfo(),orderId);
// if(batchOrder == null){
// return new ResultData(ErrorCode.SYS_PARAMETER_ERROR.getCode(), "未找到订单");
// }
//
// WxPayOrder payOrder = new WxPayOrder();
// payOrder.setOrderId(orderId);
// payOrder.updateTenantInfo(getTenantInfo());
// payOrder.setPayVendor(getPayWay().getCode());
// payOrder.setComposeOrder(batchOrder.getOrderType());
//
// try {
// WxPayOrder byObj = wxPayOrderService.getByObj(payOrder);
// if(byObj != null){
// return new ResultData(Result.SUCCESS, "支付状态更新成功");
// }else{
//
//
// WxComposeOrder composeOrder = orderFactory.getOrderAdapterService(payOrder.getComposeOrder()).getComposeOrder(payOrder.getOrderId(), payOrder.getTenantId());
//
// WxAppinfo appInfo = wxAppinfoService.getCAppInfo(payOrder, EnumPayWay.getEnum(payOrder.getPayVendor()).getPlat());
// //WxCUser user = getUser();
// //WxAppinfo appInfo = getAppInfo(user.getAppId());
// if (null == appInfo) {
// return new ResultData(ErrorCode.PAY_ORDER_ERROR, "当前支付类型["+payOrder.getPayVendor()+"]找不到C端appInfo");
// }
// WxPayAccount payAccount = wxPayAccountService.getById(appInfo.getPayId());
// try {
// WxPayOrder wo = wxPayOrderService.handleWxOrderQuery(payOrder, composeOrder,appInfo, payAccount, IdWorker.get(),false);
// if (null != wo) {
// return new ResultData(Result.SUCCESS, "支付状态更新成功", composeOrder);
// }
// }catch(MallinkException e) {
// //已经同步了微信的支付状态,表示已经更新
// return new ResultData(Result.SUCCESS, "支付状态更新成功", composeOrder);
// }
//
// return new ResultData(ErrorCode.PAY_ORDER_ERROR, "查询微信订单支付状态失败,请稍后!");
// }
// } catch (MallinkException e) {
// logger.error("支付状态更新失败2: " + payOrder.toString() + ", e:" + e.getMessage(),e);
// return new ResultData(e.getErrorCode(), e.getMessage());
// } catch (Exception e) {
// logger.error("支付状态更新失败3: " + payOrder.toString() + ", e:" + e.getMessage(),e);
// return new ResultData(ErrorCode.PAY_ORDER_ERROR, "支付状态更新失败3: " + payOrder.toString() + ", e:" + e.getMessage());
// }
// }


+ 0
- 5
mallinkCallback/src/main/java/com/iformall/controller/callback/TtPayController.java Datei anzeigen

@@ -173,11 +173,6 @@ public class TtPayController extends BaseController {
if(batchOrder == null){
logger.error("未找到订单"+orderId);
}
wxpayOrder = new WxPayOrder();
wxpayOrder.setOrderId(orderId);
wxpayOrder.updateTenantInfo(tenantEntity);
wxpayOrder.setPayVendor(batchOrder.getPayVendor());
wxpayOrder.setComposeOrder(batchOrder.getOrderType());
}
PayQueryAdapterResult queryResult = payServiceFactory.getPayAdapterService(wxpayOrder.getPayVendor()).queryPayStatus(wxpayOrder, appinfo, payAccount);
if (EnumPayStatus.PAY_STATUS_SUCCESS.getCode() == queryResult.getCode()) {


+ 8
- 103
mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java Datei anzeigen

@@ -131,105 +131,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
@Override
public void handleSuccessOrder(WxPayOrder oldRecord,WxComposeOrder composeOrder,PayQueryAdapterResult queryResult,boolean isScheduleTask,boolean isOneChildOrder) {
Date curDate = new Date();
if(EnumPayWay.PAY_WAY_TT.getCode().equals(oldRecord.getPayVendor()) && oldRecord.getId() == null){
EnumPayShare isShare = EnumPayShare.NO;
WxAppinfo appInfo = wxAppinfoService.getCAppInfo(oldRecord, EnumPayWay.getEnum(oldRecord.getPayVendor()).getPlat());
WxPayAccount payAccount = wxPayAccountMapper.selectById(appInfo.getPayId());
if (payAccount.checkShare()) {
isShare = EnumPayShare.YES;
}

TtPayOrderQueryV2Result result = (TtPayOrderQueryV2Result) queryResult.getData();

WxBatchOrder batchOrder = wxBatchOrderMapper.selectById(oldRecord.getOrderId(), oldRecord.getTenantId());
String open_id = (String) batchOrder.getExpParamValue("open_id");

oldRecord.setId(oldRecord.getOrderId());
oldRecord.setOpenId(open_id);
oldRecord.setComposeOrder(batchOrder.getOrderType());

oldRecord.setCreateTime(curDate);
oldRecord.setUpdateTime(curDate);
oldRecord.setPayTimeStart(batchOrder.getCreateDate());

oldRecord.setPayOrderNo(result.getOutOrderNo());
oldRecord.setPayAmount(result.getTotalFee());

oldRecord.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode());
oldRecord.setTtPayWay(result.getPayChannel());

String timEndStr = queryResult.getEndTimeStr();
Date timeEnd = null;
try {
timeEnd = Utility.getDateFromString(timEndStr);
} catch (ParseException e) {
logger.error("解析timeEnd失败");
timeEnd = new Date();
}
oldRecord.setPayTimeEnd(timeEnd);
oldRecord.setPayEndFrom(EnumPayEndFrom.QUERY.getCode());
oldRecord.setTransactionId(result.getPaymentOrderId());

oldRecord.setShare(isShare.getCode());
if (isShare == EnumPayShare.YES) {
PayShareAdapterService payShareServie = payServiceFactory.getPayShareAdapterService(oldRecord.getPayVendor());

PayShareCalculateAmount recordShareAmount = payShareServie.calculateAmount(oldRecord.getPayAmount(), payAccount);
// 分账金额
Integer share_amount = recordShareAmount.getShareAmount();
oldRecord.setShareAmount(share_amount);
oldRecord.setRateAmount(recordShareAmount.getRateAmount());
//设置子订单分账金额
Map<String,WxComposeChildOrderShare> childShares = new HashMap<String,WxComposeChildOrderShare>();
OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType());
List<WxOrder> orderList = orderAdapterService.getChildOrders(composeOrder, appInfo.getTenantId());
if(null != orderList && orderList.size() > 0) {
for (WxOrder o : orderList) {
PayShareCalculateAmount oShareAmount = payShareServie.calculateAmount(o.getPayment(), payAccount);
Integer orderShareAmount = oShareAmount.getShareAmount();
Integer orderRateAmount = oShareAmount.getRateAmount();
childShares.put(String.valueOf(o.getId()), new WxComposeChildOrderShare(o.getPayment(), orderShareAmount, orderRateAmount));
}
oldRecord.setChildOrderShare(JSON.toJSONString(childShares));
}
}

int sqlRow = wxPayOrderMapper.insert(oldRecord);

WxPayOrderServiceImpl proxy = (WxPayOrderServiceImpl) AopContext.currentProxy();
if (!EnumComposeOrder.isSingle(composeOrder.getComposeOrderType())) {
//如果是组合订单的单独处理。如定时处理的单个订单
if (isOneChildOrder) {
//处理其他信息
try {
proxy.handleOrderPaySingleOrderSuccess(composeOrder.getSingleOrder(),oldRecord, queryResult.getTransactionId(),isScheduleTask);
}catch(Exception e) {
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage());
}
}else {
List<WxOrder> orderList = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()).getChildOrders(composeOrder, oldRecord.getTenantId());
for (WxOrder o : orderList) {
try {
proxy.handleOrderPaySingleOrderSuccess(o,oldRecord, queryResult.getTransactionId(), isScheduleTask);
}catch(Exception e) {
logger.error("handleSuccessOrder error.",e);
}
}
}
}else {
//处理其他信息
try {
proxy.handleOrderPaySingleOrderSuccess(composeOrder.getSingleOrder(),oldRecord, queryResult.getTransactionId(),isScheduleTask);
}catch(Exception e) {
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),e.getMessage());
}
}





}else if(oldRecord.getId() != null && oldRecord.getPayOrderStatus() != EnumPayStatus.PAY_STATUS_SUCCESS.getCode()){
if(oldRecord.getPayOrderStatus() != EnumPayStatus.PAY_STATUS_SUCCESS.getCode()){
WxPayOrderServiceImpl proxy = (WxPayOrderServiceImpl) AopContext.currentProxy();
//因为此处是处理订单支付成功了但是订单状态为未支付成功的异常状态,库存不应该再扣减
//更新wxPayOrder
@@ -468,11 +370,14 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
}
}else {
{

// 3.1 创建支付订单
Long id = idworker.nextId();
if (null == id || id.longValue() <=0) {
throw new MallinkException(ErrorCode.PAY_ORDER_PAYING.getCode(),"订单支付流水号生成失败!new payorder:"+record.getOrderId()+",id:"+id);
}
// Long id = idworker.nextId();
// if (null == id || id.longValue() <=0) {
// throw new MallinkException(ErrorCode.PAY_ORDER_PAYING.getCode(),"订单支付流水号生成失败!new payorder:"+record.getOrderId()+",id:"+id);
// }

Long id = record.getOrderId();//支付订单号=订单号
record.setId(id);
record.updateTenantInfo(composeOrder);


Laden…
Abbrechen
Speichern