La biblioteca del servidor Node.js para las notificaciones de la API del servidor App Store y el servidor de App Store. También disponible en Swift, Python y Java.
Instalación
Documentación
Uso
Apoyo
Nodo 16+
# Con npmnpm install @apple/app-store-server-library --save# con yarnyarn add @Apple/App-store-server-liber
Documentación
Video WWDC
Para usar la API del servidor de App Store o crear firmas de oferta promocional, se requiere una clave de firma descargada desde App Store Connect. Para obtener esta clave, debe tener el rol de administración. Vaya a los usuarios y acceda> integraciones> compra en la aplicación. Aquí puede crear y administrar claves, así como encontrar su ID de emisor. Al usar una clave, también necesitará la ID de clave y la ID del emisor.
Descargue y almacene los certificados raíz encontrados en la sección Certificados Root de Apple del sitio de Apple PKI. Proporcione estos certificados como una matriz a un marcador firmado para permitir la verificación de los datos firmados proviene de Apple.
import {appstoreserververapiClient, entorno, sendTestNotificationResponse} de "@Apple/App-store-server-library" const issuerid = "99b16628-15e4-4668-972b-eeff55eeF55" const keyid = "abcdefghiJ" Const = "com.xample" const " filepath = "/path/to/key/subscriptionkey_abcdefghij.p8"const encodedkey = readFile (filePath) // implementación específica puede variar conyconst = entorno. Respuesta: SendTestNotificationResponse = Await Client.RequestTestNotification () Console.log (Respuesta)} Catch (E) {Console.error (e)}
import {firmedDataverifier} de "@Apple/App-store-Server-Library" const pledleid = "com.example" const apperootcas: buffer [] = loadrootcas () // La implementación específica puede variar enable EnableOnlinEchecks = Trueconst entorno = entorno.sandboxConst Appappleid = undefined // appAppleId is required when the environment is Productionconst verifier = new SignedDataVerifier(appleRootCAs, enableOnlineChecks, environment, bundleId, appAppleId)const notificationPayload = "ey..."const verifiedNotification = await verifier.verifyAndDecodeNotification(notificationPayload)console.log( Notificación verificada)
import {appStoreserverApiClient, entorno, getTransactionHistoryVersion, recibo, orden, pedido, productType, HistoryResponse, TransactionHistoryRequest} de "@Apple/App-server-Bibrary" const Issuerid = "99B16628-15E4-4668-972B-eEff55Eff55" Const. "const bundleid =" com.example "const filepath =" /path/to/key/subscriptionkey_abcdefghij.p8"const encodedkey = readfile (filepath) // implementación específica puede variar ambiente = entorno.sandboxconst cliente = nuevo appStorePiclient (encodeDeKey puede , emuerido, bundleid, entorno) const aprecios = "mi ..." const recibeTuTil = new recibeTuTiDility () const transaccionId = recibeTuTil.ExtractTransactionIdFromAppReceipt (Apreceipt) if (transaccionId! = NULL) {const transaccionHistoryRequest: transaccyHistoryRequest = {sort: orden. Ascendente, revocado: falso, productTypes: [productType.auto_renewable]} Deja que la respuesta: HistoryResponse | null = transacciones nulllet: string [] = [] do {const revisionToken = respuesta! == null && respuesta.revision! == null? Respuesta actas)}
import {promocionalFersignatureCreator} de "@Apple/App-store-Server-Library" const keyid = "abcdefghij" const bundleid = "com.example" const filepath = "/path/to/key/subscriptionkey_abcdefghij.p8"Const encodededkey = readfile (FilePath) // La implementación específica puede variar Productid = "<Crug_id>" Const SubscriptionOfferid = "<Subscription_offer_id>" Const ApplicationUsername = "<Aplact_username>" const nonce = "<nonce>" const timestamp = date.now () const firatureator = NUEVO PROMOCIONALFERSEGLECTURECTREATOR (EncodedKey, KeyID, BundleID) const firature = SignatureCreator.CreateSignature (productID, suscriptionOfferId, ApplicationUserName, Nonce, Timestamp) Console.log (firma)
Solo la última versión principal de la biblioteca recibirá actualizaciones, incluidas actualizaciones de seguridad. Por lo tanto, se recomienda actualizar a las nuevas versiones principales.