【问题标题】:Unity IAP | In App Purchase | Unknown Error统一内购 |应用内购买 |未知错误
【发布时间】:2020-02-14 14:05:54
【问题描述】:

我想在我的安卓游戏中实现 IAP。

这是我的代码,来自unity官方网站:

using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Purchasing;
using UnityEngine.UI;

public class Purchaser : MonoBehaviour, IStoreListener {
private static IStoreController m_StoreController;          // The Unity Purchasing system.
private static IExtensionProvider m_StoreExtensionProvider; // The store-specific Purchasing subsystems.

public Text text;

public static string kProductIDConsumable = "pile_shadycoin";

void Start() {
    if (m_StoreController == null) {
        InitializePurchasing();
    }
}

public void InitializePurchasing() {
    if (IsInitialized()) {
        return;
    }

    var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());

    builder.AddProduct(kProductIDConsumable, ProductType.Consumable);

    UnityPurchasing.Initialize(this, builder);
}


private bool IsInitialized() {
    return m_StoreController != null && m_StoreExtensionProvider != null;
}


public void BuyConsumable() {
    BuyProductID(kProductIDConsumable);
}

void BuyProductID(string productId) {
    if (IsInitialized()) {
        Product product = m_StoreController.products.WithID(productId);

        if (product != null && product.availableToPurchase) {
            text.text = "Purchasing product asychronously: '{0}'";
            m_StoreController.InitiatePurchase(product);
        } else {
            text.text = "BuyProductID: FAIL. Not purchasing product, either is not found or is not available for purchase";
        }
    } else {
        text.text = "BuyProductID FAIL. Not initialized.";
    }
}

public void OnInitialized(IStoreController controller, IExtensionProvider extensions) {
    text.text = "OnInitialized: PASS";

    m_StoreController = controller;

    m_StoreExtensionProvider = extensions;
}


public void OnInitializeFailed(InitializationFailureReason error) {
    text.text = "OnInitializeFailed InitializationFailureReason:" + error;
}


public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args) {
    if (String.Equals(args.purchasedProduct.definition.id, kProductIDConsumable, StringComparison.Ordinal)) {
        text.text = "ProcessPurchase: PASS. Product: '{0}'";


    } else {
        text.text = "ProcessPurchase: FAIL. Unrecognized product: '{0}'";
    }
    return PurchaseProcessingResult.Complete;
}


public void OnPurchaseFailed(Product product, PurchaseFailureReason failureReason) {
    text.text = failureReason + "";
}
}

我正在使用消耗品 pile_shadycoin。 在图片中,您可以看到 id 并且它处于活动状态(它是德语)

Picture of Google Play

如果我构建我的项目并将其放在我的智能手机上并按下链接到 BuyConsumable() 的按钮,它会打开菜单并显示:

Fehler Der angeforderte Artikel kann nicht gekauft werden

英文:

错误 无法购买请求的项目

【问题讨论】:

  • 这是一个稍微编辑过的原始版本,你可以在 unity.com 上找到我也尝试了完全原始的版本,没有编辑(只有购买的 id)

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


【解决方案1】:

我发现了我的错误。我没有发布 alpha 或 beta 版本。

我将 APK 直接拉到我的手机上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多