#ios #in-app-purchase #server-side
#iOS #покупка в приложении #на стороне сервера
Вопрос:
Я создаю серверную часть для iOSapp, в котором есть продукты для покупки в приложении. Серверная часть выполняет обслуживание контента и проверку квитанций, а что нет.
Что меня беспокоит, так это то, что нет способа убедиться, что идентификатор продукта, введенный в серверной части, является действительным.
Я знаю, что есть API, который можно вызвать из iOS, чтобы получить список идентификаторов продукта для конкретного приложения (была ли это компания?), Есть ли какой-нибудь способ получить эту информацию из серверной части, чтобы можно было выполнить истинную проверку введенного идентификатора?
Заранее спасибо.
Ответ №1:
Как только пользователь совершает действительную покупку, вы получаете закодированный чек о покупке. Чтобы проверить, действительна ли покупка, вам необходимо отправить эту квитанцию на серверы проверки Apple. Вы получите ответ, указывающий, была ли покупка действительной, и если она действительна — подробную информацию о покупке (время покупки, идентификатор продукта, идентификатор транзакции и т.д.).
Я использовал здесь пример кода, и это было довольно просто и прямолинейно. Используйте URL-адрес изолированной среды в качестве конечной точки во время тестирования (в том числе с помощью TestFlight) и рабочий URL-адрес, как только приложение появится в App Store.
Кстати, я бы рекомендовал создать общий секрет для вашего IAP (вы можете сделать это в iTunes Connect) и включить его в ваши запросы на проверку в поле с именем password
:
private function encodeRequest() {
return json_encode(array(
'receipt-data' => $this->getReceipt(),
'password' => $sharedSecret));
}