自动续订订阅错误的时间响应沙盒模式

时间:2017-12-08 10:19:43

标签: ios testing unity3d subscription receipt-validation

我当前正试图进行本地收据验证和测试。 但是从苹果收据回复来看,我得到了错误的时间相关反应,所以我现在很难测试应用程序。

这是日志信息: enter image description here

以下是我用于收据验证的源代码:

 public void CheckIfSubscriptionIsActive(bool validateReceipt)
{
    ConfigurationBuilder builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());

    IAppleConfiguration appleConfig = builder.Configure<IAppleConfiguration>();
    bool isSubscriptionRunning = false;

    if (!string.IsNullOrEmpty(appleConfig.appReceipt))
    {
        if (validateReceipt)
        {
            // local receipt verification
            var receiptData = System.Convert.FromBase64String(appleConfig.appReceipt);
            AppleReceipt receipt = new AppleValidator(AppleTangle.Data()).Validate(receiptData);
            foreach (AppleInAppPurchaseReceipt productReceipt in receipt.inAppPurchaseReceipts)
            {

                Debug.Log("# server date: " + GameManager.Instance.ServerDate + " expire date: " + productReceipt.subscriptionExpirationDate);
                int result = DateTime.Compare(GameManager.Instance.ServerDate, productReceipt.subscriptionExpirationDate);
                if (result <= 0)
                {
                    isSubscriptionRunning = true;
                    Debug.Log(" === ==== === Subscription Running: curr date: " + GameManager.Instance.ServerDate + " expire date: " + productReceipt.subscriptionExpirationDate);
                }

                //Debug.Log("PRODUCTID: " + productReceipt.productID);
                //Debug.Log("PURCHASE DATE: " + productReceipt.purchaseDate);
                //Debug.Log("EXPIRATION DATE: " + productReceipt.subscriptionExpirationDate);
                //Debug.Log("CANCELDATE DATE: " + productReceipt.cancellationDate);
            }

            if (isSubscriptionRunning)
                SubscriptionActivated();

            // hide loading...
            showLoader = false;
            Camera.main.SendMessage("ActivateLoadingDialog", false, SendMessageOptions.DontRequireReceiver);

        }
        else
        {
            // server side receipt vecification
            appReceipt = appleConfig.appReceipt;
            StartCoroutine(CheckSubscriptionStatusServerSideVerification());
        }
    }
}

通常每周订阅有3分钟的持续时间,所以如果我没有得到确切的时间,那么我该如何进行适当的测试!!

在上图中,我提到过两次,当地时间 15:01:04 苹果回执响应时间 9时37分一十八秒即可。 目前使用本地设备收据验证我无法测试工作。那么我有什么方法可以进行测试?

1 个答案:

答案 0 :(得分:1)

基本上在上述问题中,我在Apple收据回复方面遇到了重大的时间差异,但现在我已经为此完成了解决方案。 当地时间是15:01:04 苹果收据回复时间是09:37:18

这是GMT时差的主要原因。 我住在印度,所以我们有5:30的时差。

因此,在Apple收货时间内,我需要添加此GMT时差以获得准确的时间值,然后我们可以完成剩余编码。

如果有人要求,我会在此处发布我的Unity支持讨论链接。