# @coinsenda/sdk 中文文档

规范地址：https://npmcn.com/package/%40coinsenda/sdk/

版本：1\.9\.0
npm 元数据更新时间：2026-09-14T22:58:24.003Z
中文译文更新时间：2026-11-14T12:38:02.398Z
软件包许可：Apache-2\.0

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

原始 npm 页面：https://www.npmjs.com/package/%40coinsenda/sdk
原文对照：https://npmcn.com/package/%40coinsenda/sdk/?lang=original

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

- 包体积（解压后）：82.1 kB，22 个文件
- 模块格式：CommonJS
- TypeScript 类型：未声明
- 运行依赖：2 个
- 首次发布：2026-03-06T22:13:36.424Z
- 最新版本发布：2026-09-14T22:58:23.824Z
- 近 30 天下载量：2042（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：13（近 12 个月 13 个）

## 中文简介

Coinsenda 的节点JS SDK

## 安装

```sh
npm install @coinsenda/sdk
```

也可以使用：`pnpm add @coinsenda/sdk`、`yarn add @coinsenda/sdk`、`bun add @coinsenda/sdk`

## README

# @ coinsenda/ sdk

节点.js SDK 用于 [科因森达](https://coinsenda.com/) ——密码交换平台.

认证用途 **RSA 公钥签名**在调用 SDK 之前,您必须在当地生成一对密钥并注册 **公钥** 在您的 Coinsenda 账户配置设置中。 这个 **私钥** 从不离开你的环境.

## 安装

```bash
npm install @coinsenda/sdk jsonwebtoken node-rsa
```

## 先决条件

### 1\. 生成 RSA 密钥对

在你的机器上创建一对2048位的RSA密钥对. 存储 **私钥** 安全地说,每一次登录都使用它.

```javascript
const NodeRSA = require('node-rsa');

let key = new NodeRSA({ b: 2048 });
let public_key = key.exportKey('pkcs8-public-pem');
let private_key = key.exportKey('pkcs8-private-pem');

// Save private_key in a secrets manager or env variable — never commit it
```

您也可以用 OpenSSL 生成对 :

```bash
openssl genrsa -out private.pem 2048
openssl rsa -in private.pem -pubout -out public.pem
```

### 2\. 在您的 Coinsenda 账户中注册公用钥匙

签入您的 Coinsenda 账户并打开 **配置文件设置 ~ API 公钥**。 。 。 .

粘贴 **公钥** (PEM格式)并保存. Coinsenda将它存储在您的配置文件中,并用它来验证未来的基于签名的登录.

这个步骤是必要的 **每对密钥一次**。如果您旋转了密钥,请在用新的私人密钥认证前登记新的公钥.

## 认证

每届会议需要:

| 所需经费 | 说明 |
| --- | --- |
| 注册的公用钥匙 | 保存在您的 Coinsenda 配置文件设置中 |
| 私钥 | 本地持有; 用于签名登录符 |

### 完整实例

```javascript
const NodeRSA = require('node-rsa');
const jwt = require('jsonwebtoken');
const { CoinsendaClient, isHttpSuccess } = require('@coinsenda/sdk');

async function authenticate(email, private_key_pem) {
  // 1. Create client
  let client = new CoinsendaClient({ domain: 'coinsenda.com' });

  // 2. Sign a short-lived token with your private key
  let rsa_key = new NodeRSA(private_key_pem, 'pkcs8-private-pem');
  let signed_token = jwt.sign(
    { email: email, iat: Math.floor(Date.now() / 1000) },
    rsa_key.exportKey('private'),
    { algorithm: 'RS256', expiresIn: '5m' }
  );

  // 3. Authenticate via POST /auth/pubkey
  let auth_result = await client.auth.passport.authPubkey({
    data: { signed_token }
  });

  if (!isHttpSuccess(auth_result.status)) {
    throw new Error(`Authentication failed: ${auth_result.status}`);
  }

  let response_data = auth_result.data?.data || auth_result.data;
  client.setJwt(response_data.jwt);
  client.setRefreshToken(response_data.refresh_token);

  return client;
}

// Usage
let client = await authenticate('user@example.com', process.env.COINSENDA_PRIVATE_KEY);

let profile = await client.transaction.user.__get__profile();
console.log(profile.data);
```

### 签名代号中的标识符

您签名的有效载荷必须识别您的 Coinsenda 账户:

| 外地 | 何时使用 |
| --- | --- |
| `email` | 默认 — 匹配您 Coinsenda 账户上的电子邮件 |
| `userId` | 当你知道你的Coinsenda用户身份 |
| `phone_number` | 电话账户 |

总是包含 `iat` (发布时间戳. 该令牌在5分钟后过期——每次登录尝试都会生成新的令牌.

## 环境

```javascript
// Production
new CoinsendaClient({ domain: 'coinsenda.com' });

// Staging
new CoinsendaClient({ domain: 'bitsenda.com' });

// Local development (requires config/environments.local.js)
new CoinsendaClient({ environment: 'local' });
```

复制 `config/environments.local.example.js` 改为 `config/environments.local.js` 并在需要时调整端口.

## 调用终点

认证后,所有请求都包含 `Authorization: Bearer <jwt>` 自动.

采用的方法 `client.{service}.{model}.{method}(data)`数字 :

```javascript
await client.account.user.__get__accounts();
await client.deposit.user.__get__deposits();
await client.withdraw.withdraw.addNewWithdrawPublic({ ... });
```

响应是原始服务器对象 : `{ status, data, headers }`启用 `isHttpSuccess(result.status)` 检查2xx.

## 许可证

阿帕奇 - 2.0

## 常见问题

### @coinsenda/sdk 是什么？

Coinsenda 的节点JS SDK

### 如何安装 @coinsenda/sdk？

在项目目录运行 npm install @coinsenda/sdk，或使用 pnpm add / yarn add / bun add。

### @coinsenda/sdk 支持 TypeScript 吗？

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

### @coinsenda/sdk 支持 ESM 还是 CommonJS？

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

### @coinsenda/sdk 可以商用吗？

@coinsenda/sdk 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @coinsenda/sdk 的下载量有多少？

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

### @coinsenda/sdk 还在维护吗？

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

