API दायरा

डेवलपर API संदर्भ

स्थिर मुद्रा चेकआउट, आदेश निर्माण और डिलीवरी ट्रैकिंग के लिए उत्पादन-केंद्रित cURL और Node उदाहरण।

इस गाइड में शामिल

  • उपहार कार्ड
  • मोबाइल टॉप-अप
  • eSIM खरीद

यहाँ शामिल नहीं है

  • उड़ानें
  • ठहराव

एंडपॉइंट्स में गोताखोरी से पहले व्यापक एकीकरण संदर्भ की आवश्यकता है?

एकीकरण अवलोकन खोलें
1

प्रमाणीकरण

प्रत्येक API अनुरोध के लिए इन हेडरों की आवश्यकता होती है। Cryptorefills खाता बनाने के बाद, आप अपने खाता जानकारी पृष्ठ पर अपना भागीदार ID पा सकते हैं।
bash
# Required headers for every API request
-H 'X-Cr-Application: YOUR_PARTNER_ID'
-H 'X-Cr-Version: YOUR_APP_VERSION'
-H 'X-Country-ISO-Code: US'
-H 'Content-Type: application/json'
2

भुगतान विधियाँ

GET/v3/payment_vias
सभी समर्थित सिक्कों और ब्लॉकचेन नेटवर्क को लाएं। USDC, USDT को Solana, Ethereum, Base, Arbitrum, Polygon, और अधिक पर लौटाता है।
bash
curl -X GET 'https://api.cryptorefills.com/v3/payment_vias' \
  -H 'Content-Type: application/json' \
  -H 'X-Cr-Application: YOUR_PARTNER_ID' \
  -H 'X-Cr-Version: YOUR_APP_VERSION'

सिफारिश की: Solana पर USDC सबसे कम शुल्क और सबसे तेज़ निपटान प्रदान करता है।

3

ब्रांड कैटलॉग

GET/v2/brands?country_code={countryCode}
(वैकल्पिक) किसी देश के लिए सभी उपलब्ध ब्रांडों की सूची बनाएं। ब्रांड निर्देशिका या खोज सुविधाओं के निर्माण के लिए महान।
bash
curl -X GET 'https://api.cryptorefills.com/v2/brands?country_code=US' \
  -H 'Content-Type: application/json' \
  -H 'X-Cr-Application: YOUR_PARTNER_ID' \
  -H 'X-Cr-Version: YOUR_APP_VERSION'
4

होमपेज फीड

GET/v2/homepage?country_code={countryCode}
(वैकल्पिक) किसी देश के लिए एक क्यूरेटेड होमपेज फीड लाएं। ट्रेंडिंग या विशेष उपहार कार्ड प्रदर्शित करने के लिए उपयोगी।
bash
curl -X GET 'https://api.cryptorefills.com/v2/homepage?country_code=US' \
  -H 'Content-Type: application/json' \
  -H 'X-Cr-Application: YOUR_PARTNER_ID' \
  -H 'X-Cr-Version: YOUR_APP_VERSION'
5

उत्पाद ब्राउज़ करें

GET/v5/products/country/{countryCode}
किसी ब्रांड और देश के लिए सभी उपलब्ध उपहार कार्डों की सूची बनाएं। निश्चित मूल्य और कस्टम राशि (रेंज) का समर्थन करता है।
bash
curl -X GET 'https://api.cryptorefills.com/v5/products/country/US?family_name=airbnb&coin=USDC&lang=en' \
  -H 'Content-Type: application/json' \
  -H 'X-Cr-Application: YOUR_PARTNER_ID' \
  -H 'X-Cr-Version: YOUR_APP_VERSION'
6

क्रिप्टो मूल्य प्राप्त करें

