# @foxy\.io/apple-pay-decrypt 中文文档

规范地址：https://npmcn.com/package/%40foxy.io/apple-pay-decrypt/

版本：2\.0\.0
npm 元数据更新时间：2022-04-05T12:10:46.743Z
中文译文更新时间：2026-11-15T10:55:15.779Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40foxy.io/apple-pay-decrypt
原文对照：https://npmcn.com/package/%40foxy.io/apple-pay-decrypt/?lang=original
项目主页：https://github.com/FoxyCart/apple-pay-decrypt#readme
源码仓库：https://github.com/FoxyCart/apple-pay-decrypt

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

- 包体积（解压后）：12.8 kB，4 个文件
- 模块格式：CommonJS
- TypeScript 类型：未声明
- 运行依赖：3 个
- 首次发布：2021-05-19T19:47:29.159Z
- 最新版本发布：2021-05-19T19:47:29.616Z
- 近 30 天下载量：6932（2026-10-16 至 2026-11-14，npm 官方下载统计）
- 已发布版本数：1（近 12 个月 0 个）

## 中文简介

启用 Apple Pay 令牌的解密 .

## 安装

```sh
npm install @foxy.io/apple-pay-decrypt
```

也可以使用：`pnpm add @foxy.io/apple-pay-decrypt`、`yarn add @foxy.io/apple-pay-decrypt`、`bun add @foxy.io/apple-pay-decrypt`

## README

# 苹果支付解密

