WeiXinPublicPayServiceImpl.java 18.4 KB
package com.zteits.pay.weixinpublic.biz;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import com.zteits.clouds.api.service.pay.WeiXinPublicPayService;

@Service("com.zteits.pay.weixinpublic.biz.WeiXinPublicPayServiceImpl")
public class WeiXinPublicPayServiceImpl implements WeiXinPublicPayService {

//    @Autowired
//    private WXConfigService wxConfigService;
//
//    @Autowired
//    private AliPayDao aliPayDao;
//
//    @Autowired
//    private TdBPayOrderFlowDao tdBPayOrderFlowDao;
//
//    @Autowired
//    private TdBOrderDao tdBOrderDao;
//
//    
//    @Autowired
//	private WXCustBindingDao wXCustBindingDao;
//    
//    @Autowired
//	private JPushService jPushService;
//    
//    @Autowired
//    private TdBOrderDetailCardDao tdBOrderDetailCardDao;

    @Value("${wx.notifyUrl}")
    private String notifyUrl;
    
    @Value("${wx.cardNotifyUrl}")
    private String cardNotifyUrl;
    
    @Value("${wx.vipCardNotifyUrl}")
    private String vipCardNotifyUrl;
    

    private static final Logger logger = LoggerFactory.getLogger(WeiXinPublicPayServiceImpl.class);

//    @Override
//    public BizResult<String> unifiedOrder(WeinPublicUnifiedOrderRequest weinPublicUnifiedOrderRequest)
//        throws Exception {
//        BizResult<String> unifiedResult = new BizResult<String>();
//        logger.info("---begin微信公众号统一下单接口,入参={}", JSONObject.toJSON(weinPublicUnifiedOrderRequest));
//
//        if (null == weinPublicUnifiedOrderRequest || StringUtils.isBlank(weinPublicUnifiedOrderRequest.getAppId())
//            || StringUtils.isBlank(weinPublicUnifiedOrderRequest.getOpenId())) {
//            logger.error("微信公众号统一下单接口 入参为空");
//            return new BizResult<>(ErrorType.PARAMM_NULL, "入参为空");
//        }
//
//        AliWeixinCreatePayOrderRequest aliWeixinCreatePayOrderRequest = new AliWeixinCreatePayOrderRequest();
//        aliWeixinCreatePayOrderRequest.setSysCode(weinPublicUnifiedOrderRequest.getSysCode());
//        aliWeixinCreatePayOrderRequest.setOrderId(weinPublicUnifiedOrderRequest.getOrderId());
//        aliWeixinCreatePayOrderRequest.setPayType(weinPublicUnifiedOrderRequest.getPayType());
//        aliWeixinCreatePayOrderRequest.setPaySrcType(weinPublicUnifiedOrderRequest.getPaySrcType());
//        aliWeixinCreatePayOrderRequest.setTerminalSource("3");
//        /**1.通过订单信息生成支付单信息.*/
//        logger.info(" 微信公众号订单生成支付单:" + JSONObject.toJSONString(aliWeixinCreatePayOrderRequest));
//        BizResult<TdBPayOrderDTO> result = aliWeixinPublicService.createPayOrderByParkOrderId(
//            aliWeixinCreatePayOrderRequest);
//        logger.info("结束微信公众支付生成支付单 支付流水 入参:" + (result.isSuccess() ? result.getData() : result.getErrMsg()));
//        //2.调用统一下单
//        if (result != null && result.getData() != null && StringUtils.isNotEmpty(result.getData().getPayOrderId())) {
//
//            BizResult<TdBWxConfigDTO> wxConfigResult = getWxConfigDTOByAppId(weinPublicUnifiedOrderRequest.getAppId());
//            if (ResultUtils.isError(wxConfigResult)) {
//                return new BizResult<>(wxConfigResult.getErrCode(), wxConfigResult.getErrMsg());
//            }
//            TdBWxConfigDTO wxConfigDTO = wxConfigResult.getData();
//            if (null == wxConfigDTO) {
//                logger.info("根据appId 未查询到微信配置信息");
//                return new BizResult<>(ErrorType.SYSTEM_ERROR, "未查询到配置信息");
//            }
//
//            logger.info(" begin调用微信公众号统一下单工具类");
//            TdBOrder bOrder = tdBOrderDao.queryOrderByOrderId(weinPublicUnifiedOrderRequest.getOrderId());
//            if(Integer.parseInt(weinPublicUnifiedOrderRequest.getPaySrcType())==4){
//            	String body = "";
//            	if(bOrder!=null) {
//            		body = "任你停服务号"+bOrder.getCarNumber()+"购买会员卡"+(AmountUtils.changeF2Y(result.getData().getOrderActFee()+"") != null ? AmountUtils.changeF2Y(result.getData().getOrderActFee()+"") : "0")+"元";
//            	}
//            	unifiedResult = WeiXinPublicPayUtil.unifiedOrder(result.getData(),weinPublicUnifiedOrderRequest.getOpenId(), wxConfigDTO,cardNotifyUrl, body);
//            }else{
//            	String body = "";
//            	if(bOrder!=null) {
//            		body = "任你停服务号"+bOrder.getCarNumber()+"支付停车"+(AmountUtils.changeF2Y(result.getData().getOrderActFee()+"") != null ? AmountUtils.changeF2Y(result.getData().getOrderActFee()+"") : "0")+"元";
//            	}
//            	unifiedResult = WeiXinPublicPayUtil.unifiedOrder(result.getData(),weinPublicUnifiedOrderRequest.getOpenId(), wxConfigDTO,notifyUrl, body);
//            }
//            logger.info(" end调用微信公众号统一下单工具类,结果={}", JSONObject.toJSON(unifiedResult));
//            
//            if (null == unifiedResult) {
//            	throw new BizException(ErrorType.BIZ_ERROR, "unifiedResult为空!");
//            }
//            
//            if (null != unifiedResult && !unifiedResult.getErrCode().equals(ErrorType.BIZ_SUCCESS)) {
//                throw new BizException(unifiedResult.getErrCode(), unifiedResult.getErrMsg());
//            }
//        } else {
//            throw new BizException(ErrorType.CREATE_PAY_ORDER_FAIL, "生成支付单信息失败");
//        }
//        logger.info("---end微信公众号统一下单接口...");
//        return new BizResult<String>(unifiedResult.getData());
//    }

//    @Override
//    public BizResult<Boolean> payNotifyUrl(AliPayNotifyRequest aliPayNotifyRequest) {
//        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//        String custId = "";
//        Date sysDate = null;
//        try {
//            sysDate = format.parse(format.format(new Date()));
//        } catch (ParseException e) {
//            e.printStackTrace();
//        }
//        int insertCount = 0;
//        if (aliPayNotifyRequest != null) {
//            Map<String, String> params = aliPayNotifyRequest.getParamsMap();
//            String appId = params.get("appid");
//            if(StringUtils.isBlank(appId)){
//                return new BizResult<>(ErrorType.PARAMM_NULL,"appId");
//            }
//
//            BizResult<TdBWxConfigDTO> wxConfigResult = getWxConfigDTOByAppId(appId);
//            if (ResultUtils.isError(wxConfigResult)) {
//                return new BizResult<>(wxConfigResult.getErrCode(), wxConfigResult.getErrMsg());
//            }
//            TdBWxConfigDTO wxConfigDTO = wxConfigResult.getData();
//            if (null == wxConfigDTO) {
//                logger.info("根据appId 未查询到微信配置信息");
//                return new BizResult<>(ErrorType.SYSTEM_ERROR, "未查询到配置信息");
//            }
//
//
//            logger.info("开始微信异步回调验证签名--" + params);
//            if (PaymentUtil.verifyNotify(params, WxConfigUtil.decode(wxConfigDTO.getPayApiSecret()))) {
//                logger.info("微信异步回调验证签名成功--");
//                //商户号
//                String mch_id = params.get("mch_id");
//                //随机字符串
//                String nonce_str = params.get("nonce_str");
//                //用户标识   用户在商户appid下的唯一标识
//                String openid = params.get("openid");
//                //交易类型
//                String trade_type = params.get("trade_type");
//                //付款银行
//                String bank_type = params.get("bank_type");
//                //总金额
//                String total_fee = params.get("total_fee");
//                //现金支付金额
//                String cash_fee = params.get("cash_fee");
//                //微信支付订单号
//                String transaction_id = params.get("transaction_id");
//                //商户订单号
//                String out_trade_no = params.get("out_trade_no");
//                //支付完成时间
//                String time_end = params.get("time_end");
//
//                AliPayOrderQueryRequest aliPayOrderQueryRequest = new AliPayOrderQueryRequest();
//                aliPayOrderQueryRequest.setPayOrderId(out_trade_no);
//                aliPayOrderQueryRequest.setSysCode(BasicEnum.SYS_CODE.getValue());
//                TdBPayOrder tdBPayOrder = aliPayDao.queryPayOrderByPayOrderId(aliPayOrderQueryRequest);
//
//                TdBOrder tdBOrder = tdBOrderDao.queryOrderByOrderId(tdBPayOrder.getRltOrderId());
//                tdBOrder.setOrderState(OrderEnum.ORDER_TYPE_3.value());
//                tdBOrder.setOrderNotPayFee(tdBOrder.getOrderNotPayFee() != null ? tdBOrder.getOrderNotPayFee().subtract(
//                    BigDecimal.valueOf(Double.valueOf(total_fee))) : new BigDecimal(0));
//                tdBOrder.setOrderPayedFee(
//                    tdBOrder.getPreOrderFee() != null ? BigDecimal.valueOf(Double.valueOf(total_fee))
//                        .add(tdBOrder.getPreOrderFee()) : BigDecimal.valueOf(Double.valueOf(total_fee)));
//                tdBOrderDao.updateOrderByOrderId(tdBOrder);
//                custId = tdBOrder.getCustId();
//                TdBPayOrder payOrder = new TdBPayOrder();
//                payOrder.setPayOrderId(out_trade_no);
//                payOrder.setRltPayOrderId(transaction_id);
//                payOrder.setPayType(Integer.valueOf(PayOrderEnum.PAY_TYPE_WXGZH.getValue()));
//                payOrder.setPayFinishTime(
//                    StringUtils.isNotEmpty(time_end) ? DateUtil.to_date(time_end, DateUtil.YYYYMMDDHHMMSS) : null);
//                payOrder.setOrderPayedFee(
//                    StringUtils.isNotEmpty(total_fee) ? BigDecimal.valueOf(Double.valueOf(total_fee)) : null);
//                payOrder.setPayOrderState(Integer.valueOf(PayOrderEnum.PAY_ORDER_STATE_PAY_SUCCESS.getValue()));
//                payOrder.setPayorderStateTime(sysDate);
//                /**更新支付单信息.*/
//                insertCount = aliPayDao.updatePayOrder(payOrder);
//
//                if (insertCount > 0) {
//                    TdBPayOrderFlow payOrderFlow = new TdBPayOrderFlow();
//
//                    payOrderFlow.setPayOrderFlowId(
//                        SequenceUtil.getNextId(SequenceTypeEnum.ORDER_PAY_FLOW_WX));
//                    payOrderFlow.setPayOrderId(out_trade_no);
//                    payOrderFlow.setTradeNo(transaction_id);
//                    payOrderFlow.setTotalAmount(
//                        StringUtils.isNotEmpty(total_fee) ? BigDecimal.valueOf(Double.valueOf(total_fee)) : null);
//                    payOrderFlow.setReceiptAmount(
//                        StringUtils.isNotEmpty(total_fee) ? BigDecimal.valueOf(Double.valueOf(total_fee)) : null);
//
//                    payOrderFlow.setProcTime(sysDate);
//                    payOrderFlow.setPayType(Integer.valueOf(PayOrderEnum.PAY_TYPE_WX.getValue()));
//                    payOrderFlow.setProcResult(Integer.valueOf(PayOrderEnum.PROC_RESULT_SUCCESS.getValue()));
//                    payOrderFlow.setCreateDate(
//                        StringUtils.isNotEmpty(time_end) ? DateUtil.to_date(time_end, DateUtil.YYYYMMDDHHMMSS) : null);
//                    /**插入支付流水信息.*/
//                    tdBPayOrderFlowDao.savePayOrderFlow(payOrderFlow);
//                    
//                    if(StringUtil.isNotBlank(custId)) {
//            			//车已经绑定
//            			TdBCustBinding tdBCustBinding = wXCustBindingDao.queryCustBindingByCustId(custId);
//            			logger.info("微信公共号续费会员卡推送:"+JSONObject.toJSONString(tdBCustBinding));
//            			if(tdBCustBinding != null && StringUtil.isNotBlank(tdBCustBinding.getBindingId())) {
//            				//微信公共号绑定车
//            				logger.info("微信公共号购买会员卡开始推送 tdBOrder.getOrderType():"+tdBOrder.getOrderType());
//            				if(tdBOrder.getOrderType()==1) {
//            					JPushWXMessageRequest jPushWXMessageRequest = new JPushWXMessageRequest();
//                				jPushWXMessageRequest.setVplNumber(tdBOrder.getCarNumber());
//                				jPushWXMessageRequest.setPlName(tdBOrder.getParkName());
//                				jPushWXMessageRequest.setOpenId(tdBCustBinding.getBindingId());
//                				jPushWXMessageRequest.setAmount(AmountUtils.changeF2Y(total_fee)+"");
//                				logger.info("停车支付开始推送:"+JSONObject.toJSONString(jPushWXMessageRequest));
//                				jPushService.sendPush4WXPay(jPushWXMessageRequest);
//            				}else if(tdBOrder.getOrderType()==2) {
//            					TdBOrderDetailCard tdBOrderDetailCard  = tdBOrderDetailCardDao.queryOrderDetailCardByOrderId(tdBOrder.getOrderId());
//            					if(tdBOrderDetailCard!=null){//够没
//            						JPushWXMessageRequest jPushWXMessageRequest = new JPushWXMessageRequest();
//            						jPushWXMessageRequest.setVplNumber(tdBOrder.getCarNumber());
//            						jPushWXMessageRequest.setPlName(tdBOrder.getParkName());
//            						jPushWXMessageRequest.setOpenId(tdBCustBinding.getBindingId());
//            						jPushWXMessageRequest.setOrderDetailType(tdBOrderDetailCard.getOrderDetailType());
//            						jPushWXMessageRequest.setExpDate(tdBOrderDetailCard.getExpDate());
//            						jPushWXMessageRequest.setBuyNum(tdBOrderDetailCard.getBuyNum());
//            						logger.info("微信公共号续费会员卡开始推送:"+JSONObject.toJSONString(jPushWXMessageRequest));
//            						jPushService.sendPush4WXPayCard(jPushWXMessageRequest);
//            					}
//            				}
//            			}
//            		}
//                } else {
//                    logger.info("更新支付单信息失败!");
//                }
//            } else {
//                logger.info("微信异步回调验证签名失败");
//            }
//
//        } else {
//            logger.info("入参为空");
//        }
//        return new BizResult<Boolean>(insertCount > 0 ? true : false);
//    }
//
//    private BizResult<TdBWxConfigDTO> getWxConfigDTOByAppId(String appId) {
//        WxConfigQueryByAppIdRequest request = new WxConfigQueryByAppIdRequest();
//        request.setAppId(appId);
//        request.setSysCode(BasicEnum.SYS_CODE.getValue());
//        BizResult<TdBWxConfigDTO> wxConfigResult = wxConfigService.queryWxConfigByAppId(request);
//
//        return wxConfigResult;
//
//    }

//	@Override
//	public BizResult<String> unifiedVipCardOrder(WeinPublicUnifiedOrderRequest weinPublicUnifiedOrderRequest)
//			throws Exception {
//		BizResult<String> unifiedResult = new BizResult<String>();
//        logger.info("---begin微信公众号统一下单接口,入参={}", JSONObject.toJSON(weinPublicUnifiedOrderRequest));
//
//        if (null == weinPublicUnifiedOrderRequest || StringUtils.isBlank(weinPublicUnifiedOrderRequest.getAppId())
//            || StringUtils.isBlank(weinPublicUnifiedOrderRequest.getOpenId())) {
//            logger.error("微信公众号统一下单接口 入参为空");
//            return new BizResult<>(ErrorType.PARAMM_NULL, "入参为空");
//        }
//
//        AliWeixinCreatePayOrderRequest aliWeixinCreatePayOrderRequest = new AliWeixinCreatePayOrderRequest();
//        aliWeixinCreatePayOrderRequest.setSysCode(weinPublicUnifiedOrderRequest.getSysCode());
//        aliWeixinCreatePayOrderRequest.setOrderId(weinPublicUnifiedOrderRequest.getOrderId());
//        aliWeixinCreatePayOrderRequest.setPayType(weinPublicUnifiedOrderRequest.getPayType());
//        aliWeixinCreatePayOrderRequest.setPaySrcType(weinPublicUnifiedOrderRequest.getPaySrcType());
//        aliWeixinCreatePayOrderRequest.setTerminalSource("3");
//        /**1.通过订单信息生成支付单信息.*/
//        logger.info(" 微信公众号订单生成支付单:" + JSONObject.toJSONString(aliWeixinCreatePayOrderRequest));
//        BizResult<TdBPayOrderDTO> result = aliWeixinPublicService.createPayOrderByParkOrderId(
//            aliWeixinCreatePayOrderRequest);
//        logger.info("结束微信公众支付生成支付单 支付流水 入参:" + (result.isSuccess() ? result.getData() : result.getErrMsg()));
//        //2.调用统一下单
//        if (result != null && result.getData() != null && StringUtils.isNotEmpty(result.getData().getPayOrderId())) {
//
//            BizResult<TdBWxConfigDTO> wxConfigResult = getWxConfigDTOByAppId(weinPublicUnifiedOrderRequest.getAppId());
//            if (ResultUtils.isError(wxConfigResult)) {
//                return new BizResult<>(wxConfigResult.getErrCode(), wxConfigResult.getErrMsg());
//            }
//            TdBWxConfigDTO wxConfigDTO = wxConfigResult.getData();
//            if (null == wxConfigDTO) {
//                logger.info("根据appId 未查询到微信配置信息");
//                return new BizResult<>(ErrorType.SYSTEM_ERROR, "未查询到配置信息");
//            }
//
//            logger.info(" begin调用微信公众号统一下单工具类");
//            TdBOrder bOrder = tdBOrderDao.queryOrderByOrderId(weinPublicUnifiedOrderRequest.getOrderId());
//        	String body = "";
//        	if(bOrder!=null) {
//        		body = "任你停服务号"+bOrder.getCarNumber()+"购买会员卡"+(AmountUtils.changeF2Y(result.getData().getOrderActFee()+"") != null ? AmountUtils.changeF2Y(result.getData().getOrderActFee()+"") : "0")+"元";
//        	}
//        	unifiedResult = WeiXinPublicPayUtil.unifiedOrder(result.getData(),weinPublicUnifiedOrderRequest.getOpenId(), wxConfigDTO,vipCardNotifyUrl, body);
//            logger.info(" end调用微信公众号统一下单工具类,结果={}", JSONObject.toJSON(unifiedResult));
//            
//            if (null == unifiedResult) {
//            	throw new BizException(ErrorType.BIZ_ERROR, "unifiedResult为空!");
//            }
//            
//            if (null != unifiedResult && !unifiedResult.getErrCode().equals(ErrorType.BIZ_SUCCESS)) {
//                throw new BizException(unifiedResult.getErrCode(), unifiedResult.getErrMsg());
//            }
//        } else {
//            throw new BizException(ErrorType.CREATE_PAY_ORDER_FAIL, "生成支付单信息失败");
//        }
//        logger.info("---end微信公众号统一下单接口...");
//        return new BizResult<String>(unifiedResult.getData());
//	}

}