Apple - Non-Consumable IAP не указан в квитанции при проверке с помощью Apple

В настоящее время мы сталкиваемся с проблемой, заключающейся в том, что наш неиспользованный IAP не указан в ответе, когда мы проверяем квитанцию ​​на сервере яблок. Помимо одного нерасходуемого IAP, у нас есть автоматически возобновляемые и невозобновляемые подписки, но они работают должным образом и указаны в квитанции. В квитанции не отображается только неиспользованный IAP, в результате чего пользователь не может использовать приложение, даже если он заплатил за него.

Здесь поток в нашем приложении следующий:

  1. Покупка совершается пользователем (это работает, потому что есть счет от Apple, который пользователь отправляет нам для подтверждения)
  2. Получить квитанцию
  3. Отправьте квитанцию ​​на наш сервер
  4. Отправьте квитанцию ​​с нашего сервера в Apple
  5. Разобрать ответ
  6. Подтвердите результат и отправьте обратно, является ли пользователь действительным или нет

Для простоты мы используем SwiftyStoreKit в нашем приложении для совершения покупок, получения квитанций и т. Д.

На стороне сервера мы используем магазин квитанцию-валидатор легкого PHP Lib

$validator = new iTunesValidator($debug ? iTunesValidator::ENDPOINT_SANDBOX : iTunesValidator::ENDPOINT_PRODUCTION);

        try {
            $response = $validator->setSharedSecret($sharedSecret)->setReceiptData($receiptBase64Data)->validate();
        } catch (Exception $e) {
            throw new Exception($e->getMessage());
        }

        //is receipt valid
        if ($response->isValid()) {

            //check if receipt is not empty
            if (!empty($response->getLatestReceiptInfo())) {

                $purchases = $response->getLatestReceiptInfo();
// purchases holds all the test purchases from the past but only auto-renewable and non-renewing subscriptions are listed

Я также попробовал это без библиотеки php, используя следующий скрипт, но результат тот же:

$applesharedsecret = "applesecretfromyourdevaccount";
$receiptbytes      = "......applereceipt.......";
$appleurl          = "https://buy.itunes.apple.com/verifyReceipt"; // for production
// use https://sandbox.itunes.apple.com/verifyReceipt for testing with sandbox receipt
$request = json_encode(array("receipt-data" => $receiptbytes,"password"=>$applesharedsecret));
$ch = curl_init($appleurl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
$jsonresult = curl_exec($ch);
curl_close($ch);
var_dump($jsonresult); // see the details of the receipt.

Мы что-то упускаем? Я вижу все остальные IAP из нашего

0 ответов

Другие вопросы по тегам