Skip to content

常量字典

下面是 OpenAPI v1.2 所有"不会变"的值。任何破坏性变更都会通过 changelog + 版本号公告,并提前通知集成方。

Base URL

环境URL
生产https://api.coinepay.net
沙箱暂无(v1.2 不提供)
本地开发http://localhost:8801

API 前缀

/api/v1/openapi

HTTP 约定

Method全部 POST(项目硬性约束)
请求 Content-Typeapplication/json
响应 Content-Typeapplication/json; charset=utf-8
最大请求体4 MB(4194304 字节)
字符集UTF-8

鉴权

算法HMAC-SHA256
必需 headerX-App-Id / X-Timestamp / X-Nonce / X-Signature
AppID 格式cp_<28 hex>,固定长度 31
Secret 格式64 hex 字符
Secret 前缀展示<前 4 字符>****
Timestamp 单位(不是毫秒)
时间戳容差±300 秒
Nonce 长度8~64 字符
Nonce 防重放窗口600 秒
签名格式lowercase hex
签名长度64 字符

幂等

HeaderIdempotency-Key
必填接口/api/v1/openapi/card/apply / /api/v1/openapi/card/recharge
最大长度128 字符
去重窗口24 小时
冲突状态码409

限流

维度(AppID, IP)
配额600 / 分钟
窗口60 秒(滚动)
超出HTTP 429

Webhook 推送

签名 headerWebhook-Signature
签名格式v1,<hex_hmac_sha256>
签名输入{timestamp}.{raw_body}
事件 ID headerWebhook-Id
时间戳 headerWebhook-Timestamp
类型 headerWebhook-Type
重试退避(秒)[60, 300, 900, 3600, 21600, 86400]
总投递次数7(1 次首投 + 6 次重试,之后 dead_letter
接收方响应头超时5 秒
接收方整请求总超时10 秒
必须 HTTPS✅(生产;dev 环境 AllowHTTP=true 时方可放行 HTTP)
必须公网 IP✅(拒绝私网 / loopback / link-local)
允许端口生产环境仅 443

卡类型(v1.2 OpenAPI 范围)

card_type说明
virtual_l虚拟卡 - L 类
virtual_p虚拟卡 - P 类
virtual_v虚拟卡 - V 类
virtual_r虚拟卡 - R 类
virtual_g虚拟卡 - G 类
virtual_a虚拟卡 - A 类(邮箱必填、不收手机号,见申请虚拟卡

OpenAPI 不接受非虚拟卡

master_e / visa_h / transfer 等不在范围内,会返回 400 openapi_card_type_not_supported

apply 接口不传 card_type

/card/apply 不需要传 card_type,由 header_id 自动推导。

业务前缀

资源前缀示例
card_card_12345
套餐pkg_pkg_67
卡头hdr_hdr_5
充值订单txn_txn_OO20260429110012abc
Webhook 事件evt_evt_550e8400-e29b-41d4-a716-446655440000

常用 SHA-256 常量

输入sha256 hex
空字符串e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
{}44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a

国际化

Header行为
Accept-Language 不传默认中文
Accept-Language: zh-CN中文
Accept-Language: en-US英文

message_key 不受 Accept-Language 影响,永远稳定(用作程序判断)。

凭证

凭证有效期不过期(除非 reset / disable)
凭证数量上限每用户 1 条(v1)
Reset 后旧 secret立即失效
Disable 后401 invalid_credentials;可 enable 恢复

采用 MIT 等价条款发布