BankPayServiceImpl.java
3.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package com.zteits.ipay.biz;
import com.alibaba.fastjson.JSONObject;
import com.clouds.common.utils.AmountUtils;
import com.clouds.common.utils.DateUtil;
import com.zteits.clouds.api.apibase.bean.BizResult;
import com.zteits.clouds.api.apibase.constants.ErrorType;
import com.zteits.clouds.api.apibase.constants.PayResultEnum;
import com.zteits.clouds.api.apibase.exception.BizException;
import com.zteits.clouds.api.dto.order.payorder.param.QueryPayOrderByPayOrderIdRequest;
import com.zteits.clouds.api.dto.pay.bank.OrderQueryStateRes;
import com.zteits.clouds.api.service.order.pay.BankPayService;
import com.zteits.ipay.service.bank.ABCBankPayInnerService;
import com.zteits.ipay.service.bank.vo.query.ABCBankQueryOrderRes;
import com.zteits.ipay.service.bank.vo.query.ABCOrderRes;
import com.zteits.order.dao.payorder.PayOrderDao;
import com.zteits.order.domain.PayOrder;
import org.apache.commons.net.util.Base64;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
/**
* <p>
* Copyright: Copyright (c) 2018 zteits
*
* @ClassName: EtcPayService
* @Description:
* @version: v1.0.0
* @author: zengqc
* @date: 2020-06-03 11:10
*/
@Service("com.zteits.ipay.biz.BankPayServiceImpl")
public class BankPayServiceImpl implements BankPayService {
private static final Logger logger = LoggerFactory.getLogger(BankPayServiceImpl.class);
@Autowired
private ABCBankPayInnerService abcBankPayInnerService;
@Autowired
private PayOrderDao payOrderDao;
@Override
public BizResult<OrderQueryStateRes> queryOrderForAbc(QueryPayOrderByPayOrderIdRequest req) {
OrderQueryStateRes orderQueryStateRes = new OrderQueryStateRes(PayResultEnum.PAY_FAIL, "9999", "交易失败");
logger.info("农行查询订单交易状态入参:{}", JSONObject.toJSONString(req));
PayOrder payOrder = payOrderDao.queryPayOrderByPayOrderId(req.getPayOrderId());
if (payOrder == null) {
throw new BizException(ErrorType.BIZ_ERROR, "没有查到当前支付单信息");
}
ABCBankQueryOrderRes abcBankQueryOrderRes = abcBankPayInnerService.queryOrderForAbc(req.getPayOrderId(), payOrder.getAppId());
/**交易成功*/
if ("0000".equals(abcBankQueryOrderRes.getReturnCode())) {
orderQueryStateRes.setPayResultEnum(PayResultEnum.PAY_SUCCESS);
orderQueryStateRes.setErrCode(abcBankQueryOrderRes.getReturnCode());
orderQueryStateRes.setErrMsg(abcBankQueryOrderRes.getErrorMessage());
orderQueryStateRes.setPayOrderId(req.getPayOrderId());
/**订单信息*/
String order = new String(Base64.decodeBase64(abcBankQueryOrderRes.getOrder()));
ABCOrderRes abcOrderRes = JSONObject.parseObject(order, ABCOrderRes.class);
if ("04".equals(abcOrderRes.getStatus())) {
Date payFinishTime = DateUtil.to_date(abcOrderRes.getOrderDate() + abcOrderRes.getOrderTime(), "yyyy/MM/ddHH:mm:ss");
Long fee = Long.valueOf(AmountUtils.changeY2F(abcOrderRes.getOrderAmount()));
orderQueryStateRes.setPayedFinishTime(payFinishTime);
orderQueryStateRes.setOrderPayedFee(fee);
}else if("02".equals(abcOrderRes.getStatus())){
orderQueryStateRes.setPayResultEnum(PayResultEnum.PAY_NO_KNOW);
orderQueryStateRes.setErrCode(abcBankQueryOrderRes.getReturnCode());
orderQueryStateRes.setErrMsg(abcBankQueryOrderRes.getErrorMessage());
}else{
orderQueryStateRes.setPayResultEnum(PayResultEnum.PAY_FAIL);
orderQueryStateRes.setErrCode(abcBankQueryOrderRes.getReturnCode());
orderQueryStateRes.setErrMsg(abcBankQueryOrderRes.getErrorMessage());
}
}
return new BizResult<>(orderQueryStateRes);
}
}