RugWard Pay
REST API referansı
RugWard Pay'in tüm satıcı uç noktaları; istek ve yanıt örnekleri, API anahtarı kimlik doğrulaması, hatalar, limitler ve curl, Node.js, Python ve PHP kodu.
Bu sayfada
Temel bilgiler#
| Temel URL | https://rugward.com |
| Biçim | JSON girer, JSON çıkar. Her gövdeyle Content-Type: application/json gönderin (aksi halde 415). Gövdeler birkaç KB ile sınırlıdır. |
| Kimlik doğrulama | Authorization: Bearer rwp_… veya x-api-key: rwp_… içinde bir API anahtarı |
| Tutarlar | en fazla 2 ondalıklı dize olarak USD ("25", "25.50"); coin tutarları ondalık dizelerdir |
| Zamanlar | Unix milisaniyeleri (createdAt, expiresAt, paidAt) |
| Hatalar | {"error": "human readable message"}, bazen "retry": true ile |
Yalnızca sunucudan sunucuya. API anahtarını sunucunuzda tutun. Tarayıcılar satıcı API'sini bir anahtarla çağıramaz (çapraz kaynak isteklerine izin verilmez) ve bir web sayfasındaki anahtar herkese açık olur.
API anahtarları#
Anahtarları panelde API keys altında oluşturun (giriş gerekir). Bir anahtar rwp_ ve ardından 40 harf ve rakamdan oluşur ve yalnızca bir kez gösterilir: hemen sunucunuzun gizli bilgi deposuna kopyalayın. RugWard yalnızca bir SHA-256 hash'i saklar, bu yüzden kaybolan bir anahtar yeniden gösterilemez: yenisini oluşturup eskisini iptal edin. Satıcı başına en fazla 10 anahtar; panel her anahtarın önekini ve en son ne zaman kullanıldığını gösterir.

