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<ProductList> 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<PurchaseList> 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<Purchase> msg)
|
|
{
|
|
if (msg.IsError)
|
|
{
|
|
PlatformManager.TerminateWithError(msg);
|
|
return;
|
|
}
|
|
|
|
Purchase p = msg.GetPurchase();
|
|
Debug.Log("purchased " + p.Sku);
|
|
m_gameController.AddPowerballs(3);
|
|
}
|
|
}
|
|
}
|