Библиотека сервера Node.js для API App Server Api и уведомлений сервера App Store. Также доступен в Swift, Python и Java.
Установка
Документация
Использование
Поддерживать
Узел 16+
# С NPMNPM Install @Apple/App-Store-Server-Library-Save# с Yarnyarn Add @Apple/App Store-Server-Library
Документация
Видео WWDC
Чтобы использовать API App Server Server или создать подписи рекламного предложения, требуется ключ подписи, загруженный с App Store Connect. Чтобы получить этот ключ, вы должны играть роль администратора. Перейдите к пользователям и доступ к себе> Интеграции> Покупка в приложении. Здесь вы можете создавать и управлять клавишами, а также найти свой идентификатор эмитента. При использовании ключа вам также понадобится идентификатор ключа и идентификатор эмитента.
Загрузите и храните корневые сертификаты, найденные в разделе Apple Root Sertifits на сайте Apple PKI. Предоставьте эти сертификаты в качестве массива для подписания, чтобы разрешить проверку подписанных данных поступает из Apple.
Import {appSorSerVerapicLient, Environment, SendTestNotificationResponse} из "@Apple/App-Store-Server-Library" const issuerid = "99b16628-15e4-4668-972b-eeff55eff55" const keyid = "abcdefghij" constud = "com. filePath = "/path/to/key/subscriptionkey_abcdefghij.p8"const incodedkey = readfile (filepath) // конкретная реализация может Varyconst Environment = Environment.sandboxconst client = new Appstoreserverapiclient (incodedkey, Keyid, Essuerid, Bundleid, Environ Ответ: sendTestNotificationResponse = await client.requestTestNotification () console.log (response)} catch (e) {console.error (e)} Import {insigedDataVerifier} из "@Apple/App-Store-Server-Library" const bundleid = "com.example" const applerootcas: buffer [] = loadrootcas () // Конкретная реализация может Varyconst enableonlinechecks = trueConst Envirancation = Environment.sandboxconst appppleid = undefined // AppappleId требуется, когда среда является ProductionConst verifier = new SignedDataVerifier (applerootcas, EnableOnlineChecks, Environment, Bundleid, Appappleid) const notificationpayload = "ey ..." const verifiedNotification = wait verifier.VerifyandDecodefififition (уведомление). подтверждение) Import {appstoreserVerapiclient, среда, getTransactionHistoryVersion, получение, порядок, ProductType, HistoryResponse, TransactionHistoryRequest} из "@Apple/App-Store-Server-Library" "const bundleid =" com.example "const filepath =" /path/to/key/subscriptionkey_abcdefghij.p8"const onededkey = readfile (filepath) // Конкретная реализация может Varyconst Environments = Environment.sandboxconst client = new AppStoreRapiclient (incodeDecke , Essuerid, Bundleid, Environment) const crebeipt = "mi ..." const checiptutil = new Peceiptutility () const transactionId = checiptutil.ExtractTransactionIdfromAppreceipt (castipt) if (transactionId! = null) {constractoryRequest: transactionHistoryRequest = {sort: order. Восходящая, аннулированная: ложь, продукты: [producttype.auto_renewable]} Пусть ответ: astoryresponse | null = nulllet transactions: string [] = [] do {const RevisionToken = response! == null && response.revision! == null? response.Revision: nullresponse = watist client.getTransactionHistory (TransactionId, RevisionToken, TransactionHistoryRequest, getTransactionHistoryVersion.v2) if (response.signedTransactions) {Transactions = Transactions.concat (response.signedTranscares)}} while (response.hasmore). транзакции)} Import {romotionalOfferSignAitRecReator} из "@Apple/App-Store-server-library" const keyid = "abcdefghij" const bundleid = "com.example" const filepath = "/path/to/key/subscriptionkey_abcdefghij.p8"const encodedkey = readfile (FILEPATH) // Конкретная реализация может VaryConst ProductId = "<SOMPROAL_ID>" const antizeOfferid = "<antuppring_offer_id>" const ApplicationUsername = "<plape_username>" const nonce = "<nonce>" = New PromotionalOfferSignatureCreator (кодировка, KeyId, Bundleid) const signature = signatureCreator.createSignature (ProductId, ObscriptionOfferiD, ApplicationUsername, Nonce, TimeStamp) Console.log (Signature)Только последняя крупная версия библиотеки получит обновления, включая обновления безопасности. Поэтому рекомендуется обновить новые крупные версии.