Find file History

README.md

빌링키 발급 및 재결제

1. 빌링키란?

구독형 정기결제, 종량제 과금결제 등 고객의 등록된 카드정보로부터 원하는 시점에 재결제를 진행할 수 있는 결제용 암호화키입니다.
카드정보를 그대로 저장할 수 없기 때문에, 카드사로부터 해당 카드에 대응되는 빌링키를 발급받아 저장하고 있다가 재결제에 사용하게 됩니다.
빌링키 발급을 위해서는 카드번호 / 유효기간 / 생년월일(사업자등록번호) / 비밀번호 앞2자리를 카드사에 전달하게 됩니다.

2. 빌링키 발급(최초 1회)

PG사에 따라 빌링키 발급을 위해 카드번호 / 유효기간 / 생년월일(사업자등록번호) / 비밀번호 앞2자리를 카드사에 전달하는 방법을 2가지로 제공합니다.

2.1 PG사 결제창을 통한 데이터 전달

PG사의 결제창을 통해 일반 인증방식의 결제와 동일하게 진행하면 빌링키 발급이 이뤄지는 방식입니다.

장점

카드정보가 가맹점의 서버 / 아임포트의 서버를 거치지 않고 PG사로 직접 전달되므로, 데이터 및 통신구간 암호화 등에 신경쓰지 않아도 됩니다.

단점

PG사의 일반 결제창을 통해 카드정보를 입력받기 때문에 웹 브라우저 인터페이스를 통해서만 이뤄지며, 카드정보를 입력받는 화면에 대한 커스터마이즈가 불가능합니다. (ex. native 앱화면에서 카드정보를 입력받아 빌링키 발급요청하는 방식이 불가능)

2.2 REST API를 통한 데이터 직접 전달

PG사가 제공하는 API를 통해 빌링키 발급이 이뤄지는 방식입니다. 가맹점 서버가 아임포트 REST API로 아임포트 서버에 카드정보를 전달하면, 아임포트 서버가 PG사의 API를 호출하는 방식으로 구성됩니다.(아임포트 서버는 카드정보를 기록하지 않고 전달하는 역할만 합니다)

장점

가맹점에서 고객에게 제공하는 다양한 형태의 화면으로 카드정보를 직접 입력받을 수 있어 화면 커스터마이즈가 자유롭습니다.

단점

카드정보 전달에 대한 보안프로세스에 신경을 써야하며, 개인정보 이용약관을 명시해주어야 합니다.

3. 빌링키 저장

발급된 빌링키는 아임포트 서버에 저장되며, REST API 등의 인터페이스로 가맹점에 제공되지 않습니다.
대신, 가맹점이 빌링키 발급시 아임포트에 반드시 전달해야하는 파라메터(customer_uid)를 unique key로 빌링키를 저장해두고 있다가 해당 customer_uid로 재결제요청이 들어오면 대응되는 빌링키를 찾아 아임포트가 PG사에 결제승인을 요청하게 됩니다.

4. 빌링키로 재결제

customer_uid와 함께 빌링키가 최초 발급 및 저장된 후에는, 아임포트 REST API를 사용해 재결제를 요청할 수 있습니다.

빌링키 재결제 REST API : /subscribe/payments/again

curl -X POST -d '{"customer_uid":"가맹점에서 관리하는 고객 고유번호","amount":1004, "merchant_uid":"가맹점에서 관리하는 주문 고유번호"}' -H "Content-Type: application/json" https://api.iamport.kr/subscribe/payments/again