From 1f257db0a97b5beb71e8ff3c14fda603bf2b4004 Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期三, 20 十二月 2023 15:13:27 +0800 Subject: [PATCH] 服务商 --- server/services/src/main/java/com/doumee/core/wx/WxMiniUtilService.java | 140 ++++++++++++++++++++++++++++++++++++---------- 1 files changed, 108 insertions(+), 32 deletions(-) diff --git a/server/services/src/main/java/com/doumee/core/wx/WxMiniUtilService.java b/server/services/src/main/java/com/doumee/core/wx/WxMiniUtilService.java index 29f2c80..f57abb7 100644 --- a/server/services/src/main/java/com/doumee/core/wx/WxMiniUtilService.java +++ b/server/services/src/main/java/com/doumee/core/wx/WxMiniUtilService.java @@ -5,6 +5,7 @@ import com.doumee.core.constants.Constants; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; +import com.doumee.core.utils.DateUtil; import com.doumee.core.utils.ID; import com.doumee.dao.business.RefundMapper; import com.doumee.dao.business.TransactionsMapper; @@ -13,26 +14,26 @@ import com.doumee.dao.business.model.Transactions; import com.doumee.dao.business.web.request.RefundDTO; import com.doumee.dao.system.model.SystemDictData; -import com.doumee.service.business.RefundService; -import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest; -import com.github.binarywang.wxpay.bean.request.WxPayRefundRequest; -import com.github.binarywang.wxpay.bean.result.WxPayRefundResult; -import com.github.binarywang.wxpay.exception.WxPayException; +import com.wechat.pay.java.service.refund.model.AmountReq; +import com.wechat.pay.java.service.refund.model.CreateRequest; +import com.wechat.pay.java.service.refund.model.QueryByOutRefundNoRequest; import lombok.extern.slf4j.Slf4j; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; -import org.checkerframework.checker.units.qual.A; +import org.apache.commons.io.FileUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.FileOutputStream; +import java.io.File; import java.io.InputStream; import java.math.BigDecimal; -import java.util.*; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; /** * 寰俊灏忕▼搴�-鍏叡鏂规硶 @@ -49,24 +50,96 @@ @Autowired private SystemDictDataBiz systemDictDataBiz; - + @Autowired + private WxPayProperties wxPayProperties; @Transactional(rollbackFor = {BusinessException.class,Exception.class}) - public Refund wxRefund(RefundDTO refundDTO) { + public boolean wxRefund(RefundDTO refundDTO) { + // 鍙戦�侀��娆捐姹� + Refund refund = new Refund(); + refund.setId(Constants.getUUID()); + refund.setCreateDate(new Date()); + refund.setMemberId(refundDTO.getMemberId()); + refund.setMoney(refundDTO.getRefundAmount()); +// refund.setOnlineOrderid(refNum); + refund.setPayWay(Constants.ZERO); + refund.setStatus(Constants.ZERO); + refund.setDoneDate(new Date()); + refund.setCreator(refundDTO.getCreator()); + refund.setType(refundDTO.getType()); + refund.setObjId(refundDTO.getOrderId()); + refund.setReason(refundDTO.getReason()); + refund.setCanBalance(refundDTO.getCanBalance()); + refundMapper.insert(refund); + + CreateRequest request = new CreateRequest(); + request.setOutTradeNo(refundDTO.getOrderId()); + request.setOutRefundNo(refund.getId()); + request.setSubMchid(WxMiniConfig.wxProperties.getSubMchId()); + request.setNotifyUrl(WxMiniConfig.wxProperties.getRefundNotifyUrl()); + AmountReq amountReq = new AmountReq(); + amountReq.setTotal(refundDTO.getTotalAmount().longValue()); + amountReq.setRefund(refundDTO.getRefundAmount().longValue()); + amountReq.setCurrency("CNY"); + request.setAmount(amountReq); try { - // 鍙戦�侀��娆捐姹� - String refNum = ID.nextGUID(); - WxPayRefundRequest request = new WxPayRefundRequest(); - request.setOutTradeNo(refundDTO.getOrderId()); - request.setOutRefundNo(refNum); - request.setTotalFee(refundDTO.getTotalAmount().intValue()); - request.setRefundFee(refundDTO.getRefundAmount().intValue()); - System.out.println("瀹為檯鎬婚噾棰�" + refundDTO.getTotalAmount()); - System.out.println("瀹為檯閫�娆鹃噾棰�" + refundDTO.getRefundAmount()); + log.error("=============="+JSONObject.toJSONString(request)); + com.wechat.pay.java.service.refund.model.Refund response = WxMiniConfig.refundService.create(request); + log.error("=============="+JSONObject.toJSONString(response)); + if ("SUCCESS".equals(response.getStatus().name()) + || "PROCESSING".equals(response.getStatus().name()) ) { + return true; + }else{ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝閫�娆剧敵璇峰け璐ュ摝锛�"); + } + }catch (Exception e){ + e.printStackTrace(); + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝閫�娆剧敵璇峰け璐ワ紒"); + } + + } + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public com.wechat.pay.java.service.refund.model.Refund isSuucessRefund(String outTradeNo) { + // 鍙戦�侀��娆捐姹� + + QueryByOutRefundNoRequest request = new QueryByOutRefundNoRequest(); + request.setOutRefundNo(outTradeNo); + request.setSubMchid(WxMiniConfig.wxProperties.getSubMchId()); + try { + log.error("=============="+JSONObject.toJSONString(request)); + com.wechat.pay.java.service.refund.model.Refund response = WxMiniConfig.refundService.queryByOutRefundNo(request); + log.error("=============="+JSONObject.toJSONString(response)); + if ("SUCCESS".equals(response.getStatus().name()) + || "PROCESSING".equals(response.getStatus().name()) ) { + return response; + } + }catch (Exception e){ + e.printStackTrace(); + + } + return null; + } + public Refund wxRefundOld(RefundDTO refundDTO) { + // 鍙戦�侀��娆捐姹� + String refNum = ID.nextGUID(); + CreateRequest request = new CreateRequest(); + request.setOutTradeNo(refundDTO.getOrderId()); + request.setOutRefundNo(refNum); + request.setSubMchid(WxMiniConfig.wxProperties.getSubMchId()); + request.setNotifyUrl(WxMiniConfig.wxProperties.getRefundNotifyUrl()); +// + AmountReq amountReq = new AmountReq(); + amountReq.setTotal(refundDTO.getTotalAmount().longValue()); + amountReq.setRefund(refundDTO.getRefundAmount().longValue()); + amountReq.setCurrency("CNY"); + request.setAmount(amountReq); + System.out.println("瀹為檯鎬婚噾棰�" + refundDTO.getTotalAmount()); + System.out.println("瀹為檯閫�娆鹃噾棰�" + refundDTO.getRefundAmount()); // request.setTotalFee(1); // request.setRefundFee(1); - WxPayRefundResult response = WxMiniConfig.wxPayService.refund(request); - if ("SUCCESS".equals(response.getReturnCode()) && "SUCCESS".equals(response.getResultCode())) { + try { + com.wechat.pay.java.service.refund.model.Refund response = WxMiniConfig.refundService.create(request); + if ("SUCCESS".equals(response.getStatus().name()) ) { //瀛樺偍閫�娆捐褰� 涓� 娴佹按璁板綍 Refund refund = new Refund(); refund.setId(Constants.getUUID()); @@ -116,12 +189,16 @@ transactionsMapper.insert(transactions); return refund; } else{ - throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),response.getErrCode() + response.getErrCodeDes()); + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝閫�娆惧け璐ワ紒"); } - } catch (WxPayException e) { + }catch (BusinessException e){ + throw e; + }catch (Exception e){ e.printStackTrace(); + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝閫�娆惧け璐ワ紒"); } - throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"閫�娆惧彂鐢熷紓甯歌鑱旂郴绠$悊鍛�"); + + } @@ -130,7 +207,7 @@ * https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/qrcode-link/qr-code/getUnlimitedQRCode.html * @return */ - public void generateWXMiniCode(Locks locks,SystemDictData systemDictData){ + public void generateWXMiniCode(Locks locks,SystemDictData systemDictData,String prePath,String path){ if(Objects.isNull(systemDictData)){ return; @@ -141,6 +218,7 @@ body.put("scene", locks.getSiteId() + "/" +locks.getCode() ); // 姝e紡鐗堜负 "release"锛屼綋楠岀増涓� "trial"锛屽紑鍙戠増涓� "develop"銆傞粯璁ゆ槸姝e紡鐗堛�� body.put("env_version", "release"); + body.put("env_version", "trial"); // 閫忔槑锛屾牴鎹綘鐨勫満鏅嚜琛岃缃産ody鍙傛暟 body.put("is_hyaline", false); body.put("check_path", false); @@ -153,12 +231,10 @@ Response response = client.newCall(request).execute(); if (response.isSuccessful()) { InputStream inputStream = new ByteArrayInputStream(response.body().bytes()); - // 寰楀埌鏂囦欢澶у皬 - int i = inputStream.available(); - byte[] mFileBody = new byte[i]; - // 璇绘暟鎹� - inputStream.read(mFileBody); - locks.setInfo("data:image/Jpeg;base64," + Base64.getEncoder().encodeToString(mFileBody)); + String nowDate = DateUtil.getNowShortDate(); + File file = new File(prePath+path,locks.getSiteId()+"-"+locks.getCode()+"-"+nowDate+".png"); + FileUtils.copyInputStreamToFile(inputStream,file); + locks.setInfo(locks.getSiteId()+"-"+locks.getCode()+"-"+nowDate+".png"); } } catch (Exception e) { e.printStackTrace(); -- Gitblit v1.9.3