Google Play-Fehler beim Kauf eines Kaufs bei der Implementierung von Soomla Unity3d Plugin

Ich schaffe eine App, die das Soomla Unity IAP Plugin implementiert. In meiner Bemühung, die IAP zu arbeiten, habe ich zu einem Punkt gekommen, wo ich einen Kauf machen kann, wenn ich im Editor bin. (Nicht ein echter Kauf, es aktualisiert nur die virtuelle Währung, die der Benutzer im Spiel kaufen / verbringen kann).

Wenn ich das auf einem Android-Gerät lasse, bekomme ich diesen Fehler: Die Authentifizierung ist erforderlich. Sie müssen sich in Ihrem Google-Konto anmelden.

  • Unterrichtsstart Warnung im Android Studio?
  • So erstellen Sie Dateiverzeichnisse und Ordner in Android-Daten / Daten / Projekt Dateisystem
  • AndroidHttpClient und DefaultHttpClient
  • Cross-Plattform-Methode zum Entfernen der Adressleiste in einer mobilen Web-App
  • Wie fügt man String-Ressourcen in Eclipse hinzu?
  • Argument zu DialogFragment übergeben
  • Jetzt habe ich mehrere verschiedene Artikel gelesen, wo die Leute dieses Problem gehabt haben und nichts scheint mir zu helfen.

    Hier ist eine Liste von dem, was ich bisher versucht habe:

    1) Vergewissern Sie sich, dass App entweder alpha oder beta zum Testen veröffentlicht wird (in alpha jetzt)

    2) Stellen Sie sicher, dass die Preise für Spiel und in der Entwickler-Konsole passen.

    3) Verwenden Sie ein Gerät, das als Benutzer angemeldet ist, der die Entwickler-E-Mail nicht verwendet.

    4) Vergewissern Sie sich, dass die E-Mail auf dem Testgerät als Tester in der Entwicklerkonsole aufgeführt ist.

    5) Stellen Sie sicher, dass die erforderlichen Berechtigungen im Android Manifest aufgeführt sind.

    6) Bestätigen Sie das Händlerkonto ist korrekt eingerichtet und überprüft.

    7) Achten Sie darauf, als Release und nicht Entwicklung zu bauen (nicht sicher, ob das überhaupt zählt, aber ich habe beide Wege versucht).

    8) Vollständig entfernt alle Soomla Plugin aus dem Projekt und dann fügte es wieder in während der Tutorial sehr genau, nur um sicherzustellen, dass nichts klein war verpasst. Noch keine Würfel.

    Ich habe den Kern und speichern Komponenten hinzugefügt, um die Szene, dass sie notwendig sind in. Bitte lassen Sie mich wissen, wenn Sie irgendwelche anderen Ideen, was ich tun sollte, um dieses Problem zu beheben. In der Zwischenzeit, hier ist die StoreAssets.cs Code Ich benutze für die Einrichtung Soomla:

    using UnityEngine; using System.Collections; using System.Collections.Generic; using Soomla.Store; public class StoreAssets : IStoreAssets { public static bool purchased = false; public int GetVersion() { return 0; } public void onItemPurchased(PurchasableVirtualItem pvi, string payload) { purchased = true; } public VirtualCurrency[] GetCurrencies() { return new VirtualCurrency[]{TOKEN_CURRENCY}; } public VirtualGood[] GetGoods() { return new VirtualGood[] {BACKUP_FORCEFIELD, IMMUNITY, EMP, MULTIPLIER}; } public VirtualCurrencyPack[] GetCurrencyPacks() { return new VirtualCurrencyPack[] {FIVE_TOKEN_PACK, TEN_TOKEN_PACK, FIFTY_TOKEN_PACK}; } public VirtualCategory[] GetCategories() { return new VirtualCategory[]{}; } /** Virtual Currencies **/ public static VirtualCurrency TOKEN_CURRENCY = new VirtualCurrency ( "Token", // Name "Token currency", // Description "token_currency_ID" // Item ID ); /** Virtual Currency Packs **/ public static VirtualCurrencyPack FIVE_TOKEN_PACK = new VirtualCurrencyPack ( "5 Tokens", // Name "5 token currency units", // Description "5_tokens_id", // Item ID 5, // Number of currencies in the pack "token_currency_ID", // ID of the currency associated with this pack new PurchaseWithMarket ( // Purchase type (with real money $) "tokens_5_PROD_ID", // Product ID 0.99 // Price (in real money $) ) ); public static VirtualCurrencyPack TEN_TOKEN_PACK = new VirtualCurrencyPack ( "10 Tokens", // Name "10 token currency units", // Description "10_tokens_id", // Item ID 10, // Number of currencies in the pack "token_currency_ID", // ID of the currency associated with this pack new PurchaseWithMarket ( // Purchase type (with real money $) "tokens_10_PROD_ID", // Product ID 1.99 // Price (in real money $) ) ); public static VirtualCurrencyPack FIFTY_TOKEN_PACK = new VirtualCurrencyPack ( "50 Tokens", // Name "50 token currency units", // Description "50_tokens_id", // Item ID 50, // Number of currencies in the pack "token_currency_ID", // ID of the currency associated with this pack new PurchaseWithMarket ( // Purchase type (with real money $) "tokens_50_PROD_ID", // Product ID 4.99 // Price (in real money $) ) ); /** Virtual Goods **/ public static VirtualGood BACKUP_FORCEFIELD = new SingleUseVG ( "BackupForcefield", // Name "Secondary forcefield for extra protection.", // Description "bff_ID", // Item ID new PurchaseWithVirtualItem ( // Purchase type (with virtual currency) "token_currency_ID", // ID of the item used to pay with 1 // Price (amount of coins) ) ); public static VirtualGood EMP = new SingleUseVG ( "Emp", // Name "Clear the surrounding space of all lasers.", // Description "emp_ID", // Item ID new PurchaseWithVirtualItem ( // Purchase type (with virtual currency) "token_currency_ID", // ID of the item used to pay with 5 // Price (amount of coins) ) ); public static VirtualGood IMMUNITY = new SingleUseVG ( "Immunity", // Name "Immune to damage.", // Description "immunity_ID", // Item ID new PurchaseWithVirtualItem ( // Purchase type (with virtual currency) "token_currency_ID", // ID of the item used to pay with 10 // Price (amount of coins) ) ); public static VirtualGood MULTIPLIER = new SingleUseVG ( "Multiplier", // Name "Double your score per deflected laser.", // Description "multiplier_ID", // Item ID new PurchaseWithVirtualItem ( // Purchase type (with virtual currency) "token_currency_ID", // ID of the item used to pay with 15 // Price (amount of coins) ) ); } 

    Um Gegenstände zu kaufen, rufe ich an:

     StoreInventory.BuyItem("the id of my item"); 

    Um einen Artikel zu kaufen, den ich gekauft habe, rufe ich an:

     StoreInventory.TakeItem("the id of my item"); 

    StoreInventory ist eine Klasse, die in Soomla enthalten ist, wenn sie in Unity importiert wird.

    Hier ist der Code, wo Kauf und Artikel Verbrauch erfolgt:

     public class Purchase : MonoBehaviour { public Text tokens; public static bool bffFilled = false, immFilled = false, empFilled = false, multFilled = false, init = false; void Start() { if (!init) { init = true; SoomlaStore.Initialize(new StoreAssets()); } Token.updateTokens (tokens); } void Update() { if (StoreEvents.balanceChanged) { StoreEvents.balanceChanged = false; Token.updateTokens(tokens); } } public void BuyItem (int item) { if (item == 1) { StoreInventory.BuyItem (StoreAssets.FIVE_TOKEN_PACK.ItemId); } else if (item == 2) { StoreInventory.BuyItem (StoreAssets.TEN_TOKEN_PACK.ItemId); } else if (item == 3) { StoreInventory.BuyItem (StoreAssets.FIFTY_TOKEN_PACK.ItemId); } Token.updateTokens(tokens); } public void getUpgrade(int upgrade) { if (upgrade == 1) { bool bffNotBought = PlayerPrefs.GetInt("Bff Available", 0) == 0; if (StoreAssets.TOKEN_CURRENCY.GetBalance() >= 1 && bffNotBought) { PlayerPrefs.SetInt("Bff Available", 1); PlayerPrefs.Save(); bffFilled = true; StoreInventory.TakeItem(StoreAssets.TOKEN_CURRENCY.ItemId, 1); } } else if (upgrade == 2) { bool empNotBought = PlayerPrefs.GetInt("Emp Available", 0) == 0; if (StoreAssets.TOKEN_CURRENCY.GetBalance() >= 5 && empNotBought) { PlayerPrefs.SetInt("Emp Available", 1); PlayerPrefs.Save(); empFilled = true; StoreInventory.TakeItem(StoreAssets.TOKEN_CURRENCY.ItemId, 5); } } else if (upgrade == 3) { bool immNotBought = PlayerPrefs.GetInt("Imm Available", 0) == 0; if (StoreAssets.TOKEN_CURRENCY.GetBalance() >= 10 && immNotBought) { PlayerPrefs.SetInt("Imm Available", 1); PlayerPrefs.Save(); immFilled = true; StoreInventory.TakeItem(StoreAssets.TOKEN_CURRENCY.ItemId, 10); } } else if (upgrade == 4) { bool multNotBought = PlayerPrefs.GetInt("Mult Available", 0) == 0; if (StoreAssets.TOKEN_CURRENCY.GetBalance() >= 15 && multNotBought) { PlayerPrefs.SetInt("Mult Available", 1); PlayerPrefs.Save(); multFilled = true; StoreInventory.TakeItem(StoreAssets.TOKEN_CURRENCY.ItemId, 15); } } Token.updateTokens (tokens); } } 

    8/26/15

    Ich habe jetzt sowohl eine Google-Gruppe als auch eine Google Community zum Testen dieser App erstellt. Ich habe die E-Mail für meine anderen Android-Gerät auf die beiden und ich habe den Link zur Verfügung gestellt, um die App herunterzuladen. Das alles hat immer noch den gleichen Fehler gemacht wie zuvor.

    8/27/15

    Ich habe gerade festgestellt, dass meine Kreditkarte auf meinem Händlerkonto abgelaufen war. Einer der Artikel, die ich gelesen habe, erwähnte, dass es Probleme wie dieses gab, wenn es Probleme mit dem Händlerkonto gab. Ich habe die Informationen aktualisiert und jetzt muss ich die Kaution warten, die sie in mein Konto stellen werden, um sicherzustellen, dass es funktioniert. Sobald dies geschehen ist, werde ich aktualisieren, ob dies mein aktuelles Problem behoben hat.

    8/31/15

    Nachdem ich mein Händlerkonto bei Google Play endgültig überprüft habe, scheine ich immer noch das gleiche Problem zu haben. Die Behebung meines Händlerkontos hat nichts geändert, was ich nicht sagen konnte.

    Ich habe gerade meinen Beitrag aktualisiert, um mein ganzes StoreAssets.cs Skript aufzunehmen und was ich benutze, um Einkäufe zu machen und Gegenstände zu verbrauchen, wenn ein Spieler sie benutzt. Ich habe das hinzugefügt, da ich keine Ahnung habe, was sonst das Problem sein könnte.

    9/7/15

    Noch kein Glück so weit. Problem bleibt in android. Der Redakteur selbst macht Testkäufe, aber Käufe können nicht von einem Android-Gerät gemacht werden, ohne dasselbe Fehler wie oben aufgeführt.

    9/9/15

    So wie ein schnelles Update habe ich versucht, das Projekt zu bauen, ohne dass der Entwicklungsaufbau in den Build-Einstellungen ausgewählt wurde und ich den Link an alle Leute in meiner Google Community schicke, um ihm einen Schuss zu geben. Jeder hat immer noch den gleichen Fehler wie mein Testgerät.

    9/11/15

    Nachdem ich ein paar Dinge ausprobiert habe, die Tony darauf hingewiesen hat, habe ich bemerkt, dass die Funktion onBillingSupported () nicht aufgerufen wird, wenn ich das verwende: StoreEvents.OnBillingSupported + = onBillingSupported; Ich bin mir nicht sicher, warum gerade noch.

    9/12/15

    Nachdem ich das Tutorial auf dem Soomla-Gelände durchgemacht habe, habe ich alles getan, was ich gesagt habe, außer das Iab im Hintergrund und den Betrugsschutz zu starten, da sie nicht benötigt werden. Die onBillingSupported-Methode wird immer noch nicht aufgerufen und ich bekomme immer noch den gleichen Fehler wie zuvor auf Android-Geräten.

    9/12/15

    Ich habe gerade alles für das Soomla Plugin entfernt und die neueste Version importiert und folgte den Anweisungen wieder und ich bekomme immer noch den gleichen Fehler.

    9/16/15

    Wirklich keine Ahnung, was ich hier fehle. Nach dem Entfernen aller der Soomla Plugin und dann wieder hinzufügen und immer noch die gleiche Fehler nach mehreren Versuchen. Ich habe alles gefolgt, wie das Tutorial sagt und ich habe den ganzen Code oben.

  • Permission Denial: startActivity fragt, um als user -2 laufen zu lassen, aber ruft von user 0 an; Dies erfordert android.permission.INTERACT_ACROSS_USERS_FULL
  • Wie kann man "Automatisches Datum und Uhrzeit" überprüfen oder nicht?
  • Finde Schnittpunkt von drei Kreisen programmgesteuert
  • Holen Sie sich die Dateigröße in android sdk?
  • Der Bau von Arbeitsbereich mit Android-Anwendung dauert zu lange
  • ExpandableListAdapter onClickListener, rufen Sie notifyDataSetChanged () auf
  • 4 Solutions collect form web for “Google Play-Fehler beim Kauf eines Kaufs bei der Implementierung von Soomla Unity3d Plugin”

    Ich habe noch nie das Problem, das du beschreibst. Ich habe eine private Google+ Community erstellt und die Community als Tester hinzugefügt. Verlagerte meine App zu Beta. Und lud Leute zu meiner privaten Gemeinschaft ein, wo es einen Link gab, um die App herunterzuladen und zu testen. Es war einfach.

    Der zweite Punkt ist dein Code oben. Sie holen 4 Waren und 3 Währungspakete, aber der Code spiegelt das nicht wider. Vielleicht hast du nur die Hälfte der Klasse geklebt.

    Schließlich sehen Sie, ob dieser Thread hilft: http://answers.soom.la/t/solved-some-clarification-about-iab-testing/2067/8

    Übrigens, SOOMLA hat eine dedizierte Website answers.soom.la für SOOMLA Fragen.

    Hast du versucht, Waren von einem anderen Gerät zu kaufen? Ich habe dieses Problem vor, aber nicht daran erinnern, wie ich es behoben habe. Von dem, woran ich mich erinnere, als es für mich versagte, arbeitete es an dem Gerät des jeweiligen Mitarbeiters. Versuchen Sie es auf einem anderen Gerät zu testen. Auch, hast du mehrere Google-Konten auf deinem Gerät? Ich erinnere mich, dass eines der Dinge, die ich versuchte, war, alle Google-Konto von meinem Gerät zu entfernen und ließ einfach mein Hauptkonto registriert. Leider kann ich mich nicht erinnern, ob das funktioniert hat, aber ich hoffe es wird dir helfen. Wenn du herausfindest, wie man es beheben kann, bitte posten Sie hier ein Update. Viel Glück

    In meinem Fall wusste ich nicht, dass das, was ich für meine Artikel-ID und meine Produkt-ID benutzte, verwechselt wurde. Die Item-ID ist nur zu identifizieren, das Element innerhalb soomla, die Produkt-ID ist die tatsächliche ich würde Sie, in google spielen gesetzt.

    Aus der kurzen Diskussion in den Kommentaren klingt es, als hättest du vielleicht nicht alles umgesetzt.

    Schau dir diesen Link an: http://know.soom.la/unity/store/store_gettingstarted/

    Im Abschnitt "Erste Schritte" heißt es ..

    1. Erstellen Sie Ihre eigene Implementierung von IStoreAssets, um die spezifischen Assets Ihres Spiels zu beschreiben.

    2. Initialisieren Sie SoomlaStore mit der Klasse, die Sie gerade erstellt haben:

    SoomlaStore.Initialize (neue YourStoreAssetsImplementation ());

    Initialisieren SoomlaStore in der Start-Funktion von MonoBehaviour und NICHT in der Awake-Funktion. SOOMLA hat seinen eigenen MonoBehaviour und muss vor der Initialisierung "erwacht" werden.

    Initialize SoomlaStore NUR ONCE, wenn deine Anwendung geladen wird.

    Die Initialisierung wird auch auf dieser Seite bestätigt. http://know.soom.la/unity/store/store_istoreassets/

    Das sagt, es ist nicht zwingend, aber sieht hilfreich aus

    Wenn Sie Ihren eigenen Storefront in Ihrem Spiel implementiert haben, ist es empfehlenswert, dass Sie den IAB-Service im Hintergrund öffnen, wenn der Laden öffnet und schließen, wenn der Speicher geschlossen ist.

    // Start Iab Service SoomlaStore.StartIabServiceInBg ();

    // Stoppen Sie Iab Service SoomlaStore.StopIabServiceInBg ();

    Dies ist nicht zwingend, Ihr Spiel wird ohne dieses arbeiten, aber wir empfehlen es, weil es die Leistung verbessert. Die Idee hier ist, den In-App-Abrechnungs-Setup-Prozess mit den Google- (oder Amazonas) Servern präventiv zu starten.

    Sie könnten versuchen, Protokollierung zu dem Initialisierungsereignis hinzuzufügen, um sicherzustellen, dass es initialisiert wird. Hier ist eine Liste von Veranstaltungen, die Sie ausprobieren können ..

    http://know.soom.la/unity/store/store_events/

    HINWEIS: Eine Sache, die Sie beachten müssen, ist, dass, wenn Sie OnSoomlaStoreInitialized Event hören möchten, müssen Sie den Hörer einrichten, bevor Sie SoomlaStore initialisieren. Also musst du tun:

    StoreEvents.OnSoomlaStoreInitialized + = onSoomlaStoreInitialized;

    Vor

    Soomla.SoomlaStore.Initialize (neue Soomla.Example.MuffinRushAssets ());

    Sie können auch das OnBillingSetup-Ereignis mit einigen Protokollen einrichten, um sicherzustellen, dass es Ihre Abrechnung korrekt initialisiert.

    StoreEvents.OnBillingSupported + = onBillingSupported;

    Public void onBillingSupported () {// … dein Spiel spezifische Umsetzung hier …}

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.