自动续订订阅错误时间响应沙盒模式
Auto-Renewable Subscription Wrong Time Response Sandbox Mode
我目前正在尝试进行本地收据验证和测试。
但是从 apple receipt 响应中,我得到了错误的时间相关响应,所以我现在很难测试应用程序。
日志信息如下:
这是我用于收据验证的源代码:
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和苹果收据响应时间 是09:37:18。
目前使用本地设备收据验证我无法测试这项工作。那么我有什么方法可以测试呢??
基本上在上面的问题中,我在 Apple 收据响应中得到了很大的时差,但现在我已经得出了解决方案。
当地时间是15:01:04
苹果收据响应时间是09:37:18
造成这种情况的主要原因是 GMT 时差。
我住在印度,所以我们有 5:30 时差 运行。
所以在Apple收货时间,我需要添加这个GMT时差以获得准确的时间值,然后我们就可以完成我们的休息编码了。
如果有人需要,我会 post link 在这里与我的 Unity 支持讨论。
我目前正在尝试进行本地收据验证和测试。 但是从 apple receipt 响应中,我得到了错误的时间相关响应,所以我现在很难测试应用程序。
日志信息如下:
这是我用于收据验证的源代码:
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和苹果收据响应时间 是09:37:18。 目前使用本地设备收据验证我无法测试这项工作。那么我有什么方法可以测试呢??
基本上在上面的问题中,我在 Apple 收据响应中得到了很大的时差,但现在我已经得出了解决方案。 当地时间是15:01:04 苹果收据响应时间是09:37:18
造成这种情况的主要原因是 GMT 时差。 我住在印度,所以我们有 5:30 时差 运行。
所以在Apple收货时间,我需要添加这个GMT时差以获得准确的时间值,然后我们就可以完成我们的休息编码了。
如果有人需要,我会 post link 在这里与我的 Unity 支持讨论。