@commercetools/connect-payments-sdk

中文文档
1.6.1发布于 2026/10/23ISCTypeScriptCommonJS近 30 天下载 5056

为商务工具支付SDK

中文使用文档
文档目录6 节
  1. 安装
  2. 快开始
  3. 配置
  4. HTTP 中间软件配置
  5. 什麽 setupPaymentSDK 返回时
  6. 自定义类型

@ 商业工具/ 连接- 支付- sdk

建设通商工具支付连接器的基金会图书馆. 它处理每个连接器需要的所有锅炉板:商务工具API客户端,会话验证,JWT认证,请求上下文传播,自定义类型管理,以及同时进行修改上的重试逻辑,因此连接器作者可以专注于PSP特定的业务逻辑.

安装

npm install @commercetools/connect-payments-sdk

快开始

打电话 setupPaymentSDK 应用程序启动时一次。 它将所有服务和认证钩连接在一起,并作为一个单一对象返回.

import {
  setupPaymentSDK,
  Logger,
  RequestContextData,
} from '@commercetools/connect-payments-sdk';
import { getRequestContext, updateRequestContext } from './context';
import { config } from './config';

// Adapt your application logger to the SDK Logger interface
class AppLogger implements Logger {
  debug = (obj: object, msg: string) => console.debug(msg, obj);
  info  = (obj: object, msg: string) => console.info(msg, obj);
  warn  = (obj: object, msg: string) => console.warn(msg, obj);
  error = (obj: object, msg: string) => console.error(msg, obj);
}

export const paymentSDK = setupPaymentSDK({
  apiUrl:       config.apiUrl,
  authUrl:      config.authUrl,
  clientId:     config.clientId,
  clientSecret: config.clientSecret,
  projectKey:   config.projectKey,
  sessionUrl:   config.sessionUrl,
  checkoutUrl:  config.checkoutUrl,
  jwksUrl:      config.jwksUrl,
  jwtIssuer:    config.jwtIssuer,

  // Return the current request context (called on every incoming request)
  getContextFn: (): RequestContextData => {
    const { correlationId, requestId, authentication } = getRequestContext();
    return {
      correlationId: correlationId || '',
      requestId:     requestId || '',
      authentication,
    };
  },

  // Merge updated fields back into the request context store
  updateContextFn: (context: Partial<RequestContextData>) => {
    updateRequestContext({
      ...(context.correlationId  ? { correlationId:  context.correlationId  } : {}),
      ...(context.requestId      ? { requestId:      context.requestId      } : {}),
      ...(context.authentication ? { authentication: context.authentication } : {}),
    });
  },

  logger: new AppLogger(),
});

配置

