[자동결제] wrappedToken 유실 시 빌링키 해지 방법이 있을까요?

이 글의 성격은 무엇인가요?

질문 / 문제 해결

내용을 설명해주세요

[자동결제] wrappedToken 유실 시 빌링키 해지 방법이 있을까요?

■ 상황
앱인토스 자동결제(create-billing-key / remove-billing-key)를 연동하고 있습니다.

토스 로그인 연결 해제(unlink)를 처리하면서 가맹점에 등록된 자동결제도 함께
정리하도록 remove-billing-key 를 호출하는 로직을 두고 있는데,
어떤 사용자에 대해 서버가 보관하던 wrappedToken 이 없는 상태에서
토스 측에는 빌링키가 활성으로 남아 있는 케이스를 확인했습니다.

■ 증상
create-billing-key 를 호출하면 HTTP 200 이지만 resultType 이 FAIL 이고,
success 가 null 로 내려와 새 wrappedToken 을 받을 수 없습니다.

{“resultType”:“FAIL”,“success”:null,
“error”:{“errorType”:200,
“errorCode”:“BILLING_KEY_ALREADY_ACTIVATED”,
“reason”:“이미 활성화 된 자동결제가 존재합니다.”,
“data”:{},“title”:null}}

■ 막힌 지점

  1. remove-billing-key
    → body 에 wrappedToken 이 필수인데 해당 값이 없음
  2. create-billing-key 로 새 토큰 발급
    → BILLING_KEY_ALREADY_ACTIVATED 로 실패, success 가 null 이라 토큰 수신 불가
  3. get-billing-key-status
    → 이 API 도 wrappedToken 을 입력으로 요구하여 조회 불가
  4. 사용자가 토스 앱에서 직접 해지
    → 자동결제 관리 화면에 “가맹점에서 삭제할 수 있어요” 로 안내되어
    사용자 해지 경로가 없음

토스 앱은 가맹점에서 해지하도록 안내하고, 가맹점은 해지에 필요한
wrappedToken 을 다시 받을 방법이 없어 양쪽 모두 막히는 구조로 보입니다.

■ 문의드리고 싶은 점

  1. userKey 를 기준으로 활성 빌링키를 조회하거나 해지할 수 있는 API가 있을까요?
    현재는 wrappedToken 이 빌링키를 가리키는 유일한 수단이고 재발급 경로가 없어서,
    가맹점이 이 값을 한 번 잃으면 복구가 불가능해 보입니다.

  2. BILLING_KEY_ALREADY_ACTIVATED 응답 시 기존 빌링키를 대체 등록하거나,
    해당 빌링키의 wrappedToken 을 회수할 수 있는 방법이 있을까요?

  3. 이미 이 상태가 된 건은 어떻게 처리하면 될까요?
    개별 건에 대한 식별 정보가 필요하시면 비공개로 전달드리겠습니다.

  4. 이런 상황을 예방하기 위해 가맹점 측에서 권장되는 처리 방식이 있을까요?
    (예: unlink 시 빌링키 해지를 가맹점이 직접 호출하는 것이 맞는 방향인지)

@harry_kornatus 님 안녕하세요

  1. userKey와 anonkey 중 하나를 사용하여 빌링키 상태 조회 및 해지가 가능하나, 요청 파라미터에 wrappedToken가 필수로 확인됩니다
  2. 현재로써는 방법이 없어 내부 논의가 필요합니다
  3. 개별 메시지로 전달 부탁드립니다