From 13ac9c42bb22b980567313a9dff51d4a8d639bbc Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期三, 20 十二月 2023 10:58:47 +0800
Subject: [PATCH] 服务商
---
server/services/src/main/java/com/doumee/core/wx/WxMiniUtilService.java | 145 +++++++++++++++++++++++++++++++++++------------
1 files changed, 107 insertions(+), 38 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 67fc991..d3fd0bd 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,30 +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 io.netty.handler.codec.base64.Base64Decoder;
-import io.netty.handler.codec.base64.Base64Encoder;
+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.apache.commons.io.IOUtils;
-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 sun.misc.BASE64Decoder;
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;
/**
* 寰俊灏忕▼搴�-鍏叡鏂规硶
@@ -53,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());
@@ -120,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(),"閫�娆惧彂鐢熷紓甯歌鑱旂郴绠$悊鍛�");
+
+
}
@@ -134,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;
@@ -157,14 +230,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