Korzystanie z Biblioteki płatności w Google Play w Unity

Wtyczka Płatności w Google Play rozszerza wbudowane usługi Unity i komponentów do zakupów w aplikacji (Unity) IAP, aby zapewnić i dostęp do najnowszych funkcji Biblioteki płatności w Google Play. Ten . W tym przewodniku znajdziesz również opisuje, jak wdrożyć funkcje Biblioteki płatności w Google Play w grze w Unity.

Konfigurowanie wtyczki Płatności w Google Play

Aby skonfigurować wtyczkę, wykonaj czynności w każdej z tych sekcji:

  1. Włącz warstwę abstrakcji IAP w Unity.
  2. Pobierz i zaimportuj wtyczkę.
  3. Skonfiguruj ustawienia kompilacji wtyczki.
  4. Włącz wtyczkę.

Włącz warstwę abstrakcji IAP w Unity

Wtyczka Płatności w Google Play opiera się na warstwie abstrakcji zawartej w: Unity IAP, więc przed pobraniem musisz włączyć tę warstwę abstrakcji i zaimportuj wtyczkę. Aby włączyć warstwę abstrakcji IAP w Unity, wykonaj :

  1. Wykonaj wszystkie czynności z tego samouczka Unity: Skonfiguruj projekt Unity Services.
  2. Wykonaj wszystkie czynności z tego samouczka Unity: Włączanie IAP w Unity usługi.

Pobieranie i importowanie wtyczki

Wtyczka jest wysyłana jako pakiet Unity w Format: .unitypackage. Aby pobrać i zaimportować wtyczkę, wykonaj następujące kroki:

  1. Pobierz najnowszą wersję wtyczek Google Play dla Unity z repozytorium stronie wersji w GitHubie.
  2. Na pasku menu Unity kliknij Zasoby > Importuj pakiet > Pakiet niestandardowy.

  3. Znajdź i wybierz miejsce, z którego został pobrany plik .unitypackage.

  4. W oknie Import Unity Package (Importuj pakiet Unity) pozostaw zaznaczone wszystkie zasoby i kliknij Importuj.

Po zaimportowaniu pakietu nowy folder o nazwie GooglePlayWtyczki (w sekcji katalog główny folderu Assets) zostanie dodany do zasobów projektu. Ten folder zawiera wszystkie zasoby Biblioteki płatności w Google Play związane z wtyczką.

Skonfiguruj ustawienia kompilacji

Ze względu na to, że wtyczka rozszerza Unity IAP, Unity napotyka konflikty i nie utwórz pakiet APK na Androida, chyba że starsze, nakładające się zależności w Unity IAP są usuwane z kompilacji. Wtyczka automatycznie usuwa bibliotek, które są w konflikcie. Aby rozwiązać te konflikty, wykonaj następujące czynności: wykonaj te czynności:

  1. Na pasku menu Unity wybierz Google > Płatności w Play > Ustawienia kompilacji.

  2. W oknie Ustawienia kompilacji płatności w Play kliknij Rozwiąż problem. To rozwiązuje problem i przenosi powodujące konflikt pliki IAP do katalogu kopii zapasowej. Po klikniesz Napraw, przycisk zmieni się na Przywróć, przywróć oryginalne pliki będące w konflikcie.

Włącz wtyczkę

Aby włączyć wtyczkę, zastąp implementację Google Play w Unity IAP Wtyczka Płatności w Google Play. Na przykład podczas używania programu Unity IAP Purchaser Skrypt, zmień wartość StandardPurchaseModule przekazywaną do kreatora IAP aby użyć Google.Play.Billing.GooglePlayStoreModule:

// Create a builder using the GooglePlayStoreModule.
var configurationBuilder =
    ConfigurationBuilder.Instance(Google.Play.Billing.GooglePlayStoreModule.Instance());

Jeśli Twoja gra używa tego samego skryptu nabywcy na wielu platformach: należy dodać narzędzie kontroli platformy, aby mieć pewność, że Unity Własne rozwiązanie IAP dla innych platform:

