기술 자료

영수증 확인

구매 영수증의 유효성을 검증하여 부정 행위를 방지하고 안전한 거래를 보장합니다.
읽는 시간 2분최근 업데이트: 3달 전

구매 영수증은 성공적인 거래를 증명하는 데 사용되는 앱 스토어 안전한 디지털 기록입니다. 사용자가 구매를 완료하면 애플리케이션에 이 영수증이 제공됩니다.
Unity IAP는 상점별 페이로드와 상세한 거래 데이터가 포함된 통합된 영수증 구조를 제공합니다. 에서
OnPurchasePending
를
PendingOrder
수신하면 부정 행위를 방지하기 위해 해당 를 확인해야 합니다. 이 프로세스를 거래 확인이라고 합니다.

영수증 구조

Unity IAP는 다양한 스토어에 걸쳐 일관된 구조의 JSON 객체 영수증을 포맷합니다.
다음은 주요 필드입니다.

Key

값

Store
구매가 발생한 상점의 이름(예:
GooglePlay
또는
AppleAppStore
).
TransactionID
스토어에서 제공하는 이 거래의 고유 식별자입니다.
Payload
스토어별 원시 영수증 데이터입니다. 이 필드는 거래 확인에 필요한 정보를 포함하므로 가장 중요한 필드입니다.

거래 확인

거래 확인을 통해 구매가 적합한지 확인합니다. 따라서 사용자는 실제로 구매한 콘텐츠에만 액세스할 수 있습니다.
검증을 통해 애플리케이션을 다음과 같은 일반적인 부정 행위 유형으로부터 보호할 수 있습니다.
  • 가짜 영수증: 악의적인 사용자는 결제 없이 콘텐츠를 잠금 해제하기 위해 가짜 영수증을 생성하려고 시도할 수 있습니다.
  • 리플레이 공격 사용자는 여러 계정에 유효한 단일 영수증을 재사용하거나 동일한 비소모품 아이템을 반복적으로 청구할 수 있습니다.
원본 앱 스토어 영수증을 확인하면 콘텐츠에 대한 액세스 권한을 부여하기 전에 거래가 정확하고 올바른 사용자와 제품과 연결되어 있는지 확인할 수 있습니다.

확인 방법

사용자의 디바이스(로컬 확인) 또는 자신이 제어하는 보안 서버(원격 확인)에서 영수증을 확인할 수 있습니다.
  • 로컬 확인
    • 기기에서 직접 확인을 수행합니다.
    • 애플리케이션에 포함된 콘텐츠(예: 캐릭터 잠금 해제 또는 기능 활성화)에 적합합니다.
    • 중요
      악의적인 사용자가 자신의 디바이스의 코드를 더 쉽게 조작하여 확인을 우회할 수 있으므로 로컬 확인은 안전하지 않습니다.
    • 참고
      로컬 확인은 StoreKit 2에서 자동으로 수행됩니다.
  • 원격(서버 측) 확인
    • 모든 거래에 권장되며, 가상 화폐 또는 다운로드 가능한 아이템을 허용하는 등 서버에서 제공되는 콘텐츠에 필수적입니다.
    • 앱이 백엔드 서버에 영수증
      Payload
      를 전송합니다.
    • 서버는 앱 스토어 확인 서비스(예: Apple 또는 Google)와 안전하게 통신하여 콘텐츠를 출시하기 전에 영수증의 유효성을 확인합니다.
    참고
    Unity IAP는 빌트인 원격 확인 서비스를 제공하지 않지만 직접 구현하거나 타사 솔루션을 사용할 수 있습니다.
    • Google 서버 측 확인을 위해 영수증
      Payload
      를 사용합니다.
    • Apple - : 전통적으로 영수증
      Payload
      는 확인에 사용되었지만, 이 방법은 이제 Apple에서 지원이 중단되었습니다. 하지만 StoreKit 1에는 여전히
      Payload
      가 필요하며 지금은 유지해야 합니다.
    • Apple(새로운 메서드): 새 구현의 경우 서버 측 확인에
      OrderInfo.Apple.jwsRepresentation
      를 사용합니다.
참고
가능한 한 빨리 StoreKit 1 영수증에서 StoreKit 2 jwsRepresentation으로 전환하여 신뢰성, 보안, 성능을 향상시키고 최종적으로 사용자에게 더 나은 경험을 제공합니다.
참고
서버 측 확인을 위해 OrderInfo.Apple.jwsRepresentation을 사용합니다.