GET/v4/products/price
किसी भी उपहार कार्ड मूल्य को स्थिर मुद्रा राशि में परिवर्तित करें। उपयोगकर्ताओं को खरीदारी की पुष्टि करने से पहले सटीक क्रिप्टो राशि दिखाने के लिए इसका उपयोग करें।
bash
curl -X GET 'https://api.cryptorefills.com/v4/products/price?brand_name=Airbnb&country_code=US&face_value=100&coin=USDC' \
  -H 'Content-Type: application/json' \
  -H 'X-Cr-Application: YOUR_PARTNER_ID' \
  -H 'X-Cr-Version: YOUR_APP_VERSION'
7

आदेश मान्य करें

POST/v5/orders/validations
(अनुशंसित) आदेश बनाने से पहले समस्याओं की जांच करें। ईमेल/लाभार्थी खाता में असली अंतिम उपयोगकर्ता ईमेल का उपयोग करें, क्योंकि Cryptorefills उस प्राप्तकर्ता को डिलीवर करता है।
bash
curl -X POST 'https://api.cryptorefills.com/v5/orders/validations' \
  -H 'Content-Type: application/json' \
  -H 'X-Cr-Application: YOUR_PARTNER_ID' \
  -H 'X-Cr-Version: YOUR_APP_VERSION' \
  -d '{
    "email": "END_USER_EMAIL",
    "payment": {
      "type": "via",
      "payment_via": "USER_WALLET",
      "coin": "USDC"
    },
    "deliveries": [
      {
        "beneficiary_account": "END_USER_EMAIL",
        "brand_name": "Airbnb",
        "country_code": "US",
        "denomination": "100 USD",
        "localized_denomination": "$100"
      }
    ],
    "lang": "en"
  }'
8

आदेश बनाएं

POST/v5/orders
एक आदेश बनाएं और भुगतान के लिए एक वॉलेट पता प्राप्त करें। असली अंतिम उपयोगकर्ता ईमेल का उपयोग करें क्योंकि Cryptorefills को उस प्राप्तकर्ता को उत्पाद डिलीवर करना है। भुगतान विंडो 30 मिनट है।
bash
curl -X POST 'https://api.cryptorefills.com/v5/orders' \
  -H 'Content-Type: application/json' \
  -H 'X-Cr-Application: YOUR_PARTNER_ID' \
  -H 'X-Cr-Version: YOUR_APP_VERSION' \
  -d '{
    "deliveries": [
      {
        "kind": "giftcard",
        "quantity": 1,
        "deliverable": {
          "brand_name": "Airbnb",
          "country_code": "US",
          "denomination": "100"
        }
      }
    ],
    "payment": {
      "type": "via",
      "coin": "USDC",
      "network": "Solana",
      "payment_via": "USER_WALLET"
    },
    "user": {
      "email": "END_USER_EMAIL",
      "has_accepted_newsletter": true
    },
    "lang": "en",
    "acquisition": {
      "utm_source": "your_platform"
    }
  }'

प्रतिक्रिया में शामिल हैं wallet_address and coin_amount. इन्हें अपने उपयोगकर्ता के साथ साझा करें।

9a

आदेश ट्रैक करें (स्ट्रीम API)

GET/api/orders/{orderId}/subscribe
इसे दो आवश्यक भागों में लागू करें: एक सर्वर-साइड SSE प्रॉक्सी रूट और एक क्लाइंट-साइड स्ट्रीम हुक।
  • API रूट प्राप्त करता है/api/orders/{orderId}/subscribe और अपस्ट्रीम को अग्रेषित करता है/v5/orders/{orderId}/subscribe.
  • क्लाइंट हुक खोलता हैEventSource स्थानीय API रूट के लिए, पेलोड को मान्य करता है, और आवश्यकता पड़ने पर बैकऑफ के साथ फिर से कनेक्ट करता है।

सर्वर-साइड आवश्यक कोड

javascript
// app/api/orders/[orderId]/subscribe/route.ts
let upstream: Response;

try {
  upstream = await fetch(
    `https://api.cryptorefills.com/v5/orders/${params?.orderId}/subscribe`,
    {
      method: 'GET',
      headers: {
        ...(await genHeader.server(session)),
        'User-Agent': user_agent,
        Accept: 'text/event-stream',
        Connection: 'keep-alive',
      },
    },
  );
} catch (err) {
  return NextResponse.json(
    { error: 'Failed to connect to upstream stream' },
    { status: 502 },
  );
}

