namespace Oculus.Platform.Samples.VrBoardGame { using UnityEngine; using Oculus.Platform; using Oculus.Platform.Models; using UnityEngine.UI; // This class coordinates In-App-Purchases (IAP) for the application. Follow the // instructions in the Readme for setting up IAP on the Oculus Dashboard. Only // one consumable IAP item is used is the demo: the Power-Ball! public class IAPManager : MonoBehaviour { // the game controler to notify when the user purchaes more powerballs [SerializeField] private GameController m_gameController = null; // where to record to display the current price for the IAP item [SerializeField] private Text m_priceText = null; // purchasable IAP products we've configured on the Oculus Dashboard private const string CONSUMABLE_1 = "PowerballPack1"; void Start() { FetchProductPrices(); FetchPurchasedProducts(); } // get the current price for the configured IAP item public void FetchProductPrices() { string[] skus = { CONSUMABLE_1 }; IAP.GetProductsBySKU(skus).OnComplete(GetProductsBySKUCallback); } void GetProductsBySKUCallback(Message msg) { if (msg.IsError) { PlatformManager.TerminateWithError(msg); return; } foreach (Product p in msg.GetProductList()) { Debug.LogFormat("Product: sku:{0} name:{1} price:{2}", p.Sku, p.Name, p.FormattedPrice); if (p.Sku == CONSUMABLE_1) { m_priceText.text = p.FormattedPrice; } } } // fetches the Durable purchased IAP items. should return none unless you are expanding the // to sample to include them. public void FetchPurchasedProducts() { IAP.GetViewerPurchases().OnComplete(GetViewerPurchasesCallback); } void GetViewerPurchasesCallback(Message msg) { if (msg.IsError) { PlatformManager.TerminateWithError(msg); return; } foreach (Purchase p in msg.GetPurchaseList()) { Debug.LogFormat("Purchased: sku:{0} granttime:{1} id:{2}", p.Sku, p.GrantTime, p.ID); } } public void BuyPowerBallsPressed() { #if UNITY_EDITOR m_gameController.AddPowerballs(1); #else IAP.LaunchCheckoutFlow(CONSUMABLE_1).OnComplete(LaunchCheckoutFlowCallback); #endif } private void LaunchCheckoutFlowCallback(Message msg) { if (msg.IsError) { PlatformManager.TerminateWithError(msg); return; } Purchase p = msg.GetPurchase(); Debug.Log("purchased " + p.Sku); m_gameController.AddPowerballs(3); } } }