정기 결제 및 일회성 구매 관리하기

일상적인 업무의 일환으로 정기 결제 또는 일회성 구매에 대한 관리 조치를 취해야 할 수 있습니다. 예를 들어 고객 서비스에서 사용자에게 전체 또는 부분 환불을 처리해야 할 수도 있고, 경우에 따라 사용 권한을 취소해야 할 수도 있습니다. Play Console에서 주문을 관리하거나 자체 시스템에서 주문을 관리하려는 경우 Google Play Developer API를 사용하면 됩니다.

구독 취소

사용자는 언제든지 Play 스토어를 사용하여 Google Play 정기 결제를 취소할 수 있지만, 해당하는 경우 사용자가 앱과 웹사이트에서 정기 결제를 취소할 수 있는 옵션도 제공해야 합니다.

사용자가 자발적으로 취소할 수 있는 가장 쉬운 방법은 정기 결제를 보고 관리할 수 있는 Play 스토어 딥 링크를 사용하는 것입니다.

백엔드에서 취소를 트리거해야 할 수도 있습니다. purchases.subscriptions.cancel 메서드를 사용하면 정기 결제 구매를 취소할 수 있습니다. 예를 들어 이 방법을 사용하여 기존 서비스를 종료할 수 있습니다. 정기 결제를 취소해도 환불은 처리되지 않으며, 사용자는 현재 결제 기간이 끝날 때까지 계속 액세스할 수 있습니다. 이 메서드로 정기 결제를 취소하면 사용자가 Play 스토어에서 정기 결제를 복원할 수 없지만 사용자는 필요한 경우 앱을 통해 다시 가입할 수 있습니다.

이 작업을 수행하면 SUBSCRIPTION_CANCELED 실시간 개발자 알림이 트리거됩니다. 이러한 취소는 취소에 설명된 대로 처리합니다.

결제 연기

subscriptions.defer를 사용하여 정기 결제의 사용 권한 기간을 연장합니다. 연기 기간 동안 사용자는 콘텐츠를 계속 구독하고 있지만 추가 시간에 대한 요금은 청구되지 않습니다. 정기 결제 결제를 연기하면 상태 정보가 적절하게 업데이트되고 구매 상태 정보의 expiryTime 필드에 반영됩니다.

  • 활성 반복 정기 결제의 경우 결제 연기 시 다음 갱신일이 연장됩니다.
  • 선불 요금제의 경우 결제 연기로 인해 만료 시간이 연장됩니다.

다음은 결제 연기를 사용하는 방법에 대한 몇 가지 예입니다.

  • 특별 이벤트로 사용자에게 무료 액세스 권한을 제공합니다. 예를 들어 기존 정기 결제 사용자에게 의견 설문조사 작성을 위한 일주일 무료 이용권을 제공합니다.
  • 예를 들어 서비스 중단이 길어져 서비스 사용 능력에 영향을 끼쳤을 수 있는 고객 관리 작업으로서 고객에게 무료 액세스 권한을 제공할 수 있습니다.

결제는 API 호출당 최소 하루, 최대 1년 연기할 수 있습니다. 사용 권한 종료를 더 연기하려면 새 만료일이 도래하기 전에 API를 다시 호출합니다.

이 작업을 수행하면 SUBSCRIPTION_DEFERRED 실시간 개발자 알림이 트리거됩니다. 이러한 이벤트를 처리하는 방법을 알아보려면 정기 결제 정보에서 구독자 결제 연기를 참고하세요.

예:

  1. FitnessGoals 스트리밍 서비스에서는 2월에 규칙적인 운동을 장려하는 프로모션을 진행하려고 합니다.

  2. 2월에 FitnessGoals로 10회 이상 운동하는 모든 구독자에게 1개월의 추가 서비스를 제공하기로 결정합니다.

  3. 개발자는 챌린지 결과를 추적하고 3월 1일에 2월에 챌린지를 충족한 사용자에게 속한 모든 활성 정기 결제 구매에 대해 subscriptions.defer API를 호출합니다.

  4. 이러한 사용자는 한 달간의 정기 운동 동영상을 무료로 이용할 수 있으며, 이 사용자는 FitnessGoals가 건강을 유지하는 데 어떤 도움을 주는지 친구들에게 알려줍니다.

