Почему App Store возвращает разные (старые) квитанции при обновлении приложения - тестирование в песочнице? - PullRequest
0 голосов
/ 02 февраля 2019

Я пытаюсь проверить мою автоматически обновляемую подписку с помощью песочницы.Поэтому я получаю локальную квитанцию ​​из 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...