xw 1 月之前
父节点
当前提交
54ac50d4e4

+ 6 - 0
fs-service/src/main/java/com/fs/his/domain/FsPayConfig.java

@@ -33,4 +33,10 @@ public class FsPayConfig {
     private String hfPayOnlineNotifyUrl;
     private String hfRefundNotifyUrl;
     private String hfOnlineRefundNotifyUrl;
+
+    // 微信支付V3证书配置
+    private String privateKeyPath;
+    private String privateCertPath;
+    private String publicKeyPath;
+    private String publicKeyId;
 }

+ 17 - 4
fs-service/src/main/java/com/fs/hisStore/service/impl/FsStoreOrderScrmServiceImpl.java

@@ -139,9 +139,11 @@ import com.fs.ybPay.domain.OrderResult;
 import com.fs.ybPay.domain.RefundResult;
 import com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;
 import com.github.binarywang.wxpay.bean.request.WxPayRefundRequest;
+import com.github.binarywang.wxpay.bean.request.WxPayRefundV3Request;
 import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;
 import com.github.binarywang.wxpay.bean.result.WxPayRefundQueryResult;
 import com.github.binarywang.wxpay.bean.result.WxPayRefundResult;
+import com.github.binarywang.wxpay.bean.result.WxPayRefundV3Result;
 import com.github.binarywang.wxpay.config.WxPayConfig;
 import com.github.binarywang.wxpay.exception.WxPayException;
 import com.github.binarywang.wxpay.service.WxPayService;
@@ -2631,16 +2633,25 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
                         payConfig.setMchId(fsPayConfig.getWxMchId());
                         payConfig.setMchKey(fsPayConfig.getWxMchKey());
                         payConfig.setKeyPath(fsPayConfig.getKeyPath());
+                        payConfig.setPublicKeyId(fsPayConfig.getPublicKeyId());
+                        payConfig.setPublicKeyPath(fsPayConfig.getPublicKeyPath());
+                        payConfig.setApiV3Key(fsPayConfig.getWxApiV3Key());
+                        payConfig.setPrivateKeyPath(fsPayConfig.getPrivateKeyPath());
+                        payConfig.setPrivateCertPath(fsPayConfig.getPrivateCertPath());
                         payConfig.setSubAppId(org.apache.commons.lang3.StringUtils.trimToNull(null));
                         payConfig.setSubMchId(org.apache.commons.lang3.StringUtils.trimToNull(null));
                         wxPayService.setConfig(payConfig);
-                        WxPayRefundRequest refundRequest = new WxPayRefundRequest();
+                        WxPayRefundV3Request refundRequest = new WxPayRefundV3Request();
                         refundRequest.setOutTradeNo("store-" + payment.getPayCode());
                         refundRequest.setOutRefundNo("store-" + payment.getPayCode());
-                        refundRequest.setTotalFee(WxPayUnifiedOrderRequest.yuanToFen(payment.getPayMoney().toString()));
-                        refundRequest.setRefundFee(WxPayUnifiedOrderRequest.yuanToFen(payment.getPayMoney().toString()));
+                        WxPayRefundV3Request.Amount amount = new WxPayRefundV3Request.Amount();
+                        Integer money = WxPayUnifiedOrderRequest.yuanToFen(payment.getPayMoney().toString());
+                        amount.setRefund(money);
+                        amount.setTotal(money);
+                        amount.setCurrency("CNY");
+                        refundRequest.setAmount(amount);
                         try {
-                            WxPayRefundResult refundResult = wxPayService.refund(refundRequest);
+                            WxPayRefundV3Result refundResult = wxPayService.refundV3(refundRequest);
                             WxPayRefundQueryResult refundQueryResult = wxPayService.refundQuery("", refundResult.getOutTradeNo(), refundResult.getOutRefundNo(), refundResult.getRefundId());
                             if (refundQueryResult != null && refundQueryResult.getResultCode().equals("SUCCESS")) {
                                 FsStorePaymentScrm paymentMap = new FsStorePaymentScrm();
@@ -2653,6 +2664,7 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
                                 return R.error("退款请求失败" + refundQueryResult.getErrCodeDes());
                             }
                         } catch (WxPayException e) {
+                            e.printStackTrace();
                             return R.error("退款请求失败" + e.getErrCodeDes());
                         }
                     } else if (payment.getPayMode() != null && payment.getPayMode().equals("hf")) {
@@ -4712,6 +4724,7 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
                 storePayment.setBusinessOrderId(order.getId().toString());
                 storePayment.setOrderId(order.getId());
                 storePayment.setAppId(fsCoursePlaySourceConfig.getAppid() == null ? "" : fsCoursePlaySourceConfig.getAppid());
+                storePayment.setBusinessCode(order.getOrderCode()); // 设置订单编号,用于关联查询
                 fsStorePaymentMapper.insertFsStorePayment(storePayment);
 
                 if (merchantAppConfig.getMerchantType().equals("hf")){