using System;
using System.Text;
using PlayFab;
using PlayFab.ClientModels;
using Steamworks;
using UnityEngine;
using BubbleShooterKit;
using System.Collections.Generic;
using UnityEngine.UI;
public class purchaseSteam : MonoBehaviour
{
protected Callback<MicroTxnAuthorizationResponse_t> m_MicroTxnAuthorizationResponse;
public static purchaseSteam instance;
int counter = 0;
public Action<PlayFabError> ErrorCallback { get; private set; }
public Action<StartPurchaseResult> startPurchaseCallback { get; private set; }
void Start()
{
if (SteamManager.Initialized)
{
m_MicroTxnAuthorizationResponse = Callback<MicroTxnAuthorizationResponse_t>.Create(OnMicroTxnAuthorizationResponse);
PlayFabClientAPI.LoginWithSteam(new LoginWithSteamRequest
{
CreateAccount = true,
SteamTicket = GetSteamAuthTicket()
}, OnComplete, OnFailed);
}
instance = this;}
void Awake()
{
PlayFabSettings.TitleId = "FAE03";
}
public string GetSteamAuthTicket()
{
byte[] ticketBlob = new byte[1024];
uint ticketSize;
HAuthTicket hTicket = SteamUser.GetAuthSessionTicket(ticketBlob, ticketBlob.Length, out ticketSize);
Array.Resize(ref ticketBlob, (int)ticketSize);
StringBuilder sb = new StringBuilder();
foreach (byte b in ticketBlob) {
sb.AppendFormat("{0:x2}", b);
}
return sb.ToString(); }
public void OnGUI()
{
if (GUILayout.Button("Log In"))
{
if (SteamManager.Initialized)
{
// Execute PlayFab API call to log in with steam ticket PlayFabClientAPI.LoginWithSteam(new LoginWithSteamRequest {
CreateAccount = true, SteamTicket = GetSteamAuthTicket() }, OnComplete, OnFailed); }
} }
private void OnMicroTxnAuthorizationResponse(MicroTxnAuthorizationResponse_t pCallback)
{
if (pCallback.m_bAuthorized == 1) {
Debug.Log("Authorized Payment");
ConfirmPurchase(pCallback.m_ulOrderID.ToString()); }
else { Debug.Log("Failed to authorize payment"); }}
private void ConfirmPurchase(string orderId)
{
PlayFabClientAPI.ConfirmPurchase(new ConfirmPurchaseRequest() { OrderId = orderId },
result =>
{ Debug.Log("CONFIRM PURCHASE"); },
error =>
{
Debug.Log("PURCHASE CONFIRM FAILED: " + error.ErrorMessage); });
}
private void OnComplete(LoginResult obj)
{
Debug.Log("Success!");
}
private void OnFailed(PlayFabError error)
{
Debug.Log("Failed: " + error.GenerateErrorReport());
}
public void purchase()
{
if (counter == 0)
{
if (SteamManager.Initialized)
{
PlayFabClientAPI.LoginWithSteam(new LoginWithSteamRequest
{
CreateAccount = true,
SteamTicket = GetSteamAuthTicket()
}, OnComplete, OnFailed);
}
counter++;
}
if (chooser.instance.choose == 1)
{
chooser.instance.choose = 0; Debug.Log("1");
Buy();
}
else if (chooser.instance.choose2 == 1)
{
chooser.instance.choose2 = 0;
Debug.Log("2");
Buy2();
}
else if (chooser.instance.choose3 == 1)
{
Debug.Log("3");
Buy3();
chooser.instance.choose3 = 0;
}
else if (chooser.instance.choose4 == 1)
{ chooser.instance.choose4 = 0;
Debug.Log("4");
Buy4();
}
else if (chooser.instance.choose5 == 1)
{ chooser.instance.choose5 = 0;
Debug.Log("5"); Buy5();
}
}
void Buy()
{
PlayFabClientAPI.StartPurchase(new StartPurchaseRequest()
{
CatalogVersion = "inapps",
StoreId = "inapp",
Items = new List<ItemPurchaseRequest>() { new ItemPurchaseRequest()
{ ItemId = "One", Quantity = 1, Annotation = "300 coins"
}
}
},
result =>
{
PlayFabClientAPI.PayForPurchase(new PayForPurchaseRequest()
{
OrderId = result.OrderId,
ProviderName = "Steam",
Currency = "RM"
},
OnPurchaseComplete, OnPurchaseFailed);
},
error =>
{ Debug.Log("Purchase failed1: " + error.ErrorMessage); });
void OnPurchaseComplete
(PayForPurchaseResult startPurchaseResult)
{ Debug.Log("PayForPurchase OnPurchaseComplete");
if (chooser.instance.choose == 1)
{ PurchasableItem.instance.buySteam1();
chooser.instance.choose = 0; }
else if (chooser.instance.choose2 == 1)
{
PurchasableItem.instance.buySteam2();
chooser.instance.choose2 = 0;
}
else if (chooser.instance.choose3 == 1)
{
PurchasableItem.instance.buySteam3();
chooser.instance.choose3 = 0;
}
else if (chooser.instance.choose4 == 1)
{
PurchasableItem.instance.buySteam4();
chooser.instance.choose4 = 0;
}
else if (chooser.instance.choose5 == 1)
{ PurchasableItem.instance.buySteam5();
chooser.instance.choose5 = 0; }
}
void OnPurchaseFailed(PlayFabError playFabError)
{
Debug.Log("Purchase failed2: " + playFabError.ErrorMessage);
}