Skip to content

SDK 使用指南

更新时间:2026/9/16 11:08:10

概述

DaxPay 为开放支付 API(/unipay/*)提供官方签名 SDK,封装了请求签名、响应验签、回调验签与报文收发,免去手工实现 签名机制 的成本。Go / Java / Node.js / PHP / Python 五语言 SDK 共享同一套契约与黄金测试向量,行为字节级一致。

所有 SDK 只需配置两把钥匙

钥匙用途来源
商户私钥(privateKey签名请求商户生成 RSA 密钥对,私钥自己留存
平台公钥(publicKey验签响应与异步通知管理端「应用配置」中获取

语言与仓库

语言包坐标环境要求仓库
Gogithub.com/opendaxpay/dax-pay-sdk-goGo ≥ 1.21,零第三方依赖Gitee / GitHub
Javacn.daxpay.open:daxpay-open-sdkJava ≥ 8(依赖 Hutool)Gitee / GitHub
Node.js@daxpay/open-sdkNode ≥ 18(ESM + TypeScript)Gitee / GitHub
PHPdaxpay/open-sdkPHP ≥ 7.4(ext-json / openssl / mbstring)Gitee / GitHub
Pythondaxpay-open-sdkPython ≥ 3.10(依赖 cryptography)Gitee / GitHub

当前为源码引入

五个 SDK 均未发布到公共包仓库(Maven Central / npm / PyPI / Packagist),按下方各语言「安装」小节的源码引入方式使用。

快速开始

安装

bash
go get github.com/opendaxpay/dax-pay-sdk-go@main
go
import "github.com/opendaxpay/dax-pay-sdk-go/daxpay"

初始化客户端

go
config := daxpay.Config{
    ServiceUrl: "https://your-domain.com", // 平台网关地址
    MchNo:      "M200000001",              // 商户号
    AppId:      "APP001",                  // 应用 ID
    PrivateKey: merchantPrivateKeyPem,     // 商户私钥(PEM 文本)
    PublicKey:  platformPublicKeyPem,      // 平台公钥(PEM 文本)
    Timeout:    30 * time.Second,
}
client := daxpay.NewClient(config)

支付下单

go
result, err := client.Pay(context.Background(), &daxpay.PayParam{
    BizOrderNo: "PAY20260916001",
    Title:      "测试商品",
    Amount:     100, // 金额,单位分
    Method:     "wechat_qr",
    NotifyUrl:  "https://example.com/notify",
})
if err != nil {
    log.Fatal(err)
}
fmt.Println(result.OrderNo, result.PayBody)

PayResult 主要字段:orderNo(平台订单号)、tradeNo(交易号)、status(订单状态)、payBody(支付参数:二维码链接 / 调起参数 / 跳转 URL)、payBodyTypecode_url / pay_info / redirect_url)。

回调验签

go
// rawBody 为异步通知的 HTTP 原始请求体(勿做任何反序列化预处理)
ok := client.VerifyNotice(rawBody)

通用请求(execute)

便捷方法当前覆盖支付下单;退款、退款同步、订单查询、关单等全部接口均可通过各 SDK 的通用 execute(path, param) 调用:path 为接口地址(如 /unipay/refund),param 为业务参数(mchNo/appId/sign/reqTime 等公共参数与签名由 SDK 自动填充),字段含义见各接口文档

go
result, err := client.Execute(ctx, "/unipay/refund", map[string]any{
    "bizOrderNo": "PAY20260916001",
    "amount":     100,
    "reason":     "用户申请退款",
})

注意事项

  • 密钥格式:各 SDK 接受 PEM 文本(Java/Go/Node/PHP/Python 一致);Python 私钥为 PKCS#8、公钥为 X.509 SPKI 格式。
  • 回调验签必须用原始请求体verifyNotice 需要平台发来的原始报文字符串,先 JSON.parse 再序列化会导致字段顺序/空格变化而验签失败。
  • 时间与金额:SDK 自动按平台规范生成 reqTime(北京时间 yyyy-MM-dd HH:mm:ss);金额单位为(Long/long)。
  • 沙箱联调serviceUrl 指向测试环境部署地址即可,SDK 行为与环境无关。

官方网站 · 基于 GNU LGPL v3.0 协议开源