ソースを参照

发行接口

master
qiubh 2ヶ月前
コミット
187a3e9bd9

+ 104
- 0
zhywpt-service-ias/src/main/java/cn/com/taiji/ias/manager/order/AbstractOrderManager.java ファイルの表示

@@ -6,17 +6,28 @@ import cn.com.taiji.core.entity.basic.QtkCustomerInfo;
import cn.com.taiji.core.entity.basic.QtkServiceHall;
import cn.com.taiji.core.entity.basic.QtkServicehallLocation;
import cn.com.taiji.core.entity.basic.QtkVehicleInfo;
import cn.com.taiji.core.entity.comm.CommonPayConfig;
import cn.com.taiji.core.entity.dict.issue.OrderPayStatus;
import cn.com.taiji.core.entity.dict.issue.TransactionBizType;
import cn.com.taiji.core.entity.dict.pay.PayChannelType;
import cn.com.taiji.core.entity.issue.IssueOrderPay;
import cn.com.taiji.core.entity.issue.IssueOrderinfo;
import cn.com.taiji.core.entity.issue.IssueOrderinfoExt;
import cn.com.taiji.core.entity.issue.TransactionStatus;
import cn.com.taiji.core.entity.user.AccountInfo;
import cn.com.taiji.core.manager.tools.MyTimeTools;
import cn.com.taiji.core.model.comm.protocol.AbstractSignTypeRequest;
import cn.com.taiji.core.model.comm.protocol.ats.weiXin.AtsQueryPayResultV2Request;
import cn.com.taiji.core.model.comm.protocol.ats.weiXin.AtsQueryPayResultV2Response;
import cn.com.taiji.core.model.comm.protocol.ats.weiXin.AtsQueryPayResultV3Request;
import cn.com.taiji.core.model.comm.protocol.ats.weiXin.AtsQueryPayResultV3Response;
import cn.com.taiji.core.model.comm.protocol.ods.ois.issue.OisOrderSaveRequest;
import cn.com.taiji.core.repo.jpa.basic.QtkCustomerInfoRepo;
import cn.com.taiji.core.repo.jpa.basic.QtkServicehallLocationRepo;
import cn.com.taiji.core.repo.jpa.basic.QtkServicehallRepo;
import cn.com.taiji.core.repo.jpa.basic.QtkVehicleInfoRepo;
import cn.com.taiji.core.repo.jpa.comm.CommonPayConfigRepo;
import cn.com.taiji.core.repo.jpa.issue.IssueOrderPayRepo;
import cn.com.taiji.core.repo.jpa.issue.IssueOrderinfoExtRepo;
import cn.com.taiji.core.repo.jpa.issue.IssueOrderinfoRepo;
import cn.com.taiji.core.repo.jpa.issue.IssueProductRepo;
@@ -26,9 +37,13 @@ import cn.com.taiji.ias.dict.DataType;
import cn.com.taiji.ias.manager.AbstractHandleManager;
import cn.com.taiji.ias.manager.GlobalTransactionManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;

import java.awt.geom.Point2D;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.concurrent.TimeUnit;

public abstract class AbstractOrderManager<T extends AbstractSignTypeRequest<?>>
extends AbstractHandleManager<T> {
@@ -64,6 +79,11 @@ public abstract class AbstractOrderManager<T extends AbstractSignTypeRequest<?>>
protected AccountInfoRepo accountInfoRepo;
@Autowired
protected IssueProductRepo issueProductRepo;
@Autowired
protected IssueOrderPayRepo orderPayRepo;
@Autowired
protected CommonPayConfigRepo payConfigRepo;


public AbstractOrderManager(DataType dataType) {
super(dataType);
@@ -222,4 +242,88 @@ public abstract class AbstractOrderManager<T extends AbstractSignTypeRequest<?>>
}
}