ConfigurationBuilder builder;
if (Application.platform == RuntimePlatform.Android)
{
  builder = ConfigurationBuilder.Instance(
      Google.Play.Billing.GooglePlayStoreModule.Instance());
}
else
{
  builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
}

Jeśli opublikujesz grę w innych sklepach z aplikacjami na Androida niż Google Play Store, zastąp domyślną implementację IAP Unity tylko wtedy, Sklepu Google Play:

ConfigurationBuilder builder;
if (Application.platform == RuntimePlatform.Android
       && SelectedAndoidAppStore == AppStore.GooglePlay)
{
  builder = ConfigurationBuilder.Instance(
      Google.Play.Billing.GooglePlayStoreModule.Instance());
}
else
{
  builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
}

Wdrażanie w grze funkcji Biblioteki płatności w Google Play

Wtyczka Płatności w Google Play rozszerza usługi Unity IAP, dzięki czemu możesz używać tych samych interfejsów API Unity do zarządzania typowymi przepływami pracy związanymi z zakupami. Pamiętaj, że niektóre niewielkie zmiany w działaniu interfejsu API z powodu różnic między Biblioteką płatności w Google Play a standardowym zakupem w aplikacji Unity implementacji w innych sklepach z aplikacjami. Jeśli nie znasz jeszcze interfejsów Unity IAP API, zapoznaj się z artykułem lekcji „Dokonywanie skryptu zakupu” w sekcji Unity IAP samouczek .

Biblioteka płatności w Google Play zawiera też funkcje, które są dostępne tylko Sklep Play. Dostęp do tych funkcji możesz uzyskać za pomocą rozszerzonego interfejsu. w dalszej części tej sekcji dowiesz się, jak wdrożyć te unikalne biblioteki Płatności w Google Play. funkcje w grze.

Włącz odroczone zakupy

Google Play obsługuje odroczone zakupy (tzw. oczekujące) (trafikacje) lub oczekujące zakupów – w ramach których użytkownicy mogą je utworzyć i dokończyć później za gotówkę. w sklepach stacjonarnych.

Aby włączyć odroczone zakupy, użyj kreatora IAP i zmodyfikuj moduł przez wywołanie metody EnableDeferredPurchase():

// Create a builder using a GooglePlayStoreModule.
var configurationBuilder =
    ConfigurationBuilder.Instance(Google.Play.Billing.GooglePlayStoreModule.Instance());
// Enable deferred purchases
configurationBuilder.Configure<Google.Play.Billing.IGooglePlayConfiguration>()
    .EnableDeferredPurchase();

Następnie zaimplementuj wywołanie zwrotne o odroczonych zakupach, używając rozszerzeń Sklepu Play:

// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
    extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();

// Set the deferred purchases callback.
_playStoreExtensions.SetDeferredPurchaseListener(
    delegate(Product product)
    {
        // Do not grant the item here. Instead, record the purchase and remind
        // the user to complete the transaction in the Play Store.
    });

Przekazywanie zaciemnionych identyfikatorów kont do Google Play

Możesz przekazać zaciemnione identyfikatory kont użytkowników do Google Play, aby ułatwić dokonywanie nadużyć wykrywania, np. wykrywania, czy wiele urządzeń dokonuje zakupów za pomocą w krótkim czasie.

Aby przekazać zaciemniony identyfikator konta, wywołaj metodę SetObfuscatedAccountId() z interfejsu API rozszerzeń:

// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
    extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();

// Pass an obfuscated account ID.
_playStoreExtensions.SetObfuscatedAccountId(obfuscatedAccountId);

Przekazywanie zaciemnionych identyfikatorów profili do Google Play

Możesz przekazać zaciemniony identyfikator profilu do Google Play, aby ułatwić oszustwa wykrywania, np. wykrywania, czy wiele urządzeń dokonuje zakupów za pomocą w krótkim czasie. Jest to podobne do przekazywania zaciemnionego kodu identyfikatora konta użytkownika. W obu przypadkach identyfikator reprezentuje dla jednego użytkownika, ale identyfikator profilu umożliwia jednoznaczne wiele profili w jednej aplikacji. Po wysłaniu zaciemniony identyfikator profilu do Google Play, możesz go pobrać później w dowód zakupu.

