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 unifiedOrder(WeinPublicUnifiedOrderRequest weinPublicUnifiedOrderRequest) // throws Exception { // BizResult unifiedResult = new BizResult(); // 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 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 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(unifiedResult.getData()); // } // @Override // public BizResult 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 params = aliPayNotifyRequest.getParamsMap(); // String appId = params.get("appid"); // if(StringUtils.isBlank(appId)){ // return new BizResult<>(ErrorType.PARAMM_NULL,"appId"); // } // // BizResult 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(insertCount > 0 ? true : false); // } // // private BizResult getWxConfigDTOByAppId(String appId) { // WxConfigQueryByAppIdRequest request = new WxConfigQueryByAppIdRequest(); // request.setAppId(appId); // request.setSysCode(BasicEnum.SYS_CODE.getValue()); // BizResult wxConfigResult = wxConfigService.queryWxConfigByAppId(request); // // return wxConfigResult; // // } // @Override // public BizResult unifiedVipCardOrder(WeinPublicUnifiedOrderRequest weinPublicUnifiedOrderRequest) // throws Exception { // BizResult unifiedResult = new BizResult(); // 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 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 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(unifiedResult.getData()); // } }