Определить статус подписки iTunes в PHP - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь найти способ проверить статус подписки пользователя в Apple Store из бэкэнда (PHP / Laravel).Мы уже знаем UUID пользователя, и у нас есть настройка подписки на Apple.Пользователь получает доступ к приложению после подписки на сервис через Apple в течение пробного периода, и мне нужно проверить, действительно ли пользователь подписался на сервис после завершения пробного периода или нет.

Мой вопрос заключается в том, какВы общаетесь с Apple Store, чтобы получить статус подписки пользователя, используя PHP / Laravel в качестве бэкэнда?

Для пояснения, приложение позволяет пользователям подписываться на услугу через веб-приложение и мобильное приложение.Через Интернет легко получить статус подписки пользователя, так как для этого мы используем Stripe.Однако в приложении пользователи подписываются на сервис через Apple Store.Итак, еще раз, как вы общаетесь с Apple Store, чтобы получить статус подписки пользователя, используя PHP / Laravel в качестве бэкэнда?

1 Ответ

0 голосов
/ 11 июня 2018

Вы можете запросить эту информацию в App Store с доверенного сервера.

Конечная точка для среды песочницы - https://sandbox.itunes.apple.com/verifyReceipt
, а для производства - https://buy.itunes.apple.com/verifyReceipt

Выв качестве полезной нагрузки JSON необходимо отправить следующее:

receipt-data Если у вас его нет на сервере, его можно получить, вызвав метод appStoreReceiptURL для NSBundle.Прочитайте все содержимое этого файла и отправьте его на свой сервер.

Password (Только для автоматически обновляемых подписок это будет общий секрет вашего приложения)

exclude-old-transactions Толькоиспользуется для квитанций приложений в стиле iOS7, которые содержат автоматически обновляемые или невозобновляемые подписки.Если значение равно true, ответ включает в себя только последнюю транзакцию продления для любых подписок.

Затем он возвращает полезную нагрузку, содержащую квитанцию ​​status и некоторую другую дополнительную информацию.

Проверьте эту статью на Apple

Редактировать

Используйте cURL для вызова конечной точки App Store (ссылка выше).Вот грубый пример, вам нужно изменить его для вашей конкретной среды и заполнить необходимые переменные.

$service_url = [one of the two above];
$curl = curl_init($service_url);
$curl_post_data = array(
        'receipt-data' => $receiptData,
        'password' => $password, //Only required for certain types of subscription
        'exclude-old-transactions' => $excludeoldtransactions //Depends on your use case, check Apple link
);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $curl_post_data);
$curl_response = curl_exec($curl);
if ($curl_response === false) {
    $info = curl_getinfo($curl);
    curl_close($curl);
    die('error occured during curl exec. Additioanl info: ' . var_export($info));
}
curl_close($curl);
$decoded = json_decode($curl_response);
if (isset($decoded->response->status) && $decoded->response->status == 'ERROR') {
    die('error occured: ' . $decoded->response->errormessage);
}
echo 'response ok!';
var_dump($decoded->response);

http://php.net/manual/en/book.curl.php

...