瀏覽代碼

feat:小程序预支付增加字段

刘云鑫 2 月之前
父節點
當前提交
410ed74545

+ 5 - 4
alien-dining/src/main/java/shop/alien/dining/controller/PaymentController.java

@@ -37,13 +37,14 @@ public class PaymentController {
             @ApiImplicitParam(name = "price", value = "订单金额", required = true, paramType = "query", dataType = "String"),
             @ApiImplicitParam(name = "subject", value = "订单标题", required = true, paramType = "query", dataType = "String"),
             @ApiImplicitParam(name = "payType", value = "支付类型(alipay:支付宝, wechatPay:微信支付)", required = true, paramType = "query", dataType = "String"),
-            @ApiImplicitParam(name = "payer", value = "支付用户", required = true, paramType = "query", dataType = "String")
+            @ApiImplicitParam(name = "payer", value = "支付用户", required = true, paramType = "query", dataType = "String"),
+            @ApiImplicitParam(name = "orderNo", value = "订单号", required = true, paramType = "query", dataType = "String")
     })
     @RequestMapping("/prePay")
-    public R prePay(String price, String subject, String payType,String payer) {
-        log.info("PaymentController:prePay, price: {}, subject: {}, payType: {},payer:{}", price, subject, payType,payer);
+    public R prePay(String price, String subject, String payType,String payer,String orderNo) {
+        log.info("PaymentController:prePay, price: {}, subject: {}, payType: {},payer:{},orderNo:{}", price, subject, payType,payer,orderNo);
         try {
-            return paymentStrategyFactory.getStrategy(payType).createPrePayOrder(price, subject,payer);
+            return paymentStrategyFactory.getStrategy(payType).createPrePayOrder(price, subject,payer,orderNo);
         } catch (Exception e) {
             return R.fail(e.getMessage());
         }

+ 2 - 1
alien-dining/src/main/java/shop/alien/dining/service/StoreOrderService.java

@@ -2,6 +2,7 @@ package shop.alien.dining.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.IService;
 import shop.alien.entity.store.StoreOrder;
 import shop.alien.entity.store.dto.CreateOrderDTO;
 
@@ -11,7 +12,7 @@ import shop.alien.entity.store.dto.CreateOrderDTO;
  * @author system
  * @since 2025-01-XX
  */
-public interface StoreOrderService {
+public interface StoreOrderService extends IService<StoreOrder> {
 
     /**
      * 创建订单

+ 1 - 1
alien-dining/src/main/java/shop/alien/dining/strategy/payment/PaymentStrategy.java

@@ -19,7 +19,7 @@ public interface PaymentStrategy {
      * @return 预支付订单信息
      * @throws Exception 生成异常
      */
-    R createPrePayOrder(String price, String subject, String payer) throws Exception;
+    R createPrePayOrder(String price, String subject, String payer, String orderNo) throws Exception;
 
 
     /**

+ 6 - 4
alien-dining/src/main/java/shop/alien/dining/strategy/payment/impl/WeChatPaymentMininProgramStrategyImpl.java

@@ -16,7 +16,6 @@ import org.springframework.stereotype.Component;
 import shop.alien.dining.strategy.payment.PaymentStrategy;
 import shop.alien.dining.util.WXPayUtility;
 import shop.alien.entity.result.R;
-import shop.alien.util.common.UniqueRandomNumGenerator;
 import shop.alien.util.common.constant.PaymentEnum;
 import shop.alien.util.system.OSUtil;
 
@@ -27,7 +26,10 @@ import java.nio.charset.StandardCharsets;
 import java.security.PrivateKey;
 import java.security.PublicKey;
 import java.security.Signature;
-import java.util.*;
+import java.util.Base64;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 
 /**
@@ -139,14 +141,14 @@ public class WeChatPaymentMininProgramStrategyImpl implements PaymentStrategy {
     }
 
     @Override
-    public R createPrePayOrder(String price, String subject, String payer) throws Exception {
+    public R createPrePayOrder(String price, String subject, String payer, String orderNo) throws Exception {
 
 
         DirectAPIv3JsapiPrepayRequest request = new DirectAPIv3JsapiPrepayRequest();
         request.appid = appId;
         request.mchid = mchId;
         request.description = subject;
-        request.outTradeNo = UniqueRandomNumGenerator.generateUniqueCode(19);
+        request.outTradeNo = orderNo;
 //        request.timeExpire = "2018-06-08T10:34:56+08:00";
 //        request.attach = "自定义数据说明";
         request.notifyUrl = prePayNotifyUrl;