दूसरे पेमेंट-प्रोसेसर से माइग्रेशन — कोड दोबारा लिखे बिना
पहले से Cryptomus / NOWPayments / Coinbase Commerce से इंटीग्रेटेड हैं? SDK में सिर्फ़ base-URL और की बदलें — हम उनका create-invoice फ़ॉर्मेट स्वीकार करते हैं, उनके रिस्पॉन्स-फ़ॉर्मेट में अपना पेमेंट-पेज लौटाते हैं और उनकी स्कीम में साइन किया वेबहुक भेजते हैं, यानी आपका verify-कोड जस का तस चलता है। मिलान order_id से।
कोई और प्रोसेसर चाहिए — लिखें, अडैप्टर जोड़ देंगे (यह बस एक मॉड्यूल है)।
अपने ही Telegram-बॉट के अंदर भुगतान स्वीकारें
आपका बॉट ही मर्चेंट है? यूज़र को साइट या किसी और के वॉलेट-बॉट पर मत भेजिए। बॉट हमारा API कॉल करता है, एड्रेस + रक़म + QR सीधे चैट में दिखाता है और नेटवर्क पर भुगतान कन्फ़र्म होते ही मैसेज को «✅ भुगतान हो गया» में बदल देता है। वही in-bot UX जो CryptoBot में है, पर क्रिप्टो सीधे आपके पास जाती है, की आपकी हैं, और फ़ीस मामूली है।
1. POST /v1/invoices # आपकी API-की → { id, pay_address, pay_uri, amount_expected }
2. bot.sendPhoto( https://paygate.love/i/<id>/qr.png ) # पब्लिक QR, Telegram इसे ख़ुद फ़ेच करता है
+ «वॉलेट खोलें» बटन → pay_uri
3. हमारा invoice.paid वेबहुक → bot.editMessage → «✅ भुगतान हो गया»
यूज़र मर्चेंट के बॉट से बाहर जाता ही नहीं। QR-एंडपॉइंट /i/<id>/qr.png पब्लिक है (सिर्फ़ एड्रेस एनकोड करता है)। तैयार copy-paste उदाहरण (grammy/telegraf) — यहाँ docs/BOT-INTEGRATION.md.
स्ट्रीमर्स के लिए: डोनेशन अलर्ट, गोल बार, लीडरबोर्ड
नीचे दिए सभी स्ट्रीमर एंडपॉइंट अलर्ट टोकन इस्तेमाल करते हैं — यह कैबिनेट के «अलर्ट» पेज पर दिखने वाले ओवरले और लीडरबोर्ड URL में पहले से शामिल है। यह केवल-पढ़ने की क्षमता है: यह आपकी API कुंजी की जगह नहीं लेता, पर विजेट URL सार्वजनिक न करें। अंदरूनी तौर पर, डोनेशन बस दानदाता के नाम और संदेश वाला एक इनवॉइस है।
अपनी स्ट्रीम पर डोनेशन कैसे सेट करें — चरण-दर-चरण
स्ट्रीमर के रूप में रजिस्टर करें: साइन-अप पेज पर «स्ट्रीमर / क्रिएटर» खाता प्रकार चुनें — कैबिनेट डोनेशन के हिसाब से ढल जाएगा।
कैबिनेट → «अलर्ट» खोलें: यहाँ ओवरले URL (/alerts/widget?token=…), अलर्ट की दिखावट की सेटिंग्स और गोल एडिटर मिलेंगे। ओवरले URL कॉपी करें।
OBS/Streamlabs में: Sources → «+» → Browser Source → URL पेस्ट करें, आकार अपने कैनवास के बराबर रखें (जैसे 1920×1080) → OK। अब अलर्ट और गोल बार स्ट्रीम पर दिखेंगे; टेस्ट-डोनेशन बटन से जाँच लें।
उसी «अलर्ट» पेज पर फंडरेज़िंग गोल सेट करें — शीर्षक, लक्ष्य राशि और मुद्रा। प्रोग्रेस बार ओवरले में और GET /alerts/goal के ज़रिए दिखेगा।
डोनेशन लिंक बनाएँ (कैबिनेट → «लिंक»), लिंक/QR दर्शकों से साझा करें, और सार्वजनिक लीडरबोर्ड /d/<token> अपने चैनल में पोस्ट करें।
एडवांस्ड: दूसरे प्लेटफ़ॉर्म के डोनेशन POST /v1/donations/external से भेजें, या किसी थर्ड-पार्टी प्रोग्रेस बार को GET /alerts/goal से डेटा दें — विवरण नीचे।
OBS ओवरले (Browser Source)
लाइव डोनेशन अलर्ट और गोल बार वाला तैयार HTML पेज — इसे OBS/Streamlabs में Browser Source के रूप में जोड़ें:
फंडरेज़िंग गोल — किसी भी प्रोग्रेस बार के लिए JSON (pull)
मौजूदा गोल का सार्वजनिक JSON (टोकन ही एक्सेस है; ~5 सेकंड कैश)। कोई भी बाहरी प्रोग्रेस-बार विजेट इसे पोल करके संयुक्त कुल कहीं और दिखा सकता है — इसी तरह paygate के फंडरेज़र को दूसरे बार से जोड़ा जाता है।
curl "https://paygate.love/alerts/goal?token=<alertToken>"
→ { "active": true, "title": "New PC", "target": 1000,
"current": 337.5, "currency": "USD" }
# कोई गोल सेट नहीं → { "active": false }
बाहरी डोनेशन — दूसरे स्रोतों को उसी बार में मिलाएँ (push)
कहीं और हुआ डोनेशन (PayPal, DonationAlerts, मैन्युअल) दर्ज करें ताकि वह उसी गोल बार में गिना जाए और चाहें तो वही OBS अलर्ट भी चलाए। एक बार — सारे स्रोत: क्रिप्टो और जो भी आप यहाँ भेजें। प्रमाणीकरण: आपकी API कुंजी।
फ़ील्ड: amount (>0, अनिवार्य), currency (डिफ़ॉल्ट USD), name (≤60), message (≤300), source (≤40, डिफ़ॉल्ट "api"), fire_alert (डिफ़ॉल्ट true)। राशि गोल के कुल के लिए USD में बदली जाती है।
लाइव अलर्ट स्ट्रीम (SSE)
हर डोनेशन के साथ Server-Sent Events — हमारे विजेट की जगह पूरी तरह अपना ओवरले बनाएं:
const es = new EventSource(
"https://paygate.love/alerts/stream?token=<alertToken>");
es.onmessage = (e) => {
const d = JSON.parse(e.data); // { name, amount, currency, asset, message }
showAlert(d);
};
सार्वजनिक लीडरबोर्ड
साझा करने लायक सार्वजनिक टॉप-डोनर पेज (शीर्ष समर्थक, हालिया डोनेशन, गोल) — इसे चैनल विवरण या चैट में पोस्ट करें:
https://paygate.love/d/<alertToken>
पेआउट: डिफ़ॉल्ट रूप से डोनेशन कस्टोडियल हैं — कैबिनेट से जब चाहें निकालें। या कैबिनेट में अपने वॉलेट का xpub जोड़ें (non-custodial) और डोनेशन सीधे आपके वॉलेट में EVM / TRON / BTC / LTC / DOGE पर पहुँचेंगे।
रेफ़रल प्रोग्राम
दुकानों और स्ट्रीमर्स को आमंत्रित करें — और उनके हर भुगतान पर हमारे कमीशन का हिस्सा जीवनभर पाएँ। डिफ़ॉल्ट दर 20% है, और इसे हर पार्टनर के लिए अलग से तय किया जा सकता है।
https://paygate.love/?ref=<yourCode>
आपका यूनिक लिंक कैबिनेट → «रेफ़रल» में है। जो भी इससे रजिस्टर करता है (?ref= कोड cookie से पकड़ा जाता है, या रजिस्ट्रेशन फ़ॉर्म के वैकल्पिक फ़ील्ड में डाला जाता है) वह हमेशा के लिए आपसे जुड़ जाता है।
आमंत्रित मर्चेंट के हर कन्फ़र्म (पेड) इनवॉइस पर कमाई अपने-आप USD में जुड़ती है; आँकड़े और राशियाँ कैबिनेट → «रेफ़रल» में हैं।
💸 डोनर प्रीपेड वॉलेट (तुरंत डोनेशन)
दर्शक एक बार टॉप-अप करता है (crypto एक ही बार कन्फर्म होता है), फिर आंतरिक बैलेंस से किसी भी Paygate स्ट्रीमर को तुरंत डोनेशन भेजता है — अलर्ट तुरंत दिखता है, हर डोनेशन पर नेटवर्क का इंतज़ार नहीं। डोनेशन आपके सामान्य बैलेंस में आते हैं; हमेशा की तरह निकालें। वॉलेट पेज: /w (बियरर लिंक, टोकन #fragment में रहता है — लॉग में कभी नहीं आता)।
🧩 Plugin setup guides
Before you start, grab your API key and secret from your store's Settings page. ⚙️
🛒 WooCommerce — setup
Download the plugin zip (the “Download” button on the Plugins page or in your dashboard).
WP Admin → Plugins → Add New → Upload Plugin → choose the zip → Install → Activate.
Enter your API key and secret, save. Verify with a test invoice — status updates via the callback.
🛍️ OpenCart — setup
Download the zip. Copy the contents of upload/ into your OpenCart root (merges with admin/ and catalog/), or install the zip via Extensions → Installer.
Paste your API key and secret (base URL https://paygate.love), save.
Payment confirms via the signed webhook; underpaid goes to Held for manual review.
📋 vBulletin — setup (vB4 / vB5)
Pick your archive: vB4 (4.2.x) → includes/paymentapi/class_paygate.php; vB5 → core/includes/paymentapi/class_paygate.php.
Copy the class file to the right path and run install.sql from the archive (registers the method in the paymentapi table).
AdminCP → Paid Subscriptions → Payment API Manager → Paygate: enable, paste your API key and secret (base URL https://paygate.love).
The subscription activates via the signed webhook (payment_gateway.php); duplicates bounce on the transaction id.
🎮 Azuriom — setup
Download the zip and add PaygateMethod to the Shop plugin (see README: patch PaymentManager or register via registerPaymentMethod).
Admin → Shop → Settings → Payment gateways → Paygate: paste your API key and secret (base URL https://paygate.love).
Payment confirms via the signed webhook (shop.payments.notification); completed payments are idempotent.
🏬 Webasyst / Shop-Script — setup
Download the zip and extract wa-plugins/payment/paygate into your Webasyst root.
Store → Settings → Payment → add method → Paygate: paste your API key and secret (base URL https://paygate.love).
Payment confirms via the signed webhook (waPayment relay URL); dedup via native_id.
🛒 X-Cart — setup
Download the zip and extract classes/ and skins/ into your X-Cart root, then rebuild the cache (Re-deploy).
Admin → Store setup → Payment methods → enable “Paygate”.
Paste your API key and secret (base URL https://paygate.love), save. Payment confirms via the signed webhook.
🛍️ Zen Cart — setup
Download the zip: module file to includes/modules/payment/, language to includes/languages/english/modules/payment/, and ipn_paygate.php to the store root.
Admin → Modules → Payment → Paygate → Install; paste your API key and secret (base URL https://paygate.love).
The order is created as pending; status updates via the signed webhook (ipn_paygate.php).
🏪 osCommerce — setup
Download the zip (targets osCommerce 2.3.x): module file to includes/modules/payment/, callback.php to ext/modules/payment/paygate/, language to includes/languages/english/….
Admin → Modules → Payment → Paygate → Install; paste your API key and secret (base URL https://paygate.love).
Order status updates via the signed webhook (ext/…/callback.php); the webhook retries until the order is found.
🛒 VirtueMart (Joomla) — setup
Joomla → Extensions → Install: upload the zip (or copy to plugins/vmpayment/paygate/ and click Discover).
Enable the “VM Payment - Paygate” plugin, then VirtueMart → Payment Methods → create a method using it.
Paste your API key and secret (base URL https://paygate.love), save. Payment confirms via the signed webhook.
💧 Drupal Commerce — setup
Extract the module to modules/custom/paygate (or via composer), enable it on Extend.
Paste your API key and secret (base URL https://paygate.love), save. The notify webhook is the source of truth.
⬇️ Easy Digital Downloads — setup
WP Admin → Plugins → Add New → Upload → choose the zip → Install → Activate.
Downloads → Settings → Payment Gateways → enable “Paygate” and open its settings.
Paste your API key and secret (base URL https://paygate.love), save. Payment confirms via the signed webhook (edd-listener).
🧾 HostBill — setup (free bridge)
This is a lightweight bridge, not the paid SDK module: unzip it into a web-accessible folder, e.g. https://your-billing/paygate/.
HostBill → Settings → API: create an API user, whitelist this server's IP. Copy config.sample.php → config.php and fill in the HostBill + Paygate keys and a random link_secret.
In your Paygate store settings set the webhook/callback → https://your-billing/paygate/callback.php. A payment closes the invoice automatically via the Admin API (addInvoicePayment).
Add the “Pay with Crypto” button to invoices via the hooks/paygate_button.php hook (into includes/hooks/) or a ready signed link pay.php?invoice_id=…&token=… — see the README.
🖥️ WISECP — setup
Copy the coremio/ folder from the zip over your WISECP root (the module lands in coremio/modules/Payment/Paygate/).
Admin → Settings → Payment Gateways → enable “Paygate — Crypto Payments” and paste your API key and secret (base URL https://paygate.love).
No webhook setup needed: the module passes its callback link with every checkout. Payment confirms via the signed webhook.
🧾 ClientExec — setup
Unzip the archive into plugins/gateways/paygate/ of your ClientExec install.
Settings → Plugins → Payment Processors → activate Paygate and paste your API key and secret (base URL https://paygate.love).
Webhook: https://your-domain/plugins/gateways/paygate/callback.php — set it in your Paygate store settings.
🎨 Tilda — setup (universal payment system)
This is a self-hosted bridge: unzip it onto your PHP hosting (e.g. https://your-domain/paygate/) and fill in config.php from the sample.
In Tilda: Site Settings → Payment Systems → Universal payment system → API URL = https://your-domain/paygate/receive.php; field mapping and signature per the README.
Paygate webhook: https://your-domain/paygate/callback.php. On payment the bridge sends Tilda a signed notification — the order flips to paid.
🛒 BigCommerce — setup (bridge)
BigCommerce's native payment list is partner-gated, so this is a bridge: unzip onto your PHP hosting and fill in config.php.
In BigCommerce create a store-level API account (Orders scope), enable the offline method “Cryptocurrency (Paygate)” and add the pay button per the README (Script Manager).
Paygate webhook: https://your-domain/paygate/callback.php — on payment the order moves to Awaiting Fulfillment automatically.
🛍️ Zid — setup (private bridge)
Zid's App Store won't list crypto (SAMA), so the bridge runs privately with your own partner credentials. Deploy the Node service from the zip (npm i && npm run build).
Fill in .env (Zid tokens, Paygate keys) and register the order-created webhook per the README.
The buyer pays via the /pay/:orderId link; on confirmation the bridge marks the order paid through the Zid API.
रिस्पॉन्स में id, pay_address, pay_uri, expires_at होते हैं। खरीदार को /pay/ पर भेजें।
रिक्वेस्ट के वैकल्पिक फ़ील्ड: quote_currency (राशि की करेंसी, डिफ़ॉल्ट USD), order_id, callback_url (इस इनवॉइस के लिए webhook), success_url (खरीदार को कहाँ वापस भेजना है), test (सैंडबॉक्स)। पूरे रिस्पॉन्स में status, network, asset, amount_expected, rate_locked, fee_percent, telegram_url भी शामिल होते हैं।
सैंडबॉक्स: "test": true जोड़ें — ऐसा इनवॉइस ब्लॉकचेन पर ट्रैक नहीं होता और बैलेंस पर असर नहीं डालता; webhook जाँचने के लिए डैशबोर्ड में उसका भुगतान सिमुलेट करें। उसका webhook उसी तरह signed होता है, पर उसमें "test": true होता है — ऑर्डर केवल test === false होने पर ही पूरा करें।
1b. Live rate — price a USD amount in BTC/LTC
GET /v1/quote?asset=BTC"e_currency=USD
X-Api-Key: pk_...
→ { "asset": "BTC", "quote_currency": "USD", "rate": "63022.25" }
# price a $12.99 item in BTC:
# amount = 12.99 / 63022.25 = 0.00020612 → send as "amount" to /v1/invoices
# optional: pass &amount=12.99 to get "quote_amount" back too
The amount is denominated in quote_currency (default USD) — the gateway converts it to the coin at the live rate, no manual math needed. For USDT/USDC quoted in USD that's 1:1. To price directly in the coin, set quote_currency to the coin symbol (e.g. quote_currency=BTC) — then no conversion happens. The rate comes from CoinGecko/Coinbase, refreshes every ~45s and is locked into the invoice (rate_locked), so the buyer always pays the correct up-to-the-minute amount. The response returns quote_amount (as you sent it) and amount_expected (the final coin amount).
Don't want to do the math? Use POST /v1/checkouts with a USD amount — the buyer picks the coin and we handle the live conversion.
राशि के साथ POST /v1/checkouts एक ऐसी लिंक बनाता है जहाँ नेटवर्क और कॉइन खरीदार खुद चुनता है — बिना किसी इंटीग्रेशन के आदर्श। रिस्पॉन्स: checkout_url, short_url, telegram_url, expires_at। इनवॉइस की तरह ही order_id, callback_url और success_url सपोर्टेड हैं।
🤖 Telegram बॉट / दुकान में भुगतान स्वीकार करें
सीधे Telegram में बेच रहे हैं? वेबसाइट की ज़रूरत नहीं। आपका बॉट API के ज़रिए चेकआउट बनाता है और telegram_url पाता है — एक डीप लिंक जो भुगतान प्रक्रिया हमारे Telegram बॉट के अंदर ही खोलता है: खरीदार कॉइन/नेटवर्क चुनता है, पता और QR देखता है, और भुगतान करता है। आपको हस्ताक्षरित वेबहुक मिलता है और आप सामान डिलीवर करते हैं।
खरीदार आपके बॉट में «Buy» दबाता है → आपका बॉट POST /v1/checkouts कॉल करता है (order_id और callback_url के साथ)।
आपका बॉट telegram_url लिंक वाले इनलाइन बटन के साथ जवाब देता है (या वेब पेज पर भुगतान के लिए short_url)।
खरीदार Telegram से बाहर निकले बिना भुगतान करता है → आपको invoice.paid वेबहुक मिलता है → बॉट सामान/एक्सेस दे देता है।
सुझाव: Telegram के अंदर भुगतान के लिए telegram_url इस्तेमाल करें, या सामान्य वेब चेकआउट पेज के लिए short_url। order_id को खरीदार (chat id) और ऑर्डर से जोड़ें ताकि वेबहुक स्पष्ट रूप से मैप हो। जब तक test false न हो, कभी सामान डिलीवर न करें।
GET /v1/invoices — पेजिनेशन के साथ इनवॉइस की सूची (limit अधिकतम 200, offset, status फ़िल्टर)। POST /v1/invoices/<id>/cancel — pending/detected इनवॉइस रद्द करें (invoice.cancelled भेजा जाता है)। GET /v1/quote?asset="e_currency=&amount= — रेट और कन्वर्ट की गई राशि का पूर्वावलोकन। GET /v1/networks — नेटवर्क और कॉइनों की सूची (key की ज़रूरत नहीं)। GET /v1/reconciliation?from=&to= — «जारी बनाम प्राप्त» का मिलान (limit 30 req/min)।
रीकंसिलिएशन: GET /v1/reconciliation?from=&to= — जारी की गई बनाम प्राप्त राशि (फीस घटाकर) + हर ऑर्डर की विसंगतियाँ (कम/ज़्यादा भुगतान, बिना भुगतान)। क्या प्राप्त हुआ, इसके लिए हम source of truth हैं; non-custodial के लिए अपने वॉलेट से मिलान करें। यह टूल डेटा देता है — निर्णय (शिपिंग, विवाद) आपके ज़िम्मे हैं।
3. Webhook
स्टेटस बदलने पर हम आपके webhook URL पर POST करते हैं। हेडर X-Signature = HMAC-SHA256(body, api_secret)। प्रोसेस करने से पहले सिग्नेचर और ताज़गी (timestamp) जाँचें।
// Node — verify signature (constant-time), dedupe, gate on test
import crypto from "node:crypto";
const expected = crypto.createHmac("sha256", API_SECRET).update(rawBody).digest("hex");
const sig = String(req.headers["x-signature"] ?? "");
if (sig.length !== expected.length ||
!crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(expected)))
return res.sendStatus(401);
const evt = JSON.parse(rawBody);
if (Date.now() - new Date(evt.timestamp) > 5*60_000) return res.sendStatus(400); // anti-replay
if (seen(req.headers["x-webhook-id"])) return res.sendStatus(200); // idempotency
if (evt.event === "invoice.paid" && evt.test === false) fulfil(evt.order_id); // only real payments
डिलीवरी: 3 त्वरित प्रयास, फिर backoff के साथ 12 प्रयासों तक की durable क्यू (अधिकतम 1 घंटा)। डुप्लिकेट X-Webhook-Id से पहचानें। Webhook URL सार्वजनिक http(s) होना चाहिए — localhost/प्राइवेट होस्ट और रीडायरेक्ट अस्वीकार किए जाते हैं। जब तक test false न हो, ऑर्डर कभी पूरा न करें।
हार्डनिंग
इनवॉइस बनाते समय Idempotency-Key — रीट्राई से डुप्लिकेट नहीं बनते।