- Home /
Unity IAP Slow Card Handling
I am using Unity IAP 4.1.4.
As you know there are 4 different test cards on purchase testing. My question is what should I do when payment is slow? If user quits the game before payment validated I can't approve the payment and purchase is pending. Is there any way to handle slow payments?
public class IAPManager : MonoBehaviour
{
private string coin250k = "//";
private string coin500k = "//";
public void OnPurchaseComplete(Product product)
{
var validator = new CrossPlatformValidator(GooglePlayTangle.Data(),
AppleTangle.Data(), Application.identifier);
bool ValidPurchase = false;
try
{
// On Google Play, result has a single product ID.
// On Apple stores, receipts contain multiple products.
var result = validator.Validate(product.receipt);
// For informational purposes, we list the receipt(s)
Debug.Log("Receipt is valid. Contents:");
foreach (IPurchaseReceipt productReceipt in result)
{
Debug.Log(productReceipt.productID);
Debug.Log(productReceipt.purchaseDate);
Debug.Log(productReceipt.transactionID);
GooglePlayReceipt google = productReceipt as GooglePlayReceipt;
if (null != google)
{
// This is Google's Order ID.
// Note that it is null when testing in the sandbox
// because Google's sandbox does not provide Order IDs.
ValidPurchase = true;
Debug.Log(" google transaction" + google.transactionID);
Debug.Log(" google transaction" + google.purchaseState);
Debug.Log(" google transaction" + google.purchaseToken);
}
AppleInAppPurchaseReceipt apple = productReceipt as AppleInAppPurchaseReceipt;
if (null != apple)
{
ValidPurchase = true;
Debug.Log(" apple transaction1" + apple.originalTransactionIdentifier);
Debug.Log(" apple transaction2" + apple.subscriptionExpirationDate);
Debug.Log(" apple transaction3" + apple.cancellationDate);
Debug.Log(" apple transaction4" + apple.quantity);
}
}
}
catch (IAPSecurityException)
{
Debug.Log("Invalid receipt, not unlocking content");
ValidPurchase = false;
}
//product.receipt;
if (ValidPurchase)
{
if (product.definition.id == coin250k)
{
//
}
else if (product.definition.id == coin500k)
{
//
}
}
}
public void OnPurchaseFailed(Product product, PurchaseFailureReason reason)
{
Debug.Log(product.definition.id + " failed because: "+ reason);
}
}
Comment
Your answer
Follow this Question
Related Questions
Unity IAP not reliable in sandbox when restoring subscription after app deleted and re-installed 0 Answers
Saving Purchased Items 1 Answer
Problem with IAP (In App Purchase) unity 1 Answer
Unity IAP - Works in Editor; Fails in XCode, Fails in Testflight (iOS) 1 Answer
Unity In-App Purchasing - Reset 1 Answer