Android IAP在测试期间无法找到项目

时间:2014-03-02 04:58:09

标签: android unity3d in-app-purchase google-play

我目前正在为我制作的基于Unity的Android游戏设置应用内结算,而我正在使用OpenIAB插件执行此操作。我目前只在Google Play商店进行测试。

我已经通过开发者控制台发布了应用内商品;我正在使用作为Beta发布的APK;我在主电子邮件是指定测试人员的设备上测试游戏,并且我将测试响应设置为LICENSE,以防万一。

使用OpenIAB时,我基本上只需要调用OpenIAB.purchaseProduct(string)函数并传递“SKU”。我不完全确定我必须通过什么形式的字符串,但到目前为止,我一直在尝试这些组合:

  • “sku_name”
  • “com.CompanyName.ProductName.sku_name”
  • “com.companyname.productname.sku_name”

所有这些SKU标识符都生成了“您尝试购买的商品无法找到”错误消息。我很确定我正确拼写“sku_name”。 purchaseProduct()及其必需变量_plugin的实现如下(这是来自OpenIAB插件的源代码,而不是我):

private static AndroidJavaObject _plugin;

        static OpenIAB_Android() {
            if (Application.platform != RuntimePlatform.Android) {
                STORE_GOOGLE = "STORE_GOOGLE";
                STORE_AMAZON = "STORE_AMAZON";
                STORE_TSTORE = "STORE_TSTORE";
                STORE_SAMSUNG = "STORE_SAMSUNG";
                STORE_YANDEX = "STORE_YANDEX";
                return;
            }

            AndroidJNI.AttachCurrentThread();

            // Find the plugin instance
            using (var pluginClass = new AndroidJavaClass("org.onepf.openiab.UnityPlugin")) {
                _plugin = pluginClass.CallStatic<AndroidJavaObject>("instance");
                STORE_GOOGLE = pluginClass.GetStatic<string>("STORE_GOOGLE");
                STORE_AMAZON = pluginClass.GetStatic<string>("STORE_AMAZON");
                STORE_TSTORE = pluginClass.GetStatic<string>("STORE_TSTORE");
                STORE_SAMSUNG = pluginClass.GetStatic<string>("STORE_SAMSUNG");
                STORE_YANDEX = pluginClass.GetStatic<string>("STORE_YANDEX");
            }
        }

        private bool IsDevice() {
            if (Application.platform != RuntimePlatform.Android) {
                //OpenIAB.EventManager.SendMessage("OnBillingNotSupported", "editor mode");
                return false;
            }
            return true;
        }

public void purchaseProduct(string sku, string developerPayload="") {
            if (!IsDevice()) {
                // Fake purchase in editor mode
                OpenIAB.EventManager.SendMessage("OnPurchaseSucceeded", Purchase.CreateFromSku(sku, developerPayload).Serialize());
                return;
            }
            _plugin.Call("purchaseProduct", sku, developerPayload);
        }

我真的不知道developerPayload应该是什么。除了打电话给OpenIAB.purchaseProduct()之外,我没有做任何特别的事 - 也许我忘了什么。

有人可以提供任何指导或想法,以确保我确实要求正确的产品吗?

1 个答案:

答案 0 :(得分:0)

如果您不确定您的Google IAP sku。 在应用内商品标签下查看,并在“名称/ ID”下查看ID。 sku在括号内。例如。如果它是“abc(def)”,则sku是“def”。

因此,您只需致电OpenIAB.purchaseProduct(“def”)购买您的产品。

我不确定这是否会影响测试,请查看主要帐户Google Dev “具有测试访问权限的设置/ Gmail帐户”并在那里添加您的Gmail帐户。

希望它有所帮助。