|  |  |  | 
|---|
|  |  |  | package com.matrix.component.wechat.externalInterface.weixinUtil; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import com.matrix.component.wechat.externalInterface.common.HttpsRequest2; | 
|---|
|  |  |  | import com.matrix.core.exception.GlobleException; | 
|---|
|  |  |  | import com.matrix.core.tools.LogUtil; | 
|---|
|  |  |  | import com.matrix.core.tools.StringUtils; | 
|---|
|  |  |  | 
|---|
|  |  |  | import com.matrix.component.wechat.externalInterface.service.JsApiPayComService; | 
|---|
|  |  |  | import com.matrix.component.wechat.externalInterface.service.RefundService; | 
|---|
|  |  |  | import com.matrix.component.wechat.externalInterface.service.ScanPayQueryService; | 
|---|
|  |  |  | import com.matrix.system.common.bean.BusParameterSettings; | 
|---|
|  |  |  | import com.matrix.system.common.constance.AppConstance; | 
|---|
|  |  |  | import com.matrix.system.common.dao.BusParameterSettingsDao; | 
|---|
|  |  |  | import com.matrix.system.common.interceptor.HostInterceptor; | 
|---|
|  |  |  | import com.matrix.system.shopXcx.api.tools.WxShopOrderUtil; | 
|---|
|  |  |  | import org.apache.log4j.Logger; | 
|---|
|  |  |  | import org.springframework.beans.factory.annotation.Autowired; | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | private WxShopOrderUtil wxShopOrderUtil; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | @Autowired | 
|---|
|  |  |  | BusParameterSettingsDao busParameterSettingsDao; | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | /** | 
|---|
|  |  |  | * 支付"175.9.82.254" | 
|---|
|  |  |  | 
|---|
|  |  |  | // 创建微信支付预付接口 | 
|---|
|  |  |  | JsApiPayBusiness jsApiPayBusiness = new JsApiPayBusiness(); | 
|---|
|  |  |  | String idAddr = getIpAddr(WebUtil.getRequest()); | 
|---|
|  |  |  | JsApiPayReqData jsApiPayReqData = new JsApiPayReqData(desc, outTradeNo, price, idAddr, openId, attach); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Long companyId=HostInterceptor.getCompanyId(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | BusParameterSettings mchID = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.WECHARPAY_MCHID, companyId); | 
|---|
|  |  |  | BusParameterSettings paySecret = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.WECHARPAY_SECRET, companyId); | 
|---|
|  |  |  | BusParameterSettings notifyUrl = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.WECHARPAY_NOTIFYURL, companyId); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | BusParameterSettings appId = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.MINIPROGRAM_APPID, companyId); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | JsApiPayReqData jsApiPayReqData = new JsApiPayReqData(appId.getParamValue(),mchID.getParamValue(), | 
|---|
|  |  |  | paySecret.getParamValue(), | 
|---|
|  |  |  | notifyUrl.getParamValue(), | 
|---|
|  |  |  | desc, outTradeNo, price, idAddr, openId, attach); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 创建预付订单并返回请求结果 | 
|---|
|  |  |  | JsApiPayResData result = jsApiPayBusiness.createPrapareOrder(jsApiPayReqData); | 
|---|
|  |  |  | // 把预付订单的信息存放在request域中 | 
|---|
|  |  |  | 
|---|
|  |  |  | LogUtil.info("#---签名信息:return_msg = {}" , result.getReturn_msg()); | 
|---|
|  |  |  | if (result.getReturn_code().equals("SUCCESS")) { | 
|---|
|  |  |  | // 请求成功, 构建BrandWCPayRequest发起支付需要的参数 | 
|---|
|  |  |  | BrandWCPayRequestData payData = new BrandWCPayRequestData(result.getPrepay_id()); | 
|---|
|  |  |  | BrandWCPayRequestData payData = new BrandWCPayRequestData(result.getPrepay_id(),appId.getParamValue(),paySecret.getParamValue()); | 
|---|
|  |  |  | WebUtil.getRequest().setAttribute("payData", payData); | 
|---|
|  |  |  | return payData; | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | 
|---|
|  |  |  | * @param desc 描述 | 
|---|
|  |  |  | * @param outTradeNo  提现申请编号 | 
|---|
|  |  |  | * @param totalFee 提现金额(分) | 
|---|
|  |  |  | * @param spBillCreateIP 调用接口的IP | 
|---|
|  |  |  | * @param openid | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public JsApiPayComResData comPay(String desc, String outTradeNo,int totalFee, String openid){ | 
|---|
|  |  |  | public JsApiPayComResData comPay(String desc, String outTradeNo,int totalFee, String openid,Long companyId){ | 
|---|
|  |  |  | JsApiPayComResData result=null; | 
|---|
|  |  |  | //boolean flag=false; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | JsApiPayBusiness jsApiPayBusiness = new JsApiPayBusiness(); | 
|---|
|  |  |  | // TODO 企业付款 | 
|---|
|  |  |  | JsApiPayComReqData jsApiPayComReqData=new JsApiPayComReqData("","",0,"","",""); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | BusParameterSettings mchID = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.WECHARPAY_MCHID, companyId); | 
|---|
|  |  |  | BusParameterSettings appId = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.MINIPROGRAM_APPID, companyId); | 
|---|
|  |  |  | BusParameterSettings paySecret = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.WECHARPAY_SECRET, companyId); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | BusParameterSettings certLocalPath = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.WECHARPAY_CERTLOCAL_PATH, companyId); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | JsApiPayComReqData jsApiPayComReqData=new JsApiPayComReqData(mchID.getParamValue(), | 
|---|
|  |  |  | appId.getParamValue(), | 
|---|
|  |  |  | paySecret.getParamValue(), | 
|---|
|  |  |  | desc,outTradeNo,totalFee,openid,"NO_CHECK",""); | 
|---|
|  |  |  | JsApiPayComService jsApiPayComService=new JsApiPayComService(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | HttpsRequest2 request2= (HttpsRequest2) jsApiPayComService.getServiceRequest(); | 
|---|
|  |  |  | request2.setCertLocalPath(certLocalPath.getParamValue()); | 
|---|
|  |  |  | request2.setMchId(mchID.getParamValue()); | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | result = jsApiPayBusiness.payComOrder(jsApiPayComService, jsApiPayComReqData); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | LogUtil.info("#提现,企业付款到个人---result:{}",result); | 
|---|
|  |  |  | if (result.getResult_code().equals("SUCCESS")) { | 
|---|
|  |  |  | return result; | 
|---|
|  |  |  | 
|---|
|  |  |  | 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=WechatConfigure.mchID; | 
|---|
|  |  |  | opUserID=mchID.getParamValue(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | RefundResData result=null; | 
|---|
|  |  |  | boolean flag=false; | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | JsApiPayBusiness jsApiPayBusiness = new JsApiPayBusiness(); | 
|---|
|  |  |  | RefundReqData refundReqData=new RefundReqData(outTradeNo, outRefundNo, totalFee, refundFee,opUserID); | 
|---|
|  |  |  | 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); | 
|---|
|  |  |  | //如果返回余额不足时 | 
|---|
|  |  |  | 
|---|
|  |  |  | * @return | 
|---|
|  |  |  | */ | 
|---|
|  |  |  | public String getIpAddr(HttpServletRequest request) { | 
|---|
|  |  |  | String ip = request.getHeader("x-forwarded-for"); | 
|---|
|  |  |  | /* if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { | 
|---|
|  |  |  | ip = request.getHeader("Proxy-Client-IP"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { | 
|---|
|  |  |  | ip = request.getHeader("WL-Proxy-Client-IP"); | 
|---|
|  |  |  | String ip = request.getHeader("x-forwarded-for"); | 
|---|
|  |  |  | /* if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { | 
|---|
|  |  |  | ip = request.getHeader("Proxy-Client-IP"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { | 
|---|
|  |  |  | ip = request.getHeader("WL-Proxy-Client-IP"); | 
|---|
|  |  |  | } */ | 
|---|
|  |  |  | if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { | 
|---|
|  |  |  | ip = request.getRemoteAddr(); | 
|---|