From c619972c50577bb699be6ee099b5e2741882fabb Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Wed, 27 Dec 2023 16:15:59 +0800 Subject: [PATCH] 直推奖励,冻结的用户,则直推奖励销毁,用户未冻结才能领取成功 --- src/main/java/cc/mrbird/febs/pay/util/WeixinServiceUtil.java | 149 +++++++++++++++++++++++++++++++++---------------- 1 files changed, 100 insertions(+), 49 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/pay/util/WeixinServiceUtil.java b/src/main/java/cc/mrbird/febs/pay/util/WeixinServiceUtil.java index 1125bb7..2ab1e5c 100644 --- a/src/main/java/cc/mrbird/febs/pay/util/WeixinServiceUtil.java +++ b/src/main/java/cc/mrbird/febs/pay/util/WeixinServiceUtil.java @@ -3,10 +3,11 @@ import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.common.properties.XcxProperties; import cc.mrbird.febs.common.utils.SpringContextHolder; -import cc.mrbird.febs.pay.model.BrandWCPayRequestData; -import cc.mrbird.febs.pay.model.JsApiPayBusiness; -import cc.mrbird.febs.pay.model.JsApiPayReqData; -import cc.mrbird.febs.pay.model.JsApiPayResData; +import cc.mrbird.febs.pay.model.*; +import cc.mrbird.febs.pay.service.impl.JsApiPayComService; +import cc.mrbird.febs.pay.service.impl.RefundService; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -41,14 +42,19 @@ return buildBrandWCPayRequestData(desc, outTradeNo, price, openId, attach, wecharPaynotifyUrl); } + public BrandWCPayRequestData createRechargeWallet(String desc, String outTradeNo, int price, String openId, String attach) throws Exception { + String wecharRechargePaynotifyUrl = xcxProperties.getWecharRechargePaynotifyUrl(); + return buildBrandWCPayRequestData(desc, outTradeNo, price, openId, attach, wecharRechargePaynotifyUrl); + } + private BrandWCPayRequestData buildBrandWCPayRequestData(String desc, String outTradeNo, int price, String openId, String attach, String notifyUrl) throws Exception { // 创建微信支付预付接口 JsApiPayBusiness jsApiPayBusiness = new JsApiPayBusiness(); String idAddr = getIpAddr(WebUtil.getRequest()); - String mchID = WechatConfigure.WECHARPAY_MCHID; - String paySecret = WechatConfigure.WECHARPAY_SECRET; - String appId = WechatConfigure.MINIPROGRAM_APPID; + String mchID = xcxProperties.getWecharpayMchid(); + String paySecret = xcxProperties.getWecharpaySecret(); + String appId = xcxProperties.getXcxAppid(); JsApiPayReqData jsApiPayReqData = new JsApiPayReqData( appId, mchID, paySecret, notifyUrl, desc, @@ -81,48 +87,93 @@ * @param opUserID 操作员id,默认为商户号 * @return */ -// public boolean comRefund(String outTradeNo, String outRefundNo,int totalFee, -// int refundFee, String opUserID){ -// LogUtil.info("#---outTradeNo:{}#---outRefundNo:{}#---totalFee:{}#---refundFee:{}", -// outTradeNo,outRefundNo,totalFee,refundFee); -// BusParameterSettings mchID = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.WECHARPAY_MCHID, HostInterceptor.getCompanyId()); -// if(opUserID==null){ -// opUserID=mchID.getParamValue(); -// } -// RefundResData result=null; -// boolean flag=false; -// try { -// JsApiPayBusiness jsApiPayBusiness = new JsApiPayBusiness(); -// Long companyId=HostInterceptor.getCompanyId(); -// BusParameterSettings paySecret = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.WECHARPAY_SECRET, companyId); -// BusParameterSettings appId = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.MINIPROGRAM_APPID, companyId); -// BusParameterSettings certLocalPath = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.WECHARPAY_CERTLOCAL_PATH, companyId); -// -// RefundReqData refundReqData=new RefundReqData(mchID.getParamValue(),appId.getParamValue(),paySecret.getParamValue(), outTradeNo, outRefundNo, totalFee, refundFee,opUserID); -// RefundService refundService=new RefundService(); -// HttpsRequest2 request2= (HttpsRequest2) refundService.getServiceRequest(); -// request2.setCertLocalPath(certLocalPath.getParamValue()); -// request2.setMchId(mchID.getParamValue()); -// -// result = jsApiPayBusiness.refundComOrder(refundService, refundReqData); -// LogUtil.info("#退款,企业付款到个人---result:{}",result); -// //如果返回余额不足时 -// if (StringUtils.equals(AppConstance.REFUND_FAIL_NOTENOUGH, result.getErr_code())) { -// LogUtil.info("#退款失败,{}!", "商户余额不足"); -// throw new GlobleException("退款失败,请联系管理员!"); -// } -// } catch (Exception e) { -// LogUtil.error("#企业付款到个人异常#退款#outTradeNo:{}#opUserID:{}", e, outTradeNo,opUserID); -// } -// -// if (result.getResult_code().equals(WechatConfigure.SUCCESS)) { -// flag=true; -// }else{ -// flag=false; -// throw new GlobleException(result.getErr_code_des()); -// } -// return flag; -// } + public boolean comRefund(String outTradeNo, String outRefundNo,int totalFee, + int refundFee, String opUserID){ + log.info("#---outTradeNo:{}#---outRefundNo:{}#---totalFee:{}#---refundFee:{}", + outTradeNo,outRefundNo,totalFee,refundFee); + + String mchID = xcxProperties.getWecharpayMchid(); + if(opUserID==null){ + opUserID=mchID; + } + RefundResData result=null; + boolean flag=false; + try { + JsApiPayBusiness jsApiPayBusiness = new JsApiPayBusiness(); + String paySecret = xcxProperties.getWecharpaySecret(); + String appId = xcxProperties.getXcxAppid(); + String certLocalPath = xcxProperties.getCertLocalPath(); + + RefundReqData refundReqData=new RefundReqData(mchID,appId,paySecret, outTradeNo, outRefundNo, totalFee, refundFee,opUserID); + RefundService refundService=new RefundService(); + HttpsRequest2 request2= (HttpsRequest2) refundService.getServiceRequest(); + request2.setCertLocalPath(certLocalPath); + request2.setMchId(mchID); + + result = jsApiPayBusiness.refundComOrder(refundService, refundReqData); + log.info("#退款,企业付款到个人---result:{}",result); + //如果返回余额不足时,商户余额不足时微信返回状态码(退款失败时) + if (StrUtil.equals("NOTENOUGH", result.getErr_code())) { + log.info("#退款失败,{}!", "商户余额不足"); + flag=false; + } + } catch (Exception e) { + log.error("#企业付款到个人异常#退款#outTradeNo:{}#opUserID:{}", e, outTradeNo,opUserID); + flag=false; + } + + if (result.getResult_code().equals("SUCCESS")) { + flag=true; + }else{ + flag=false; + } + return flag; + } + + /**@Description 用户提现提现审核,企业付款到个人 + @date 2017年5月26日 + @atuhor jiangyouyao + * @param desc 描述 + * @param outTradeNo 提现申请编号 + * @param totalFee 提现金额(分) + * @param openid + * @return + */ + public boolean comPay(String desc, String outTradeNo,int totalFee, String openid){ + log.info("后台同意提现申请..."+ desc+outTradeNo+totalFee+openid); + boolean flag=false; + try { + JsApiPayBusiness jsApiPayBusiness = new JsApiPayBusiness(); + String paySecret = xcxProperties.getWecharpaySecret(); + String appId = xcxProperties.getXcxAppid(); + String certLocalPath = xcxProperties.getCertLocalPath(); + String mchID = xcxProperties.getWecharpayMchid(); + + JsApiPayComReqData jsApiPayComReqData=new JsApiPayComReqData(mchID, + appId, + paySecret, + desc,outTradeNo,totalFee,openid,"NO_CHECK",""); + JsApiPayComService jsApiPayComService=new JsApiPayComService(); + + HttpsRequest2 request2= (HttpsRequest2) jsApiPayComService.getServiceRequest(); + request2.setCertLocalPath(certLocalPath); + request2.setMchId(mchID); + + JsApiPayComResData result = jsApiPayBusiness.payComOrder(jsApiPayComService, jsApiPayComReqData); + + log.info("#提现,企业付款到个人---result:{}",result); + if (result.getResult_code().equals("SUCCESS")) { + flag=true; + }else{ + log.info("#提现,企业付款到个人失败,{}!", "商户余额不足"); + flag=false; + } + } catch (Exception e) { + log.error("#企业付款到个人异常#提现#outTradeNo:{}#opUserID:{}", e, outTradeNo,openid); + flag=false; + } + return flag; + } /**@Description 支付获取远程设备的ip @date 2017年6月27日 -- Gitblit v1.9.1