我目前正在为我制作的基于Unity的Android游戏设置应用内结算,而我正在使用OpenIAB插件执行此操作。我目前只在Google Play商店进行测试。
我已经通过开发者控制台发布了应用内商品;我正在使用作为Beta发布的APK;我在主电子邮件是指定测试人员的设备上测试游戏,并且我将测试响应设置为LICENSE,以防万一。
使用OpenIAB时,我基本上只需要调用OpenIAB.purchaseProduct(string)
函数并传递“SKU”。我不完全确定我必须通过什么形式的字符串,但到目前为止,我一直在尝试这些组合:
所有这些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()
之外,我没有做任何特别的事 - 也许我忘了什么。
有人可以提供任何指导或想法,以确保我确实要求正确的产品吗?
答案 0 :(得分:0)
如果您不确定您的Google IAP sku。 在应用内商品标签下查看,并在“名称/ ID”下查看ID。 sku在括号内。例如。如果它是“abc(def)”,则sku是“def”。
因此,您只需致电OpenIAB.purchaseProduct(“def”)购买您的产品。
我不确定这是否会影响测试,请查看主要帐户Google Dev “具有测试访问权限的设置/ Gmail帐户”并在那里添加您的Gmail帐户。
希望它有所帮助。