💸결제취소(환불) 연동하기

포트원 결제취소 API를 이용한 결제취소 방법을 안내합니다.

STEP 01. 취소 요청하기

필요한 취소 정보를 서버로 전달하여 취소 요청을 진행합니다. 가상계좌 환불의 경우 환불수령 계좌 정보를 추가 파라미터로 전달해야 합니다. 다음은 환불요청을 하기 위해 서버로 해당 정보를 전달하는 예제입니다.

client-side
<button onclick="cancelPay()">환불하기</button>
<script
  src="https://code.jquery.com/jquery-3.3.1.min.js"
  integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
  crossorigin="anonymous"></script>
<script>
  function cancelPay() {
    jQuery.ajax({
      // 예: http://www.myservice.com/payments/cancel
      "url": "{환불정보를 수신할 가맹점 서비스 URL}", 
      "type": "POST",
      "contentType": "application/json",
      "data": JSON.stringify({
        "merchant_uid": "{결제건의 주문번호}", // 예: ORD20180131-0000011
        "cancel_request_amount": 2000, // 환불금액
        "reason": "테스트 결제 환불" // 환불사유
        // [가상계좌 환불시 필수입력] 환불 수령계좌 예금주
        "refund_holder": "홍길동", 
        // [가상계좌 환불시 필수입력] 환불 수령계좌 은행코드(예: KG이니시스의 경우 신한은행은 88번)
        "refund_bank": "88" 
        // [가상계좌 환불시 필수입력] 환불 수령계좌 번호
        "refund_account": "56211105948400" 
      }),
      "dataType": "json"
    });
  }
</script>
환불버튼 예제

STEP 02. 결제정보 조회하기

아래와 같이 결제정보를 저장하는 **Payments**라는 테이블을 생성했다고 가정합니다.

클라이언트에서 받은 주문번호(merchant_uid)를 사용해서 해당 주문의 결제정보를 Payments 테이블에서 조회합니다.

STEP 03. 아임포트 서버에 취소 요청하기

취소 요청을 하기 위해서 먼저 REST API access token 을 발급받습니다. 발급받은 액세스 토큰(access token)을 이용하여 아임포트 취소 API 를 호출하여 결제 취소를 요청합니다.

휴대폰 소액결제 환불 시 유의사항

  • 결제가 이루어진 월과 환불을 요청하는 월이 다를 경우, 전액환불도 불가능합니다. 예를 들어, 1월 31일 결제건은 2월 1일에 환불할 수 없습니다.

아래는 환불요청 시 유의해야 하는 파라미터들입니다.

환불 unique key

환불 대상 거래를 특정하기 위해서 imp_uid 또는 merchant_uid를 환불 unique key로 설정합니다. imp_uid의 값이 우선순위를 갖게되며 유효하지 않는 imp_uid값을 입력하면 merchant_uid값과 무관하게 환불요청이 실패합니다.

환불 금액(amount)

미입력시 전액이 환불됩니다.

환불 가능 금액(checksum)

환불이 가능한 금액을 입력합니다. 예를 들어, 10**,**000원짜리 제품의 checksum은 10,000입니다. 만약 10,000원짜리 제품이 과거 1,000원 부분환불 되었다면, 이후 환불시 checksum은 9,000입니다.입력된 checksum을 사용해서 서버와 포트원 서버간에 환불 가능 금액이 일치하는지 확인합니다. 만약 일치하지 않으면 환불 요청은 실패하며 미 입력시 검증은 실행되지 않습니다.

아래는 환불 요청을 하는 예제입니다.

STEP 04. 환불 결과 저장하기

결제 취소가 완료되면 그 결과를 데이터베이스에 다음과 같이 저장합니다.

STEP 04. 환불 응답 처리하기

취소요청에 대한 응답을 클라이언트에게 처리하는 로직을 아래와 같이 작성합니다.

Last updated

Was this helpful?