Просмотр исходного кода

[B端][修改][账单支付OPENID不同问题]

release_toaliyun_real
gongbiao 7 лет назад
Родитель
Сommit
ed8a67e14c
1 измененных файлов: 78 добавлений и 47 удалений
  1. +78
    -47
      mallinkService/src/main/java/com/iformall/service/impl/WxPayBillServiceImpl.java

+ 78
- 47
mallinkService/src/main/java/com/iformall/service/impl/WxPayBillServiceImpl.java Просмотреть файл

@@ -137,58 +137,89 @@ public class WxPayBillServiceImpl implements WxPayBillService {
logger.info("创建支付订单:"+record.toString()); logger.info("创建支付订单:"+record.toString());
} else { } else {
//数据库存在订单信息,更新支付中状态,返回之前的预支付信息 //数据库存在订单信息,更新支付中状态,返回之前的预支付信息
record = list.get(0);
record.setShare(isShare.getCode());
WxPayBill wxPayBill = list.get(0);
wxPayBill.setShare(isShare.getCode());
//更新订单状态为支付中 //更新订单状态为支付中
record.setPayBillStatus(EnumPayStatus.PAY_STATUS_WAIT.getCode());
record.setUpdateTime(currentDate);
int sqlRow = wxPayBillMapper.updateByPrimaryKeySelective(record);
wxPayBill.setPayBillStatus(EnumPayStatus.PAY_STATUS_WAIT.getCode());
wxPayBill.setUpdateTime(currentDate);
int sqlRow = wxPayBillMapper.updateByPrimaryKeySelective(wxPayBill);
if (sqlRow != 1) { if (sqlRow != 1) {
logger.error("pay bill update error: " + record.toString());
logger.error("pay bill update error: " + wxPayBill.toString());
throw new MallinkException(ErrorCode.DB_FAIL); throw new MallinkException(ErrorCode.DB_FAIL);
} }
logger.info("数据库存在订单信息,更新支付中状态,返回之前的预支付信息:"+JSONObject.toJSONString(record));
//订单在120分钟之内没有失效,延用之前预支付订单号
if(record.getPayTimeEnd().after(new Date())){
String noncestr = Utility.generate32UUID();
String timestamp = String.valueOf(Utility.getCurrentTimeStamp());
Map<String, String> sighMap = MapUtil.getOrderMap();
sighMap.put("appId", appInfo.getAppId());
sighMap.put("timeStamp", timestamp);
sighMap.put("nonceStr", noncestr);
sighMap.put("package", "prepay_id=" + record.getPrepayId());
sighMap.put("signType", "HMAC-SHA256");
String signAgent = WxPayment.createSignHMAC(sighMap, payAccount.getApiKey());
Map<String,String> returnMap=new HashMap<>();
returnMap.put("timeStamp", timestamp);
returnMap.put("nonceStr", noncestr);
returnMap.put("package", "prepay_id=" + record.getPrepayId());
returnMap.put("paySign", signAgent);
returnMap.put("signType", "HMAC-SHA256");
logger.info("订单在120分钟之内没有失效,延用之前预支付订单号:"+JSONObject.toJSONString(record));
return new ResultData(Result.SUCCESS, "创建支付订单成功", returnMap);
}
//超过时间关闭订单
ResultData resultData = payBillClose(appInfo, record);
if(resultData.code!=Result.SUCCESS){
return new ResultData(ErrorCode.ORDER_IS_FAIL);
}
logger.info("超过时间关闭订单:"+record.toString());
record=wxPayBillMapper.selectByPrimaryKey(record.getId());
//创建新的订单号
payBillNo = record.getId()+DateUtils.getSystemTime("yyMMddHHmmss");
record.setPayTimeStart(currentDate);
long endtime = currentDate.getTime() + 120 * 60 * 1000;
record.setPayTimeEnd(new Date(endtime));
record.setPayBillNo(payBillNo);
record.setPayAmount((Integer) bill.get("owe"));
record.setUpdateTime(currentDate);
sqlRow = wxPayBillMapper.updateByPrimaryKeySelective(record);
if (sqlRow != 1) {
logger.error("pay bill update error: " + JSONObject.toJSONString(record));
throw new MallinkException(ErrorCode.DB_FAIL);
//数据库中openId与再次传来的openId不相同那么关闭此订单再次生成新的订单
if(!wxPayBill.getOpenId().equals(record.getOpenId())){
String openId = record.getOpenId();
//关闭订单
logger.info("openId不同时关闭之前的订单:"+record.toString());
ResultData resultData = payBillClose(appInfo, wxPayBill);
if(resultData.code!=Result.SUCCESS){
return new ResultData(ErrorCode.ORDER_IS_FAIL);
}

record=wxPayBillMapper.selectByPrimaryKey(wxPayBill.getId());
record.setOpenId(openId);
//创建新的订单号
payBillNo = record.getId()+DateUtils.getSystemTime("yyMMddHHmmss");
record.setPayTimeStart(currentDate);
long endtime = currentDate.getTime() + 120 * 60 * 1000;
record.setPayTimeEnd(new Date(endtime));
record.setPayBillNo(payBillNo);
record.setPayAmount((Integer) bill.get("owe"));
record.setUpdateTime(currentDate);
sqlRow = wxPayBillMapper.updateByPrimaryKeySelective(record);
if (sqlRow != 1) {
logger.error("pay bill update error: " + JSONObject.toJSONString(record));
throw new MallinkException(ErrorCode.DB_FAIL);
}
logger.info("新的订单数据:"+JSONObject.toJSONString(record));
}else{
logger.info("数据库存在订单信息,更新支付中状态,返回之前的预支付信息:"+JSONObject.toJSONString(wxPayBill));
//订单在120分钟之内没有失效,延用之前预支付订单号
if(wxPayBill.getPayTimeEnd().after(new Date())){
String noncestr = Utility.generate32UUID();
String timestamp = String.valueOf(Utility.getCurrentTimeStamp());
Map<String, String> sighMap = MapUtil.getOrderMap();
sighMap.put("appId", appInfo.getAppId());
sighMap.put("timeStamp", timestamp);
sighMap.put("nonceStr", noncestr);
sighMap.put("package", "prepay_id=" + wxPayBill.getPrepayId());
sighMap.put("signType", "HMAC-SHA256");
String signAgent = WxPayment.createSignHMAC(sighMap, payAccount.getApiKey());
Map<String,String> returnMap=new HashMap<>();
returnMap.put("timeStamp", timestamp);
returnMap.put("nonceStr", noncestr);
returnMap.put("package", "prepay_id=" + wxPayBill.getPrepayId());
returnMap.put("paySign", signAgent);
returnMap.put("signType", "HMAC-SHA256");
logger.info("订单在120分钟之内没有失效,延用之前预支付订单号:"+JSONObject.toJSONString(wxPayBill));
return new ResultData(Result.SUCCESS, "创建支付订单成功", returnMap);
}else{
//超过时间关闭订单
ResultData resultData = payBillClose(appInfo, wxPayBill);
if(resultData.code!=Result.SUCCESS){
return new ResultData(ErrorCode.ORDER_IS_FAIL);
}
logger.info("超过时间关闭订单:"+wxPayBill.toString());
record=wxPayBillMapper.selectByPrimaryKey(wxPayBill.getId());
//创建新的订单号
payBillNo = record.getId()+DateUtils.getSystemTime("yyMMddHHmmss");
record.setPayTimeStart(currentDate);
long endtime = currentDate.getTime() + 120 * 60 * 1000;
record.setPayTimeEnd(new Date(endtime));
record.setPayBillNo(payBillNo);
record.setPayAmount((Integer) bill.get("owe"));
record.setUpdateTime(currentDate);
sqlRow = wxPayBillMapper.updateByPrimaryKeySelective(record);
if (sqlRow != 1) {
logger.error("pay bill update error: " + JSONObject.toJSONString(record));
throw new MallinkException(ErrorCode.DB_FAIL);
}
logger.info("新的订单数据:"+JSONObject.toJSONString(record));
}

} }
logger.info("新的订单数据:"+JSONObject.toJSONString(record));
} }


// 统一下单 // 服务商模式 // 统一下单 // 服务商模式


Загрузка…
Отмена
Сохранить