Bir anahtarın yapabildikleri ve yapamadıkları:
| Bir anahtar yapabilir | Bir anahtar yapamaz |
|---|---|
| fatura oluşturma, listeleme, okuma ve iptal etme | ayarları veya alım adreslerini değiştirme |
| ödeme bağlantısı oluşturma, listeleme ve kapatma | API anahtarı oluşturma, listeleme veya iptal etme |
| webhook'u veya gizli anahtarını değiştirme ya da okuma | |
| test faturası oluşturma |
Böylece sızdırılmış bir anahtar paranızı başka yere yönlendiremez: alım adresleri yalnızca cüzdanınızla giriş yaparak değiştirilebilir.
Uç noktalar#
| Yöntem ve yol | Kimlik doğrulama | Amaç |
|---|---|---|
POST /api/pay/merchant/invoices | anahtar veya oturum | Fatura oluşturma |
GET /api/pay/merchant/invoices | anahtar veya oturum | Faturaları listeleme, en yenisi önce, sayfa başına 50 |
GET /api/pay/merchant/invoices/:id | anahtar veya oturum | Teklifler ve ödemelerle bir faturayı okuma (zinciri de yeniden kontrol eder) |
POST /api/pay/merchant/invoices/:id/cancel | anahtar veya oturum | Ödemesi olmayan açık bir faturayı iptal etme |
GET /api/pay/merchant/links | anahtar veya oturum | Ödeme bağlantılarını listeleme |
POST /api/pay/merchant/links | anahtar veya oturum | Ödeme bağlantısı oluşturma veya kapatma |
GET /api/pay/proof/:id | herkese açık | Ödeme kanıtı (yalnızca paid veya overpaid faturalar) |
Ayarlar, API anahtarları, webhook ve eşleşmeyen ödemeler panelde yönetilir (yalnızca cüzdan oturumuyla).
Fatura oluşturma#
POST /api/pay/merchant/invoices
| Alan | Tür | Zorunlu | Kurallar |
|---|---|---|---|
amountUsd | dize veya sayı | evet | 1 ile 50000 arası, en fazla 2 ondalık |
orderId | dize | hayır | 1–64 karakter: harfler, rakamlar, . _ - : # / |
description | dize | hayır | en fazla 200 karakter, alıcıya gösterilir |
redirectUrl | dize | hayır | https:// URL'si (en fazla 500 karakter), ödemeden sonra gösterilir |
expiresMin | tam sayı | hayır | 15 ile 10080 (7 gün) arası; varsayılan 60 |
curl -X POST https://rugward.com/api/pay/merchant/invoices \
-H "Authorization: Bearer $RUGWARD_PAY_KEY" \
-H "Content-Type: application/json" \
-d '{
"amountUsd": "25.00",
"orderId": "1234",
"description": "1 x T-shirt, size M",
"redirectUrl": "https://shop.example/thanks?order=1234",
"expiresMin": 60
}'{
"id": "Zx3kQ8pL2mN7vR1tY5wB9c",
"url": "https://rugward.com/pay/i/Zx3kQ8pL2mN7vR1tY5wB9c",
"status": "open",
"expiresAt": 1793326882069,
"assets": ["BTC", "ETH-8453", "USDC-8453", "USDT-56", "SOL", "USDC-SOL"]
}Alıcıyı url adresine yönlendirin. assets, alıcının seçebileceği varlık kimliklerini listeler (alım adresi olan etkin coinleriniz).
Aynı istek diğer dillerde:
// Never put the API key in a browser page: call RugWard Pay from your server.
const res = await fetch("https://rugward.com/api/pay/merchant/invoices", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.RUGWARD_PAY_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ amountUsd: "25.00", orderId: "1234", expiresMin: 60 }),
});
const body = await res.json();
if (!res.ok) throw new Error(body.error);
// Save body.id with your order, then send the buyer to body.url
console.log(body.id, body.url);import os, requests
r = requests.post(
"https://rugward.com/api/pay/merchant/invoices",
headers={"Authorization": f"Bearer {os.environ['RUGWARD_PAY_KEY']}"},
json={"amountUsd": "25.00", "orderId": "1234", "expiresMin": 60},
timeout=15,
)
data = r.json()
if r.status_code != 201:
raise RuntimeError(data.get("error"))
print(data["id"], data["url"]) # store the id, redirect the buyer to the url<?php
$ch = curl_init("https://rugward.com/api/pay/merchant/invoices");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("RUGWARD_PAY_KEY"),
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => json_encode(["amountUsd" => "25.00", "orderId" => "1234", "expiresMin" => 60]),
]);
$data = json_decode(curl_exec($ch), true);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($code !== 201) { throw new Exception($data["error"] ?? "RugWard Pay error"); }
header("Location: " . $data["url"]); // send the buyer to the hosted checkoutFatura okuma#
GET /api/pay/merchant/invoices/:id. Bir faturayı okumak blokzincirleri yeni ödemeler için de kontrol eder; bu yüzden göndermeden önce bir ödemeyi doğrulamak için doğru çağrı budur (webhook'larla birlikte).
curl https://rugward.com/api/pay/merchant/invoices/Zx3kQ8pL2mN7vR1tY5wB9c \
-H "Authorization: Bearer $RUGWARD_PAY_KEY"{
"invoice": {
"id": "Zx3kQ8pL2mN7vR1tY5wB9c",
"status": "paid",
"amountUsd": "25.00",
"orderId": "1234",
"description": "1 x T-shirt, size M",
"redirectUrl": "https://shop.example/thanks?order=1234",
"createdAt": 1793323282069,
"expiresAt": 1793326882069,
"paidAt": 1793324100512,
"assets": ["BTC", "ETH-8453", "USDC-8453", "USDT-56", "SOL", "USDC-SOL"],
"test": false,
"quotes": [
{
"id": 4711,
"asset": "USDC-8453",
"amount": "25.000629",
"rateUsd": "1",
"address": "0xYourMerchantAddress…",
"expiresAt": 1793325082069
}
],
"payments": [
{
"txid": "0x…",
"asset": "USDC-8453",
"amount": "24.875626",
"confirmations": 30,
"required": 30,
"confirmed": true,
"seenAt": 1793324012000,
"explorer": "https://basescan.org/tx/0x…"
}
]
}
}quotes: alıcının seçtiği her coin için bir kayıt (tutar, kur, alım adresi, kur sabitleme bitişi).payments: bu fatura için görülen her işlem;confirmations,requiredsayısı veconfirmedile.- Base splitter ödemelerinde
amountsize ulaşan tutardır (%99,5).
Faturaları listeleme#
GET /api/pay/merchant/invoices?before=<createdAt>: sayfa başına 50, en yenisi önce. Sonraki sayfayı almak için aldığınız son faturanın createdAt değerini iletin.
curl "https://rugward.com/api/pay/merchant/invoices" \
-H "Authorization: Bearer $RUGWARD_PAY_KEY"
# next page: pass the createdAt of the last invoice you received
curl "https://rugward.com/api/pay/merchant/invoices?before=1793323282069" \
-H "Authorization: Bearer $RUGWARD_PAY_KEY"{
"invoices": [
{
"id": "Zx3kQ8pL2mN7vR1tY5wB9c",
"status": "open",
"amountUsd": "25.00",
"orderId": "1234",
"description": "1 x T-shirt, size M",
"createdAt": 1793323282069,
"expiresAt": 1793326882069,
"paidAt": null
}
]
}Fatura iptali#
POST /api/pay/merchant/invoices/:id/cancel (gövde yok). Yalnızca fatura open durumundayken ve hiçbir ödeme görülmemişken çalışır; aksi halde 409.
curl -X POST https://rugward.com/api/pay/merchant/invoices/Zx3kQ8pL2mN7vR1tY5wB9c/cancel \
-H "Authorization: Bearer $RUGWARD_PAY_KEY"
# 200 {"ok":true}
# 409 {"error":"Only your open invoices without payments can be canceled."}Ödeme bağlantıları#
{amountUsd, description?, redirectUrl?} ile POST /api/pay/merchant/links yeniden kullanılabilir bir bağlantı oluşturur; {"deactivate": "<link id>"} bir bağlantıyı kapatır. GET, uses, active ve createdAt ile en fazla 100 bağlantı listeler. Önce satıcı koşullarının kabul edilmesi gerekir. Bkz. Ödeme bağlantıları.
curl -X POST https://rugward.com/api/pay/merchant/links \
-H "Authorization: Bearer $RUGWARD_PAY_KEY" \
-H "Content-Type: application/json" \
-d '{"amountUsd": "15", "description": "Monthly membership", "redirectUrl": "https://shop.example/welcome"}'
# 201 {"id":"k33JZ0ij5F2yLDprwrQgjN","url":"https://rugward.com/pay/l/k33JZ0ij5F2yLDprwrQgjN"}
# list your links
curl https://rugward.com/api/pay/merchant/links -H "Authorization: Bearer $RUGWARD_PAY_KEY"
# turn one off
curl -X POST https://rugward.com/api/pay/merchant/links \
-H "Authorization: Bearer $RUGWARD_PAY_KEY" -H "Content-Type: application/json" \
-d '{"deactivate": "k33JZ0ij5F2yLDprwrQgjN"}'Hatalar#
{ "error": "Amount in USD, e.g. 25 or 25.50." }
// some temporary errors also carry "retry": true| HTTP | Anlamı | Ne yapmalı |
|---|---|---|
| 400 | geçersiz giriş (mesaj hangi alan olduğunu söyler) | isteği düzeltin |
| 401 | API anahtarı eksik veya geçersiz | anahtarı kontrol edin; iptal edilmiş olabilir |
| 403 | siteler arası istek reddedildi, satıcı koşulları kabul edilmedi, hesap askıya alındı veya işleme anahtarlarla izin verilmiyor | mesajı okuyun |
| 404 | bulunamadı veya size ait değil | kimliği kontrol edin |
| 409 | çakışma (örneğin ödenmiş bir faturayı iptal etme veya zaten 100 aktif bağlantı) | mesajı okuyun |
| 415 | gövde JSON değil | Content-Type: application/json gönderin |
| 429 | hız limiti veya son bir saatte 500 fatura | bekleyin ve artan aralıklarla yeniden deneyin |
| 451 | bölgenizde kullanılamıyor | — |
"retry": true ile 503 | bir blokzincir veya fiyat kaynağına geçici olarak ulaşılamıyor | birkaç saniye sonra yeniden deneyin |
Limitler#
- İstek hızı: tüm
/api/pay/*uç noktalarında IP adresi başına dakikada yaklaşık 20 istek, ayrıca uç nokta grubu başına dakikada 30 sınırı. Yoklama yerine webhook kullanın; yoklama yapıyorsanız açık fatura başına dakikada bir kez fazlasıyla yeterlidir. - Faturalar: satıcı başına saatte 500.
- Ödeme bağlantıları: satıcı başına 100 aktif; her bağlantı saatte en fazla 100 fatura oluşturur.
Entegrasyon kontrol listesi#
- Müşteri ödemeye geçtiğinde faturayı sunucunuzdan oluşturun;
id'yi siparişinizle birlikte kaydedin. - Müşteriyi
urladresine yönlendirin. invoice.paidveyainvoice.overpaid(webhook) geldiğinde imzayı doğrulayın, ardından faturayıGET /api/pay/merchant/invoices/:idile yeniden okuyun ve göndermeden öncestatusileamountUsddeğerlerini kontrol edin.underpaid,lateveexpireddurumlarını ele alın (bkz. Durumlar).- İşleyicinizi idempotent yapın: aynı olay birden fazla kez gelebilir.
Son güncelleme: 30 Ekim 2026