소스 검색

铸造订单支付

licailing 3 년 전
부모
커밋
3c0cf3e5a7

+ 30 - 0
src/main/java/com/izouma/nineth/service/SandPayService.java

@@ -4,10 +4,13 @@ import cn.com.sandpay.cashier.sdk.*;
 import com.alibaba.fastjson.JSONObject;
 import com.izouma.nineth.config.SandPayProperties;
 import com.izouma.nineth.domain.GiftOrder;
+import com.izouma.nineth.domain.MintOrder;
 import com.izouma.nineth.domain.Order;
+import com.izouma.nineth.enums.MintOrderStatus;
 import com.izouma.nineth.enums.OrderStatus;
 import com.izouma.nineth.exception.BusinessException;
 import com.izouma.nineth.repo.GiftOrderRepo;
+import com.izouma.nineth.repo.MintOrderRepo;
 import com.izouma.nineth.repo.OrderRepo;
 import com.izouma.nineth.utils.DateTimeUtils;
 import lombok.AllArgsConstructor;
@@ -37,6 +40,7 @@ public class SandPayService {
     private final OrderRepo         orderRepo;
     private final GiftOrderRepo     giftOrderRepo;
     private final SandPayProperties sandPayProperties;
+    private final MintOrderRepo     mintOrderRepo;
 
     public JSONObject requestServer(JSONObject header, JSONObject body, String reqAddr) {
 
@@ -201,4 +205,30 @@ public class SandPayService {
 
         return res.getJSONObject("body").getString("qrCode");
     }
+
+    @Cacheable(value = "sandPay", key = "#orderId")
+    public String payMintOrder(Long orderId) {
+        MintOrder order = mintOrderRepo.findById(orderId).orElseThrow(new BusinessException("订单不存在"));
+        if (order.getStatus() != MintOrderStatus.NOT_PAID) {
+            throw new BusinessException("订单状态错误");
+        }
+        JSONObject extend = new JSONObject();
+        extend.put("type", "mintOrder");
+        extend.put("id", orderId);
+
+        JSONObject res = requestAlipay(orderId.toString(), order.getGasPrice(), "铸造活动:" + order.getMintActivityId(),
+                "铸造活动:" + order.getMintActivityId(), order.getCreatedAt().plusMinutes(3), extend.toJSONString());
+        if (res == null)
+            throw new BusinessException("下单失败,请稍后再试");
+
+        if (!"000000".equals(res.getJSONObject("head").getString("respCode"))) {
+            String msg = res.getJSONObject("head").getString("respMsg");
+            if (msg.contains("超限")) {
+                throw new BusinessException("超过商户单日额度");
+            }
+            throw new BusinessException(msg);
+        }
+
+        return res.getJSONObject("body").getString("qrCode");
+    }
 }

+ 5 - 3
src/main/java/com/izouma/nineth/web/OrderPayController.java

@@ -109,7 +109,7 @@ public class OrderPayController {
     @RequestMapping(value = "/gift/alipay_wx", method = RequestMethod.GET)
     public String payGiftOrderAlipayWx(Long id, Model model) throws BaseAdaPayException {
 //        String payUrl = (String) giftOrderService.payAdapay(id, "alipay_wap", null);
-        String payUrl = sandPayService.payGiftOrder(id);;
+        String payUrl = sandPayService.payGiftOrder(id);
         model.addAttribute("payUrl", payUrl);
         model.addAttribute("orderId", id);
         return "AlipayHtml";
@@ -152,12 +152,14 @@ public class OrderPayController {
     @RequestMapping(value = "/mint/alipay_h5", method = RequestMethod.GET)
     @ResponseBody
     public String payMintOrderAlipayH5(Long id, Model model) throws BaseAdaPayException {
-        return (String) mintOrderService.payAdapay(id, "alipay_wap", null);
+//        return (String) mintOrderService.payAdapay(id, "alipay_wap", null);
+        return sandPayService.payMintOrder(id);
     }
 
     @RequestMapping(value = "/mint/alipay_wx", method = RequestMethod.GET)
     public String payMintOrderAlipayWx(Long id, Model model) throws BaseAdaPayException {
-        String payUrl = (String) mintOrderService.payAdapay(id, "alipay_wap", null);
+//        String payUrl = (String) mintOrderService.payAdapay(id, "alipay_wap", null);
+        String payUrl = sandPayService.payMintOrder(id);
         model.addAttribute("payUrl", payUrl);
         model.addAttribute("orderId", id);
         return "AlipayHtml2";

+ 4 - 0
src/main/java/com/izouma/nineth/web/SandPayController.java

@@ -7,6 +7,7 @@ import com.izouma.nineth.config.GeneralProperties;
 import com.izouma.nineth.enums.PayMethod;
 import com.izouma.nineth.event.OrderNotifyEvent;
 import com.izouma.nineth.service.GiftOrderService;
+import com.izouma.nineth.service.MintOrderService;
 import com.izouma.nineth.service.OrderService;
 import com.izouma.nineth.service.SandPayService;
 import com.izouma.nineth.utils.SnowflakeIdWorker;
@@ -36,6 +37,7 @@ public class SandPayController {
     private GeneralProperties generalProperties;
     private RocketMQTemplate  rocketMQTemplate;
     private GiftOrderService  giftOrderService;
+    private MintOrderService  mintOrderService;
 
     @GetMapping(value = "/testpay", produces = "text/html")
     private String testpay() {
@@ -83,6 +85,8 @@ public class SandPayController {
                             case "gift":
                                 giftOrderService.giftNotify(id, PayMethod.ALIPAY, payOrderCode);
                                 break;
+                            case "mintOrder":
+                                mintOrderService.mintNotify(id, PayMethod.ALIPAY, payOrderCode);
                         }
                     }
                     return "respCode=000000";