选项说明
apiUrl商务工具 REST API URL(例如:. https://api.europe-west1.gcp.commercetools.com(中文(简体) )
authUrl商务工具认证 URL( 例如). https://auth.europe-west1.gcp.commercetools.com(中文(简体) )
clientId商务工具 API 客户端标识 manage_payments, (中文(简体) ), view_sessions 财务报告和审定财务报表 introspect_oauth_tokens 范围
clientSecretaPI 客户端秘密
projectKey商务工具项目密钥
sessionUrl商务工具会话 API URL( 例如). https://session.europe-west1.gcp.commercetools.com(中文(简体) )
checkoutUrl商务工具检查出 API URL(例如. https://checkout.europe-west1.gcp.commercetools.com(中文(简体) )
jwksUrlJWKS端点用于验证来往的JWT(例如. https://mc-api.europe-west1.gcp.commercetools.com/.well-known/jwks.json(中文(简体) )
jwtIssuer预期 iss 商业工具(如:. https://mc-api.europe-west1.gcp.commercetools.com(中文(简体) )
getContextFn返回当前函数 RequestContextData 从您的请求范围商店
updateContextFn将部分数据合并到请求范围存储( SDK 用于传播) 的函数 correlationId (例如)
logger可选的 自定义日志执行 Logger 接口。 默认内置商务工具结构的日志 .
httpMiddlewareOptions可选的 商务工具 HTTP 中间软件的覆盖(参见 HTTP 中间软件配置) (中文(简体) ).

HTTP 中间软件配置

商务工具 API 客户端与 @commercetools/ts-client。默认情况下, SDK 配置其 HTTP 中间软件如下 :

选项默认理由
enableRetrytrue当商业工具返回503时进行回溯. 在中间软件默认的情况下,这意味着最多10次尝试和200ms后退.
maskSensitiveHeaderDatatrue保留 Authorization 以及来自日志和出错有效载荷的其他敏感头.

过 httpMiddlewareOptions 或设置其他任何 HttpMiddlewareOptions 字段 :

export const paymentSDK = setupPaymentSDK({
  // ...
  httpMiddlewareOptions: {
    retryConfig: {
      maxRetries: 3,
      retryDelay: 300,
      backoff: true,
    },
  },
});

这里提供的值优先于上面的默认值,所以 enableRetry: false 或者说 maskSensitiveHeaderData: false 很荣幸.

什麽 setupPaymentSDK 返回时

const {
  // commercetools API services
  ctCartService,           // get carts, calculate payment amounts, add payments
  ctPaymentService,        // create/update commercetools payments and transactions
  ctOrderService,          // find orders
  ctPaymentMethodService,  // manage stored payment methods (tokenization)
  ctCustomTypeService,     // create/update commercetools custom types (used in post-deploy)
  ctAuthorizationService,  // obtain OAuth2 tokens for outbound calls
  ctRecurringPaymentJobService,

  // Raw commercetools API client (escape hatch for unsupported operations)
  ctAPI,

  // Request context provider
  contextProvider,

  // Fastify hooks — register these on your routes
  sessionHeaderAuthHookFn,      // verifies the commercetools session ID from the `x-session-id` header
  sessionQueryParamAuthHookFn,  // verifies the commercetools session ID from a query parameter
  jwtAuthHookFn,                // verifies a commercetools-issued JWT
  oauth2AuthHookFn,             // verifies a connector OAuth2 token
  authorityAuthorizationHookFn, // checks the caller has the required authority
} = paymentSDK;

自定义类型

SDK飞船预先定义了用于存储支付方法细节的自定义商务工具类型草稿. 在部署后的连接器中注册它们 :

import {
  GenerateCardDetailsCustomFieldsDraft,
  GenerateSepaDetailsCustomFieldsDraft,
  GenerateInterfaceInteractionCustomFieldsDraft,
} from '@commercetools/connect-payments-sdk';

// In post-deploy:
await paymentSDK.ctCustomTypeService.createOrUpdatePredefinedPaymentMethodTypes();
await paymentSDK.ctCustomTypeService.createOrUpdatePredefinedInterfaceInteractionType();

// When processing a notification for a card payment:
const customFields = GenerateCardDetailsCustomFieldsDraft({
  brand: 'Visa',
  lastFour: '4242',
  expiryMonth: 12,
  expiryYear: 2027,
});

对于特定连接器自定义类型, 使用 createOrUpdate 直接 :

await paymentSDK.ctCustomTypeService.createOrUpdate(myConnectorTypeDraft);

版本与发布记录

@commercetools/connect-payments-sdk 共发布 64 个版本,首次发布于 2024/01/09;过去 12 个月发布了 17 个版本。

版本发布日期距今
1.6.1latest2026/10/2318 天前
1.6.02026/10/051 个月前
1.5.02026/09/301 个月前
1.4.02026/09/291 个月前
1.3.02026/09/241 个月前
1.2.22026/08/312 个月前

关于 @commercetools/connect-payments-sdk 的常见问题

@commercetools/connect-payments-sdk 是什么?

为商务工具支付SDK

如何安装 @commercetools/connect-payments-sdk?

在项目目录运行 npm install @commercetools/connect-payments-sdk,或使用 pnpm add / yarn add / bun add。

@commercetools/connect-payments-sdk 支持 TypeScript 吗?

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

@commercetools/connect-payments-sdk 支持 ESM 还是 CommonJS?

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

@commercetools/connect-payments-sdk 需要什么版本的 Node.js?

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

@commercetools/connect-payments-sdk 可以商用吗?

@commercetools/connect-payments-sdk 使用 ISC 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@commercetools/connect-payments-sdk 的下载量有多少?

根据 npm 官方下载统计,@commercetools/connect-payments-sdk 在 2026/10/11 – 2026/11/09 这 30 天内被下载 5,056 次,日均约 169 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@commercetools/connect-payments-sdk 还在维护吗?

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