TRX 1 anno fa
parent
commit
711c492e29
14 ha cambiato i file con 487 aggiunte e 13 eliminazioni
  1. 3 0
      PaymentClient/src/main/java/com/zhongshu/payment/client/payModel/commn/CreateOrderParam.java
  2. 33 0
      PaymentClient/src/main/java/com/zhongshu/payment/client/payModel/unionFrictionlessPay/model/CardListModel.java
  3. 37 0
      PaymentClient/src/main/java/com/zhongshu/payment/client/payModel/unionFrictionlessPay/model/CardListQueryParam.java
  4. 41 0
      PaymentClient/src/main/java/com/zhongshu/payment/client/payModel/unionFrictionlessPay/model/CardListQueryResponse.java
  5. 34 0
      PaymentClient/src/main/java/com/zhongshu/payment/client/payModel/unionFrictionlessPay/model/GoodsModel.java
  6. 37 0
      PaymentClient/src/main/java/com/zhongshu/payment/client/payModel/unionFrictionlessPay/model/NetPayQueryParam.java
  7. 120 0
      PaymentClient/src/main/java/com/zhongshu/payment/client/payModel/unionFrictionlessPay/model/NetPayQueryResponse.java
  8. 57 0
      PaymentClient/src/main/java/com/zhongshu/payment/client/payModel/unionFrictionlessPay/model/PromotionModel.java
  9. 9 0
      PaymentClient/src/main/java/com/zhongshu/payment/client/payModel/unionFrictionlessPay/model/SignNotifyModel.java
  10. 0 1
      PaymentClient/src/main/java/com/zhongshu/payment/client/payModel/unionFrictionlessPay/paymentModel/SignInParam.java
  11. 16 0
      PaymentServer/src/main/java/com/zhongshu/payment/server/core/domain/wallet/RechargeRecord.java
  12. 86 5
      PaymentServer/src/main/java/com/zhongshu/payment/server/core/service/pay/impl/unionFrictionlessPay/UnionFrictionlessPayMainService.java
  13. 2 2
      PaymentServer/src/main/java/com/zhongshu/payment/server/core/service/pay/impl/unionFrictionlessPay/UnionRequestService.java
  14. 12 5
      PaymentServer/src/main/java/com/zhongshu/payment/server/core/service/pay/impl/unionFrictionlessPay/config/UnionFrictionlessPayApiConfig.java

+ 3 - 0
PaymentClient/src/main/java/com/zhongshu/payment/client/payModel/commn/CreateOrderParam.java

