자동결제는 정기 배송, 음악 스트리밍과 같은 구독형 서비스에서 사용하는 결제 방식입니다. 자동결제는 고객이 최초 주문에 본인인증을 마치고 결제 정보를 입력하면 상점에서 암호화된 고객의 결제 정보를 저장해요. 암호화된 고객의 결제 정보는 빌링키라고 해요. 정기 결제일에 상점은 고객의 개입 없이 빌링키를 사용해서 결제를 하면 돼요.
구독경제 소비자 보호 방안 알아보기빌링키는 고객의 카드번호, 유효기간, CVC 등 결제 정보를 암호화한 값으로 생각할 수 있어요. 본인인증을 마치고 한 번 빌링키를 발급받으면, 고객의 의사와 무관하게 빌링키로 계속 결제가 가능해요. 악용되지 않게 반드시 고객 본인인증을 받은 뒤에 빌링키를 발급받는 것을 추천해요.
빌링키의 개념을 더 구체적으로 알아볼게요. 빌링키는 실제로 결제 정보를 암호화한 값은 아닙니다. 빌링키를 발급하는 결제기관에서 고객의 결제 정보를 고유 식별 토큰과 매핑하는데요. 고유 식별 토큰을 암호화한 값이 빌링키입니다. 그래서 만약 누군가 빌링키를 알아내서 복호화해도 고객의 결제 정보를 알 수 없어서 안전해요.
빌링키를 발급받을 때 customerKey를 함께 전달해야 해요. customerKey는 상점에서 고객을 식별하기 위해 사용하는 고유한 값이에요. 빌링키는 이 customerKey와 매핑되어 저장돼요.
customerKey로는 상점에서 관리하는 사용자 ID, 일련번호, 또는 ID를 암호화하거나 해시한 값 등 중복되지 않는 값을 사용하세요.
빌링키로 결제를 요청할 때도 발급 시 사용했던 동일한 customerKey를 함께 전달해야 해요. customerKey가 일치하지 않으면 NOT_MATCHES_CUSTOMER_KEY 에러가 발생해요.
토스페이먼츠는 자동결제는 신용·체크카드만 지원해요. 토스페이먼츠에서 카드 빌링키를 발급받으려면 카드 번호, 유효기간, 카드 소유자의 생년월일 또는 사업자번호가 필요해요.
자동결제는 정기 구독형 서비스에 사용하세요. 빌링키는 카드사에서 발급하는데요. 카드사에서 빌링키의 비정기적인 결제를 허용하지 않아서 심사가 어려울 수 있습니다. 만약 고객의 결제 정보를 저장하고 비정기적 결제를 하고 싶다면 브랜드페이로 내 상점만의 간편결제 서비스를 구축하세요.
빌링키를 발급받는 방법은 세 가지가 있어요. 상점의 상황에 맞는 방식을 선택하세요.
| 발급 방식 | 본인인증 | 발급 흐름 | 적합한 상점 |
|---|---|---|---|
| A. 자동결제 등록창 (본인인증 포함) | 포함 | 카드 정보 + 본인인증 → authKey → 빌링키 | 대부분의 구독 서비스 |
| B. 자동결제 등록창 (본인인증 없이) | 미포함 | 카드 정보 → authKey → 빌링키 | 리스크 검토 후 승인된 상점, 이미 본인인증을 완료한 고객 |
| C. API 직접 발급 | 미포함 | 카드 정보 → 빌링키 (비밀번호도 선택적으로 입력 가능) | 커스텀 결제 화면이 필요한 상점 |
빌링키를 발급받을 때는 반드시 고객 본인인증을 먼저 받으세요. 빌링키는 한 번 발급되면 고객의 개입 없이 계속 결제할 수 있기 때문에 악용을 방지하는 것이 중요해요.
자동결제는 빌링키로 고객 개입 없이 결제하는 방식이기 때문에, 다음과 같은 상황에서 결제가 실패할 수 있어요.
- 고객이 카드를 재발급한 경우
- 카드 비밀번호를 변경한 경우
- 카드 한도가 초과된 경우
- 카드가 분실 신고되었거나 유효기간이 만료된 경우
- 체크카드의 경우 잔액이 부족한 경우
자동결제는 일반 카드 결제에 비해 실패율이 높을 수 있어요. 결제가 실패하면 고객에게 안내하고, 새로운 카드를 등록받는 흐름을 구현해두세요.
자동결제에서도 할부를 사용할 수 있지만, 카드사별로 지원하는 최대 할부 개월수가 달라요. 정기결제에서는 일반적으로 할부를 사용하지 않지만, 특별한 경우 필요할 수 있어요.
본인인증을 포함하는 A 방식은 테스트 환경에서 제공되지 않아요. 테스트 환경에서는 본인인증 없이 발급하는 B 방식만 사용할 수 있어요. 연동 방식은 A, B 모두 동일하므로, B 방식으로 연동한 후 라이브 키를 적용하면 A 방식으로 전환돼요.
테스트 환경에서는 카드 번호의 앞 6~8자리만 유효하면 나머지 번호, 유효기간, 생년월일 등은 임의로 입력해도 에러가 발생하지 않아요.
