Apple 및 Google 외부 구매 요구 사항 준수
Apple과 Google의 외부 구매에 대한 규정 준수 책임과 이를 충족하는 데 도움이 되는 Unity의 SDK와 웹후크 툴을 이해합니다.
읽는 시간 2분최근 업데이트: 10일 전
외부 구매는 Apple이나 Google의 인앱 과금 대신 자체 웹 체크아웃(예: 결제 제공업체)을 통해 디지털 콘텐츠를 판매합니다. Apple과 Google은 외부 구매 프로그램(Apple) 및 외부 제공 프로그램(Google Play)과 같은 특정 지역에서만 해당 프로그램 규칙에 따라 이를 허용합니다. 자격, 수수료, 고지 사항, 거래 리포트는 플랫폼, 지역, 앱에 따라 다릅니다. 일부 지역에서는 이러한 구매 요구 사항이 거의 없거나 없을 수 있습니다.
Unity는 자체적인 규정 준수 플로를 빌드하는 데 도움이 되도록 SDK 후크와 웹후크 데이터를 제공합니다. 이 페이지에서는 책임 분할, 준수 단계에서 빌드하는 순서 모델, 취할 수 있는 구체적인 조치를 설명합니다.
이 페이지는 D2C(Direct-to-Consumer) 결제 제공업체 통합 워크플로의 일부입니다. 여기에 설명된 규정 준수 처리를 추가하기 전에 지급업체 및 구매 흐름을 설정합니다.
책임 분할
Unity는 기술적 지원만 제공합니다. 결제 제공업체는 결제 처리, 세금, 이의 기록을 담당하지만 Apple 또는 Google 플랫폼 리포트는 처리하지 않습니다. 플랫폼 규정 준수는 사용자의 책임이며, Unity는 사용자를 플랫폼 프로그램에 등록하지 않습니다.Unity의 기술적 지원
결제 제공업체 구매가 진행되면 Unity는 고객을 대신하여 체크아웃 URL을 엽니다. 기본적으로 디바이스의 외부 브라우저에서 열립니다. 인앱 프레젠테이션(CheckoutPresentationMode.WebView책임
Unity는 기술적 지원만 제공합니다. 다음 작업을 담당합니다.- 앱과 지역이 각 플랫폼의 외부 구매 프로그램에 해당하는지 확인합니다.
- 구매를 시작하기 전에 Apple의 및 Google의
ExternalPurchaseClient를 사용하여 자격 검사 및 공개 확인을 직접 수행하십시오.ExternalBillingProgramClient - 각 플랫폼의 자체 API를 사용하여 Apple이나 Google에 필요한 모든 거래 토큰을 획득하고 리포트합니다.
Unity가 주문을 생성하고 여는 방법
일반적으로 결제 제공업체 구매는 단일 통화인PurchaseProduct(catalogListingId)catalogListingId- 는 주문을 생성하고 열지 않고 결제 URL을 반환합니다.
GenerateURL(catalogListingId, tokens) - 가 체크 아웃을 엽니다. 이미 같은 목록에 대해
PurchaseProduct(catalogListingId)를 호출한 경우 해당 순서를 재사용합니다. 그렇지 않으면 토큰이 없는 순서 자체를 생성한 다음 열립니다.GenerateURL
GenerateURLPurchaseProduct규정 준수 플로에 필요한 사항 결정
나머지 섹션은 독립적입니다. 다음 표를 사용하여 앱과 플랫폼에 적용되는 단계를 찾습니다.필요한 경우 | 이렇게 하세요 | 섹션 |
|---|---|---|
| 자체 자격 규칙을 인앱에서 적용합니다. | 각 구매 전에 실행되는 규정 준수 콜백 등록 | 규정 준수 검사로 구매 확인 |
| 구매가 열리기 전에 체크아웃 URL 표시 또는 공개 | | 체크아웃 URL 공개 또는 렌더링 |
| 외부 거래를 Apple 또는 Google에 보고합니다. | | 계속 및 보고 거래 토큰 |
규정 준수 검사를 통한 구매 게이트
이 단계는 선택 사항입니다. 앱 내에서 고유한 자격 규칙을 적용한 경우에만 추가합니다. 구매를 진행하기 전에 자체 자격 규칙을 적용하려면 규정 준수 콜백을 등록합니다.PurchaseProductPurchaseCartPaymentProviderComplianceContextfalsePurchasingUnavailable-
플레이어가 규정 준수 검사를 통과했는지 여부를 나타내는 를 반환하는 함수를 정의합니다.
Task<bool>작업<bool> RunComplianceCheckAsync(PaymentProviderComplianceContext 컨텍스트){ const bool allow = true; return Task.FromResult(allow);} -
Unity가 구매가 시작될 때 함수를 호출하도록 결제 제공업체 구매 서비스에 함수를 등록합니다.
m_PurchasingService.PaymentProviders?.SetComplianceCheck(RunComplianceCheckAsync);
-
체크의 플랫폼 클라이언트를 사용하여 각 플랫폼이 규정 준수에 필요한 API를 호출합니다.
- Apple: 를 사용하여 Apple의 외부 구매 API에 액세스합니다.
ExternalPurchaseClient - Google: 를 사용하여 Google의 외부 청구 API에 액세스합니다.
ExternalBillingProgramClient
- Apple:
체크아웃 URL 공개 또는 렌더링
플랫폼에서는 플레이어가 진행하기 전에 외부 구매 URL을 표시하거나 공개해야 하거나 자체 웹 뷰에서 체크아웃을 렌더링해야 할 수 있습니다. 두 경우 모두GenerateURL그런 다음string url = await m_PurchasingService.PaymentProviders.GenerateURL(catalogListingId);// Display or disclose the URL, then call PurchaseProduct to open the checkout.
PurchaseProduct(catalogListingId)GenerateURL거래 토큰 연결 및 보고
이 단계는 Apple 또는 Google에서 외부 거래를 리포트해야 하는 경우(프로그램과 지역에 따라 다름) 필요합니다. Apple과 Google은 각 외부 거래를 서버 API를 통해 다시 보고해야 합니다. 플랫폼에서 불투명 트랜잭션 토큰을 가져온 후 Unity 주문에 연결하고 순서 웨비후크로 다시 수신하여 리포트를 제출할 수 있습니다. 토큰을 직접 생성합니다. Apple 토큰은ExternalPurchaseClientExternalBillingProgramClientPurchaseProductGenerateURL(catalogListingId, tokens)PurchaseProductUnity는 토큰을 검사하거나 검증하지 않고도 순서대로 저장하고, 해당 토큰을 웹후크 순서대로 표시합니다. 주문 API 응답에서 반환되지 않습니다.await m_PurchasingService.PaymentProviders.GenerateURL(catalogListingId, tokenList);m_PurchasingService.PurchaseProduct(catalogListingId);
Webhook 페이로드의 토큰
주문 웹후크에는dataexternalTransactionTokens{ "eventType": "order.paid", "data": { "id": "...", "playerId": "...", "status": "paid", "externalTransactionTokens": [ { "store": "apple", "token": "opaque-apple-transaction-token", "type": "acquisition" }, { "store": "google", "token": "opaque-google-transaction-token" } ] }}
각 프로그램에 따라 이 토큰을 사용하여 Apple의 외부 구매 서버 API 또는 Google의
externalTransactions