Я пытаюсь протестировать покупки в приложении для MacOS. После ввода учетных данных тестового пользователя App Store жалуется: «Текущая квитанция недействительна или не соответствует идентификатору пользователя ds». и покупка не проходит.
Текущая квитанция недействительна или не соответствует идентификатору лица DS
Ответы (4)
Является ли квитанция для приложения, которое вы запускаете, также для того же тестового пользователя, для которого вы пытаетесь выполнить покупку в приложении?
Если ваша отладочная версия работает без надлежащей квитанции (от того же тестового пользователя), я сомневаюсь, что покупка в приложении будет работать. Не используйте образец квитанции, когда хотите протестировать покупку в приложении, используйте реальную квитанцию от того же тестового пользователя, у которого вы собираетесь купить продукт в приложении.
Мне удалось совершить покупку в приложении в моем собственном приложении для Mac (хотя его все еще нет в магазине), поэтому, если у вас есть дополнительные вопросы, пишите.
Некоторые из многих вещей, которые я пытался обойти эту проблему.
Получение квитанций App Store
ОБНОВЛЕНИЕ: вот комментарий Райнера Брокерхоффа внизу этой статьи. Гораздо более элегантное решение.
Не вижу необходимости во всех этих извращениях...
Чтобы отладить мой код проверки квитанций, я просто создаю, а затем показываю приложение продукта в Finder. Дважды щелкните его один раз, и он выйдет (173), после чего вы получите квитанцию в пакет.
Теперь вернитесь в Xcode и отладьте средство проверки. Чек останется там до тех пор, пока вы не очистите его; вы можете сделать все это снова или скопировать квитанцию в другое место и вернуть ее после сборки - в какой-то момент я повторно вставил квитанцию с помощью сценария сборки.
Если вы хотите протестировать заархивированное приложение, покажите продукт в Finder, затем перейдите на несколько уровней папки вверх в папку «Выпуск», и там вы увидите приложение — вы можете дважды щелкнуть его оттуда.
Долгая процедура получения квитанции:
- Архивировать приложение
- В органайзере Xcode
- Выберите Распространить...
- Экспортировать как: Пакет установщика Mac
Наконец, установите его из командной строки, как это
sudo installer -store -pkg (path to package including filename) -target /
Теперь приложение должно содержать квитанцию по этому пути
/Applications/SampleApp.app/Contents/_MASRecipt/квитанция
Электронная почта для подтверждения
Apple отправляет электронное письмо, когда вы создаете тестового пользователя в iTunes Connect.
Тема письма:
Пожалуйста, подтвердите контактный адрес электронной почты для вашего Apple ID
Моя почта попала в папку со спамом, так что я ее так и не увидел. Таким образом, тестовая учетная запись пользователя так и не была проверена.
Проверить статус
В iTunes Connect в разделе Управление приложениями > SampleApp > Управление покупками в приложении.
Здесь статус должен быть следующим: Готово к отправке.
Если это не так, вам может потребоваться загрузить скриншот.
Я отвечу на свой вопрос. Я посмотрел видео под названием «Покупка в приложении для iOS и Mac OS X» на http://developer.apple.com/videos/wwdc/2011/.
Ключевой частью была загрузка квитанции приложения при запуске. Код для включения в App Delegate был примерно таким:
- (void) applicationWillFinishLaunching:(NSNotification *)notification
{
if(![[NSFileManager defaultManager] fileExistsAtPath:[[[NSBundle mainBundle] appStoreReceiptURL] path]]) {
NSLog(@"to get sandbox receipt, the app must be launched from outside xcode");
//exit(173);
}
}
У меня самого были большие проблемы с интеграцией In-App Purchase в Mac OS X.
Я много гуглил, но ничего не нашел с решением. Наконец на помощь пришли разработчики Apple. на wwdc 2012 в основном говорили о том, что в MAC OS X (версия 10.7.2) была ошибка, из-за которой не удалось получить квитанцию.
Эта ошибка была устранена в последней версии, т.е. MAC OS X (версия 10.7.4).
я просто обновил свою ОС и смог получить квитанцию. Итак, друзья, которые когда-либо сталкивались с проблемой «Текущая квитанция недействительна или не соответствует идентификатору человека DS». просто обновите ОС до 10.7.4, а апсо запишите следующий код в методе делегата вашего приложения «applicationDidFinishLaunching»:
if(![[NSFileManager defaultManager] fileExistsAtPath:[[[NSBundle mainBundle] appStoreReceiptURL] path]]) {
NSLog(@"to get sandbox receipt, the app must be launched from outside xcode");
exit(173);
}
и запустите свой код в первый раз вне XCode. затем, после получения recipt, вы можете снова отлаживать XCode.
Каждый раз, когда вы очищаете сборку, вам нужно запускать приложение вне XCode.