ios - 为什么 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;
}
解决方案
推荐阅读
- java - 实例化所有成员后枚举数组时出现 NullPointerException?
- php - 依赖项中的嘲弄和方法链接
- javascript - 在应用拆分和连接功能并替换单词时将文本字段的值输出到另一个字段
- java - 如何解决导致 GUI 冻结的 Java fx 折旧线程的问题?
- git - 从 Jenkins 在 Docker 主机上运行 docker-compose 命令
- python - Python Tweepy 取消关注最近的
- php - Select2entity 不使用嵌入表单
- excel - 基于标准提取数据
- node.js - [NodeJS]:将标头发送到客户端后无法设置标头
- docker - 将 Jconsole 用于 GCP VM 内部或外部的 Docker 容器