주문 제출 처리

@PostMapping("/order/submit")
public ResponseEntity orderSubmit
				(Amount amount,
        OrderDTO orderDTO,
        HttpSession session,
        @RequestParam(value = "cartNo", required = false) List<Integer> cartNos,
        @RequestParam(value = "usedPoint", required = false) Integer usedPoint,
        @RequestParam(value = "issueNo", required = false) Long issueNo,
        @RequestParam(value = "itemPoint", required = false) List<Integer> itemPointList,
        @AuthenticationPrincipal UserDetails userDetails) throws Exception {

    return orderTransactionService.processOrderAndPay(
        amount,
        orderDTO,
        session,
        cartNos,
        usedPoint,
        issueNo,
        itemPointList,
        userDetails
    );
}

기술 설명

결제 성공 처리

@GetMapping("/payment/success")
public String afterPayRequest(@RequestParam(value="pg_token", required = false) String pgToken,
                              HttpSession session) {
    if (pgToken != null) {
        try {
            KakaoApproveResponse approveResponse = kakaoPayService.approveResponse(pgToken);

            if (approveResponse != null) {
                Integer orderNo = (Integer) session.getAttribute("orderNo");
                productOrderSubmitService.updateOrderStatusToCompleted(orderNo);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    return "redirect:/product/order_completed";
}

기술 설명

주문 완료 View

@GetMapping("/product/order_completed")
public String orderCompleted(HttpSession session, Model model) {
    Integer orderNo = (Integer) session.getAttribute("orderNo");
    OrderDTO orderDTO = productOrderSubmitService.findAllByOrderNo(orderNo);

    model.addAttribute("orderDTO", orderDTO);

    return "/product/order/order_completed";
}

기술 설명