카테고리 없음

결제 기능[test]을 위한 아임포트(I'm port) API 정리

o_b:us 2022. 9. 19. 17:08

PG사의 역할 / 출처  토스페이먼츠

PG란?

Payment Gateway의 준말로 '결제를 위한 관문'을 뜻해요. 국내 온라인 쇼핑몰 수가 전국 치킨집 수(9만여 곳)의 3배 가까이 된다고 해요. 이 많은 쇼핑몰들이 10여 개의 신용카드사, 간편결제 제공사와 직접 거래 계약을 맺는 건 현실적으로 어려워요. PG사는 신용카드사와 직접 계약하기 어려운 온라인 쇼핑몰을 대신해 결제와 정산 업무를 대행해 주는 회사를 말해요. PG사와 계약을 하게 되면 카드결제, 휴대폰 결제, 계좌이체, 무통장입금 등 다양한 결제 수단을 쇼핑몰 방문 고객에게 제공할 수 있어요. 결제를 대신해 준다고 해서 ‘결제대행사'라고 부르기도 해요.
출처 : 토스페이먼츠

 

사용자가 어떠한 서비스를 이용하고 그에 대한 값을 치루려면 결제에 관한 시스템을 구축해놔야한다.

이번 프로젝트 또한 결제가 필요하므로, 관련 내용에 대해 알아보다 다양한 PG사를 한번에 사용할 수 있느 아임포트라는 서비스를 찾게 되었다.

 

PG사 결제모듈에 대한 연동 개발을 진행할 때, 다양한 개발환경에서 보다 쉽고 빠르게 개발할 수 있도록 제공되는 결제 플랫폼 혹은 결제 호스팅 서비스 입니다. 아임포트 서버가 가맹점의 서버를 대신해 결제를 위한 통신과정을 모두 마친 후 그 결과를 기술적인 방법으로 알려줄 뿐입니다.
출처: 아임포트

 

즉 아임포트 서비스를 통해 여러 PG사의 결제모듈을 사용할 수 있다. 또한 테스트용은 무료로 사용할 수 있기 때문에 이번 프로젝트를 준비하기전에 한번 사용하며 정리해 보았다.


1. 관리자 로그인 해당 사이트로 가서 회원가입 진행 후 로그인을 진행한다. 

2. 사용할 PG사를 선택 후 모듈을 등록한다.(나는 카카오, KG 이니시스를 선택했다.)

3. 테스트용으로 만들어야하기 때문에 카카오페이 -> 정보 수정 -> 가맹점코드(CID)에 일반결제테스트 코드를 입력한다.

4. [아임포트 일반결제 연동하기](https://docs.iamport.kr/implementation/payment) 해당 링크를 참조해서 html을 작성하면 된다.

<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
          <!-- jQuery -->
    <script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.min.js" ></script>
    <script type="text/javascript" src="https://cdn.iamport.kr/js/iamport.payment-1.1.8.js"></script>

</head>
<body>
    <button onclick="requestPay()">결제하기</button>
<script>
      IMP.init('imp12345678');
    function requestPay() {
      // IMP.request_pay(param, callback) 결제창 호출

      IMP.request_pay({ // param
          pg: "kakaopay", // kg 이니시스라면 html5_inicis
          pay_method: "card",
          merchant_uid: "abc-1",//이걸로 구분함
          name: "이니시스 테스트용",
          amount: 1,
          buyer_email: "kws3363@gmail.com",
          buyer_name: "김수보",
          buyer_tel: "010-4242-4242",
          buyer_addr: "서울특별시 강남구 신사동",
          buyer_postcode: "01181"
      }, function (rsp) { // callback
          if (rsp.success) { // 결제 성공 시: 결제 승인 또는 가상계좌 발급에 성공한 경우
            // jQuery로 HTTP 요청
            alert("성공");
<!--            jQuery.ajax({-->
<!--                url: "http://localhost:8080/payments", // 예: https://www.myservice.com/payments/complete-->
<!--                method: "POST",-->
<!--                headers: { "Content-Type": "application/json" },-->
<!--                data: {-->
<!--                    imp_uid: rsp.imp_uid,-->
<!--                    merchant_uid: rsp.merchant_uid-->
<!--                }-->
<!--            }).done(function (data) {-->
<!--              // 가맹점 서버 결제 API 성공시 로직-->
<!--            })-->
          } else {
            alert("결제에 실패하였습니다. 에러 내용: " +  rsp.error_msg);
          }
        });
    }
</script>
</body>
</html>

 

5. 테스트하기

QR이나 카톡결제를 이용해서 모바일 카톡으로 확인할 수 있다.
가짜돈 100만원 충전 
PG사 : KG 이니시스
결제 성공시

 

중복상품 결제시

 

 

프론트단에서 어떻게 처리할지만 테스트 해보았다. 추후에 이를 통해 데이터를 넘겨주면, db에 넣고 결제내역을 보여주는 식으로 프로젝트를 구성해나갈거 같다. 다른 서비스를 빨리 완성 시키고 결제관련 서비스도 보여줄 수 있게 끔 만들어야겠다.

 

참조 : https://todakandco.tistory.com/10

아임포트 가이드 : https://guide.iamport.kr/418a8dd5-6b84-419d-8d1b-ffd311b36404

아임포트 docs : https://docs.iamport.kr/sdk/javascript-sdk#request_pay

출처 : 토스페이먼츠  아임포트