if (!upstream.ok || !upstream.body) {
  return NextResponse.json(
    { error: 'Upstream returned an error' },
    { status: upstream.status || 502 },
  );
}

// stream = ReadableStream that proxies upstream SSE events
return new Response(stream, {
  status: 200,
  headers: {
    'Content-Type': 'text/event-stream',
    'Cache-Control': 'no-cache, no-transform',
    Connection: 'keep-alive',
    'X-Accel-Buffering': 'no',
  },
});

क्लाइंट-साइड आवश्यक कोड

javascript

const { data: lastEvent, error } = useSWRSubscription<TOrderSchema>(
  referenceOrderId ? `orders-info-stream-${referenceOrderId}` : null,
  ((key, { next }) => {
    let es: EventSource | null = null;
    let stopped = false;
    let shouldReconnect = true;
    let retryTimeout: number | null = null;
    let retryDelay = 1000;

    const cleanup = () => {
      if (es) {
        es.close();
        es = null;
      }
      if (retryTimeout !== null) {
        window.clearTimeout(retryTimeout);
        retryTimeout = null;
      }
    };

    const stopForever = () => {
      shouldReconnect = false;
      stopped = true;
      cleanup();
    };

    const connect = () => {
      if (stopped) return;
      cleanup();
      es = new EventSource(`/api/orders/${referenceOrderId}/subscribe`);

      es.addEventListener('message', (ev) => {
        try {
          const raw = JSON.parse(ev.data);
          const parsed = orderSchema.safeParse(raw);
          if (!parsed.success) return;
          retryDelay = 1000;
          next(null, parsed.data as TOrderSchema);
        } catch (err) {
          next(err as Error);
        }
      });

      es.addEventListener('stop', () => {
        stopForever();
      });

      es.onerror = () => {
        if (stopped || !shouldReconnect) return;
        cleanup();
        retryTimeout = window.setTimeout(() => {
          retryDelay = Math.min(retryDelay * 2, 30000);
          connect();
        }, retryDelay);
      };
    };

    connect();

    return () => {
      stopped = true;
      cleanup();
    };
  }) as SubscriptionCallback<TOrderSchema>,
);

इस रिपॉजिटरी में रूट

app/api/orders/[orderId]/subscribe/route.ts

सर्वर साइड (API रूट)

सत्र-आधारित सर्वर हेडर का उपयोग करता हैgenHeader.server(session), फिर अपस्ट्रीम को कॉल करता है${process.env.API_URL}/v5/orders/${params?.orderId}/subscribe. कनेक्शन विफलता पर यह लौटाता है502.

क्लाइंट साइड (हुक)

खोलता हैEventSource के लिए/api/orders/${referenceOrderId}/subscribe, प्रत्येक पेलोड को मान्य करता हैorderSchema.safeParse, संभालता हैstop इवेंट्स, और गुणात्मक बैकऑफ के साथ फिर से कनेक्ट करता है।

9b

आदेश ट्रैक करें (पोलिंग)

GET/v5/orders/{orderId}
फॉलबैक दृष्टिकोण: भुगतान प्राप्त होने तक हर 5-10 सेकंड में पोल करें। उपहार कार्ड कोड तब दिखाई देता है जब स्थिति 'पूर्ण' होती है।
bash
curl -X GET 'https://api.cryptorefills.com/v5/orders/ord_abc123xyz' \
  -H 'Content-Type: application/json' \
  -H 'X-Cr-Application: YOUR_PARTNER_ID' \
  -H 'X-Cr-Version: YOUR_APP_VERSION'

पोलिंग का उपयोग करें जब

आप SSE कनेक्शन को खुला नहीं रख सकते, या आपका क्लाइंट वातावरण EventSource को विश्वसनीय रूप से समर्थन नहीं करता।

सामान्य आदेश राज्य

WaitingForPayment -> WaitingForDelivery -> Done