- 非托管
- 款项直达您的钱包
- 9 个网络 · USDT 和 USDC
轻松接收加密货币。
款项直达您的钱包。
为网站、App 或机器人提供开箱即用的加密支付网关。一次请求创建账单,把顾客引导到我们的支付页面,链上确认付款后,您会收到 Webhook 通知。
- 沙盒测试,无需真实资金
- 提供 Node、PHP、Python、Go 客户端
- 带签名、自动重试的 Webhook
a1f3…9c0e · TRON选择币种
请转账准确金额
已检测到付款
正在等待 TRON 网络确认
确认数
TRON:19 个区块,约 1 分钟
已支付
49.99 USDT 已到达商店钱包
invoice.paid → 您的服务器 200 OK您专注销售,我们盯紧区块链。
Coinetic 为每位顾客分配独立地址,捕获付款,等待足够的确认数后,才通知您的服务器“已支付”。资金从顾客钱包直接转入您的钱包,不经过我们。
9 个网络,顾客手里有什么币就用什么币付
支持原生币、USDT 和 USDC。代币仅按白名单中的合约地址入账,伪造的“USDT”无法改变账单状态。
三步即可开始接收加密货币
您无需部署节点、在服务器上管理钱包或编写智能合约。支付页面、汇率、地址和确认都由我们负责。
import { CoineticClient } from "./cryptopay.js";
const cp = new CoineticClient({
baseUrl: "https://pay.coinetic.money",
keyId: process.env.API_KEY,
secret: process.env.API_SECRET, // 仅保存在服务器端
});
const invoice = await cp.createInvoice({
order_id: "ORDER-1001",
price_amount: "49.99", // 字符串,而非数字
price_currency: "USD",
return_url: "https://shop.example/orders/ORDER-1001",
}, "order-ORDER-1001"); // Idempotency-Keyrequire 'Cryptopay.php';
$cp = new \Cryptopay\Client('https://pay.coinetic.money', getenv('API_KEY'), getenv('API_SECRET'));
$invoice = $cp->createInvoice([
'order_id' => 'ORDER-1001',
'price_amount' => '49.99',
'price_currency' => 'USD',
'return_url' => 'https://shop.example/orders/ORDER-1001',
], 'order-ORDER-1001');from cryptopay import CoineticClient
cp = CoineticClient("https://pay.coinetic.money", os.environ["API_KEY"], os.environ["API_SECRET"])
invoice = cp.create_invoice({
"order_id": "ORDER-1001",
"price_amount": "49.99",
"price_currency": "USD",
"return_url": "https://shop.example/orders/ORDER-1001",
}, "order-ORDER-1001")cp := &cryptopayclient.Client{
BaseURL: "https://pay.coinetic.money",
KeyID: os.Getenv("API_KEY"),
Secret: os.Getenv("API_SECRET"),
HTTP: &http.Client{Timeout: 10 * time.Second},
}
inv, err := cp.CreateInvoice(ctx, cryptopayclient.CreateInvoice{
OrderID: "ORDER-1001",
PriceAmount: "49.99",
PriceCurrency: "USD",
ReturnURL: "https://shop.example/orders/ORDER-1001",
}, "order-ORDER-1001")// Express:将顾客引导到 Coinetic 支付页面
app.post("/checkout", async (req, res) => {
const order = await createOrder(req);
const invoice = await cp.createInvoice({ /* 同第 1 步 */ }, `order-${order.id}`);
await saveInvoiceId(order.id, invoice.id);
res.redirect(303, invoice.checkout_url);
});$invoice = $cp->createInvoice([/* 同第 1 步 */], 'order-' . $order['id']);
save_invoice_id($order['id'], $invoice['id']);
header('Location: ' . $invoice['checkout_url'], true, 303);
exit;# Flask
@app.post("/checkout")
def checkout():
order = create_order(request)
invoice = cp.create_invoice({...}, f"order-{order.id}")
save_invoice_id(order.id, invoice["id"])
return redirect(invoice["checkout_url"], code=303)http.Redirect(w, r, inv.CheckoutURL, http.StatusSeeOther)import { verifyWebhook } from "./cryptopay.js";
app.post("/webhooks/coinetic", express.raw({ type: "application/json" }), async (req, res) => {
let event;
try { event = verifyWebhook(process.env.WEBHOOK_SECRET, req.headers, req.body); }
catch (e) { return res.status(e.status ?? 400).end(); } // 签名无效
const inv = await cp.getInvoice(event.data.invoice_id); // 状态以 API 为准
if (inv.status === "paid" || inv.status === "overpaid") await fulfilOnce(inv.order_id);
res.sendStatus(200);
});$headers = array_change_key_case(getallheaders(), CASE_LOWER);
try {
$event = \Cryptopay\verify_webhook(getenv('WEBHOOK_SECRET'), $headers, file_get_contents('php://input'));
} catch (\Cryptopay\CryptopayException $e) {
http_response_code($e->status); exit;
}
$inv = $cp->getInvoice($event['data']['invoice_id']); // 状态以 API 为准
if (in_array($inv['status'], ['paid', 'overpaid'], true)) fulfil_once($inv['order_id']);
http_response_code(200);from cryptopay import verify_webhook, CryptopayError
@app.post("/webhooks/coinetic")
def webhook():
headers = {k.lower(): v for k, v in request.headers.items()}
try:
event = verify_webhook(os.environ["WEBHOOK_SECRET"], headers, request.get_data())
except CryptopayError as e:
return "", e.status
inv = cp.get_invoice(event["data"]["invoice_id"]) # 状态以 API 为准
if inv["status"] in ("paid", "overpaid"):
fulfil_once(inv["order_id"])
return "", 200客户端都是无依赖的单文件,下载适合您语言的版本。分步说明请见快速开始。
REST 加 Webhook。幂等,可预期。
精简的 API,很难被用错。在商户后台几分钟即可拿到沙盒密钥。
- 每个写操作请求都带
Idempotency-Key超时后重试会返回同一张账单,而不会重复创建。 - HMAC-SHA256 签名密钥本身从不在网络上传输;时间戳和 nonce 可防止重放攻击。
- 金额使用字符串绝不使用 float:采用十进制字符串和资产的最小单位。
- 签名参考值用任何语言自行实现的客户端,一分钟即可完成校验。
POST /v1/invoices HTTP/1.1
Authorization: CP-HMAC key=ak_live_…, ts=1760000000, nonce=…, sig=…
Idempotency-Key: order-ORDER-1001
Content-Type: application/json
{"order_id":"ORDER-1001","price_amount":"49.99","price_currency":"USD"}{
"id": "inv_x7k2…",
"status": "created",
"checkout_url": "https://pay.coinetic.money/pay/inv_x7k2…#t=…",
"expires_at": "2026-10-12T15:30:00Z",
"livemode": true
}通常要花半年开发的功能,这里都已就绪
支付页面
二维码、精确金额、网络提示、实时状态和倒计时。支持俄语和英语,提供浅色与深色主题。
资金进入您的钱包
BTC、LTC、TRON 使用由您的 xpub 派生的地址;EVM 使用只会归集到您钱包的智能地址;Solana 使用您自己的地址。
锁定汇率
以 USD 或 EUR 定价。币种金额按三家交易所的中位数计算,锁定 20 分钟。USDT 和 USDC 按 1:1 计算。
少付与多付
独立的状态,可向同一地址补付,容忍钱包的舍入误差;稳定币逾期付款也会自动入账。
可靠送达的 Webhook
HMAC 签名,24 小时内持续重试,同一账单的事件按顺序送达,后台提供投递日志和重新发送功能。
沙盒
与生产环境相同的 API,无需真实资金:通过「精确支付」「少付」「多付」「支付一半」按钮逐一验证各种场景。
我们动不了您的钱。技术上就做不到。
收款只需要您钱包的公开信息。Coinetic 不索取、也不保存私钥和助记词。顾客拿到的地址由您的密钥派生,我们会进行三重校验。
- 仅使用公钥BTC、LTC 和 TRON 使用 xpub/zpub,Solana 使用地址,EVM 网络使用归集钱包。
- 更换钱包有延迟期需要密码、二次验证、邮件确认,并留有撤销时间,即使有人登录了您的后台也无济于事。
- 手续费单独结算我们不从付款中扣除比例:每月出具一次账单,您用加密货币支付即可。
Coinetic 与托管式支付网关有何不同
| 托管式支付网关 | Coinetic | |
|---|---|---|
| 付款后资金在哪里 | 提现前留在支付网关账户中 | 直接进入您的钱包 |
| 谁能动用资金 | 支付网关 | 只有您 |
| 提现 | 需申请,有限额,要等待 | 无需提现 |
| 手续费 | 通常从付款中直接扣除 | 每月单独出具一张账单 |
| 如果支付网关被攻破 | 所有商户的余额都面临风险 | 我们没有您资金的密钥 |
只有链上确认后才标记“已支付”
只有区块链监听服务才能更改状态,支付页面、顾客或 URL 参数都不行。如果区块被回滚,您会收到 invoice.reorged。
created账单已创建,顾客正在选择币种
awaiting_payment已分配地址和精确金额
detected链上已出现付款,暂不发货
confirming已打包进区块,确认中 n/N
paid已确认,可以发货
各网络需要等待的确认数,请见「网络与资产」页面。
一次集成,适配任意平台
电商网站
在银行卡旁边放上「使用加密货币支付」按钮。顾客可以用任意钱包付款,也可以直接从交易所付款。
SaaS 与数字商品
账单中的 metadata 可将付款与用户及套餐关联,收到 Webhook 后自动交付。
App 与机器人
iOS、Android、Telegram:打开支付链接,再通过 return_url 让用户返回。
常见问题
什么是非托管加密支付网关?
即不替客户保管资金的支付网关。Coinetic 为顾客分配由您的公钥派生的地址,监听区块链并通知您付款结果,而资金本身直接进入您的钱包。我们无法动用或转移这些资金。
接入需要多长时间?
写代码只需一个晚上:创建账单、重定向和 Webhook 处理程序。在此之前,需要在商户后台注册、配置收款钱包并在沙盒中测试。查看完整接入步骤。
支持哪些加密货币和网络?
支持 BTC、LTC、ETH、BNB、POL、TRX、SOL,以及 USDT 和 USDC,覆盖 9 个网络:Bitcoin、Litecoin、Ethereum、BNB Smart Chain、Polygon、Base、Arbitrum One、TRON 和 Solana。查看完整列表。
我需要自己部署节点或在服务器上保存私钥吗?
不需要。网络监听、地址和确认都由 Coinetic 负责。您的服务器上只需保存用于请求签名的 API 密钥和 Webhook 签名密钥。
我用什么货币定价?
可以用 USD、EUR、USDT 或 USDC。顾客看到的是所选币种的金额;对于 BTC、ETH 等波动较大的资产,汇率按三家交易所的中位数锁定 20 分钟。
付款什么时候算作已支付?
只有达到所需的网络确认数后才算,例如 Bitcoin 需要 2 个区块,TRON 需要 19 个区块。“已支付”状态由区块链监听服务设置,而不是支付页面或顾客。如果区块被回滚,您会收到 invoice.reorged Webhook。
如果顾客少付了,或者用错了网络怎么办?
少付会进入 underpaid 状态,顾客可向同一地址补付余款。通过其他 EVM 网络或伪造代币的转账不会入账,但会显示在账单中,了解详情。
可以给顾客退款吗?
可以。调用 POST /v1/refunds 或在后台点击按钮即可创建退款申请。由于款项已进入您的钱包,您需要自行转账并记录交易哈希;在 EVM 网络中,Coinetic 会自动在链上找到这笔交易并发送 refund.sent Webhook。了解退款流程。
Coinetic 支持移动 App 和 Telegram 机器人吗?
支持。账单由您的服务器创建,App 或机器人在系统浏览器中打开支付链接即可。API 密钥不会进入 App。如何打开支付页面。
费用是多少?
仅对已支付的账单按比例收费,无接入费;手续费每月单独出具一张账单。价格与计算器。