@Transactional(rollbackFor = {Exception.class})
protected List<IssueOrderPay> paymentDetections(String orderNo) throws ServiceHandleException {
List<IssueOrderPay> pays = orderPayRepo.listByOrderNo(orderNo);
if (!isEmpty(pays)) {
throw newBusinessException("订单支付信息不存在");
}
for (IssueOrderPay pay : pays) {
if (OrderPayStatus.UNPAY.equals(pay.getPayStatus()) || OrderPayStatus.PAYING.equals(pay.getPayStatus())) {
paymentDetection(pay);
}
}
return pays;
}

/**
* 完成支付查询,并更新支付状态
*/
private void paymentDetection(IssueOrderPay pay) throws ServiceHandleException {
if (!hasText(pay.getExternalOrderNo())) {
return;
}
CommonPayConfig payConfig = payConfigRepo.findById(pay.getPayConfigId()).orElse(null);
if (PayChannelType.WEIXINPAY.equals(payConfig.getPayChannelType())) {
if (payConfig == null)
throw newBusinessException("支付配置信息不存在"+pay.getPayConfigId());
switch (payConfig.getWxPayVersion()) {
case 2:
queryV2(pay, payConfig);
break;
case 3:
queryV3(pay, payConfig);
break;
default:
throw newBusinessException("支付版本不存在"+payConfig.getWxPayVersion());
}
try {
TimeUnit.MILLISECONDS.sleep(200);
} catch (InterruptedException e) {
logger.error("", e);
}
} else {
throw newBusinessException("当前不支持除微信外的其他支付方式");
}
}

private void queryV3(IssueOrderPay pay, CommonPayConfig payConfig) throws ServiceHandleException {
AtsQueryPayResultV3Request v3Request = new AtsQueryPayResultV3Request();
v3Request.setCreateType(payConfig.getWxServiceType());
v3Request.setExternalOrderNo(pay.getExternalOrderNo());
// v3Request.setTradeType(TradeType.valueOf(payConfig.getPayProductType()));
v3Request.setMchid(payConfig.getWxMchId());
v3Request.setApiV3Key(payConfig.getWxApiv3key());
v3Request.setPrivateKey(payConfig.getWxPrivatekey());
v3Request.setSerialNo(payConfig.getWxSerialNo());
// v2Request.setSubMchId(payConfig.get);
AtsQueryPayResultV3Response res = jsonPostRepeat(v3Request);
if (OrderPayStatus.SUCCESS.equals(res.getTradeState())) {
pay.setPayStatus(OrderPayStatus.SUCCESS);
pay.setPayTime(MyTimeTools.strToTime(res.getSuccessTime(), DateTimeFormatter.ofPattern("yyyy-MM-ddTHH:mm:ss")));
pay.setUpdateTime(LocalDateTime.now());
pay.setExternalOrderNo(res.getTransactionId());
pay.setPayResult(res.toJson());
}

}

private void queryV2(IssueOrderPay pay, CommonPayConfig payConfig) throws ServiceHandleException {
AtsQueryPayResultV2Request v2Request = new AtsQueryPayResultV2Request();
v2Request.setCreateType(payConfig.getWxServiceType());
v2Request.setOutTradeNo(pay.getExternalOrderNo());
v2Request.setAppId(payConfig.getWxAppId());
v2Request.setMchId(payConfig.getWxMchId());
// v2Request.setSubAppId(payConfig.gets);
// v2Request.setSubMchId(payConfig.get);
AtsQueryPayResultV2Response res = jsonPostRepeat(v2Request);
if (OrderPayStatus.SUCCESS.equals(res.getTradeState())) {
pay.setPayStatus(OrderPayStatus.SUCCESS);
pay.setPayTime(MyTimeTools.strToTime(res.getTimeEnd(), DateTimeFormatter.ofPattern("yyyyMMddHHmmss")));
pay.setUpdateTime(LocalDateTime.now());
pay.setExternalOrderNo(res.getTransactionId());
pay.setPayResult(res.toJson());
}
}

}

読み込み中…
キャンセル
保存