SDK 概览
DEEPayment SDK 是接入 Merchant API 的官方方式。五种语言共用同一套线路协议和同一组一致性测试向量,同一个请求无论用哪种语言发出,线路上的字节完全相同。
SDK 用你的 Ed25519 私钥给每个请求签名(RFC 9421),用平台 X25519 公钥加密每个 POST body,验证平台 webhook 签名,并在请求离开你的进程前做本地校验。你永远不需要手工拼 Signature-Input、Content-Digest 或 sealed box envelope。协议细节见鉴权机制。
语言
| 语言 | 包 | 包页面 | 源码 | 环境要求 | 运行时依赖 |
|---|---|---|---|---|---|
| Go | github.com/deepayment/sdk-go | pkg.go.dev | sdk-go | Go 1.24+ | golang.org/x/crypto |
| JavaScript | @support-deepayment/sdk | npm | sdk-js | Node.js 18+ | libsodium-wrappers |
| Python | deepayment | PyPI | sdk-python | Python 3.10+ | pynacl |
| PHP | deepayment/sdk | Packagist | sdk-php | PHP 8.2+,启用 sodium、json、curl | 无 |
| Java | com.deepayment:sdk | Maven Central | sdk-java | JDK 17+ | BouncyCastle、Jackson |
五个包都开源,每种语言一个 GitHub 仓库,在同一个组织下。这些仓库由单一源码树在每次发版时生成,不接受 pull request;问题请联系 DEEPayment 技术支持。
安装
- Go
- JavaScript
- Python
- PHP
- Java
go get github.com/deepayment/[email protected]
import deepayment "github.com/deepayment/sdk-go"
锁定 release tag,包页面列出了全部版本。
npm install @support-deepayment/sdk
import { Client } from '@support-deepayment/sdk';
ES module。
pip install deepayment
from deepayment import Client
composer require deepayment/sdk
use Deepayment\Sdk\Client;
命名空间 Deepayment\Sdk。
<dependency>
<groupId>com.deepayment</groupId>
<artifactId>sdk</artifactId>
<version>0.1.0</version>
</dependency>
import com.deepayment.sdk.Client;
包名 com.deepayment.sdk。版本以包页面列出的最新版本为准。
AI 编程助手 skill
agent skill 把签名方案、各币种方式码及其必填字段、接口清单和资金安全规则打包给 Claude Code、Cursor、Codex 等支持 skills 格式的助手。安装后可以直接让助手替你写接入代码:
npx skills add deepayment/skill
源码与手动安装说明:github.com/deepayment/skill。skill 与 SDK 出自同一源码树,随 SDK 一起更新。
SDK 做什么
- 签名与加密。 固定 RFC 9421 profile 的 Ed25519 请求签名、RFC 9530
Content-Digest、每个签名POSTbody 的 X25519 sealed box。签名GET无 body,对 query 签名。 - 验证 webhook。 摘要、事件 id、时间窗、按
keyid选公钥、Ed25519 签名。见Webhook。 - 发送前校验。 顶层必填、金额格式、
webhookUrl协议、方式码以及网关对该币种要求的 extra 字段。不通过的请求不会离开你的进程。见订单。 - 错误分类。 每个错误都告诉你请求有没有发出去,让你能在"可以判负"和"结果未知、先查询"之间做对决定。见错误。
SDK 不做什么
- 不自动重试。 创建超时不会自动重发。自己用
merchantOrderNo查询,或原样重发;见订单。 - 不做格式校验。 手机号位数、邮箱格式、证件号、银行代码由网关校验。SDK 只查有没有填,不查格式,因此不会与网关漂移。
- 不强制枚举。 币种、国家、方式码常量只是提示,未知值原样透传,由网关判定。
- 不打日志、不读环境变量、不 panic。 SDK 不会打印请求 body,也不会从环境读取配置。
版本
五个包各自发版,只在内容变化时发。一次协议变更会带来五个版本,单一语言的修复只发一个。每个仓库带 CHANGELOG.md 记录各版本变化。上面 Go 和 Java 的安装命令已经带了版本;JavaScript、Python、PHP 安装最新版后,请在自己的依赖清单里锁定(package-lock.json、requirements.txt 或 poetry.lock、composer.lock)。升级前先读 changelog。
金额是字符串
请求、响应、webhook、余额、汇率、回单里的所有金额都是 decimal string,如 "100.00"。amount 传 JSON number 会在发送前被 SDK 拒绝。全程保持字符串,不要解析成浮点数。