Ответ 1
Основываясь на моем опыте, вероятными проблемами являются
- Данные base64 получили url-кодирование по пути и поэтому + и/получили испорченный - замените их более безопасными символами перед передачей
- Вся транзакция является фиктивной.
Чтобы проверить второй случай, нужно посмотреть свою учетную запись и посмотреть, есть ли соответствующая запись о покупке. К сожалению, веб-сайт может быть немного сложно пересмотреть, если у вас низкий объем покупки.
В вашем коде две вещи необходимы для правильной обработки ошибок на вашем сервере или в случае, если это произойдет, Apple закончит.
- Не вызывайте finishTransaction: пока вы не общаетесь с сервером (это не поможет в этом случае, но стоит отметить)
- У вас есть кнопка "Обновить покупки" или действие, которое вызывает restoreCompletedTransactions: в SKQaymentQueue defaultQueue. Для объектов, не подлежащих расходуемому/правому, это будет возвращать все транзакции с квитанциями, которые могут быть повторно проверены на вашем сервере.
Если проблема, с которой вы сталкиваетесь, связана с нерасходуемыми/правами, то второй элемент - выход.