开发者

一个让团队真心喜欢的 API

可预期的 REST、幂等键、带签名的 Webhook,以及含模拟渠道的沙箱,让您在动用一分真实资金之前就完成端到端集成。

创建账户
为开发者而生

一个请求完成您的首笔收款

干净的 REST 接口、可预期的 JSON 响应结构,每个响应都带请求 ID。沙箱与生产环境完全一致:同样的 API、同样的状态、同样的 Webhook。

  • 沙箱与生产密钥,按应用隔离授权
  • HMAC 签名的 Webhook,带防重放保护
  • 每个资金操作调用都支持幂等键
  • 类型化的错误信息,精准告诉您如何修复
  • OpenAPI 规范、Postman 集合与 llms.txt,全部已发布
  • 面向 CRM、ERP 和商店连接器的托管结账会话与扁平回调
POST /v1/collections
curl https://api.capayglobal.com/v1/collections \
  -H "Authorization: Bearer sk_test_..." \
  -H "Idempotency-Key: 9f1c-collect-01" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": "2500",
    "currency": "XAF",
    "country": "CM",
    "method": "mobile_money",
    "msisdn": "2376XXXXXXXX",
    "merchant_reference": "order-1042"
  }'
201 Created
{
  "status": "success",
  "data": {
    "id": "col_9xKQ2mD41Vb8",
    "object": "collection",
    "status": "pending",
    "amount": "2500",
    "currency": "XAF",
    "country": "CM",
    "method": "mobile_money",
    "merchant_reference": "order-1042",
    "fees": {
      "platform_fee": "50",
      "provider_fee": "0",
      "total_fee": "50",
      "bearer": "merchant"
    },
    "net_amount": null,
    "livemode": false,
    "created_at": "2026-08-30T12:04:11Z"
  },
  "request_id": "req_b0f3d2c1"
}

你的第一笔收款

一个请求即可创建支付意图、返回请求 id,并在移动钱包场景把提示推送到付款人手机。沙箱的行为与生产完全一致。

获取测试密钥创建账户后,沙箱密钥会立即出现在你的开发者页面。生产密钥在企业验证通过后开放。
POST /v1/collections
curl -X POST https://api.capayglobal.com/v1/collections \
  -H "Authorization: Bearer sk_test_XXXXXXXXXXXX" \
  -H "Idempotency-Key: col-order-10482-a1b2c3" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": "5000",
    "currency": "XAF",
    "country": "CM",
    "method": "mobile_money",
    "msisdn": "+237650000001",
    "merchant_reference": "order-10482"
  }'
响应
{
  "status": "success",
  "data": {
    "id": "col_7Qm3k1Xa9Zr4",
    "object": "collection",
    "status": "pending",
    "amount": "5000",
    "currency": "XAF",
    "auth_model": "STK_PROMPT",
    "livemode": false
  },
  "request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
201 Created
金额在 API 边界是十进制字符串,在账本中是最小单位,因此不会有浮点误差。每个动钱的调用都接受幂等键,每个响应都带有可向支持团队引用的请求 id。

服务端 SDK

在同一套 REST API 之上的轻量类型化封装,内置幂等与签名校验。

TypeScript and Node即将发布@capay/sdk
导入
import { Capay } from '@capay/sdk';

尚未发布到 npm。上方的导入语句是最终版本,发布后您的集成无需改动。

阅读指南
Python即将发布capay
导入
from capay import Capay

尚未发布到 PyPI。上方的导入语句是最终版本,发布后您的集成无需改动。

阅读指南
PHP即将发布capay/capay-php
导入
use Capay\CapayClient;

尚未发布到 Packagist。上方的导入语句是最终版本,发布后您的集成无需改动。

阅读指南

校验每一个 webhook

签名基于原始报文体计算并以恒定时间比较,时间戳超过 300 秒即被拒绝。绝不要信任未经校验的 webhook。

X-Capay-Signature
# T is the t= value from X-Capay-Signature; delivery.json is the raw body as received.
T=1767225600
SECRET=whsec_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

{ printf '%s.' "$T"; cat delivery.json; } \
  | openssl dgst -sha256 -hmac "$SECRET" -r | cut -d' ' -f1
# Compare the printed hex with each v1= value in the header (either may match
# during a secret rotation), and reject the delivery if |now - T| > 300 s.
签名头
X-Capay-Signature: t=1767225600,v1=6f8b4c2d9e0a1b3c5d7e9f0a2b4c6d8e0f1a3b5c7d9e1f0a2b4c6d8e0f1a3b5c
X-Capay-Event-Id: evt_2n4Kq8Zr41Xa
X-Capay-Event-Type: collection.completed
投递与重试

投递失败会按固定节奏重试:1m, 5m, 30m, 2h, 6h, 12h, 24h, 24h。连续失败 8 次的端点会被停用并通知你,避免失效端点悄悄吞掉事件。

两个签名密钥可以同时生效,因此轮换时不会丢事件。拒绝 300 秒窗口之外的一切,并保存事件 id,让重放变得无害。

工具包的其余部分

机器可读的规范、可直接导入的集合,以及读取它们的工具。

llms.txt为编码助手压平的全部文档,让你的 AI 用我们的原文回答关于我们 API 的问题。OpenAPI 规范从 API 生成的完整契约。导入后即可用任意语言生成客户端。Postman 集合每个端点都带示例请求体和环境变量,可直接对沙箱运行。
命令行即将推出创建测试付款、追踪事件,并把 webhook 重放到你的本地机器。@capay/cli
MCP 服务器即将推出给你的编码助手开放沙箱只读权限,让它用你的真实数据作答。@capay/mcp
收银脚本即将推出在你自己的页面上以弹层打开托管收银页,而不是跳转离开。https://pay.capayglobal.com/capay.js

今天就开始在非洲各地收款

免费创建账户,在沙箱中完成开发,通过审核后正式上线。

创建账户

随时告诉我们您的通道与交易量需求。