Toss Payments 정리 3

Toss Payments 정리 3 - 방화벽 및 보안 프로토코르, 웹훅 이벤트

6분 소요

보안

방화벽 설정

방화벽은 외부의 신뢰할 수 없는 네트워크가 내부 네트워크에 접근하지 못하도록 한다. 특정 포트나 IP에서 들어오는 요청을 필터링하거나, 사용자 인증 요청, 프록시, 주소변환기능(NAT) 등의 방법이 있다.

포트 번호를 허용할 것.

  1. API 요청을 위한 443 포트 HTTPS로 접근할 수 있는 443 포트가 허용되어 있어야 한다.

  2. 웹훅 URL 포트 결제 상태 변경, 지급대행 실행, 브랜드 페이 고객 결제수단 업데이트와 같은 변경 사항을 받아볼 수 있는 웹훅 이벤트를 등록하면 토스페이먼츠 서버에서 상점 서버로 결제 처리에 필요한 데이터를 전송한다. 방화벽 설정에서 웹훅 URL에 지정된 포트 번호로 인바운드 트래픽을 허용해야 한다.

IP 접근 제어 목록에 추가

  • 13.124.18.147
  • 13.124.108.35
  • 3.36.173.151
  • 3.38.81.32
  • 115.92.221.121*
  • 115.92.221.122*
  • 115.92.221.123*
  • 115.92.221.125*
  • 115.92.221.126*
  • 115.92.221.127*

브랜드페이 방화벽 설정

브랜드페이를 연동할 때 아래 리소스 주소를 방화벽 허용 목록(whitelist)에 추가해야 한다. 브랜드페이 리소스를 불러오는 데 사용된다.

https://api.tosspayments.com는 IP가 2개로 특정된다. 아웃바운드 방화벽을 사용하고 있다면 아래 IP의 접근을 허용한다.

  • 103.182.251.2
  • 103.182.250.2
  • 210.98.141.21*
  • 210.98.141.22*

웹훅 연결하기

1. 웹훅 이벤트 타입

이벤트 타입설명
PAYMENT_STATUS_CHANGED결제 상태 변경 이벤트입니다. 모든 결제수단에 사용 가능합니다.
DEPOSIT_CALLBACK가상계좌 입금 및 입금 취소 이벤트입니다.
CANCEL_STATUS_CHANGED결제 취소 상태입니다.
METHOD_UPDATED브랜드페이 고객 결제수단 변경 이벤트입니다.
CUSTOMER_STATUS_CHANGED브랜드페이 고객 상태 변경 이벤트입니다.
payout.changed지급대행 상태 변경 이벤트입니다.
seller.changed셀러 상태 변경 이벤트입니다.
BILLING_DELETED빌링키 삭제 이벤트입니다.

2. 웹훅 이벤트 등록

개발자센터의 웹훅 메뉴 에서 웹훅 등록하기를 누르면 아래와 같이 웹훅 등록 팝업창이 열린다.

3. 웹훅 전송 기록 확인

개발자센터 웹훅 목록에서 등록한 웹훅을 선택하면 웹훅 상세 정보와 전송 기록을 확인할 수 있다.

웹훅 전송 기록은 등록한 이벤트의 가장 최근 전송 상태를 보여주며, 하나의 전송 기록은 이벤트가 발생한 뒤의 상태 변화를 표현한다. 이벤트 발생 시간을 선택하면 해당 이벤트의 본문을 볼 수 있다.

전송 상태는 전송중, 성공, 실패로 구분된다.

4. 웹훅 재전송 정책

웹훅을 잘 받았다면 10초 이내로 200 응답을 보내주어야 한다.

200 응답을 보내면 웹훅 상태가 '성공'이며, 200 응답을 보내지 않고 최초의 웹훅 전송이 실패하면 최대 7회 (최초 전송으로부터 3일 19시간 후)까지 웹훅을 재전송한다. 웹훅 전송이 실패하면 이메일로 실패 내역이 전송된다.

1회부터 6회까지 웹훅 전송이 실패해도 웹훅 상태는 '전송중'이다. 7회 웹훅 전송이 실패하면 웹훅 상태가 '실패'로 변경된다.

각 재전송 횟수별 간격은 exponential backoff 타임아웃을 적용한다.

재전송 횟수재전송 간격(분)
11
24
316
464
5256
61024
74096

'전송중'일 때, 다시 시도를 누르면 진행 중이던 재전송 시도는 무효화되고 새로운 1회 요청이 시도된다. 웹훅 전송이 계속 실패한다면 등록한 웹훅 URL의 포트 번호에 방화벽 설정이 허용되어 있는지 확인해 본다.