# @apple/app-store-server-library 中文文档

规范地址：https://npmcn.com/package/%40apple/app-store-server-library/

版本：3\.1\.0
npm 元数据更新时间：2026-05-06T01:14:11.648Z
中文译文更新时间：2026-11-06T11:38:30.361Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40apple/app-store-server-library
原文对照：https://npmcn.com/package/%40apple/app-store-server-library/?lang=original
源码仓库：https://github.com/apple/app-store-server-library-node

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：1.8 MB，345 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：8 个
- 首次发布：2023-06-07T23:29:15.479Z
- 最新版本发布：2026-05-06T01:14:11.509Z
- 近 30 天下载量：4331039（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：14（近 12 个月 3 个）

## 中文简介

App Store 服务器库

## 安装

```sh
npm install @apple/app-store-server-library
```

也可以使用：`pnpm add @apple/app-store-server-library`、`yarn add @apple/app-store-server-library`、`bun add @apple/app-store-server-library`

## README

# App Store 服务器节点.js 库

用于 [App Store 服务器 API](https://developer.apple.com/documentation/appstoreserverapi), (中文(简体) ), [App Store 服务器通知](https://developer.apple.com/documentation/appstoreservernotifications), (中文(简体) ), [保留通讯API](https://developer.apple.com/documentation/retentionmessaging),以及 [高级商务 API](https://developer.apple.com/documentation/AdvancedCommerceAPI)。也可以在 [挥发](https://github.com/apple/app-store-server-library-swift), (中文(简体) ), [蟒](https://github.com/apple/app-store-server-library-python),以及 [爪哇语](https://github.com/apple/app-store-server-library-java)。 。 。 .

## 目录

1.  [安装](https://npmcn.com/package/%40apple/app-store-server-library/#readme-installation)
2.  [文档](https://npmcn.com/package/%40apple/app-store-server-library/#readme-documentation)
3.  [使用量](https://npmcn.com/package/%40apple/app-store-server-library/#readme-usage)
4.  [支助](https://npmcn.com/package/%40apple/app-store-server-library/#readme-support)

## 安装

### 所需资源

-   节点16+

### 国家预防机制/也门

```bash
# With NPM
npm install @apple/app-store-server-library --save
# With Yarn
yarn add @apple/app-store-server-library
```

## 文档

[文档](https://apple.github.io/app-store-server-library-node/)

[WWDC 视频](https://developer.apple.com/videos/play/wwdc2023/10143/)

### 从 App Store 连接获取内购密钥

要使用 App Store 服务器 API 或创建促销要约签名,需要从 App Store Connect 下载签名密钥. 要获得这个密钥,你必须拥有管理员的角色. 转到用户和访问 > 集成 > 内部购买。 您可以在这里创建和管理密钥, 并找到您的发行者 ID 。 使用密钥时,也需要密钥ID和发证人ID.

### 获取苹果根证书

下载并存储在 $ 1 的 Apple Root 证书部分中找到的根证书 [苹果公用钥匙](https://www.apple.com/certificateauthority/) 网站。 将这些证书作为数组提供给一个已签名的Data验证器,以便验证所签名的数据来自苹果公司.

## 使用量

### API 使用量

```typescript
import { AppStoreServerAPIClient, Environment, SendTestNotificationResponse } from "@apple/app-store-server-library"

const issuerId = "99b16628-15e4-4668-972b-eeff55eeff55"
const keyId = "ABCDEFGHIJ"
const bundleId = "com.example"
const filePath = "/path/to/key/SubscriptionKey_ABCDEFGHIJ.p8"
const encodedKey = readFile(filePath) // Specific implementation may vary
const environment = Environment.SANDBOX

const client = new AppStoreServerAPIClient(encodedKey, keyId, issuerId, bundleId, environment)

try {
    const response: SendTestNotificationResponse = await client.requestTestNotification()
    console.log(response)
} catch (e) {
    console.error(e)
}
```

### 核查使用情况

```typescript
import { SignedDataVerifier } from "@apple/app-store-server-library"

const bundleId = "com.example"
const appleRootCAs: Buffer[] = loadRootCAs() // Specific implementation may vary
const enableOnlineChecks = true
const environment = Environment.SANDBOX
const appAppleId = undefined // appAppleId is required when the environment is Production
const verifier = new SignedDataVerifier(appleRootCAs, enableOnlineChecks, environment, bundleId, appAppleId)

const notificationPayload = "ey..."
const verifiedNotification = await verifier.verifyAndDecodeNotification(notificationPayload)
console.log(verifiedNotification)
```

### 收款使用情况

```typescript
import { AppStoreServerAPIClient, Environment, GetTransactionHistoryVersion, ReceiptUtility, Order, ProductType, HistoryResponse, TransactionHistoryRequest } from "@apple/app-store-server-library"

const issuerId = "99b16628-15e4-4668-972b-eeff55eeff55"
const keyId = "ABCDEFGHIJ"
const bundleId = "com.example"
const filePath = "/path/to/key/SubscriptionKey_ABCDEFGHIJ.p8"
const encodedKey = readFile(filePath) // Specific implementation may vary
const environment = Environment.SANDBOX

const client =
        new AppStoreServerAPIClient(encodedKey, keyId, issuerId, bundleId, environment)

const appReceipt = "MI..."
const receiptUtil = new ReceiptUtility()
const transactionId = receiptUtil.extractTransactionIdFromAppReceipt(appReceipt)
if (transactionId != null) {
    const transactionHistoryRequest: TransactionHistoryRequest = {
        sort: Order.ASCENDING,
        revoked: false,
        productTypes: [ProductType.AUTO_RENEWABLE]
    }
    let response: HistoryResponse | null = null
    let transactions: string[] = []
    do {
        const revisionToken = response !== null && response.revision !== null ? response.revision : null
        response = await client.getTransactionHistory(transactionId, revisionToken, transactionHistoryRequest, GetTransactionHistoryVersion.V2)
        if (response.signedTransactions) {
            transactions = transactions.concat(response.signedTransactions)
        }
    } while (response.hasMore)
    console.log(transactions)
}
```

### 促进提供签署

```typescript
import { PromotionalOfferSignatureCreator } from "@apple/app-store-server-library"

const keyId = "ABCDEFGHIJ"
const bundleId = "com.example"
const filePath = "/path/to/key/SubscriptionKey_ABCDEFGHIJ.p8"
const encodedKey = readFile(filePath) // Specific implementation may vary

const productId = "<product_id>"
const subscriptionOfferId = "<subscription_offer_id>"
const appAccountToken = "<app_account_token>"
const nonce = "<nonce>"
const timestamp = Date.now()
const signatureCreator = new PromotionalOfferSignatureCreator(encodedKey, keyId, bundleId)

const signature = signatureCreator.createSignature(productId, subscriptionOfferId, appAccountToken, nonce, timestamp)
console.log(signature)
```

## 支助

只有最新的主要版本的图书馆才会收到更新,包括安全更新. 因此,建议更新新的主要版本.

## 常见问题

### @apple/app-store-server-library 是什么？

App Store 服务器库

### 如何安装 @apple/app-store-server-library？

在项目目录运行 npm install @apple/app-store-server-library，或使用 pnpm add / yarn add / bun add。

### @apple/app-store-server-library 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @apple/app-store-server-library 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @apple/app-store-server-library 可以商用吗？

@apple/app-store-server-library 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @apple/app-store-server-library 的下载量有多少？

根据 npm 官方下载统计，@apple/app-store-server-library 在 2026/10/07 – 2026/11/05 这 30 天内被下载 4,331,039 次，日均约 144,368 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @apple/app-store-server-library 还在维护吗？

最新版本 3\.1\.0 发布于 2026/05/06（6 个月前）；至今共发布 14 个版本，其中过去 12 个月发布了 3 个；首次发布于 2023/06/08。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