환불 및 취소 처리

정기 결제 또는 일회성 구매에 관한 액세스 권한을 환불하거나 취소해야 하는 상황이 많이 있습니다.

주문 ID로 주문 전액 환불

orders.refund API를 사용하면 구매 후 3년 이내에 모든 주문에 대해 전액 환불을 처리할 수 있습니다. orders.refund 메서드는 환불을 제공하는 것 외에도 액세스 권한을 취소해야 하는지 여부를 나타내는 취소 매개변수를 수신합니다.

정기 결제 구매를 위한 환불 호출과 함께 취소를 요청하면 정기 결제가 즉시 종료되고SUBSCRIPTION_REVOKED 실시간 개발자 알림이 트리거됩니다. 이러한 이벤트를 처리하는 방법은 정기 결제 수명 주기 관리 가이드의 해지 섹션을 참고하세요.

예:

  1. 새로운 월드컵의 시작을 기념하기 위해 e스포츠 앱인 Football-Not-Soccer는 처음 24시간 이내에 새로운 팀 키트를 구매하는 모든 사용자에게 무료 가상 유니폼을 제공합니다.

  2. Football-Not-Soccer는 취소 매개변수를 전달하지 않고 orders.refund API를 사용하여 유니폼 구매를 우승자에게 환불합니다.

구매 토큰으로 정기 결제 취소 및 환불

특정 사용 사례의 경우 사용자의 정기 결제에 대한 액세스 권한을 취소하고 환불해야 할 수 있습니다. Play 결제에서는 subscriptionsv2.revoke API를 사용하여 처리할 수 있는 일할 계산된 환불을 포함하여 부분 환불을 제공합니다. 이 엔드포인트를 사용하면 revocationContext를 지정하여 환불 계산 방법을 결정할 수 있습니다.

이 작업을 실행하면 SUBSCRIPTION_REVOKED 실시간 개발자 알림이 트리거됩니다. 앱은 해지에 설명된 대로 이러한 취소를 처리해야 합니다.

예:

  • 구매 토큰(1a2b3c4d5e6f7g8h9i0j)으로 구매
  • 패키지 이름이 com.your.app인 애플리케이션
  • 일할 계산된 환불 제공 의도

HTTP POST 요청:

https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptionsv2/tokens/1a2b3c4d5e6f7g8h9i0j:revoke

요청 본문:

{
  "revocationContext": {
    "proratedRefund": {}
  }
}

환불 비례 배분

정기 결제를 종료하고 남은 사용 권한 시간을 부분적으로 환불해야 하는 경우 일할 계산된 환불을 처리하세요. purchases.subscriptionsv2.revoke 함수를 사용하고 "proratedRefund": {}을 환불 유형으로 설정합니다.

예:

  1. 마리아는 SuperMovies 스트리밍 월간 요금제의 30일 정기 결제를 자동 갱신할 수 있습니다. 한동안 서비스를 사용해 왔습니다. 마리아는 결제 주기 15일째 되는 날 고객 서비스에 연락하여 해외로 이사하여 다음날부터 서비스를 더 이상 사용할 수 없다고 문의합니다.

  2. 고객 서비스는 시스템에서 마리아의 정기 결제 구매 세부정보를 찾아 일할 계산된 환불을 요청하는 purchases.subscriptionsv2.revoke 호출을 트리거합니다.

  3. 고객 서비스팀은 마리아에게 정기 결제 가격의 약 50% 가 환불될 것이며 서비스 액세스는 즉시 종료된다고 말합니다.