Aby przekazać zaciemniony identyfikator profilu, użyj kreatora IAP, aby zmodyfikować konfigurację modułu przez wywołanie metody Metoda SetObfuscatedProfileId():

// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
    extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();

// Pass an obfuscated profile ID.
_playStoreExtensions.SetObfuscatedProfileId(obfuscatedProfileId);

Potwierdzanie zmian cen subskrypcji

W Google Play możesz zmienić cenę aktywnego urządzenia subskrypcji. Twoje użytkownicy gry muszą potwierdzić każdą zmianę ceny, zanim zaczną one obowiązywać. Do użytkownik zobaczy prośbę o potwierdzenie zmiany ceny subskrypcji, wywołaj metodę Metoda ConfirmSubscriptionPriceChange():

// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
    extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();

_playStoreExtensions.ConfirmSubscriptionPriceChange(productId,
    delegate (bool success)
    {
        // Returns whether the user has accepted the new price or not.
    });

Zmiany w działaniu interfejsu Unity API

Gdy używasz wtyczki Płatności w Google Play, większość interfejsów API zachowuje tak samo jak w standardowej implementacji zakupów w aplikacji Unity w innych sklepach z aplikacjami. Pamiętaj jednak: w niektórych przypadkach interfejsy API mogą działać inaczej. Ta sekcja opisuje te różnice w zachowaniu.

Ładunek dewelopera nie jest obsługiwany

Google Play wycofał ładunek dewelopera i zastąpił go alternatywnymi które są bardziej znaczące i kontekstowe. Z tego powodu ładunek programisty jest nieobsługiwane. Więcej informacji na temat alternatywnych rozwiązań znajdziesz na stronie Ładunek dewelopera.

Możesz nadal korzystać z interfejsów zdefiniowanych w standardzie Unity Implementacja zakupów w aplikacji w innych sklepach z aplikacjami, w tym w IStoreController. Gdy zainicjuj zakup, nadal możesz użyć aplikacji IStoreController i wywołać Metoda InitiatePurchase():

public void InitiatePurchase(Purchasing.Product product, string payload);

Przekazany ładunek nie będzie jednak miał zastosowania (nie pojawi się w ostateczny rachunek).

Menedżer subskrypcji nie jest obsługiwany

Unity IAP udostępnia SubscriptionManager do zarządzania subskrypcjami. Ponieważ standardowa implementacja IAP w Unity ta klasa używa ładunku programisty, ta klasa nie jest obsługiwana. Nadal możesz tworzenia tej klasy, ale możesz otrzymać nierzetelne dane przy korzystaniu z któregokolwiek z metod getter klasy.

UpdateSubscription wprowadza niewielkie zmiany w interfejsie API

Wtyczka Płatności w Google Play nie obsługuje parametru SubscriptionManager.UpdateSubscription() i SubscriptionManager.UpdateSubscriptionInGooglePlayStore() metod przejścia na wyższą wersję i przejść na niższą wersję. Jeśli gra wywołuje te metody, GooglePlayStoreUnsupportedException trafia na piłkę

Biblioteka płatności w Google Play udostępnia alternatywny interfejs API, którego można używać zamiast tych . Aby przejść na wyższą lub niższą wersję usługi, zadzwoń pod numer UpdateSubscription() z zastosowaniem trybu proporcjonalnego:

void UpdateSubscription(Product oldProduct, Product newProduct,
           GooglePlayStoreProrationMode prorationMode = GooglePlayStoreProrationMode.Unknown);

Możesz opakować to wywołanie metody za pomocą kontroli platformy lub w bloku przechwytywania. gdy urządzenie GooglePlayStoreUnsupportedException zostaje złapane.

Więcej informacji i przykładów korzystania z trybu proporcjonalnego znajdziesz w sekcji Ustawianie trybu proporcjonalnego.