@@ -34,6 +34,9 @@ public class CreateOrderParam {
     @Schema(description = "商户id")
     private String shopId;
 
+    @Schema(description = "商户号, 银联端配置的商户号")
+    private String mid;
+
     @Schema(description = "学校id")
     private String schoolId;
 

+ 33 - 0
PaymentClient/src/main/java/com/zhongshu/payment/client/payModel/unionFrictionlessPay/model/CardListModel.java

@@ -0,0 +1,33 @@
+package com.zhongshu.payment.client.payModel.unionFrictionlessPay.model;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.hibernate.internal.build.AllowPrintStacktrace;
+
+/**
+ * @author TRX
+ * @date 2024/9/3
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class CardListModel {
+
+    @Schema(description = "脱敏卡号 脱敏卡号:前6后4,中间用*掩码")
+    private String cardNoDesen;
+
+    @Schema(description = "发卡总行机构代码 发卡总行机构代码")
+    private String issHeadCode;
+
+    @Schema(description = "发卡总行机构中文名称 发卡总行机构中文名称")
+    private String issHeadName;
+
+    @Schema(description = "卡性质 卡性质(01:借记卡02:货记卡,03:准贷记卡,04:借贷合一卡,05:预付费卡)")
+    private String payCardType;
+
+    @Schema(description = "预留手机号 银行卡在发卡机构的预留手机号(如有〉根据商户,前三后三 中间补充*")
+    private String maskedReservedMobile;
+
+}

+ 37 - 0
PaymentClient/src/main/java/com/zhongshu/payment/client/payModel/unionFrictionlessPay/model/CardListQueryParam.java

@@ -0,0 +1,37 @@
+package com.zhongshu.payment.client.payModel.unionFrictionlessPay.model;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 查询卡列表 参数
+ *
+ * @author TRX
+ * @date 2024/9/3
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class CardListQueryParam extends UnionSuperParam {
+
+    @Schema(description = "商户代码 银商商户号")
+    private String mid;
+
+    @Schema(description = "协议模板id 无感(免密极速)产品模板 ID,与接入产品对应。")
+    private String planId;
+
+    @Schema(description = "请求单号 商户生成。不能含“-”或“_” 自定义并发送,同一交易日期内不可重复;")
+    private String orderId;
+
+    @Schema(description = "标记请求者id 银联分配:标记请求者 trId")
+    private String trId;
+
+    @Schema(description = "银联免密支付签约协议号 云闪付侧的签约协议号,由银联生成。即标记化支付信息域的token BASE64")
+    private String contractId;
+
+    @Schema(description = "请求方保留域 请求方保留域:商户自定义保留域,交易应答时会原样返回")
+    private String reqReserved;
+
+}

+ 41 - 0
PaymentClient/src/main/java/com/zhongshu/payment/client/payModel/unionFrictionlessPay/model/CardListQueryResponse.java

@@ -0,0 +1,41 @@
+package com.zhongshu.payment.client.payModel.unionFrictionlessPay.model;
+
+import com.github.microservice.models.requestModel.SuperResponseModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import org.hibernate.internal.build.AllowPrintStacktrace;
+
+import java.util.List;
+
+/**
+ * 查询卡列表 返回
+ *
+ * @author TRX
+ * @date 2024/9/3
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class CardListQueryResponse extends SuperResponseModel {
+
+    @Schema(description = "报文应答时间 格式yyyy-MM-dd HH:mm:ss")
+    private String responseTimeStamp;
+
+    @Schema(description = "商户代码 银商商户号")
+    private String mid;
+
+    @Schema(description = "银联免密支付签约协议号 BASE64")
+    private String contractId;
+
+    @Schema(description = "请求单号 商户生成。不能含“-”或“_” 自定义并发送,同一交易日期内不可重复;")
+    private String orderId;
+
+    @Schema(description = "请求方保留域 请求方保留域:商户自定义保留域,交易应答时会原样返回")
+    private String reqReserved;
+
+    @Schema(description = "卡列表")
+    private List<CardListModel> cardList;
+
+}

+ 34 - 0
PaymentClient/src/main/java/com/zhongshu/payment/client/payModel/unionFrictionlessPay/model/GoodsModel.java

@@ -0,0 +1,34 @@
+package com.zhongshu.payment.client.payModel.unionFrictionlessPay.model;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 单品列表 模型
+ *
+ * @author TRX
+ * @date 2024/9/3
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class GoodsModel {
+
+    @Schema(description = "商品编号")
+    private String goodsId;
+
+    @Schema(description = "单品优惠金额")
+    private Integer promotionAmt;
+
+    @Schema(description = "商品数量")
+    private Integer goodsNum;
+
+    @Schema(description = "商品价格")
+    private Integer goodsPrice;
+
+    @Schema(description = "商品备注")
+    private String goodsRemark;
+
+}

+ 37 - 0
PaymentClient/src/main/java/com/zhongshu/payment/client/payModel/unionFrictionlessPay/model/NetPayQueryParam.java

@@ -0,0 +1,37 @@
+package com.zhongshu.payment.client.payModel.unionFrictionlessPay.model;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 银联 -- 交易查询
+ *
+ * @author TRX
+ * @date 2024/9/3
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class NetPayQueryParam extends UnionSuperParam {
+
+    @Schema(description = "商户号")
+    private String mid;
+
+    @Schema(description = "请求系统预留字段")
+    private String srcReserve;
+
+    @Schema(description = "消息ID")
+    private String msgId;
+
+    @Schema(description = "终端号")
+    private String tid;
+
+    @Schema(description = "商户订单号")
+    private String merOrderId;
+
+    @Schema(description = "系统ID")
+    private String systemId;
+
+}

+ 120 - 0
PaymentClient/src/main/java/com/zhongshu/payment/client/payModel/unionFrictionlessPay/model/NetPayQueryResponse.java

@@ -0,0 +1,120 @@
+package com.zhongshu.payment.client.payModel.unionFrictionlessPay.model;
+
+import com.github.microservice.models.requestModel.SuperResponseModel;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * 交易查询--返回
+ *
+ * @author TRX
+ * @date 2024/9/3
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class NetPayQueryResponse extends SuperResponseModel {
+    @Schema(description = "消息ID,原样返回")
+    private String msgId;
+
+    @Schema(description = "商户名称")
+    private String merName;
+
+    @Schema(description = "链接系统")
+    private String connectSys;
+
+    @Schema(description = "银商商户号")
+    private String mid;
+
+    @Schema(description = "终端号")
+    private String tid;
+
+    @Schema(description = "银行卡号")
+    private String bankCardNo;
+
+    @Schema(description = "银行信息")
+    private String bankInfo;
+
+    @Schema(description = "交易状态")
+    private String status;
+
+    @Schema(description = "平台流水号")
+    private String seqId;
+
+    @Schema(description = "清分ID 如果来源方传了bankRefId就等于bankRefId,否则等于seqId")
+    private String settleRefId;
+
+    @Schema(description = "结算日期 格式yyyy-MM-dd")
+    private String settleDate;
+
+    @Schema(description = "支付总金额")
+    private Integer totalAmount;
+
+    @Schema(description = "交易中可给用户开具发票的金额")
+    private Integer invoiceAmount;
+
+    @Schema(description = "优惠金额")
+    private Integer couponAmount;
+
+    @Schema(description = "实付金额")
+    private Integer buyerPayAmount;
+
+    @Schema(description = "商户订单号")
+    private String merOrderId;
+
+    @Schema(description = "支付渠道商户号 各渠道情况不同,酌情转换。")
+    private String targetMid;
+
+    @Schema(description = "支付渠道列表")
+    private String billFunds;
+
+    @Schema(description = "支付渠道描述")
+    private String billFundsDesc;
+
+    @Schema(description = "商户附加数据")
+    private String attachedData;
+
+    @Schema(description = "第三方订单号")
+    private String targetOrderId;
+
+    @Schema(description = "支付时间 格式yyyy-MM-dd HH:mm:ss")
+    private String payTime;
+
+    @Schema(description = "请求系统预留字段")
+    private String srcReserve;
+
+    @Schema(description = "业务类型")
+    private String instMid;
+
+    @Schema(description = "买家ID")
+    private String buyerId;
+
+    @Schema(description = "子买家ID")
+    private String subBuyerId;
+
+    @Schema(description = "目标平台状态")
+    private String targetStatus;
+
+    @Schema(description = "目标平台代码")
+    private String targetSys;
+
+    @Schema(description = "借贷记卡信息 DEBIT_CARD(借记卡);CREDIT_CARD(贷记卡)")
+    private String cardAttr;
+
+    @Schema(description = "优惠金额(合计)")
+    private Integer totalPromotionAmt;
+
+    @Schema(description = "优惠状态")
+    private Integer orderPromotionStatus;
+
+    @Schema(description = "优惠活动活动列表")
+    private List<PromotionModel> promotionList;
+
+    @Schema(description = "渠道和收单机构侧原始优惠信息列表")
+    private List<PromotionModel> oriPromotionList;
+
+}

+ 57 - 0
PaymentClient/src/main/java/com/zhongshu/payment/client/payModel/unionFrictionlessPay/model/PromotionModel.java

@@ -0,0 +1,57 @@
+package com.zhongshu.payment.client.payModel.unionFrictionlessPay.model;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * 支付 优惠活动活动 模型
+ *
+ * @author TRX
+ * @date 2024/9/3
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class PromotionModel {
+
+    @Schema(description = "渠道方")
+    private String chnlName;
+
+    @Schema(description = "优惠流水ID")
+    private String promotionId;
+
+    @Schema(description = "活动编号")
+    private String eventNo;
+
+    @Schema(description = "活动名称")
+    private String eventName;
+
+    @Schema(description = "优惠范围")
+    private String promotionRange;
+
+    @Schema(description = "优惠类型")
+    private String promotionType;
+
+    @Schema(description = "活动优惠金额")
+    private Integer eventPromotionAmt;
+
+    @Schema(description = "平台优惠金额")
+    private Integer platPromotionAmt;
+
+    @Schema(description = "商户优惠金额")
+    private Integer mchntPromotionAmt;
+
+    @Schema(description = "第三方优惠金额")
+    private Integer thirdPartyPromotionAmt;
+
+    @Schema(description = "第三方出资详情")
+    private String thirdPartyPromotionDetail;
+
+    @Schema(description = "单品列表")
+    private List<GoodsModel> goodsList;
+
+}

+ 9 - 0
PaymentClient/src/main/java/com/zhongshu/payment/client/payModel/unionFrictionlessPay/model/SignNotifyModel.java

@@ -43,4 +43,13 @@ public class SignNotifyModel {
     @Schema(description = "掩码手机号 前3后4明文,其余*替换")
     private String maskedPhoneNo;
 
+    @Schema(description = "Token单笔交易限额")
+    private String singleLimitAmt;
+
+    @Schema(description = "可用次数")
+    private String avlNum;
+
+    @Schema(description = "签约模板id 无感(免密极速)产品模板 ID,与接入产品对应")
+    private String planId;
+
 }

+ 0 - 1
PaymentClient/src/main/java/com/zhongshu/payment/client/payModel/unionFrictionlessPay/paymentModel/SignInParam.java

@@ -17,7 +17,6 @@ public class SignInParam {
     private String shopOid;
 
     @Schema(hidden = true, description = "商户微信小程序id, 交易发起场景03:小程序,必传用于签约完成/失败/取消后跳转")
-    @NotEmpty(message = "mchntWxMpAppId不能为空")
     private String mchntWxMpAppId;
 
     @Schema(description = "签约后跳转的页面")

+ 16 - 0
PaymentServer/src/main/java/com/zhongshu/payment/server/core/domain/wallet/RechargeRecord.java

@@ -3,6 +3,7 @@ package com.zhongshu.payment.server.core.domain.wallet;
 import com.github.microservice.components.data.mongo.mongo.domain.SuperEntity;
 import com.github.microservice.models.type.PaymentType;
 import com.github.microservice.types.OrderState;
+import com.github.microservice.types.RefundStatus;
 import com.zhongshu.card.client.model.org.OrganizationUserModel;
 import com.zhongshu.card.client.utils.DateUtils;
 import com.zhongshu.payment.client.model.PrePayModel;
@@ -141,4 +142,19 @@ public class RechargeRecord extends SuperEntity {
         this.hourOfDay = DateUtils.getCurrentHourOfDay();
         this.paymentTime = DateUtils.paresTime(System.currentTimeMillis(), DateUtils.patternyyyySSS);
     }
+
+    //----------------------------退款相关数据 start
+
+    @Schema(description = "请求数据")
+    private Object requestParam;
+
+    @Schema(description = "退款订单号")
+    private String merOrderId;
+
+    @Schema(description = "退款api响应数据")
+    private Object refundResponse;
+
+    @Schema(description = "退款状态")
+    private RefundStatus refundStatus;
+
 }

+ 86 - 5
PaymentServer/src/main/java/com/zhongshu/payment/server/core/service/pay/impl/unionFrictionlessPay/UnionFrictionlessPayMainService.java

@@ -7,6 +7,9 @@ import com.github.microservice.app.stream.StreamHelper;
 import com.github.microservice.models.requestModel.SuperResponseModel;
 import com.github.microservice.models.type.PaymentType;
 import com.github.microservice.net.ResultContent;
+import com.github.microservice.stream.PaymentStreamType;
+import com.github.microservice.stream.model.OrderStateModel;
+import com.github.microservice.types.RefundStatus;
 import com.zhongshu.card.client.model.org.UserCountModel;
 import com.zhongshu.card.client.service.feign.OrganizationFeignService;
 import com.zhongshu.card.client.service.feign.UserFeignService;
@@ -25,19 +28,23 @@ import com.github.microservice.types.unionFrictionlessPayType.UnionUserOpenType;
 import com.zhongshu.payment.client.payModel.unionFrictionlessPay.paymentModel.SignInParam;
 import com.zhongshu.payment.client.payModel.unionFrictionlessPay.paymentModel.UserRescissionParam;
 import com.zhongshu.payment.client.payModel.unionFrictionlessPay.paymentModel.UserSignQueryParam;
+import com.zhongshu.payment.server.core.dao.RechargeRecordDao;
 import com.zhongshu.payment.server.core.dao.unionFrictionlessPay.UnionUserOpenInfoDao;
 import com.zhongshu.payment.server.core.domain.unionFrictionlessPay.UnionUserOpenInfo;
+import com.zhongshu.payment.server.core.domain.wallet.RechargeRecord;
 import com.zhongshu.payment.server.core.service.org.CollectionIdService;
 import com.zhongshu.payment.server.core.service.pay.SuperPayService;
 import com.zhongshu.payment.server.core.service.pay.impl.unionFrictionlessPay.config.UnionFrictionlessPayApiConfig;
 import com.zhongshu.payment.server.core.service.pay.impl.unionFrictionlessPay.config.UnionFrictionlessPayConfig;
 import com.zhongshu.payment.server.core.service.pay.impl.unionFrictionlessPay.config.UnionPaymentConfig;
 import com.zhongshu.payment.server.core.utils.AesUtils;
+import com.zhongshu.payment.server.core.utils.CommonUtil;
 import jakarta.servlet.http.HttpServletRequest;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
@@ -80,6 +87,9 @@ public class UnionFrictionlessPayMainService extends SuperPayService {
     @Autowired
     UnionFrictionlessPayConfig payConfig;
 
+    @Autowired
+    RechargeRecordDao rechargeRecordDao;
+
     /**
      * 发起签约
      *
@@ -190,7 +200,7 @@ public class UnionFrictionlessPayMainService extends SuperPayService {
     }
 
     /**
-     * 签约状态查询
+     * 签约状态查询 /v1/inip/sign/uac/entrust-pay/sign-query
      *
      * @param contractNo
      * @return
@@ -221,13 +231,16 @@ public class UnionFrictionlessPayMainService extends SuperPayService {
         return ResultContent.buildSuccess(signQueryResponse);
     }
 
+
     /**
-     * 创建订单并申请扣款
+     * 创建订单并申请扣款 /v1/netpay/uac/senseless-pay
      *
      * @param param
      * @return
      */
     public ResultContent createAndPayOrder(CreateOrderParam param) {
+        // 查询是否签约
+
         SenselessPayParam senselessPayParam = new SenselessPayParam();
         senselessPayParam.setRequestTimestamp(DateUtils.paresTime(System.currentTimeMillis(), DateUtils.FORMAT_LONG));
 
@@ -241,6 +254,49 @@ public class UnionFrictionlessPayMainService extends SuperPayService {
         return ResultContent.buildSuccess();
     }
 
+    /**
+     * 查询卡列表  /v1/inip/sign/uac/card-list-query
+     *
+     * @param param
+     * @return
+     */
+    public ResultContent cardListQuery(CreateOrderParam param) {
+        // 查询是否签约
+
+        CardListQueryParam requestParam = new CardListQueryParam();
+        requestParam.setRequestTimestamp(DateUtils.paresTime(System.currentTimeMillis(), DateUtils.FORMAT_LONG));
+
+        String url = payApiConfig.getUrl(UnionFrictionlessPayApiConfig.cardListQuery);
+        SuperResponseModel requestAPI = unionRequestService.requestUnionAPI(url, requestParam, SenselessPayResponse.class);
+        if (requestAPI.isFailed()) {
+            return ResultContent.buildFail(requestAPI.getMsg());
+        }
+        CardListQueryResponse response = (CardListQueryResponse) requestAPI;
+
+        return ResultContent.buildSuccess();
+    }
+
+    /**
+     * 交易查询  /v1/netpay/query
+     *
+     * @param param
+     * @return
+     */
+    public ResultContent netPayQuery(CreateOrderParam param) {
+        // 查询是否签约
+        NetPayQueryParam requestParam = new NetPayQueryParam();
+        requestParam.setRequestTimestamp(DateUtils.paresTime(System.currentTimeMillis(), DateUtils.FORMAT_LONG));
+
+        String url = payApiConfig.getUrl(UnionFrictionlessPayApiConfig.netPayQuery);
+        SuperResponseModel requestAPI = unionRequestService.requestUnionAPI(url, requestParam, SenselessPayResponse.class);
+        if (requestAPI.isFailed()) {
+            return ResultContent.buildFail(requestAPI.getMsg());
+        }
+        NetPayQueryResponse response = (NetPayQueryResponse) requestAPI;
+
+        return ResultContent.buildSuccess(response);
+    }
+
     /**
      * 创建订单并申请扣款
      *
@@ -262,12 +318,21 @@ public class UnionFrictionlessPayMainService extends SuperPayService {
     }
 
     /**
-     * 云闪付 申请退款
+     * 云闪付 申请退款 /v1/netpay/refund
      *
      * @param param
      * @return
      */
     public ResultContent uacRefund(CreateOrderParam param) {
+        String outTradeNo = param.getOutTradeNo();
+        // 查询全卡订单相关数据,组装请求数据
+
+        RechargeRecord rechargeRecord = rechargeRecordDao.findByOutTradeNo(outTradeNo);
+        if (ObjectUtils.isEmpty(rechargeRecord)) {
+            return ResultContent.buildFail("没有相关订单数据");
+        }
+        // 流水  全卡订单和支付中心订单用 outTradeNo 关联
+
         UacRefundParam senselessPayParam = new UacRefundParam();
         senselessPayParam.setRequestTimestamp(DateUtils.paresTime(System.currentTimeMillis(), DateUtils.FORMAT_LONG));
 
@@ -277,17 +342,33 @@ public class UnionFrictionlessPayMainService extends SuperPayService {
             return ResultContent.buildFail(requestAPI.getMsg());
         }
         UacRefundResponse response = (UacRefundResponse) requestAPI;
+        String refundStatus = response.getRefundStatus();
+        rechargeRecord.setRefundStatus(CommonUtil.getEnumByName(RefundStatus.class, refundStatus));
+        rechargeRecord.setRefundResponse(response);
+        rechargeRecordDao.save(rechargeRecord);
 
-        return ResultContent.buildSuccess();
+        //
+        OrderStateModel orderStateModel = new OrderStateModel();
+        orderStateModel.setOutTradeNo(outTradeNo);
+        orderStateModel.setOrderState(rechargeRecord.getRechargeState());
+        streamHelper.send(PaymentStreamType.PayStateStream.name(), orderStateModel);
+
+        return ResultContent.buildSuccess(response);
     }
 
     /**
-     * 云闪付 申请退款
+     * 云闪付 申请退款查询 v1/netpay/refund-query
      *
      * @param param
      * @return
      */
     public ResultContent uacRefundQuery(CreateOrderParam param) {
+        String outTradeNo = param.getOutTradeNo();
+        RechargeRecord rechargeRecord = rechargeRecordDao.findByOutTradeNo(outTradeNo);
+        if (ObjectUtils.isEmpty(rechargeRecord)) {
+            return ResultContent.buildFail("没有相关订单数据");
+        }
+
         UacRefundQueryParam requestParam = new UacRefundQueryParam();
         requestParam.setRequestTimestamp(DateUtils.paresTime(System.currentTimeMillis(), DateUtils.FORMAT_LONG));
 

+ 2 - 2
PaymentServer/src/main/java/com/zhongshu/payment/server/core/service/pay/impl/unionFrictionlessPay/UnionRequestService.java

@@ -87,7 +87,6 @@ public class UnionRequestService extends SuperService {
 
             String timestamp = DateUtils.paresTime(System.currentTimeMillis(), DateUtils.unionAuth);
             String nonce = CommonUtil.UUID();
-            Map<String, Object> header = new HashMap<>();
             String c = String.format("%s%s%s%s", payConfig.getAppId(), timestamp, nonce, sign);
 
             String signature = AesUtils.signMacSHA256(c, payConfig.getAppKey());
@@ -95,7 +94,6 @@ public class UnionRequestService extends SuperService {
                     + ",Timestamp=" + "\"" + timestamp + "\""
                     + ",Nonce=" + "\"" + nonce + "\""
                     + ",Signature=" + "\"" + signature + "\"";
-            header.put("authorization", authorization);
             String response = "";
             PrintWriter out = null;
             BufferedReader in = null;
@@ -123,6 +121,8 @@ public class UnionRequestService extends SuperService {
                 responseModel.setCode(code);
             } catch (Exception e) {
                 e.printStackTrace();
+                responseModel.setCode(code);
+                responseModel.setMsg(e.getMessage());
             } finally {
                 try {
                     if (out != null) {

+ 12 - 5
PaymentServer/src/main/java/com/zhongshu/payment/server/core/service/pay/impl/unionFrictionlessPay/config/UnionFrictionlessPayApiConfig.java

@@ -64,7 +64,8 @@ public class UnionFrictionlessPayApiConfig {
     // 云闪付 订单查询
     public static String orderQuery = "orderQuery";
 
-
+    // 查询卡列表
+    public static String cardListQuery = "card-list-query";
 
     private static List<UnionPayApi> apis = new ArrayList<>();
 
@@ -128,14 +129,14 @@ public class UnionFrictionlessPayApiConfig {
 
         // 云闪付申请退款
         apis.add(UnionPayApi.builder().apiKey(uacRefund)
-                .devUrl("https://test-api-open.chinaums.com/v1/netpay/uac/refund")
-                .prodUrl("https://api-mop.chinaums.com/v1/netpay/uac/refund")
+                .devUrl("https://test-api-open.chinaums.com/v1/netpay/refund")
+                .prodUrl("https://api-mop.chinaums.com/v1/netpay/refund")
                 .build());
 
         // 云闪付申请退款
         apis.add(UnionPayApi.builder().apiKey(uacRefundQuery)
-                .devUrl("https://test-api-open.chinaums.com/v1/netpay/uac/refund-query")
-                .prodUrl("https://api-mop.chinaums.com/v1/netpay/uac/refund-query")
+                .devUrl("https://api-mop.chinaums.com/v1/netpay/refund-query")
+                .prodUrl("https://test-api-open.chinaums.com/v1/netpay/refund-query")
                 .build());
 
         // 云闪付 订单查询
@@ -149,6 +150,12 @@ public class UnionFrictionlessPayApiConfig {
                 .prodUrl("https://api-mop.chinaums.com/v1/netpay/query")
                 .build());
 
+        // 查询卡列表
+        apis.add(UnionPayApi.builder().apiKey(cardListQuery)
+                .devUrl("https://test-api-open.chinaums.com/v1/inip/sign/uac/card-list-query")
+                .prodUrl("https://api-mop.chinaums.com/v1/inip/sign/uac/card-list-query")
+                .build());
+
     }
 
     public String getUrl(String key) {