public void OnPurchaseFailed(AppcoinsProduct product, AppcoinsPurchaseFailureReason failureReason) { onPurchaseFailed.Invoke(product); // A product purchase attempt did not succeed. Check failureReason for more detail. Consider sharing // this reason with the user to guide their troubleshooting actions. SetStatus(string.Format("OnPurchaseFailed: FAIL.\nProduct: '{0}',\nPurchaseFailureReason: {1}", (product != null ? product.skuID : "none"), failureReason)); }
//callback on failed purchases public void OnPurchaseFailure(string error) { Debug.Log("Purchase failed with error " + error); if (_listener == null) { Debug.LogError("No IStoreListener set up!"); } if (_controller == null) { Debug.LogError("No IStoreController set up!"); } AppcoinsPurchaseFailureReason failureReason = PurchaseFailureReasonFromString(error); _listener.OnPurchaseFailed(_currentPurchaseProduct, failureReason); _currentPurchaseProduct = null; }
AppcoinsPurchaseFailureReason PurchaseFailureReasonFromString(string error) { AppcoinsPurchaseFailureReason reason = AppcoinsPurchaseFailureReason.Unknown; // String[] iab_msgs = ("0:OK/1:User Canceled/2:Unknown/" //+ "3:Billing Unavailable/4:Item unavailable/" //+ "5:Developer Error/6:Error/7:Item Already Owned/" //+ "8:Item not owned").split("/"); //String[] iabhelper_msgs = ("0:OK/-1001:Remote exception during initialization/" //+ "-1002:Bad response received/" //+ "-1003:Purchase signature verification failed/" //+ "-1004:Send intent failed/" //+ "-1005:User cancelled/" //+ "-1006:Unknown purchase response/" //+ "-1007:Missing token/" //+ "-1008:Unknown error/" //+ "-1009:Subscriptions not available/" //+ "-1010:Invalid consumption attempt").split("/"); if (error.IndexOf("User cancelled", StringComparison.OrdinalIgnoreCase) != -1) { reason = AppcoinsPurchaseFailureReason.UserCancelled; } else if (error.IndexOf("Unknown error", StringComparison.OrdinalIgnoreCase) != -1) { reason = AppcoinsPurchaseFailureReason.Unknown; } else if (error.IndexOf("Purchase signature verification failed", StringComparison.OrdinalIgnoreCase) != -1) { reason = AppcoinsPurchaseFailureReason.SignatureInvalid; } else if (error.IndexOf("Unable to buy item", StringComparison.OrdinalIgnoreCase) != -1) { reason = AppcoinsPurchaseFailureReason.ProductUnavailable; } else if (error.IndexOf("Unknown error", StringComparison.OrdinalIgnoreCase) != -1) { reason = AppcoinsPurchaseFailureReason.Unknown; } return(reason); }