@finteqhub/sdk-js

中文文档
0.17.0发布于 2026/09/24TypeScriptCommonJS零依赖近 30 天下载 2600

用于与处理 API 交互的 SDK

中文使用文档
文档目录10 节
  1. 检索和错误诊断
  2. SDK 识别头
  3. API 密码
  4. 处理.getSession ()
  5. 正在处理. sumitForm( 数据)
  6. 使用量
  7. 只提交
  8. 从会话数据渲染窗体
  9. 释放
  10. Beta 发布

处理 - sdk

使用 new Processing(options: ProcessingOptions) 以创建处理对象实例。 处理对象是处理 SDK 的切入点 .

interface ProcessingOptions {
  apiUrl: string;
  fingerprintVisitorId: string;
  sessionId: string;
  isSecure?: boolean; // default false
  retryOptions?: RetryOptions; // default {}
}

const processing = new Processing({
  apiUrl: 'api-url',
  fingerprintVisitorId: 'fingerprint-visitor-id',
  sessionId: 'session-id',
});

构造器验证其选项并扔出一个 TypeError 当它们不是对象时, 当它们包含一个未知的密钥( 例如拼写错误) issecure),何时 apiUrl, (中文(简体) ), fingerprintVisitorId 或者说 sessionId 缺少, 是否为空字符串, 当 isSecure 不是一个布尔,或者何时 retryOptions 格式错误( 见 检索和错误诊断) (中文(简体) ).

检索和错误诊断

失败的 HTTP 请求会自动以指数回放重试( S)100ms → 200ms → 500ms → 1000ms → 2000ms; 第5回等2000ms后每回试. 可以通过可选配置回覆 retryOptions 构造器选项 :

interface RetryOptions {
  retryCount?: number; // number of retries after the initial attempt, default 5; 0 disables retries
  retryStatusCode?: (statusCode: number) => boolean; // default: statusCode < 200 || statusCode === 408 || statusCode >= 500
}

const processing = new Processing({
  apiUrl: 'api-url',
  fingerprintVisitorId: 'fingerprint-visitor-id',
  sessionId: 'session-id',
  retryOptions: { retryCount: 3 },
});

要完全禁用重试, 请通过 retryCount: 0 如0.11.0所示,每一份请求都会发出一次。 错误诊断RequestError,则 console.error 仍可收集:

const processing = new Processing({
  apiUrl: 'api-url',
  fingerprintVisitorId: 'fingerprint-visitor-id',
  sessionId: 'session-id',
  retryOptions: { retryCount: 0 },
});

建筑师扔出一个 TypeError 何时 retryOptions 不是物体, retryCount 不是一个非负整数,或 retryStatusCode 不是一个函数.

网络出错( 浏览器完全无法到达服务器, 例如 ) . TypeError: Failed to fetch),或者在读取反应机体时连接下降)也总是被重试.

