Selaa lähdekoodia

feature 微信支付以及回调相关功能完善

xiahan 4 kuukautta sitten
vanhempi
commit
08c8a96be7

+ 1 - 1
zhsw-common/src/main/java/com/rongwei/zhsw/system/utils/WxPayApi.java

@@ -72,7 +72,7 @@ public class WxPayApi {
         request.setDescription(vo.getDescription());
         request.setOutTradeNo(vo.getOutTradeNo());
         // 接收通知的url
-        request.setNotifyUrl("http://61.177.40.178:8000/zhsw/wechat/payment/prepay/notice");
+        request.setNotifyUrl("http://61.177.40.178:8000/zhsw/wechat/payment/prepay/notice/"+vo.getDskey());
         Amount amount = new Amount();
         amount.setTotal(vo.getTotalAmount());
         amount.setCurrency("CNY");

+ 1 - 1
zhsw-common/src/main/java/com/rongwei/zhsw/system/wechat/PayMentService.java

@@ -15,5 +15,5 @@ import java.io.IOException;
 public interface PayMentService {
     R paymentInitiation(WxPrepayOrderVo vo);
 
-    R prepayNotice(PrepayNoticeVo prepayNoticeVo) throws IOException;
+    R prepayNotice(PrepayNoticeVo prepayNoticeVo,String dskey) throws IOException;
 }

+ 8 - 7
zhsw-common/src/main/java/com/rongwei/zhsw/system/wechat/impl/PayMentServiceImpl.java

@@ -123,15 +123,16 @@ public class PayMentServiceImpl implements PayMentService {
      */
     @Override
     @Transactional
-    public R prepayNotice(PrepayNoticeVo prepayNoticeVo)  {
+    public R prepayNotice(PrepayNoticeVo prepayNoticeVo,String dskey)  {
         log.info("获取到的回调信息接口:{}", prepayNoticeVo);
-        List<TenantDo> tenantList = (List<TenantDo>) redisService.getRedisCatchObj("allTenants");
-        if (tenantList == null || tenantList.isEmpty()) {
-            log.error("无法获取到租户信息");
-            return R.error();
+        List<String> dsKeys;
+        if(StringUtils.isBlank(dskey)){
+            List<TenantDo> tenantList = (List<TenantDo>) redisService.getRedisCatchObj("allTenants");
+            // 获取 所有的主库信息
+            dsKeys= tenantList.stream().map(TenantDo::getDskey).collect(Collectors.toList());
+        }else{
+            dsKeys= Collections.singletonList(dskey);
         }
-        // 获取 所有的主库信息
-        List<String> dsKeys = tenantList.stream().map(TenantDo::getDskey).collect(Collectors.toList());
         dsKeys.remove("incontrol");
         // 获取所有商户的密钥
         List<SwEnterpriseConfigInfoDo> secretKeyList = commonBusinessDao.getSecretKey(dsKeys);

+ 2 - 0
zhsw-entity/src/main/java/com/rongwe/zhsw/system/vo/WxPrepayOrderVo.java

@@ -15,4 +15,6 @@ public class WxPrepayOrderVo {
 
     // 订单号
     private String outTradeNo;
+
+    private String dskey;
 }

+ 9 - 10
zhsw-server/src/main/java/com/rongwei/zhsw/system/controller/weChat/PayMentController.java

@@ -5,17 +5,12 @@ import com.rongwe.zhsw.system.vo.PaymentRocordVo;
 import com.rongwe.zhsw.system.vo.PrepayNoticeVo;
 import com.rongwe.zhsw.system.vo.WxPrepayOrderVo;
 import com.rongwei.rwcommon.base.R;
-import com.rongwei.zhsw.system.utils.WxPayApi;
 import com.rongwei.zhsw.system.wechat.PaymentRecordService;
 import com.rongwei.zhsw.system.wechat.impl.PayMentServiceImpl;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import java.util.UUID;
+import org.springframework.web.bind.annotation.*;
 
 @RestController
 @RequestMapping("/wechat/payment")
@@ -34,6 +29,7 @@ public class PayMentController {
 
     /**
      * 生成缴费记录
+     *
      * @param createPaymentRecordVo
      * @return
      */
@@ -41,23 +37,26 @@ public class PayMentController {
     private R createRecord(@RequestBody CreatePaymentRecordVo createPaymentRecordVo) {
         return paymentRecordService.createRecord(createPaymentRecordVo);
     }
+
     /**
      * 预下单
+     *
      * @param vo
      * @return
      */
     @PostMapping("/prepayOrder")
     public R prepayOrder(@RequestBody WxPrepayOrderVo vo) {
-     return payMentService.paymentInitiation(vo);
+        return payMentService.paymentInitiation(vo);
     }
 
     /**
      * 微信支付成功回调函数
+     *
      * @param prepayNoticeVo
      * @return
      */
-    @PostMapping("/prepay/notice")
-    public R prepayNotice(@RequestBody PrepayNoticeVo prepayNoticeVo) {
-      return  payMentService.prepayNotice(prepayNoticeVo);
+    @PostMapping("/prepay/notice/{dskey}")
+    public R prepayNotice(@RequestBody PrepayNoticeVo prepayNoticeVo, @PathVariable("dskey") String dskey) {
+        return payMentService.prepayNotice(prepayNoticeVo, dskey);
     }
 }