Как найти потерянные покупки внутри приложения на iOS? - PullRequest
0 голосов
/ 03 октября 2019

Итак, я следовал официальному руководству и реализовал это:

https://developer.apple.com/library/archive/releasenotes/General/ValidateAppStoreReceipt/Chapters/ValidateRemotely.html#//apple_ref/doc/uid/TP40010573-CH104-SW1

  1. пользователь платит в приложении
  2. приложение получает информацию о получении от Apple
  3. эта информация о квитанции отправляется на мой сервер
  4. мой сервер подтвердил квитанцию ​​по вызову Apple API и активирует членство для клиента

Очевидная проблема заключается в том, что 3. может произойти сбой. У меня есть клиенты, жалующиеся на то, что они заплатили, они отправляют мне SS о вычитаемой сумме, но мой сервер никогда не был уведомлен. И у меня нет возможности найти этих пользователей. Есть ли какой-то CP, где я могу искать по электронной почте клиента или идентификатору транзакции, чтобы проверить, является ли это скриншот Photoshopped или действительным?

Есть ли какой-нибудь API, который можно вызвать для перечисления транзакций по продукту и электронной почте клиента?

https://appstoreconnect.apple.com/ - Apple CP для этого бесполезен

Ответы [ 2 ]

0 голосов
/ 03 октября 2019

Если третий шаг не пройден, вы можете вернуться к локальной проверке, а затем пропустить пользователя для этого сеанса (или некоторого количества сеансов, прежде чем вам потребуется его выполнение). К сожалению, локальная аутентификация является проблемой в заднице, потому что квитанция зашифрована. Смотрите эту ссылку для примера: https://github.com/andrewcbancroft/SwiftyLocalReceiptValidator. Вы также можете сообщить о сбоях на шаге 3 своему аналитическому инструменту, чтобы вы могли увидеть, кто на самом деле затронут этой проблемой (очевидно, это работает, только если аналитик в конечном итоге получит подключение к Интернету.

0 голосов
/ 03 октября 2019

Нет способа сопоставить данные клиента с данными вашей транзакции. Только Apple может сделать это.

Мое первое подозрение в том, что у вас могут возникнуть логические проблемы в процессе покупки. При правильной реализации временный сбой на шаге 3 не имеет значения.

Вы должны:

  1. Создать наблюдателя в очереди транзакций сразу после запуска приложения. Это позволит доставлять любые ожидающие транзакции вашему наблюдателю
  2. Когда вы получаете транзакцию покупки в своем наблюдателе, вы проверяете на своем сервере
  3. Только после того, как вы получили ответ от сервера, что покупкабыл успешно записан, звоните finishTransaction.

Таким образом, если с вашим сервером что-то пойдет не так или произойдет сбой приложения, транзакция все еще ожидает выполнения в очереди.

Если вы используете автообновление и / или неиспользуемый IAP, я настоятельно рекомендую вам предоставить кнопку «Восстановить покупки» в вашем пользовательском интерфейсе. Это упрощает для пользователя, если что-то идет не так или когда он переходит на новое устройство.

Если у вас есть пользователи, которые утверждают, что не получили то, за что заплатили, вы можете направить их в Apple App Storeподдержка, которая может вернуть транзакцию.

...