TRX 1 год назад
Родитель
Сommit
8798793000

+ 2 - 2
FullCardServer/src/main/java/com/zhongshu/card/server/core/controller/payment/OrderController.java

@@ -34,10 +34,10 @@ public class OrderController {
      * 扫设备码下单
      */
     @ResourceAuth(value = "user", type = AuthType.User)
-    @Operation(summary = "扫设备码下单")
+    @Operation(summary = "扫设备码下单(微信渠道)")
     @RequestMapping(value = {"cToBqrCodeBCreateOrder"}, method = {RequestMethod.POST})
     public ResultContent cToBqrCodeBCreateOrder(@RequestBody DeviceQrCodeParam param) {
-        return orderService.cToBqrCodeBCreateOrder(param);
+        return orderService.wxCToBQrCodeCreateOrder(param);
     }
 
     @ResourceAuth(value = "user", type = AuthType.User)

+ 4 - 1
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/payment/ExpenseFlowServiceImpl.java

@@ -932,11 +932,14 @@ public class ExpenseFlowServiceImpl extends SuperService implements ExpenseFlowS
     public OrderPayModel isCanPay(ExpenseFlow entity) {
         OrderPayModel model = new OrderPayModel();
         if (ObjectUtils.isNotEmpty(entity)) {
+            // 订单参数验证是否成功
             if (entity.getVerifyParamIsSuccess() == null || !entity.getVerifyParamIsSuccess()) {
                 return model.setFiled(entity.getVerifyParamMsg());
             }
+
             OrderState orderState = entity.getOrderState();
-            if (orderState != OrderState.WAIT_PAYMENT) {
+            // 等待支付或支付失败,可以支付
+            if (orderState != OrderState.WAIT_PAYMENT || orderState != OrderState.PAID_ERROR) {
                 return model.setFiled(String.format("订单状态:%S", orderState.getRemark()));
             }
             if (entity.getExpirationTime() <= System.currentTimeMillis()) {

+ 3 - 4
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/payment/OrderService.java

@@ -13,7 +13,6 @@ import com.zhongshu.card.server.core.domain.org.UserAccount;
 import com.zhongshu.card.server.core.domain.payment.ExpenseFlow;
 import com.zhongshu.card.server.core.service.base.SuperService;
 import com.zhongshu.card.server.core.service.devices.deviceProduct.DeviceProductBindDeviceService;
-import com.zhongshu.card.server.core.service.devices.permiss.DevicePermissVerifyService;
 import com.zhongshu.card.server.core.util.CommonUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.ObjectUtils;
@@ -41,11 +40,11 @@ public class OrderService extends SuperService {
     private ExpenseFlowServiceImpl expenseFlowService;
 
     /**
-     * 小程序扫 设备码 下单
+     * 小程序扫 设备码 下单 (微信)
      *
      * @return
      */
-    public ResultContent cToBqrCodeBCreateOrder(DeviceQrCodeParam param) {
+    public ResultContent wxCToBQrCodeCreateOrder(DeviceQrCodeParam param) {
         if (StringUtils.isEmpty(param.getDeviceId())) {
             return ResultContent.buildFail("deviceId不能为空");
         }
@@ -87,7 +86,7 @@ public class OrderService extends SuperService {
         // 是否是浮动计费 计费方式
         orderParam.setChargeableType(ChargeableType.Specified);
 
-        // 指定支付方式
+        // 指定支付方式 而且是微信渠道
         orderParam.setAppointPaymentType(Boolean.TRUE);
         orderParam.setPaymentType(PaymentType.WeChatPay);
 

+ 18 - 12
FullCardServer/src/main/java/com/zhongshu/card/server/core/service/payment/PayCallService.java

@@ -105,21 +105,27 @@ public class PayCallService extends SuperService {
         }
 
         StopWatch stopWatch = new StopWatch();
-        stopWatch.start("1");
-        // 得到用户所有的支付渠道,依次尝试扣款
-        ResultContent<List<PaymentType>> resultContent = payOrderSettingService.getUserPayment(entity.getUserId(), entity.getProjectOid());
-        if (resultContent.isFailed()) {
-            String msg = resultContent.getMsg();
-            entity.setPayFailed(msg);
-            expenseFlowDao.save(entity);
-            return ResultContent.buildFail(msg);
-        }
-        stopWatch.stop();
 
+        List<PaymentType> paymentTypes = new ArrayList<>();
+        // 如果是订单规定好的支付渠道
+        if (entity.getAppointPaymentType() != null && entity.getAppointPaymentType()) {
+            paymentTypes.add(entity.getPaymentType());
+        } else {
+            stopWatch.start("1");
+            // 得到用户所有的支付渠道,依次尝试扣款
+            ResultContent<List<PaymentType>> resultContent = payOrderSettingService.getUserPayment(entity.getUserId(), entity.getProjectOid());
+            if (resultContent.isFailed()) {
+                String msg = resultContent.getMsg();
+                entity.setPayFailed(msg);
+                expenseFlowDao.save(entity);
+                return ResultContent.buildFail(msg);
+            }
+            stopWatch.stop();
+            paymentTypes = resultContent.getContent();
+        }
 
-        List<PaymentType> paymentTypes = resultContent.getContent();
         if (ObjectUtils.isEmpty(paymentTypes)) {
-            String msg = "用户暂无开启支付渠道";
+            String msg = "用户暂无可用支付渠道";
             entity.setPayFailed(msg);
             expenseFlowDao.save(entity);
             return ResultContent.buildFail(msg);