RugWard Pay
REST API संदर्भ
RugWard Pay के सभी मर्चेंट एंडपॉइंट, अनुरोध और जवाब के उदाहरण, API कुंजी से प्रमाणीकरण, त्रुटियाँ, सीमाएँ और curl, Node.js, Python व PHP में कोड।
इस पेज पर
मूल बातें#
| बेस URL | https://rugward.com |
| फ़ॉर्मेट | JSON अंदर, JSON बाहर। हर बॉडी के साथ Content-Type: application/json भेजें (वरना 415)। बॉडी कुछ KB तक सीमित है। |
| प्रमाणीकरण | Authorization: Bearer rwp_… या x-api-key: rwp_… में API कुंजी |
| राशियाँ | USD स्ट्रिंग के रूप में, अधिकतम 2 दशमलव ("25", "25.50"); कॉइन राशियाँ दशमलव स्ट्रिंग होती हैं |
| समय | Unix मिलीसेकंड (createdAt, expiresAt, paidAt) |
| त्रुटियाँ | {"error": "human readable message"}, कभी-कभी "retry": true के साथ |
केवल सर्वर से सर्वर। API कुंजी अपने सर्वर पर रखें। ब्राउज़र कुंजी के साथ मर्चेंट API को कॉल नहीं कर सकते (क्रॉस-ऑरिजिन अनुरोधों की अनुमति नहीं है), और वेब पेज में रखी कुंजी सार्वजनिक हो जाएगी।
API कुंजियाँ#
डैशबोर्ड में API keys के तहत कुंजियाँ बनाएँ (साइन इन ज़रूरी)। कुंजी rwp_ और उसके बाद 40 अक्षरों व अंकों जैसी दिखती है और केवल एक बार दिखाई जाती है: इसे तुरंत अपने सर्वर के सीक्रेट स्टोर में कॉपी करें। RugWard केवल SHA-256 हैश रखता है, इसलिए खोई हुई कुंजी दोबारा नहीं दिखाई जा सकती: नई बनाएँ और पुरानी रद्द करें। प्रति मर्चेंट अधिकतम 10 कुंजियाँ; डैशबोर्ड हर कुंजी का प्रीफ़िक्स और आखिरी इस्तेमाल का समय दिखाता है।

