Как расшифровать уведомление Apple Server-To-Server с помощью PHPPhp

Кемеровские программисты php общаются здесь
Anonymous
Как расшифровать уведомление Apple Server-To-Server с помощью PHP

Сообщение Anonymous »

Я бьюсь над этой темой уже несколько дней. Я не уверен, плоха ли документация Apple, или отсутствие примеров кода — единственное, что все усложняет. Я также удивлен тем, что, похоже, его почти никто не использует, поскольку мне не удалось найти хорошие примеры в Интернете.
Я проделал следующий процесс:
  • Я добавил веб-перехватчик для песочницы в разделе «Информация о приложении» и запускаю его через ngrok (туннель), чтобы проверить получаемую информацию.
  • Через некоторое время Мне удалось выяснить, что именно мне нужно было декодировать по URL-адресу base64 из ответа, и в итоге я получил объект с этой структурой.

Код: Выделить всё

Array
(
[headers] => stdClass Object
(
[alg] => ES256
[x5c] => Array
(
[0] => ...,
[1] => ...,
[2] => ...,
)

)

[payload] => stdClass Object
(
[notificationType] => DID_RENEW
[notificationUUID] => ...uuid...
[data] => stdClass Object
(
[bundleId] => ...app.id...
[bundleVersion] => 1.5
[environment] => Sandbox
[signedTransactionInfo] => ... //long string of encrypted info
)

[version] => 2.0
[signedDate] => 1670890743027
)

[signature] => ... // signature string
)

Я уменьшил поля из-за размера, но, согласно документации, это выглядит следующим образом: Ссылка на документы Apple

App Store подписывает информацию о транзакциях и продлении
, которую вы получаете в уведомлениях сервера App Store V2 и
в API сервера App Store. Он использует следующую
цепочку сертификатов x5c по порядку:
  • Сертификат, содержащий открытый ключ, соответствующий ключу
    App Store использует для цифровой подписи JWS.
  • Промежуточный сертификат Apple с сайта Apple PKI, который начинается с Worldwide Developer Relations.
  • Корневой сертификат Apple сертификат.
После этого:
  • — это объект, содержащий соответствующую информацию, здесь релевантной будет

Код: Выделить всё

payload->data->signedTransactionInfo
И последнее: Насколько я понимаю, мне нужно расшифровать JWT, используя ключи, указанные в ответ. Я попробовал использовать эту библиотеку PHP, но не знаю, как действовать дальше. Данные очень разные, и я не уверен, в чем состоит соответствие. Я знаю только, что он использует ES256, но не знаю, что делать дальше.

Подробнее здесь: https://stackoverflow.com/questions/747 ... -using-php

Вернуться в «Php»