每一次重试都用 console.warn当请求最终失败时, SDK 日志 console.error (单位:千美元)sdk-js: request failed: <message>完全诊断的垃圾堆和拒绝的垃圾堆 RequestError 谁 diagnostics 字段载有同样的有效载荷——包括在您错误报告中. diagnostics.kind 告诉失败阶层:

  • "network" ——浏览器从未获得完整的响应(例如. TypeError: Failed to fetch,或无法读取尸体; diagnostics.error 描述抛出的错误, diagnostics.response.status 当信头在故障前到达时就在场, message 实值 request to <url> failed after N attempt(s): ...· ;
  • "http_error" 错误反应(非200状态,或 error (a) 实体内; message 是来自响应机构(或 unexpected response status <code> 当尸体没有的时候, diagnostics.response.status 带有 HTTP 状态,并 diagnostics.response.error 机构错误文本;
  • "invalid_json" - 反应机构不是有效的JSON diagnostics.error (解析出的错误;其信息遵循与机构相同的政策——为非200个进行消毒,为200个答复省略)和 diagnostics.response 已经设定.

每个 diagnostics 有效载荷还包括:

  • sdkVersion· ;
  • request:url,方法, x-request-id,会话 id 和 任意日志 attempts: [{ durationMs, status?, error? }] 尝试持续时间有助于从绞刑(出站/手摇)中看出即时失败(DNA/连接被拒绝);
  • response.body 对于非200个答复——短到500个带有长数字的字符被蒙住(***200份答复的正文从未列入,因为它可能携带会议全权证书;请求机构从未列入任何地方;
  • response.error - 那个 error 对于任何状态(包括200份答复,包括: error 字段);它是一个商业错误文本,因此既不被截断,也不被遮盖;
  • environment数字 : navigator.onLine, (中文(简体) ), document.visibilityState, (中文(简体) ), navigator.connection (单位:千美元)effectiveType编号 :rtt编号 :downlink只有铬),时间戳.

无论复试是否启用,都要收集诊断.

SDK 识别头

SDK的每个请求都带有一个额外的标题:

x-pgw-sdk: sdk-js/<version>

该值包含 SDK 名称和版本( 与 SDK 同步) package.json ——例如 sdk-js/0.11.0. 后端使用这个头来识别来自官方SDK集成的流量——例如当安全固定放行时通知受影响的商人. 它不影响认证或请求路由.

每个请求都会自动添加标题,不能禁用.

API 密码

处理.getSession ()

使用 processing.getSession 以获取会话信息(支付方法、证书字段、业务金额和货币、入帐凭证)来制作表格。 这是可选的: submitForm 并不依赖于它,可以在构建实例后立即被调用.

processing
  .getSession()
  .then(result => console.log(result))
  .catch(error => console.warn(error));

正在处理. sumitForm( 数据)

使用 processing.submitForm 以提交交易。 当呼叫时, processing.submitForm 将试图完成处理交易所需的任何行动。 这种方法返回以响应解决的许诺( E){ "type": "redirect", "redirectUrl": string})或描述失败的错误.

processing
  .submitForm(data)
  .then(result => console.log(result))
  .catch(error => console.warn(error));

使用量

只提交

最小流量是构建实例和呼叫 submitForm ——无需再提出其他要求. 当您自己的用户界面已经知道要向客户收取什么时使用它(例如,付款方法及其证书字段固定在您一边):

import { Processing } from "@finteqhub/sdk-js";
import FingerprintJS from "@fingerprintjs/fingerprintjs";

const fp = await FingerprintJS.load();
const result = await fp.get();

const processing = new Processing({ apiUrl, fingerprintVisitorId: result.visitorId, sessionId });

const data = {/** collect data from form **/}

processing
  .submitForm(data)
  .then(result => console.log(result))
  .catch(error => console.warn(error));

从会话数据渲染窗体

打电话 getSession 当窗体本身从会话中构建时:可用的支付方法、其证书字段、操作金额和货币. submitForm 不使用结果—— 它只驱动您的 UI :

const processing = new Processing({ apiUrl, fingerprintVisitorId: result.visitorId, sessionId });

const session = await processing.getSession();

const data = {/** collect data from form rendered from session **/}

processing
  .submitForm(data)
  .then(result => console.log(result))
  .catch(error => console.warn(error));

释放

在每个版本的突起更新上 两者 package.json version 财务报告和审定财务报表 SDK_VERSION 内 src/version.ts 他们必须保持同步 所以 x-pgw-sdk 标题报告正确的版本 . src/version.test.ts 如果它们漂移, CI 失败( N)node scripts/sync-version.js 更新 src/version.ts 从 package.json) (中文(简体) ). 说明释放情况 变动情况,包括用于突破变化的移民笔记.

Beta 发布

要尝试修改后, 才会撞出版本, 请运行 publish-beta 工作流程(GitHub – Actions – 发布-β – 运行工作流程,选择你的分支). 它出版 <current version>-beta.<run number> 到 npm 下边 beta {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}这太夸张了 {\fn黑体\fs22\bord1\shad0\3ahbe\4ah00\fscx67\fscy66\2chffffff\3ch808080}我.. latest 而Repo中的版本则保持不变。 安装于 :

npm i @finteqhub/sdk-js@beta

或将工作流程摘要中打印的确切版本标出.

版本与发布记录

@finteqhub/sdk-js 共发布 34 个版本,首次发布于 2022/10/04;过去 12 个月发布了 18 个版本。

版本发布日期距今
0.17.0latest2026/09/241 个月前
0.17.0-beta.1beta2026/09/241 个月前
0.16.02026/09/221 个月前
0.16.0-beta.22026/09/221 个月前
0.16.0-beta.12026/09/221 个月前
0.15.02026/09/181 个月前

关于 @finteqhub/sdk-js 的常见问题

@finteqhub/sdk-js 是什么?

用于与处理 API 交互的 SDK

如何安装 @finteqhub/sdk-js?

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

@finteqhub/sdk-js 支持 TypeScript 吗?

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

@finteqhub/sdk-js 支持 ESM 还是 CommonJS?

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

@finteqhub/sdk-js 可以商用吗?

@finteqhub/sdk-js 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

@finteqhub/sdk-js 的下载量有多少?

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

@finteqhub/sdk-js 还在维护吗?

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