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; /** *

* 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 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); } }