← 返回 API 文档

快速开始

快速开始

注册商户、准备密钥,并按规范发出你的第一次 API 请求。

快速开始

本文面向需要在自己的服务端对接 Doggie Pay 的开发者。读完后,你可以:

  1. 分清 Checkout 与 Customers 两条产品线,选对接入方式
  2. 正确使用密钥与请求头
  3. 成功发出一次只读调用,确认环境可用

接口根地址

https://api.doggiepay.com

对接用接口都在 /v1/* 下。注意不要打到 /v1/portal/*(商户门户专用),也不要使用内部运维接口。

1. 先选产品线

产品线适合什么场景核心对象常见 Webhook
Checkout一笔订单、一张账单,收一次款Checkout Session(即 Payment)checkout.paid、checkout.expired、checkout.cancelled
CustomersApp 里给用户充值、代用户提现Customer、长期充值地址deposit.credited、withdrawal.*
  • 走 Checkout → 下一篇:用 Checkout 收款
  • 走 Customers → 另有专文(创建客户、入金、提现)
  • 两条线共用鉴权、Request-Id,以及 Webhooks

有一点很重要:链上资金进入的是你的商户余额。如果产品里还有「用户余额」,需要由你自己的系统记账。

2. 接入前准备

  1. 到 merchant.doggiepay.com 注册商户
  2. 在门户创建 Secret Key(形如 dp_live_sk_…),只放在服务端(环境变量或 KMS)
  3. 如需浏览器调用白名单接口,再创建 Publishable Key(dp_live_pk_…)
  4. 配置 Webhook URL,并立刻保存页面上只展示一次的 webhook_secret(whsec_…)。详见 Webhooks

Secret Key 不要写进 App、前端页面或公开仓库。

3. 怎么鉴权

三种凭证

凭证格式放哪里做什么
Secret KeyBearer dp_live_sk_…仅服务端对接默认方式;写操作和敏感查询都用它
Publishable KeyBearer dp_live_pk_…服务端,或白名单场景下的浏览器只能调下表中的接口
门户登录 JWTGoogle 登录会话仅商户门户只用于 /v1/portal/*,不能当对接密钥用

Publishable Key 能调哪些接口

MethodPath
GET/v1/merchant/me
GET/v1/chains
GET/v1/tokens
GET/v1/wallets/{external_user_id}
POST/v1/checkout/sessions

除此之外的对接接口,一律需要 Secret Key。

对接请求必带的头

Authorization: Bearer dp_live_sk_YOUR_SECRET
X-DoggiePay-Request-Id: 550e8400-e29b-41d4-a716-446655440000
Content-Type: application/json
Header是否必填说明
Authorization必填Bearer 加上 Secret 或 Publishable
X-DoggiePay-Request-Id必填UUID v4;响应头会原样回显,方便排障
Idempotency-Key写操作建议带优先用它做幂等;不传时退回用 Request-Id
Content-Type有 JSON 正文时填 application/json

关于重试: 创建、更新类请求如果超时需要重试,请使用同一个 Request-Id(或 Idempotency-Key),并且 body 保持不变。同一 ID、不同 body,会返回 409 request_id_conflict。

4. 统一响应格式

成功时大致是:

{
  "data": { },
  "error": null
}

失败时大致是:

{
  "data": null,
  "error": {
    "code": "unauthorized",
    "message": "Bearer token required"
  }
}
字段类型说明
dataobject | array | null成功时的业务数据
errorobject | null失败时才有
error.codestring稳定、可编程判断的错误码
error.messagestring给人看的说明

5. 发出第一次请求

先查当前已启用的链(Secret、Publishable 都可以):

curl -sS https://api.doggiepay.com/v1/chains \
  -H "Authorization: Bearer dp_live_sk_YOUR_SECRET" \
  -H "X-DoggiePay-Request-Id: $(uuidgen | tr '[:upper:]' '[:lower:]')"

返回的 data 可能类似:

{
  "chains": ["ETH", "BASE"]
}

也可以查代币列表(可加 ?currency=USDC):

curl -sS "https://api.doggiepay.com/v1/tokens?currency=USDC" \
  -H "Authorization: Bearer dp_live_sk_YOUR_SECRET" \
  -H "X-DoggiePay-Request-Id: $(uuidgen | tr '[:upper:]' '[:lower:]')"

6. 常见错误码

HTTPerror.code通常表示
401unauthorized没带或带错 Bearer
401portal_token_not_allowed对接接口用了门户 JWT
403secret_key_required该接口需要 Secret,却用了 Publishable
403merchant_disabled商户已被禁用
400request_id_required缺少 X-DoggiePay-Request-Id
400invalid_request_idRequest-Id 不是合法 UUID
409request_id_conflict同一 Request-Id,但 body 前后不一致

7. 接下来可以看什么

  1. 用 Checkout 收款 — 创建收款会话,打开 Hosted 收银台
  2. Webhooks — 验签;收到 checkout.paid 后再把订单标为已支付
  3. 前端需要支付按钮时,安装 @doggiepay/checkout

常用域名

域名用途
https://api.doggiepay.comREST API
https://merchant.doggiepay.com商户门户(密钥、Webhook、余额)
https://pay.doggiepay.comHosted 收银台 / Claim 页面