无编码统一IAP慢卡处理

发布于 2025-01-21 17:11:16 字数 2680 浏览 0 评论 0原文

我正在使用Unity IAP 4.1.4。

如您所知,购买测试有4种不同的测试卡。我的问题是付款缓慢时该怎么办?如果用户在付款验证之前退出游戏,我将无法批准付款和购买待定。有什么方法可以处理缓慢的付款?

这是脚本。

 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);
 }
}

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?

This is the script.

 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);
 }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文