Автообновляемые подписки для iOS: как получить проверку квитанции на стороне сервера?

Я только что завершил разработку своего приложения, создал свою учетную запись организации Apple, создал все, что мне нужно, на стороне подключения iTunes, но теперь моя проблема заключается в разработке проверка квитанции на стороне сервера (поскольку Проверка квитанций локально кажется, есть некоторые потенциальный человек в средних проблемах безопасности).

...
// Load the receipt from the app bundle.
NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
NSData *receipt = [NSData dataWithContentsOfURL:receiptURL];
if (!receipt) { /* No local receipt -- handle the error. */ }

/* ... Send the receipt data to your server ... */
...

Я хорошо понял процесс проверки, описанный на этой картинке:

введите описание изображения здесь

Моя главная проблема в том, что я не большой специалист по вопросу о сервере, и если у вас есть несколько примеров того, что мне нужно кодировать для подтверждения получения и какую технологию я должен использовать (PHP, Angular или что-то еще …).

(Первый пример: На что билет, достаточно ли кода на стороне сервера для выполнения этой проверки?)

(Второй пример: Является ли этот процесс успешным с отправкой UDID и квитанции, закодированной в Base64, на сервер с JSON, запрос сервера в магазин приложений, отправка магазина приложений в порядке, а сервер отправка в приложение в порядке. Если это хороший процесс, я могу сделать это легко. Билет 2
Заранее спасибо.

2

Решение

Вот мое решение:

Я использую свой сервер для подтверждения получения чека следующим образом:

https://github.com/aporat/store-receipt-validator

use ReceiptValidator\iTunes\Validator as iTunesValidator;

$validator = new iTunesValidator(iTunesValidator::ENDPOINT_PRODUCTION); // Or iTunesValidator::ENDPOINT_SANDBOX if sandbox testing

$receiptBase64Data = 'ewoJ
......
OVG8xTlNCRmRHTXZSMDFVSWpzS2ZRPT0iOwoJImVudmlyb25tZW50IiA9ICJTYW5kYm94IjsKCSJwb2QiID0gIjEwMCI7Cgkic2lnbmluZy1zdGF0dXMiID0gIjAiOwp9';

try {
$response = $validator->setReceiptData($receiptBase64Data)->validate();
// $sharedSecret = '1234...'; // Generated in iTunes Connect's In-App Purchase menu
// $response = $validator->setSharedSecret($sharedSecret)->setReceiptData($receiptBase64Data)->validate(); // use setSharedSecret() if for recurring subscriptions
} catch (Exception $e) {
echo 'got error = ' . $e->getMessage() . PHP_EOL;
}

if ($response->isValid()) {
echo 'Receipt is valid.' . PHP_EOL;
echo 'Receipt data = ' . print_r($response->getReceipt()) . PHP_EOL;
} else {
echo 'Receipt is not valid.' . PHP_EOL;
echo 'Receipt result code = ' . $response->getResultCode() . PHP_EOL;
}

И WS на моем сервере отправьте мне нормально или нет.

(Для локального процесса на iPad, который не рекомендуется, вы можете найти его здесь: Я получаю 21004 в качестве значения состояния в ответ от тестового сервера Apple, тестирующего автообновляемые подписки в ios?)

0

Другие решения

Других решений пока нет …