Browse Source

[刷卡支付][收银台]:刷卡支付成功

release_toaliyun_real
Stormeye Wu 7 years ago
parent
commit
f3f61c1616
1 changed files with 37 additions and 25 deletions
  1. +37
    -25
      mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java

+ 37
- 25
mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java View File

@@ -461,7 +461,6 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
String openId = returnMap.get("openid"); String openId = returnMap.get("openid");
String isSubscribe = returnMap.get("is_subscribe"); String isSubscribe = returnMap.get("is_subscribe");
String transactionId = returnMap.get("transaction_id"); String transactionId = returnMap.get("transaction_id");
record.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode());
record.setTransactionId(transactionId); record.setTransactionId(transactionId);
record.setUpdateTime(new Date()); record.setUpdateTime(new Date());
handleMicroOrderPaySuccess(record, transactionId, openId, isSubscribe); handleMicroOrderPaySuccess(record, transactionId, openId, isSubscribe);
@@ -533,7 +532,6 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
String openId = returnMap.get("openid"); String openId = returnMap.get("openid");
String isSubscribe = returnMap.get("is_subscribe"); String isSubscribe = returnMap.get("is_subscribe");
String transactionId = returnMap.get("transaction_id"); String transactionId = returnMap.get("transaction_id");
record.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode());
record.setTransactionId(transactionId); record.setTransactionId(transactionId);
record.setUpdateTime(new Date()); record.setUpdateTime(new Date());
handleMicroOrderPaySuccess(record, transactionId, openId, isSubscribe); handleMicroOrderPaySuccess(record, transactionId, openId, isSubscribe);
@@ -669,9 +667,15 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
//USERPAYING--用户支付中 //USERPAYING--用户支付中
//PAYERROR--支付失败(其他原因,如银行返回失败) //PAYERROR--支付失败(其他原因,如银行返回失败)
if ("SUCCESS".equals(trade_state)) { if ("SUCCESS".equals(trade_state)) {
String openId = returnMap.get("sub_openid");
String sub_is_subscribe = returnMap.get("sub_is_subscribe");
String transactionId = returnMap.get("transaction_id"); String transactionId = returnMap.get("transaction_id");
record.setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode());
handleOrderPaySuccess(record, transactionId);
String tradeType = returnMap.get("trade_type");
if ("MICROPAY".equals(tradeType)) {
handleMicroOrderPaySuccess(record, transactionId, openId, sub_is_subscribe);
} else {
handleOrderPaySuccess(record, transactionId);
}
return new ResultData(Result.SUCCESS, "订单支付成功", returnMap); return new ResultData(Result.SUCCESS, "订单支付成功", returnMap);
} else if ("REFUND".equals(trade_state)) { } else if ("REFUND".equals(trade_state)) {
record.setPayOrderStatus(EnumPayStatus.PAY_STATUS_REFUND.getCode()); record.setPayOrderStatus(EnumPayStatus.PAY_STATUS_REFUND.getCode());
@@ -1180,12 +1184,21 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
return; return;
} }


WxOrder order = wxOrderMapper.selectByPrimaryKey(record.getOrderId());
if (order == null) {
logger.error("pay success handle, order " + record.getOrderId() + " not found , payOrderid : " + record.getPayOrderNo());
throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND);
}

WxAppinfo appinfo = getWxAppinfo(order.getType(), order.getTenantId());

// add c_user // add c_user
Date curDate = new Date(); Date curDate = new Date();
WxCUser userQ = new WxCUser(); WxCUser userQ = new WxCUser();
userQ.setOpenId(openId); userQ.setOpenId(openId);
userQ.setCreateDate(curDate); userQ.setCreateDate(curDate);
userQ.setUpdateDate(curDate); userQ.setUpdateDate(curDate);
userQ.setAppId(appinfo.getAppId());
WxCUser user1 = wxCUserMapper.findByOpenId(userQ); WxCUser user1 = wxCUserMapper.findByOpenId(userQ);
if(user1 == null) { if(user1 == null) {
final IdWorker idWorker = IdWorker.get(); final IdWorker idWorker = IdWorker.get();
@@ -1195,12 +1208,6 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
userQ.setId(user1.getId()); userQ.setId(user1.getId());
} }


WxOrder order = wxOrderMapper.selectByPrimaryKey(record.getOrderId());
if (order == null) {
logger.error("pay success handle, order " + record.getOrderId() + " not found , payOrderid : " + record.getPayOrderNo());
throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND);
}

// 修改支付订单状态 // 修改支付订单状态
WxPayOrder updateOrder = new WxPayOrder(); WxPayOrder updateOrder = new WxPayOrder();
updateOrder.setId(record.getId()); updateOrder.setId(record.getId());
@@ -1274,21 +1281,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
Date currentDate = new Date(); Date currentDate = new Date();
if (record.getId() > 0) { if (record.getId() > 0) {
// 1. get appinfo // 1. get appinfo
WxAppinfo appInfo = null;
WxAppinfo appinfoQ = new WxAppinfo();
appinfoQ.setTenantId(order.getTenantId());
if(order.getType().equals(EnumOrderType.COUPON.getCode())) {
appinfoQ.setType(EnumAppType.C.getCode());
} else if(order.getType().equals(EnumOrderType.MICROPAY.getCode())) {
appinfoQ.setType(EnumAppType.B.getCode());
} else {
appinfoQ.setType(EnumAppType.C.getCode());
}

List<WxAppinfo> appList = wxAppinfoMapper.select(appinfoQ);
if (appList.size() > 0) {
appInfo = appList.get(0);
}
WxAppinfo appInfo = getWxAppinfo(order.getType(), order.getTenantId());


WxPayOrder updateOrder = null; WxPayOrder updateOrder = null;


@@ -1402,6 +1395,25 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
*/ */
} }


private WxAppinfo getWxAppinfo(Integer orderType, String tenentId) {
WxAppinfo appInfo = null;
WxAppinfo appinfoQ = new WxAppinfo();
appinfoQ.setTenantId(tenentId);
if(orderType.equals(EnumOrderType.COUPON.getCode())) {
appinfoQ.setType(EnumAppType.C.getCode());
} else if(orderType.equals(EnumOrderType.MICROPAY.getCode())) {
appinfoQ.setType(EnumAppType.B.getCode());
} else {
appinfoQ.setType(EnumAppType.C.getCode());
}

List<WxAppinfo> appList = wxAppinfoMapper.select(appinfoQ);
if (appList.size() > 0) {
appInfo = appList.get(0);
}
return appInfo;
}



@Override @Override
public PageInfo<WxPayOrder> listAsPage(WxPayOrder record, Integer pageIndex, Integer pageSize) { public PageInfo<WxPayOrder> listAsPage(WxPayOrder record, Integer pageIndex, Integer pageSize) {


Loading…
Cancel
Save