예제 #1
0
        /// <summary>
        /// Overriding the order initiation with Facebook-specific purchase request over FB.Canvas.
        /// </summary>
        public override void OnPurchaseStarted(StartPurchaseResult result)
        {
            orderId = result.OrderId;

            FB.Canvas.Pay("https://" + PlayFabSettings.TitleId.ToLower() + ".playfabapi.com/OpenGraphProduct/" + PlayFabSettings.TitleId.ToLower() + "/Facebook/1/" + result.Contents[0].ItemId,
                          requestId: orderId, callback: OnPurchaseResult);
        }
 private void HandleConfirmPurchase()
 {
     if (Order != null)
     {
         var payRequest = new PayForPurchaseRequest()
         {
             OrderId      = Order.OrderId,
             ProviderName = string.Format("Title{0}", PlayFabSettings.TitleId),
             Currency     = "GO"
         };
         PlayFabClientAPI.PayForPurchase(payRequest, (payResult) =>
         {
             //Here we should add to the inventory locally in the game and then confirm the purchase.
             //But for now we are just going to confirm the purchase.
             var confirmRequest = new ConfirmPurchaseRequest()
             {
                 OrderId = payResult.OrderId
             };
             PlayFabClientAPI.ConfirmPurchase(confirmRequest, (confirmResult) =>
             {
                 Debug.Log("Purchase was completed.");
                 Order = null;
                 WindowManager.SendEvent("Store");
             }, PlayFabErrorHandler.HandlePlayFabError);
         }, PlayFabErrorHandler.HandlePlayFabError);
     }
 }
예제 #3
0
    private void onStartPurchaseResult(StartPurchaseResult result)
    {
        OrderID      = result.OrderId;
        ProviderName = result.PaymentOptions [0].ProviderName;
        Currency     = result.PaymentOptions [0].Currency;

        Debug.Log("Start Purchase Result");
        onPayForPurchase();
    }
예제 #4
0
    public void StartPurchase(CatalogItemInfo[] catalogItemInfos, Action <StartPurchaseResult> onResult, Action <PlayFabError> onError)
    {
        if (!CanStartPurchase())
        {
            Debug.LogWarning("Tried starting purchase when state was " + state);
            return;
        }

        if (catalogItemInfos.Length == 1)
        {
            Debug.Log("Starting purchase " + catalogItemInfos[0].itemId);
        }
        else
        {
            Debug.Log("Starting purchase of " + catalogItemInfos.Length + " items");
        }

        state = PlayfabPurchaserState.Started;
        this.catalogItemInfos = catalogItemInfos;
        List <ItemPurchaseRequest> items = catalogItemInfos.Select(catalogItemInfo =>
                                                                   new ItemPurchaseRequest()
        {
            ItemId     = catalogItemInfo.itemId,
            Quantity   = catalogItemInfo.quantity,
            Annotation = "Purchased via in-game store"
        }
                                                                   ).ToList();

        string catalogVersion = catalogItemInfos.Select(catalogItemInfo => catalogItemInfo.catalogVersion).FirstOrDefault();

        PlayFabClientAPI.StartPurchase(new StartPurchaseRequest()
        {
            CatalogVersion = catalogVersion,
            Items          = items
        },
                                       result =>
        {
            startPurchaseResult = result;
            state   = PlayfabPurchaserState.StartedSuccess;
            orderId = result.OrderId;
            Debug.Log("Start purchase success, order Id" + result.OrderId);
            onResult(result);
        },
                                       error =>
        {
            this.error = error;
            state      = PlayfabPurchaserState.StartedError;
            Debug.Log("Start purchase error\n" + error.GenerateErrorReport());
            onError(error);
        });
    }
예제 #5
0
        /// <summary>
        /// Callback retrieved when an (real money) order on PlayFab's servers has been initiated.
        /// Here the payment request for the order is being sent off, triggering native overlays.
        /// </summary>
        public virtual void OnPurchaseStarted(StartPurchaseResult result)
        {
            orderId        = result.OrderId;
            currentProduct = result.Contents[0].ItemId;

            PayForPurchaseRequest request = new PayForPurchaseRequest()
            {
                OrderId      = orderId,
                ProviderName = storeId,
                Currency     = "RM"
            };

            PlayFabClientAPI.PayForPurchase(request, OnPurchaseResult, OnPurchaseFailed);
        }
    // Use this for initialization
    private void OnEnable()
    {
        Order = PlayFabDataStore.Orders.Dequeue();
        var itemId  = Order.Contents[0].ItemId;
        var cost    = Order.Contents[0].VirtualCurrencyPrices["GO"];
        var catItem = PlayFabDataStore.Catalog.Find((ci) => { return(ci.ItemId == itemId); });

        if (catItem != null)
        {
            ItemDisplay.text = catItem.DisplayName;
            ItemDesc.text    = catItem.Description;
            ItemCost.text    = string.Format("Cost: {0} Gold Coins", cost);
        }

        ConfirmPurchase.onClick.AddListener(HandleConfirmPurchase);
        CancelPurchase.onClick.AddListener(HandleCancelPurchase);
    }
예제 #7
0
        private static void StartPurchaseCallback(StartPurchaseResult result)
        {
            foreach (var payment in result.PaymentOptions)
            {
                if (payment.Currency == "RM")
                {
                    continue;
                }

                var request = new PayForPurchaseRequest {
                    Currency = payment.Currency, OrderId = result.OrderId, ProviderName = payment.ProviderName
                };
                PlayFabClientAPI.PayForPurchase(request, PayForPurchaseCallback, null);
                return; // Successful
            }
            // Failed to purchase items
            Debug.LogError("Failed to purchase items"); // TODO: Add more info about items that failed
        }
예제 #8
0
 private void OnSucces(StartPurchaseResult result)
 {
     orderId.Value = result.OrderId;
     Fsm.Event(successEvent);
 }