🏫 Open API_JAVA

[96일차] 무통장 결제

Dorothy_YANG 2022. 12. 11. 21:28
728x90

20221208(목)

  • 목차
    - 무통장 결제

< 무통장 결제 >

  • Order 컨트롤러 무통장 결제 코드추가
// 무통장 결제. /orderSave
@PostMapping("/orderSave")
public String orderSave(String type, OrderVO o_vo, OrderDetailVO od_vo, PaymentVO p_vo, HttpSession session, Model model) {

    p_vo.setPay_tot_price(p_vo.getPay_nobank_price());

    log.info("주문정보: " + o_vo);
    log.info("주문상세정보: " + od_vo);
    log.info("결제정보: " + p_vo);



    String mem_id = ((MemberVO)session.getAttribute("loginStatus")).getMem_id();


    //주문번호가 시퀀스 작업(중요)
    o_vo.setOdr_code(orderService.getOrderSequence());

    o_vo.setMem_id(mem_id);
    p_vo.setMem_id(mem_id);
    od_vo.setOdr_code(o_vo.getOdr_code());

    //주문정보 저장하기.
    if(type.equals("cart")) {
        orderService.orderSave(o_vo, p_vo);  // 주문상세정보를 장바구니를 통하여, 데이타 작업
    }else if(type.equals("direct")) {
        orderService.orderDirectSave(o_vo, od_vo, p_vo);	// 주문작성하기 페이지에서 바로구매 상품정보 데이타 작업
    }


    return "redirect:/order/orderComplete"; 
}

 

  • orderListInfo.jsp

 


  • orderListInfo.jsp의 script 부분
<script>
  
  
    $(document).ready(function(){

      //주문자와 배송지 정보를 동일하게 하고자 할때 사용.
      $("#same").on("click", function() {

        if($("#same").is(":checked") == true) {
          $("#mem_name").val($("#s_mem_name").val());
          $("#mem_phone").val($("#s_mem_phone").val());
        }else {
          $("#mem_name").val("");
          $("#mem_phone").val("");
        }
      });

      // 자택또는 타지역 라디오버튼 클릭
      $("input[name='receiveAddr']").on("click", function() {

        if($("input[name='receiveAddr']:checked").val() == 1) { //자택체크
          $("#sample2_postcode").val($("#s_mem_zipcode").val());
          $("#sample2_address").val($("#s_mem_addr").val());
          $("#sample2_detailAddress").val($("#s_mem_addr_d").val());
        }else if($("input[name='receiveAddr']:checked").val() == 2) { // 타지역체크
          $("#sample2_postcode").val("");
          $("#sample2_address").val("");
          $("#sample2_detailAddress").val("");

        }
      });

      //결제방법선택
      $("#pay_method").on("change", function() {

        /*
        if($("#pay_method option:selected").val() == "") {
          alert("결제 방법을 선택하세요");
          return;
        }
        */
        $("#btnOrder").attr("disabled", false);  // 주문하기버튼 활성화
        $("input#kakao_pay").attr("disabled", true);  // 카카오페이 버튼. 비활성화

        if($("#pay_method option:selected").val() == "카카오페이") {
          $("#btnOrder").attr("disabled", true);  // 주문하기 비활성화
          $("input#kakao_pay").attr("disabled", false); // 카카오버튼 활성화

          alert("카카오페이 이미지를 클릭하면 결제가 진행됩니다.");
        }

      });

	  //카카오페이 결제버튼 클릭. ajax요청
	  $("#kakao_pay").on("click", function(e) {
		e.preventDefault(); // submit기능 비활성화


		let odr_total_price = $("input[name='odr_total_price']").val();

		$.ajax({
			url: '/order/orderPay',
			data: {	
				
				type : '${type}',
				// int totalamount
				totalamount : odr_total_price,
				// OrderVO o_vo
				odr_name : $("input[name='odr_name']").val(),
				odr_zipcode : $("input[name='odr_zipcode']").val(),
				odr_addr: $("input[name='odr_addr']").val(),
				odr_addr_d : $("input[name='odr_addr_d']").val(),
				odr_phone : $("input[name='odr_phone']").val(),
				odr_total_price : odr_total_price,
				
				// OrderDetailVO od_vo 주문상세정보
				// odr_code : ,    
				pdt_num : $("input[name='pdt_num']").val(),
				odr_amount : $("input[name='cart_amount']").val(),
				odr_price : $("input[name='sales_price']").val(),
								
				// PaymentVO p_vo
				pay_method : $("#pay_method option:selected").val(),
				pay_tot_price : odr_total_price,
			},
			dataType : 'json',  // 기본값 : xml. 또는 서버측에서 보내오는 MIME정보를 해석해서 자동으로 인식하게 해준다.
			type: 'get',
			success : function(response) {
				
				// next_redirect_pc_url : 
				// pg_token 키 쿼리스트링
				console.log("응답: " + response);
				//alert(response.tid); 
				alert(response.next_redirect_pc_url);  
				location.href = response.next_redirect_pc_url;
			}

		});
	  })


	  let orderForm = $("#orderForm");
	  // 무통장 결제
	  $("#btnOrder").on("click", function() {

		orderForm.attr("method", "post");
		orderForm.attr("action", "/order/orderSave");

		//주문상세VO
		$("#od_pdt_num").val($("#d_pdt_num").val());
		$("#od_odr_amount").val($("#d_odr_amount").val());
		$("#od_odr_price").val($("#d_odr_price").val());


		orderForm.submit();
	  });
          

      //사용자정의함수
      // 콤마제거하기. 연산할 때 사용
      $.withoutCommas = function(x) {

        return x.toString().replace(",", "");
      }

      //3자리마다 콤마찍기. 표시할 때 사용.
      $.numberWithCommas = function(x) {
        return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
      }
      
      


    }); // ready() 끝

    //sum_price가격 변경
    
    function fn_sum_price() {
        
      let sum_price = 0;
      $("table#cartlist span.sales_price").each(function(index, item){
        sum_price += parseInt($.withoutCommas($(item).text()));  
      });
      
      $("span#sum_price").text($.numberWithCommas(sum_price)); 
    }
         

  </script>

 

 

ex) 실행화면

??

728x90