欢迎
欢迎使用 CoinCoin 开发者文档
CoinCoin 可使您方便、快捷的将加密货币支付继承至您的业务中,您的客户可以直接使用他们的设备/软件向您付款。
同时,CoinCoin 提供全链路的解决方案,您不必存储地址及任何敏感信息,CoinCoin 会代表您生成支付地址并持续检测区块链状态,并通知您,您的客户的支付状态。
1. 加密货币特性
由于货币存在于区块链网络中,因此会为每订单生成一个唯一的支付地址。这有助于我们将客户与他们的付款情况联系起来,并及时通知您。
2. 订单状态
| 支付状态 | 描述 |
|---|---|
| 收款中(0) | 在订单有效期内,并且没有足额收到您创建时期望的加密货币数量,会持续收款到订单超时 |
| 结算中(2) | 1. 已经足额收到加密货币 2. 订单超时且订单内收到部份加密货币 |
| 已完成(1) | 结算完成的订单 |
| 无效(-1) | 1. 已超时且没有收到任何加密货币 2. 收到的加密货币无法覆盖网络费用的订单 3. 其它无效情况 |
3. 结算中的订单
所有有余额的订单,在超过订单有效期或足额收到加密货币后,均会进行结算,结算完成后,会将加密货币转移至您的平台钱包内。通常需要几分钟 - 几小时。
开始
- API 服务器
API path :https://api.coin2.cc/v1 - 创建 API KEY
- Sign 签名
- 创建订单
- 等待通知
接口
请求验证
1. 生成 APIKey
在对任何请求进行签名之前,您必须通过网站创建一个 API Key。创建 API Key 后,请将如下信息保存在安全的地方:
- APIKey
- SecretKey
2. 发起请求
所有 REST 私有请求头都必须包含以下内容:
CC-APP-ID字符串类型的APIKeyCC-TIMESPAN请求时的时间戳(13 位)CC-SIGN使用 HMAC_SHA1 生成的签名。(详情参阅签名)
所有请求都应该含有 application/json 类型内容,并且是有效的 JSON。
3. 签名
CC-SIGN 由以下部分生成:hmac_sha1(”$CC-APP-ID:CC-TIMESPAN",”secret key”)
For example:
var crypto = require("crypto");const Encrypt = (str, method, key, result = "hex") => { var c = null; if (key) { c = crypto.createHmac(method, key); } else { c = crypto.createHash(method); } c.update(str); return c.digest(result);};const appKey = "asd";const appSecret = "qwe";const timespan = Date.now(); // timespan = 1672106570565const sign = Encrypt(`${appKey}:${timespan}`, "sha1", appSecret);const headers = { "cc-app-id": appKey, "cc-timespan": timespan, "cc-sign": sign, "content-type": "application/json",};创建请求
1. HTTPS
为了您的账户安全,请使用 HTTPS 协议。
2. 限制
公平起见,您每日可以请求 100,000 次 API,并且允许最大同时存在 500 个正在收款的订单。
如果您需要更多,请联系我们 [email protected]。
收款
创建订单
您必须在您操作其他 API 之前创建订单。
请求
方法:POST
路径:/order/create
参数:
| 参数 | 含义 |
|---|---|
| payment_id | 自定义订单 ID(长度 8-32 位,仅允许包含数字、大小写字母、下划线) |
| price | 自定义支付金额(最小值 10) |
| expired | 自定义超时时间,默认为 6 小时(Int, 1-48) |
Request example:
POST /order/createbody{ "payment_id":"EX100100100", "price": 100, "expired": 12}响应
HTTP 状态码: 200
参数:
| 参数 | 含义 |
|---|---|
| payment_id | 订单 ID |
| address | 收款地址 |
| amount | 收款金额 |
| create_time | 订单创建时间戳 |
| expired_time | 订单过期时间戳 |
| expired | 订单过期时间(h) |
| network | 转账网络 |
| coin | 加密货币 |
| state | 订单状态。0:收款中;1:结算中;2:已完成; |
Response example:
{ "payment_id": "EX100100100", "address": "coincoinresponseexample", "amount": 100, "create_time": 1609434000000, "expired_time": 1609520400000, "expired": 8, "network": "tron", "coin": "usdt", "state": 0}您可以将返回的 ‘address’,发送给您的顾客进行收款,当收款完成时,我们会通知您创建的 webhook 地址。
当收到的金额少于 ‘amount’ 时,订单将处于 ‘未足额收款’ 状态,当收到的金额大于等于 ‘amount’ 时,订单将被完成。
订单的最大有效时间为 48 小时。
开发者 Webhook
请求
方法:POST
路径:开发者创建的回调地址(webhook)
参数:
| 参数 | 含义 |
|---|---|
| payment | 订单详情 |
| payment.address | 创建订单时创建的地址 |
| payment.amount | 用户实际支付的金额 |
| payment.payment_id | 商户订单号 |
| collected | 已经收到的加密货币数量 |
| state | 订单状态 |
Request example:
{ "payment": { // 订单内容 "address": "coincoinresponseexample", "payment_id": "merchant's order ID", "network": "tron", // tron ethereum "coin": "usdt", // usdt eth trx btc bnb "amount": 100.0 // 加密货币收款数量 }, "collected": { // 已收到加密货币数量,基础逻辑为只看目标收款数量,只要不满足订单都将继续 "usdt": 50 }, "state": 1}响应
HTTP 状态码: 必须响应 200 状态码
当您的客户多次对一个地址进行付款时,我们会多次的通知您,直至订单完成或订单超时(最大 48 小时)。