कुंजी क्या कर सकती है और क्या नहीं:
| कुंजी कर सकती है | कुंजी नहीं कर सकती |
|---|---|
| इनवॉइस बनाना, सूचीबद्ध करना, पढ़ना और रद्द करना | सेटिंग या प्राप्ति पते बदलना |
| पेमेंट लिंक बनाना, सूचीबद्ध करना और बंद करना | API कुंजियाँ बनाना, सूचीबद्ध करना या रद्द करना |
| वेबहुक या उसका सीक्रेट बदलना या पढ़ना | |
| टेस्ट इनवॉइस बनाना |
इसलिए लीक हुई कुंजी आपका पैसा कहीं और नहीं भेज सकती: प्राप्ति पते केवल अपने वॉलेट से साइन इन करके ही बदले जा सकते हैं।
एंडपॉइंट#
| मेथड और पाथ | प्रमाणीकरण | उद्देश्य |
|---|---|---|
POST /api/pay/merchant/invoices | कुंजी या सेशन | इनवॉइस बनाना |
GET /api/pay/merchant/invoices | कुंजी या सेशन | इनवॉइस की सूची, नए पहले, प्रति पेज 50 |
GET /api/pay/merchant/invoices/:id | कुंजी या सेशन | कोट और भुगतानों सहित एक इनवॉइस पढ़ना (चेन की दोबारा जाँच भी करता है) |
POST /api/pay/merchant/invoices/:id/cancel | कुंजी या सेशन | बिना भुगतान वाला खुला इनवॉइस रद्द करना |
GET /api/pay/merchant/links | कुंजी या सेशन | पेमेंट लिंक की सूची |
POST /api/pay/merchant/links | कुंजी या सेशन | पेमेंट लिंक बनाना, या बंद करना |
GET /api/pay/proof/:id | सार्वजनिक | भुगतान प्रमाण (केवल paid या overpaid इनवॉइस) |
सेटिंग, API कुंजियाँ, वेबहुक और बिना मेल वाले भुगतान डैशबोर्ड में प्रबंधित होते हैं (केवल वॉलेट सेशन से)।
इनवॉइस बनाएँ#
POST /api/pay/merchant/invoices
| फ़ील्ड | प्रकार | ज़रूरी | नियम |
|---|---|---|---|
amountUsd | स्ट्रिंग या संख्या | हाँ | 1 से 50000, अधिकतम 2 दशमलव |
orderId | स्ट्रिंग | नहीं | 1–64 अक्षर: अक्षर, अंक, . _ - : # / |
description | स्ट्रिंग | नहीं | अधिकतम 200 अक्षर, खरीदार को दिखता है |
redirectUrl | स्ट्रिंग | नहीं | https:// URL (अधिकतम 500 अक्षर), भुगतान के बाद दिखता है |
expiresMin | पूर्णांक | नहीं | 15 से 10080 (7 दिन); डिफ़ॉल्ट 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"]
}खरीदार को url पर भेजें। assets उन एसेट id की सूची है जिनमें से खरीदार चुन सकता है (आपके चालू कॉइन जिनका प्राप्ति पता है)।
यही अनुरोध दूसरी भाषाओं में:
// 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 checkoutइनवॉइस पढ़ें#
GET /api/pay/merchant/invoices/:id। इनवॉइस पढ़ने पर ब्लॉकचेन पर नए भुगतानों की जाँच भी होती है, इसलिए सामान भेजने से पहले भुगतान पुष्ट करने के लिए यही सही कॉल है (वेबहुक के साथ)।
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: खरीदार के चुने हर कॉइन की एक प्रविष्टि (राशि, दर, प्राप्ति पता, दर लॉक की समाप्ति)।payments: इस इनवॉइस के लिए देखा गया हर ट्रांज़ैक्शन,confirmations, ज़रूरीrequiredसंख्या औरconfirmedके साथ।- Base स्प्लिटर भुगतानों में
amountवह है जो आप तक पहुँचा (99.5%)।
इनवॉइस की सूची#
GET /api/pay/merchant/invoices?before=<createdAt>: प्रति पेज 50, नए पहले। अगला पेज पाने के लिए आपको मिले आखिरी इनवॉइस का createdAt भेजें।
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
}
]
}इनवॉइस रद्द करें#
POST /api/pay/merchant/invoices/:id/cancel (बिना बॉडी)। यह तभी काम करता है जब इनवॉइस open हो और कोई भुगतान न दिखा हो; अन्यथा 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."}पेमेंट लिंक#
{amountUsd, description?, redirectUrl?} के साथ POST /api/pay/merchant/links दोबारा इस्तेमाल होने वाला लिंक बनाता है; {"deactivate": "<link id>"} किसी लिंक को बंद करता है। GET अधिकतम 100 लिंक uses, active और createdAt के साथ सूचीबद्ध करता है। पहले मर्चेंट शर्तें स्वीकार होनी चाहिए। देखें पेमेंट लिंक।
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"}'त्रुटियाँ#
{ "error": "Amount in USD, e.g. 25 or 25.50." }
// some temporary errors also carry "retry": true| HTTP | अर्थ | क्या करें |
|---|---|---|
| 400 | अमान्य इनपुट (संदेश बताता है कौन-सा फ़ील्ड) | अनुरोध ठीक करें |
| 401 | API कुंजी नहीं है या अमान्य है | कुंजी जाँचें; हो सकता है वह रद्द हो गई हो |
| 403 | क्रॉस-साइट अनुरोध अस्वीकृत, मर्चेंट शर्तें स्वीकार नहीं, खाता निलंबित, या यह कार्य कुंजी से अनुमत नहीं | संदेश पढ़ें |
| 404 | नहीं मिला या आपका नहीं है | id जाँचें |
| 409 | टकराव (जैसे भुगतान हुए इनवॉइस को रद्द करना, या पहले से 100 सक्रिय लिंक) | संदेश पढ़ें |
| 415 | बॉडी JSON नहीं है | Content-Type: application/json भेजें |
| 429 | दर सीमा, या पिछले घंटे में 500 इनवॉइस | रुकें और बढ़ते अंतराल के साथ दोबारा कोशिश करें |
| 451 | आपके क्षेत्र में उपलब्ध नहीं | — |
"retry": true के साथ 503 | कोई ब्लॉकचेन या मूल्य स्रोत अस्थायी रूप से उपलब्ध नहीं | कुछ सेकंड बाद दोबारा कोशिश करें |
सीमाएँ#
- अनुरोध दर: सभी
/api/pay/*एंडपॉइंट पर मिलाकर प्रति IP पता प्रति मिनट लगभग 20 अनुरोध, साथ ही प्रति एंडपॉइंट समूह प्रति मिनट 30 की सीमा। पोलिंग के बजाय वेबहुक इस्तेमाल करें; अगर पोल करें तो हर खुले इनवॉइस के लिए मिनट में एक बार काफ़ी है। - इनवॉइस: प्रति मर्चेंट प्रति घंटा 500।
- पेमेंट लिंक: प्रति मर्चेंट 100 सक्रिय; हर लिंक प्रति घंटा अधिकतम 100 इनवॉइस बनाता है।
इंटीग्रेशन चेकलिस्ट#
- ग्राहक के चेकआउट करते समय अपने सर्वर से इनवॉइस बनाएँ;
idअपने ऑर्डर के साथ सहेजें। - ग्राहक को
urlपर रीडायरेक्ट करें। invoice.paidयाinvoice.overpaid(वेबहुक) मिलने पर सिग्नेचर सत्यापित करें, फिरGET /api/pay/merchant/invoices/:idसे इनवॉइस दोबारा पढ़ें और सामान भेजने से पहलेstatusऔरamountUsdजाँचें।underpaid,lateऔरexpiredको सँभालें (देखें स्थितियाँ)।- अपने हैंडलर को idempotent बनाएँ: वही इवेंट एक से अधिक बार आ सकता है।
अंतिम अपडेट: 30 अक्टूबर 2026