TRX 1 år sedan
förälder
incheckning
65234a3e9c

+ 1 - 1
PaymentClient/src/main/java/com/zhongshu/payment/client/service/OrderPayFeignService.java

@@ -17,7 +17,7 @@ import javax.validation.Valid;
 /**
  * @author
  */
-@FeignClient("paymentserver/manager/orderPay")
+@FeignClient("paymentserver-trx/manager/orderPay")
 public interface OrderPayFeignService {
 
     /**

+ 1 - 1
PaymentClient/src/main/java/com/zhongshu/payment/client/service/WalletFeignService.java

@@ -15,7 +15,7 @@ import org.springframework.web.bind.annotation.RequestParam;
  * @author wjf
  * @date 2024/7/26
  */
-@FeignClient("paymentserver/manager/wallet")
+@FeignClient("paymentserver-trx/manager/wallet")
 public interface WalletFeignService {
 
     /** 获取钱包信息 */

+ 3 - 3
PaymentClient/src/main/java/com/zhongshu/payment/client/types/unionFrictionlessPayType/UnionUserOpenType.java

@@ -1,12 +1,12 @@
 package com.zhongshu.payment.client.types.unionFrictionlessPayType;
 
 /**
- *
+ * 签约类型
  */
 public enum UnionUserOpenType {
 
-    WeChat("微信支付"),//
-    UnionFrictionlessPay("银联无感支付"),//
+    Shop("商户"),//
+    User("银联无感支付"),//
     ;
 
     // 名称

+ 37 - 0
PaymentServer/src/main/java/com/zhongshu/payment/server/core/controller/unionFrictionlessPay/FrictionlessNotifyController.java

@@ -0,0 +1,37 @@
+package com.zhongshu.payment.server.core.controller.unionFrictionlessPay;
+
+import com.zhongshu.payment.server.core.service.pay.impl.unionFrictionlessPay.UnionNotifyService;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.servlet.http.HttpServletRequest;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 无感支付回调
+ *
+ * @author TRX
+ * @date 2024/8/26
+ */
+@Slf4j
+@RestController
+@RequestMapping("/frictionless/notify")
+@Tag(name = "无感支付-签约通知回调")
+public class FrictionlessNotifyController {
+
+    @Autowired
+    UnionNotifyService unionNotifyService;
+
+    @Operation(summary = "商户签约通知回调")
+    @PostMapping(value = "payNotify/{outTradeNo}", consumes = MediaType.APPLICATION_JSON_VALUE)
+    public void payNotify(HttpServletRequest request, @PathVariable(name = "outTradeNo") String outTradeNo) {
+        log.info("收到微信支付通知 appid:{}", outTradeNo);
+        unionNotifyService.signNotify(request);
+    }
+
+}

+ 6 - 1
PaymentServer/src/main/java/com/zhongshu/payment/server/core/domain/unionFrictionlessPay/UnionUserOpenInfo.java

@@ -1,5 +1,6 @@
 package com.zhongshu.payment.server.core.domain.unionFrictionlessPay;
 
+import com.zhongshu.payment.client.types.unionFrictionlessPayType.UnionUserOpenType;
 import com.zhongshu.payment.server.core.domain.base.SuperMain;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
@@ -15,6 +16,9 @@ import org.springframework.data.mongodb.core.mapping.Document;
 @Document
 public class UnionUserOpenInfo extends SuperMain {
 
+    @Schema(description = "签约类型")
+    private UnionUserOpenType unionUserOpenType;
+
     @Schema(description = "用户ID")
     private String userId;
 
@@ -24,7 +28,7 @@ public class UnionUserOpenInfo extends SuperMain {
     @Schema(description = "商户oid")
     private String shopOid;
 
-    @Schema(description = "商户签约协议号")
+    @Schema(description = "商户签约协议号(本地生成的唯一号)")
     private String contractNo;
 
     @Schema(description = "银商免密支付签约协议号")
@@ -33,6 +37,7 @@ public class UnionUserOpenInfo extends SuperMain {
     @Schema(description = "签约状态,通知商户,必传。UNSIGNED-未签约 SIGNED-已签约 RESCISSION-已解约 ELETING_CONTRACT-解约中 UNKNOWN-未知")
     private String contractState;
 
+    @Schema(description = "签约时间")
     private Long signedTime;
 
     @Schema(description = "协议签约时间,格式:yyyy-MM-dd HH:mm:ss")

+ 27 - 0
PaymentServer/src/main/java/com/zhongshu/payment/server/core/service/pay/impl/unionFrictionlessPay/UnionNotifyService.java

@@ -0,0 +1,27 @@
+package com.zhongshu.payment.server.core.service.pay.impl.unionFrictionlessPay;
+
+import com.github.microservice.net.ResultContent;
+import jakarta.servlet.http.HttpServletRequest;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author TRX
+ * @date 2024/8/26
+ */
+@Slf4j
+@Service
+public class UnionNotifyService {
+
+    /**
+     * 无感支付签约回调
+     *
+     * @param request
+     * @return
+     */
+    public ResultContent signNotify(HttpServletRequest request) {
+
+        return ResultContent.buildSuccess();
+    }
+
+}

+ 26 - 3
PaymentClient/src/main/java/com/zhongshu/payment/client/payModel/unionFrictionlessPay/config/UnionFrictionlessPayApiConfig.java → PaymentServer/src/main/java/com/zhongshu/payment/server/core/service/pay/impl/unionFrictionlessPay/config/UnionFrictionlessPayApiConfig.java

@@ -1,12 +1,13 @@
-package com.zhongshu.payment.client.payModel.unionFrictionlessPay.config;
+package com.zhongshu.payment.server.core.service.pay.impl.unionFrictionlessPay.config;
 
 import com.zhongshu.payment.client.payModel.unionFrictionlessPay.model.UnionPayApi;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
+import java.util.Optional;
 
 /**
  * 无感支付API配置
@@ -19,7 +20,7 @@ import java.util.List;
 public class UnionFrictionlessPayApiConfig {
 
     @Autowired
-    UnionFrictionlessPayConfig payConfig;
+    public static UnionFrictionlessPayConfig payConfig;
 
     // 申请扣款
     public static String pay = "pay";
@@ -36,6 +37,9 @@ public class UnionFrictionlessPayApiConfig {
     // 交易查询
     public static String payQuery = "payQuery";
 
+    // 商户签约
+    public static String sign = "sign";
+
     private static List<UnionPayApi> apis = new ArrayList<>();
 
     static {
@@ -69,6 +73,25 @@ public class UnionFrictionlessPayApiConfig {
                 .prodUrl("https://api-mop.chinaums.com/v1/inip/upsp/shop/senseless/pay-query")
                 .build());
 
+        // 签约是指云闪付用户在商户APP仅完成商户与云闪付的签约,不涉及支付
+        apis.add(UnionPayApi.builder().apiKey(sign)
+                .devUrl("https://test-api-open.chinaums.com/v1/inip/sign/uac/entrust-pay/sign")
+                .prodUrl("https://api-mop.chinaums.com/v1/inip/sign/uac/entrust-pay/sign")
+                .build());
+
+    }
+
+    public static String getUlr(String key) {
+        if (StringUtils.isNotEmpty(key)) {
+            Optional<UnionPayApi> opt = apis.stream().filter(it -> it.getApiKey().equals(key)).findFirst();
+            if (opt.isPresent()) {
+                if (payConfig.getEvn().equals("prod")) {
+                    return opt.get().getProdUrl();
+                }
+                return opt.get().getDevUrl();
+            }
+        }
+        return "";
     }
 
 }

+ 1 - 4
PaymentClient/src/main/java/com/zhongshu/payment/client/payModel/unionFrictionlessPay/config/UnionFrictionlessPayConfig.java → PaymentServer/src/main/java/com/zhongshu/payment/server/core/service/pay/impl/unionFrictionlessPay/config/UnionFrictionlessPayConfig.java

@@ -1,11 +1,8 @@
-package com.zhongshu.payment.client.payModel.unionFrictionlessPay.config;
+package com.zhongshu.payment.server.core.service.pay.impl.unionFrictionlessPay.config;
 
-import lombok.AllArgsConstructor;
 import lombok.Data;
-import lombok.NoArgsConstructor;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.stereotype.Component;
 
 /**
  * @author TRX