Skip to content
RugWard
☰ Menü

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 URLhttps://rugward.com
BiçimJSON 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ğrulamaAuthorization: Bearer rwp_… veya x-api-key: rwp_… içinde bir API anahtarı
Tutarlaren fazla 2 ondalıklı dize olarak USD ("25", "25.50"); coin tutarları ondalık dizelerdir
ZamanlarUnix 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.

Paneldeki API anahtarları ve webhook
API anahtarları oluşturun veya iptal edin ve webhook'u ayarlayın

Bir anahtarın yapabildikleri ve yapamadıkları:

Bir anahtar yapabilirBir anahtar yapamaz
fatura oluşturma, listeleme, okuma ve iptal etmeayarları veya alım adreslerini değiştirme
ödeme bağlantısı oluşturma, listeleme ve kapatmaAPI 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 yolKimlik doğrulamaAmaç
POST /api/pay/merchant/invoicesanahtar veya oturumFatura oluşturma
GET /api/pay/merchant/invoicesanahtar veya oturumFaturaları listeleme, en yenisi önce, sayfa başına 50
GET /api/pay/merchant/invoices/:idanahtar veya oturumTeklifler ve ödemelerle bir faturayı okuma (zinciri de yeniden kontrol eder)
POST /api/pay/merchant/invoices/:id/cancelanahtar veya oturumÖdemesi olmayan açık bir faturayı iptal etme
GET /api/pay/merchant/linksanahtar veya oturumÖdeme bağlantılarını listeleme
POST /api/pay/merchant/linksanahtar veya oturumÖdeme bağlantısı oluşturma veya kapatma
GET /api/pay/proof/:idherkese 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

AlanTürZorunluKurallar
amountUsddize veya sayıevet1 ile 50000 arası, en fazla 2 ondalık
orderIddizehayır1–64 karakter: harfler, rakamlar, . _ - : # /
descriptiondizehayıren fazla 200 karakter, alıcıya gösterilir
redirectUrldizehayırhttps:// URL'si (en fazla 500 karakter), ödemeden sonra gösterilir
expiresMintam sayıhayır15 ile 10080 (7 gün) arası; varsayılan 60
curl · create an invoice
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
  }'
201 Created
{
  "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:

Node.js 18+ (server side only)
// 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);
Python 3 (requests)
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 8 (cURL)
<?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 checkout

Fatura 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 · read one invoice
curl https://rugward.com/api/pay/merchant/invoices/Zx3kQ8pL2mN7vR1tY5wB9c \
  -H "Authorization: Bearer $RUGWARD_PAY_KEY"
200 OK
{
  "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, required sayısı ve confirmed ile.
  • Base splitter ödemelerinde amount size 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 · list invoices (50 per page, newest first)
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"
200 OK
{
  "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 · cancel an open invoice
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."}

{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 · create a reusable payment link
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 response (any 4xx/5xx)
{ "error": "Amount in USD, e.g. 25 or 25.50." }

// some temporary errors also carry  "retry": true
HTTPAnlamıNe yapmalı
400geçersiz giriş (mesaj hangi alan olduğunu söyler)isteği düzeltin
401API anahtarı eksik veya geçersizanahtarı kontrol edin; iptal edilmiş olabilir
403siteler arası istek reddedildi, satıcı koşulları kabul edilmedi, hesap askıya alındı veya işleme anahtarlarla izin verilmiyormesajı okuyun
404bulunamadı veya size ait değilkimliği kontrol edin
409çakışma (örneğin ödenmiş bir faturayı iptal etme veya zaten 100 aktif bağlantı)mesajı okuyun
415gövde JSON değilContent-Type: application/json gönderin
429hız limiti veya son bir saatte 500 faturabekleyin ve artan aralıklarla yeniden deneyin
451bölgenizde kullanılamıyor—
"retry": true ile 503bir blokzincir veya fiyat kaynağına geçici olarak ulaşılamıyorbirkaç 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#

  1. Müşteri ödemeye geçtiğinde faturayı sunucunuzdan oluşturun; id'yi siparişinizle birlikte kaydedin.
  2. Müşteriyi url adresine yönlendirin.
  3. invoice.paid veya invoice.overpaid (webhook) geldiğinde imzayı doğrulayın, ardından faturayı GET /api/pay/merchant/invoices/:id ile yeniden okuyun ve göndermeden önce status ile amountUsd değerlerini kontrol edin.
  4. underpaid, late ve expired durumlarını ele alın (bkz. Durumlar).
  5. İşleyicinizi idempotent yapın: aynı olay birden fazla kez gelebilir.

Son güncelleme: 30 Ekim 2026