微信支付回调修改

This commit is contained in:
donqi 2022-10-25 00:34:26 +08:00
parent ddb3c0f5ca
commit 21f2947f45
3 changed files with 29 additions and 52 deletions

View File

@ -85,9 +85,11 @@ public class WxPayController extends BaseController {
}
List<Long> idList = orderDetailService.selectByOrderMasterId(orderMaster.getId()).stream().map(OrderDetail::getId).collect(Collectors.toList());
List<FinancialChangeRecord> financialChangeRecords = financialChangeRecordService.selectByDetailIds(StringUtils.join(idList, ","));
List<Long> financialChangeRecordIds = new ArrayList<Long>();
for (FinancialChangeRecord financialChangeRecord : financialChangeRecords) {
if (PayStatus.WAIT_PAY.getCode().toString().equals(String.valueOf(financialChangeRecord.getPayStatus()))) {
payMoney = payMoney.add(financialChangeRecord.getChangeMoney());
financialChangeRecordIds.add(Long.valueOf(financialChangeRecord.getId()));
}
}
//调用adapay微信公众号支付.
@ -98,7 +100,7 @@ public class WxPayController extends BaseController {
List<DivMember> divMembers = new ArrayList<>();
// divMembers.add(new DivMember("C7D101", String.valueOf(financialMaster.getPayMoney()), true));
// TODO 订单里需要补充支付金额tittle简要描述分账信息description
PayParam payParam = PayParam.delayPayParam(orderMaster.getCode() + "_" + System.currentTimeMillis(),
PayParam payParam = PayParam.delayPayParam(orderMaster.getCode() + "_" + StringUtils.join(financialChangeRecordIds, ",") + "_"+ System.currentTimeMillis(),
String.valueOf(payMoney), "工圈子居家设备", "工圈子居家设备购买付费");
map = adapayService.wxLitePay(orderMaster.getDeptId(), payParam, expend, null, null);
} catch (BaseAdaPayException e) {

View File

@ -119,7 +119,7 @@ qiniu:
adapay:
debug: true
prod-mode: true
notifyUrl: 'https://www.opsoul.com/adapay/callback'
notifyUrl: 'https://www.opsoul.com:8881/adapay/callback'
jim:
appKey: '110e8830290152d76e2f1d97'

View File

@ -6,9 +6,7 @@ import com.ghy.common.adapay.model.AdapayStatusEnum;
import com.ghy.common.adapay.model.Event;
import com.ghy.common.adapay.model.PayCallback;
import com.ghy.common.adapay.model.PaymentDTO;
import com.ghy.common.enums.FinancialDetailType;
import com.ghy.common.enums.PayStatus;
import com.ghy.common.enums.PayTypeEnum;
import com.ghy.payment.domain.FinancialChangeRecord;
import com.ghy.payment.domain.FinancialDetail;
import com.ghy.payment.domain.FinancialMaster;
@ -19,14 +17,12 @@ import com.ghy.payment.service.FinancialMasterService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
import java.util.Arrays;
import java.util.concurrent.atomic.AtomicReference;
/**
* 支付回调
@ -64,60 +60,39 @@ public class PayCallbackService implements CallBackService {
financialMasterService.updatePayment(param);
if (AdapayStatusEnum.succeeded.code.equals(payment.getStatus())) {
if(payment.getOrderNo().split("_").length > 2){
FinancialChangeRecord financialChangeRecord = new FinancialChangeRecord();
financialChangeRecord.setId(payment.getOrderNo().split("_")[1]);
financialChangeRecord.setPayStatus(1);
financialChangeRecordService.updateFinancialChangeRecord(financialChangeRecord);
// 支付回调中的加价记录
String financialChangeRecordIds = payment.getOrderNo().split("_")[1];
String[] financialChangeRecordArr = financialChangeRecordIds.split(",");
// 修改子订单的payMoney
FinancialChangeRecord fc = financialChangeRecordService.selectFinancialChangeRecordById(financialChangeRecord.getId());
FinancialDetail financialDetail = financialDetailService.selectByOrderDetailId(fc.getOrderDetailId());
FinancialDetail financialDetail2Update = new FinancialDetail();
financialDetail2Update.setId(financialDetail.getId());
financialDetail2Update.setPayMoney(financialDetail.getPayMoney().add(fc.getChangeMoney()));
financialDetail2Update.setPayStatus(PayStatus.PAID.getCode());
financialDetailService.updateFinancialDetail(financialDetail2Update);
// 修改主单的payMoney
FinancialMaster financialMaster = financialMasterService.selectById(financialDetail.getFinancialMasterId());
FinancialMaster financialMaster2Update = new FinancialMaster();
financialMaster2Update.setId(financialMaster.getId());
financialMaster2Update.setPayMoney(financialMaster.getPayMoney().add(fc.getChangeMoney()));
financialMaster2Update.setPayStatus(PayStatus.PAID.getCode());
financialMasterService.updateFinancialMaster(financialMaster2Update);
// TODO 拆分对应的分账流水
} else if (PayTypeEnum.valueOf(payment.getPayChannel().toUpperCase()).getCode().equals(PayTypeEnum.WX_LITE.getCode())) {
String orderMasterCode = payment.getOrderNo().split("_")[0];
FinancialMaster fmQry = new FinancialMaster();
fmQry.setOrderMasterCode(orderMasterCode);
FinancialMaster financialMaster = financialMasterService.selectFinancialMasterList(fmQry).get(0);
FinancialDetail qry = new FinancialDetail();
qry.setFinancialMasterId(financialMaster.getId());
qry.setFinancialDetailType(FinancialDetailType.ORDER_FEE.getCode());
List<FinancialDetail> financialDetails = financialDetailService.selectFinancialDetailList(qry);
BigDecimal totalChangeMoney = BigDecimal.ZERO;
for (FinancialDetail financialDetail: financialDetails) {
// 查询是否有加价记录对应加到子财务单的payMoney上
FinancialChangeRecord financialChangeRecord = financialChangeRecordService.selectNotPayRecordByDetailId(financialDetail.getOrderDetailId());
if (financialChangeRecord != null) {
totalChangeMoney = totalChangeMoney.add(financialChangeRecord.getChangeMoney());
// 更新加价记录为已支付
financialChangeRecord.setPayStatus(1);
financialChangeRecordService.updateFinancialChangeRecord(financialChangeRecord);
// 更新子单的payMoney及修改为已支付
FinancialDetail financialDetail2Update = new FinancialDetail();
financialDetail2Update.setId(financialDetail.getId());
financialDetail2Update.setPayMoney(financialDetail.getPayMoney().add(financialChangeRecord.getChangeMoney()));
financialDetail2Update.setPayStatus(PayStatus.PAID.getCode());
financialDetailService.updateFinancialDetail(financialDetail2Update);
Long financialMasterId = null;
for (String financialChangeRecordId: financialChangeRecordArr) {
FinancialChangeRecord financialChangeRecord = new FinancialChangeRecord();
financialChangeRecord.setId(financialChangeRecordId);
financialChangeRecord.setPayStatus(1);
financialChangeRecordService.updateFinancialChangeRecord(financialChangeRecord);
// 修改子订单的payMoney
FinancialChangeRecord fc = financialChangeRecordService.selectFinancialChangeRecordById(financialChangeRecord.getId());
FinancialDetail financialDetail = financialDetailService.selectByOrderDetailId(fc.getOrderDetailId());
FinancialDetail financialDetail2Update = new FinancialDetail();
financialDetail2Update.setId(financialDetail.getId());
financialDetail2Update.setPayMoney(financialDetail.getPayMoney().add(fc.getChangeMoney()));
financialDetail2Update.setPayStatus(PayStatus.PAID.getCode());
financialDetailService.updateFinancialDetail(financialDetail2Update);
totalChangeMoney = totalChangeMoney.add(fc.getChangeMoney());
if (financialMasterId == null) {
financialMasterId = financialDetail.getFinancialMasterId();
}
}
// 修改主单的payMoney
FinancialMaster financialMaster = financialMasterService.selectById(financialMasterId);
FinancialMaster financialMaster2Update = new FinancialMaster();
financialMaster2Update.setId(financialMaster.getId());
financialMaster2Update.setPayMoney(financialMaster.getPayMoney().add(totalChangeMoney));
financialMaster2Update.setPayStatus(PayStatus.PAID.getCode());
financialMasterService.updateFinancialMaster(financialMaster2Update);
// TODO 拆分对应的分账流水
}
// 更新主财务单状态
financialMasterService.paySucceeded(payment.getId(), payment.getPayChannel());