首页 > 解决方案 > 为什么 App Store 在刷新应用程序时返回不同(旧)收据 - 在沙盒中测试?

问题描述

我正在尝试使用沙盒测试我的自动更新订阅。所以我从 mainBundle.appStoreReceiptURL?.path 获取本地收据,并将其发送到我的服务器,然后将其发送到 App Store。然后我解析来自应用商店的响应。到目前为止,一切都很好。我的订阅续订服务器代码有效。

我已经验证了两个 iTunes 测试帐户,并且我已经成功地为这两个帐户购买并续订了我的自动续订订阅产品。问题是,有时我从应用商店收到的收据与当前登录的 iTunes 帐户的收据不匹配,但与之前登录的帐户不匹配,反之亦然。当我的应用程序从后台进出或关闭应用程序并重新启动它时,就会发生这种情况。结果,这弄乱了我对特定用户的订阅验证。请问有人可以建议吗?

我的服务器代码:

$base64EncodeReceipt = $_POST['receiptData'];
$response = getResponseFromAppStore($base64EncodeReceipt, $SHARED_SECRET);
echo $response;

控制台:这是我退出然后在进入后台后重新进入应用程序时的结果。您可以看到我收到了与 original_transaction_id 不同的收据。

 as user is signed in. check subscription status
StoreObserver.checkSubscriptionStatusAppDelegate()

applicationWillResignActive
checkSubscriptionStatusAppDelegate response json: {
    diff = 267000;
    "expDate_ms" = 1549103558000;
    "expires_date" = "2019-02-02 10:32:38 Etc/GMT";
    isSubscribed = 1;
    "original_transaction_id" = 1000000499551500;
    "transaction_id" = 1000000499563944;
}
regStatus: 1
subScriptionStatus: 1
SUBSCRIPTION UP-TO-DATE
applicationDidEnterBackground
applicationWillEnterForeground
applicationDidBecomeActive
as user is signed in. check subscription status
StoreObserver.checkSubscriptionStatusAppDelegate()
checkSubscriptionStatusAppDelegate response json: {
    diff = "-88695000";
    "expDate_ms" = 1549014602000;
    "expires_date" = "2019-02-01 09:50:02 Etc/GMT";
    isSubscribed = 2;
    "original_transaction_id" = 1000000493992743;
    "transaction_id" = 1000000499335032;
}

标签: iosswiftstorekit

解决方案


推荐阅读