python

Делаем платежи iOS AppStore с проверкой на сервере

  • воскресенье, 29 марта 2015 г. в 02:10:49
http://habrahabr.ru/post/254257/

Доброго времени суток, Хабровчане!
Много перечитал информации по платежам этой неплохой мобильной ОС. Но нормальных и понятных примеров так и не нашёл, поэтому решил написать про свой опыт.
Желаете узнать подробнее — добро пожаловать под кат.

И так.
Я занимаюсь исключительно back-end'ом, поэтому про front-end разработку писать не буду.
На нашем сервере делаем самый обычный обработчик http-запросов.
От клиента нам понадобятся следующие данные:
1 — ID пользователя для проведения внутренней транзакции
2 — Receipt — данные от Apple.

В обработке принимаем эти данные и делаем запрос к Apple для проверки валидности данных.
Привожу пример обработчика на Python.
import requests
// Имя приложения
bundle_id = "com.MyCompany.MyApp"
// URL для проверки влажности данных (для приложений в песочнице).
// Для опубликованных приложений используется другой адрес: "https://buy.itunes.apple.com/verifyReceipt"
url = "https://sandbox.itunes.apple.com/verifyReceipt"
// получаем данные от клиента
receipt = GetRequestParam("receipt")
// Делаем запрос к Apple
resp = requests.post(url,receipt)
response = resp.json()
// Проверяем статус ответа
if response["status"] != 0:
    return "Error"
response = response["receipt"]
// Проверяем принадлежность принятых данных к нашему приложению
if response["bundle_id"] != bundle_id:
    return "Error"
// Получаем данные покупки
package = response["in_app"][0]
productId = package["product_id"]
transaction_id = package["transaction_id"]
UserID = GetRequestParams("UserID")
// Делаем проверку на наличие пользователя
// Тут на Ваше усмотрение.
// И если все проверки пройдены, начисляем валюту пользователю


Вот простейший пример обработки платежей.
Всё просто и понятно.
Пользуйтесь. Спасибо.