[![npm version](https://img.shields.io/npm/dt/apple-pay-decrypt.svg?style=flat-square)](https://img.shields.io/npm/dt/apple-pay-decrypt.svg) [![npm version](https://img.shields.io/npm/v/apple-pay-decrypt.svg?style=flat-square)](https://www.npmjs.com/package/apple-pay-decrypt)

此软件包允许您解密从 Apple Pay 收到的一个符号 .

这个在 `node` 而不是浏览器,因为它需要内置 `crypto` 软件包和密钥`.pem` 文件),这在客户端上永远不应该存在.

本套件的解密方法主要取自: [加拉·鲁比宝石](https://github.com/spreedly/gala)。 。 。 .

## 开始

```sh
npm i --save apple-pay-decrypt
```

为了解密信物 你需要两个 `.pem` 文档。 一个是证书 一个是钥匙 产生这些问题的过程很复杂.

如果你被卡住的话, [此文档](https://aaronmastsblog.com/blog/apple-pay-certificates/) 也许有帮助.

运行以下命令( 主要是取自撰写的文章 ) [@amast09 (中文(简体) )](https://github.com/amast09)生成您的密钥 :

```sh
openssl ecparam -out private.key -name prime256v1 -genkey
openssl req -new -sha256 -key private.key -nodes -out request.csr
```

那就去那边 [苹果开发者证书管理器](https://developer.apple.com/account/ios/certificate/)。 。 。 .

确定您是否拥有 Merchant Id。 导航到 `Identifiers` => `Merchant IDs` 以确保你有一个,如果没有,创建一个.

转到 `Certificates` => `All`,则 `+` 右边 选择 `Apple Pay Payment Processing Certificate`,通过到 `Generate` 上传 `.csr` 您创建的文件( e)`request.csr`) (中文(简体) ). 请注意: `.csr` 与 `.certSigningRequest`。 。 。 .

下载文件, 将下载为 `apple_pay.cer`。您需要该文件来创建密钥.

```sh
openssl x509 -inform DER -outform PEM -in apple_pay.cer -out temp.pem
openssl pkcs12 -export -out key.p12 -inkey private.key -in temp.pem
```

您需要密码保护您 `.p12` 文档。 把密码放在安全的地方.

你现在有两份要解密Apple Pay符号的文件,但在此之前,你需要把它们转换成 `.pem` 文档.

运行以下命令将其转换为 `.pem` 文件 :

```sh
openssl x509 -inform DER -outform PEM -in apple_pay.cer -out certPem.pem
openssl pkcs12 -in key.p12 -out privatePem.pem -nocerts -nodes
```

毕竟,你应该有一个证书(`certPem.pem`这样的文件:

```
-----BEGIN CERTIFICATE-----
MIIEfzCCBCagAwIBAgIIcDQ4Fbx2jWYwCgYIKoZIzj0EAwIwgYAxNDAyBgNVBAMM
K0FwcGxlIFdvcmxkd2lkZSBEZXZlbG9wZXIgUmVsYXRpb25zIENBIC0gRzIxJjAk
BgNVBAsMHUFwcGxlIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MRMwEQYDVQQKDApB
cHBsZSBJbmMuMQswCQYDVQQGEwJVUzAeFw0xOTAyMjMxNDU2NDFaFw0yMTAzMjQx
NDU2NDFaMIGxMTAwLgYKCZImiZPyLGQBAQwgbWVyY2hhbnQuY29tLmdyYXRpdHVk
ZS5ncmF0aXR1ZGUxRjBEBgNVBAMMPUFwcGxlIFBheSBQYXltZW50IFByb2Nlc3Np
iWlORp7+MRSeIt3sEdnWIhY29xvHSdXgMT6kpaUupattcKtlHnLiYlTJHRRCO20x
2thoxaQriM+gFSnAyzrdaOnVTJHRRCO20xxcarcjHFr9GHRVsoysRC/ThwAqMaTs
XEV5VwHqpLuvzOca/+A5Q1MEkhH4lgNrqs5AhKkI1WZv2AWErjxkXBehvZy5C51n
RNcJ4KOAHTePfdrkQ3YVcyMnTlz2QBT8K/uLkoG/H1U8nNfaxwA5m6FDLoVXatC2
oGI+ctCv5Ge2SsEPaUqJ7zE3BU4UsbRvwiXwbWW42YZ2V2wvASdTiXw3/nv7apD4
H+PXFQuC86CSKNKV58jFZZNQoTlU0K+0rBR63ps4bBonVg4Bp2EBntFu5Du/rXMo
U5qxOgbh3/ZNtUT52AQicdJ0c+IgVYP6sGhVGorxMS0lFQ67qaj6luRaqzVovcGl
wa7DzQxcl0HZh2M/Wj9v2d+oGjlINlD9SAlWA/dWXrQF6kzEMoOJKBakO1SRVwD2
9UMDoM5JUK+iBteSFp6iHB7wyfb8VMwzzU3aSWDC+zrsbGXgQsFJ9ZClMyu/aiWs
rbugF9EtKocCWbODlxbRBp310XkPVcOKamZ0UI8P3+AvuMeXdnrFzUUBZnXU8bWM
RuIiK0QZobngHsRO3J/oT1h9URFflg7MrvbAyHTBPv5bSztOPcxOEIfwd+opq6Bc
MXZ+0fErpK5YW7jcahrPRp63e3FZjiKrHWZPFXXOH3N30VKRMDsKbZepNWu4glVb
YwKcj8BAm4LvxkCLODZVIsqYZbNTzyTWbKiz7G53Rt6XqFaQVlqlSxvA97SUfq62
RNcJ4KOAHTePfdrkQ3YVcyMnTlz2QBT8K/uLkoG/H1U8nNfaxwA5m6FDLoVXatC2
8nG5lEs5hYJ2WG9Yo39m1gyCHeNse5sOrph9Dq7tro5mO+nX3XaVaIi3MHFl9Hq6
uMetisso8rg633J/YpJipiz6MOdpf7Q7LqX6M0i3x4BJZfIa3xZPsUoEYObyGTJI
OtAJHpvnTIoDhBApBiH/sDq97pzcsl4VkngxxEiTEjXYQEIhcVQpG6lU6rX9+ekQ
qDRXQRMETBev1j7Y1w/v2K0CIAlnnXPVX52g5FTadoFyVq2a91sA4ao44VabMaz8
W5k1
-----END CERTIFICATE-----
```

还有一把钥匙`privatePem.pem`看起来像这样

```
Bag Attributes
    localKeyID: 90 C8 20 E7 8A 2A E5 7E 33 06 FD C5 43 47 9F 15 2F DE 73 90 
Key Attributes: <No Attributes>
-----BEGIN PRIVATE KEY-----
8nG5lEs5hYJ2WG9Yo39m1gyCHeNse5sOrph9Dq7tro5mO+nX3XaVaIi3MHFl9Hq6
YwKcj8BAm4LvxkCLODZVIsqYZbNTzyTWbKiz7G53Rt6XqFaQVlqlSxvA97SUfq62
qDRXQRMETBev1j7Y1w/v2K0CIAlnnXPVX52g5FTadoFyVq2a91sA4ao4
-----END PRIVATE KEY-----
```

(不,那些不是我的真正钥匙)

## 使用量

这个 `tokenFromApplePay` 你从Apple Pay那里得到的 会看起来像这样:

```js
{
    "version": "EC_v1",
    "data": "vxae4VFHqdtWakaJ1wqQHyel...<a lot more data>...ggVQsfUxBXR8=",
    "signature": "MIAGCSqGSIb3DQEHAqCA...<a lot more data>...MAAAAAAAA=",
    "header": {
        "ephemeralPublicKey": "MFkwEwYHKoZIzj0CAQYIKoZICZImiZPyLGQBAQwgbWVyY2hhbnQuY29tLmdy332d55suNAl1RIZi3KIT5hwmiSKSch9+6OOGlRZw0xOTAy4jejmO0A==",
        "publicKeyHash": "0aB0KxDCKoZICZImiZPyLGQBAQwoIwz3m6bKxuqPe+F6yQco=",
        "transactionId": "54829332dd6db37d06KoZICZImiZPyLGQBAQw5e6f35059acad43133d792fc139"
    }
}
```

要解密令牌,请导入 `.pem` 文件并创建新文件 `PaymentToken` 带着苹果派的代币 然后用密钥解密.

```js
const PaymentToken = require('apple-pay-decrypt')

const certPem = fs.readFileSync(path.join(__dirname, '../path/to/certPem.pem'), 'utf8')
const privatePem = fs.readFileSync(path.join(__dirname, '../path/to/privatePem.pem'), 'utf8')

const tokenFromApplePay = {...} // from Apple Pay

const token = new PaymentToken(tokenFromApplePay)

const decrypted = token.decrypt(certPem, privatePem)
```

这个 `decrypted` 价值应该是这样的:

```js
{
  applicationPrimaryAccountNumber: '17029283048730',
  applicationExpirationDate: '231231',
  currencyCode: '840',
  transactionAmount: 500,
  deviceManufacturerIdentifier: '544555544456',
  paymentDataType: '3DSecure',
  paymentData: {
    onlinePaymentCryptogram: 'IE0QTuXZlbG9wZXIgUmiQAQojEBhgA=' 
  } 
}
```

然后可以使用您选择的支付处理器(Stripe, Braintree, et al) 来处理从 Apple Pay 的支付.

## 常见问题

### @foxy\.io/apple-pay-decrypt 是什么？

启用 Apple Pay 令牌的解密 \.

### 如何安装 @foxy\.io/apple-pay-decrypt？

在项目目录运行 npm install @foxy\.io/apple-pay-decrypt，或使用 pnpm add / yarn add / bun add。

### @foxy\.io/apple-pay-decrypt 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/foxy\.io\_\_apple-pay-decrypt 是否存在。

### @foxy\.io/apple-pay-decrypt 支持 ESM 还是 CommonJS？

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

### @foxy\.io/apple-pay-decrypt 可以商用吗？

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

### @foxy\.io/apple-pay-decrypt 的下载量有多少？

根据 npm 官方下载统计，@foxy\.io/apple-pay-decrypt 在 2026/10/16 – 2026/11/14 这 30 天内被下载 6,932 次，日均约 231 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @foxy\.io/apple-pay-decrypt 还在维护吗？

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

