@basis-theory/apple-pay-js

中文文档
2.0.4发布于 2026/07/08Apache-2.0TypeScriptCommonJS构建来源已验证近 30 天下载 2.1万

依据 解密 Apple Pay Tokens 的理论工具

中文使用文档
文档目录6 节
  1. 特征
  2. 苹果支付设置
  3. 安装
  4. 节点.js
  5. 反应堆
  6. 灵感

基础理论 苹果支付 JS

Version GitHub Workflow Status (with event) License

用于解密Node.js环境中的 Apple Pay Tokens 工具库.

特征

  • 苹果支付 键盘 解密:安全地解密用户授权的Apple Pay交易令牌,使用易交互界面.

    加密地区支助
    RSA v1 请检查url=值 (帮助)中国✅
    欧共体 v1所有其他国家✅
  • 付款处理证书旋转: 永远不要担心因为证书旋转不可预测的行为而丢失付款. 只要将两个证书都添加到解密上下文中,并放心在旋转窗口时会同时解密出新和旧的令牌.

  • 自动解密策略检测:用于解密苹果的"支付托肯"的透明集成,而不管使用的加密标准如何.

苹果支付设置

使用此软件包的一个先决条件是,您必须完成您的 Merchant Apple Pay 设置 。 这可能是一个耗时的过程,所以下面的指南会帮助您获得分步指示,以获取必要的文件来发布并解密Apple Pay Tokens:

  1. 苹果开发者程序注册
  2. 创建商机标识
  3. 创建付款处理证书
  4. 创建商机身份证书

为了在您前端使用 Apple Pay 来收取付款, Apple 有以下特定指南:

安装

使用国家防范机制安装软件包:

npm install @basis-theory/apple-pay-js --save

或者亚恩:

yarn add @basis-theory/apple-pay-js

节点.js

下面的例子显示如何使用来自此寄存器的样本从文件系统将证书加载到缓冲器中. 但你可以从你的KMS,秘密管理器,配置等设备中装入.

如果您需要帮助理解在自己的系统中解密和操纵各种形式的持卡人数据的风险, 联系我们。 。 。 .

import { ApplePaymentTokenContext } from '@basis-theory/apple-pay-js';
import fs from 'fs';
import token from './test/fixtures/ec/token.new.json';

// create the decryption context
const context = new ApplePaymentTokenContext({
  // add as many merchant certificates you need
  merchants: [
    {
      // optional certificate identifier
      identifier: 'merchant.basistheory.com-old',
      // the certificate and the private key are Buffers in PEM format
      certificatePem: fs.readFileSync(
        './test/fixtures/ec/apple/apple_pay.new.pem'
      ),
      privateKeyPem: fs.readFileSync(
        './test/fixtures/ec/apple/private.new.key'
      ),
    },
    {
      identifier: 'merchant.basistheory.com-new',
      certificatePem: fs.readFileSync(
        './test/fixtures/ec/apple/apple_pay.new.pem'
      ),
      privateKeyPem: fs.readFileSync(
        './test/fixtures/ec/apple/private.new.key'
      ),
    },
    {
      identifier: 'merchant.basistheory.china',
      certificatePem: fs.readFileSync(
        './test/fixtures/rsa/apple/apple_pay.pem'
      ),
      privateKeyPem: fs.readFileSync('./test/fixtures/rsa/apple/private.key'),
    },
  ],
});

try {
  // decrypts Apple's PKPaymentToken paymentData
  console.log(context.decrypt(token.paymentData));
} catch (error) {
  // couldn't decrypt the token with given merchant certificates
}

反应堆

此软件包可用于 反应堆 上下文。 下面的例子说明如何解密苹果支付符并按规定为DPAN提供保险.

const { Buffer } = require('buffer');
const { ApplePaymentTokenContext } = require('@basis-theory/apple-pay-js');
const {
  CustomHttpResponseError,
} = require('@basis-theory/basis-theory-reactor-formulas-sdk-js');

module.exports = async function (req) {
  const {
    bt,
    args: {
      applePayToken: { paymentData, ...applePayToken },
    },
    configuration: {
      PRIMARY_CERTIFICATE_PEM,
      PRIMARY_PRIVATE_KEY_PEM,
      SECONDARY_CERTIFICATE_PEM,
      SECONDARY_PRIVATE_KEY_PEM,
    },
  } = req;

  // creates token context from certificates / keys configured in Reactor
  const context = new ApplePaymentTokenContext({
    merchants: [
      {
        certificatePem: Buffer.from(PRIMARY_CERTIFICATE_PEM),
        privateKeyPem: Buffer.from(PRIMARY_PRIVATE_KEY_PEM),
      },
      {
        certificatePem: Buffer.from(SECONDARY_CERTIFICATE_PEM),
        privateKeyPem: Buffer.from(SECONDARY_PRIVATE_KEY_PEM),
      },
    ],
  });

  try {
    // decrypts Apple's PKPaymentToken paymentData
    const {
      applicationPrimaryAccountNumber,
      applicationExpirationDate,
      ...restPaymentData
    } = context.decrypt(paymentData);

    // vaults Apple Device PAN (DPAN)
    const btToken = await bt.tokens.create({
      type: 'card',
      data: {
        number: applicationPrimaryAccountNumber,
        expiration_month: applicationExpirationDate.slice(2, 4),
        expiration_year: `20${applicationExpirationDate.slice(-2)}`,
      },
    });

    // returns transaction details and vaulted token without sensitive DPAN
    return {
      raw: {
        btToken,
        applePayToken: {
          paymentData: restPaymentData,
          ...applePayToken,
        },
      },
    };
  } catch (error) {
    throw new CustomHttpResponseError({
      status: 500,
      body: {
        message: error.message,
      },
    });
  }
};

灵感

这个软件包灵感来自 盛会特别是 这个叉子。 。 。 .

版本与发布记录

@basis-theory/apple-pay-js 共发布 8 个版本,首次发布于 2023/09/12;过去 12 个月发布了 1 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.0.4latest2026/07/084 个月前
2.0.32025/09/191.1 年前
2.0.22024/01/292 年前
2.0.12024/01/262 年前
2.0.02024/01/182 年前
1.1.02023/09/143 年前

关于 @basis-theory/apple-pay-js 的常见问题

@basis-theory/apple-pay-js 是什么?

依据 解密 Apple Pay Tokens 的理论工具

如何安装 @basis-theory/apple-pay-js?

在项目目录运行 npm install @basis-theory/apple-pay-js,或使用 pnpm add / yarn add / bun add。

@basis-theory/apple-pay-js 支持 TypeScript 吗?

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

@basis-theory/apple-pay-js 支持 ESM 还是 CommonJS?

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

@basis-theory/apple-pay-js 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=16。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@basis-theory/apple-pay-js 可以商用吗?

@basis-theory/apple-pay-js 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@basis-theory/apple-pay-js 的下载量有多少?

根据 npm 官方下载统计,@basis-theory/apple-pay-js 在 2026/10/08 – 2026/11/06 这 30 天内被下载 21,165 次,日均约 706 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@basis-theory/apple-pay-js 还在维护吗?

最新版本 2.0.4 发布于 2026/07/08(4 个月前);至今共发布 8 个版本,其中过去 12 个月发布了 1 个;首次发布于 2023/09/12。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。