Codex · III

API ব্যবহার করা

বাই বাটন ছাড়া এটি ব্যবহার করুন

বাই বাটন একটি সুবিধার স্তর। ভেতরে, Coin Moebius একটি ভাড়া করা ওয়েবহুক আর কয়েকটি JSON এন্ডপয়েন্ট। আপনি যদি নিজের UI বানাতে, নিজের চেকআউট ফ্লো চালাতে, কিংবা বাটন সামলাতে পারে না এমন কিছুতে (Square বা Authorize.Net সাবস্ক্রিপশন, একটি কাস্টম পেমেন্ট ফর্ম, একটি সার্ভার-সাইড স্ক্রিপ্ট, একটি মোবাইল অ্যাপ) Coin Moebius প্লাগ করতে চান, বাটন যে প্রতিটি এন্ডপয়েন্ট ব্যবহার করে তা যেকোনো কিছু থেকেও কল করা যায়। আমাদের দিকে কোনো কোড পরিবর্তন নেই।

ব্যাকএন্ড কল অথেন্টিকেট করা

আপনি আপনার নিজের সার্ভার থেকে যেসব কল করেন সেগুলো আপনার প্রজেক্টের API কি একটি বিয়ারার টোকেন হিসেবে বহন করতে পারে। ড্যাশবোর্ডে, আপনার প্রজেক্টের API কি-গুলোর অধীনে একটি কি তৈরি করুন (এটি cmk_ দিয়ে শুরু হয়), আর এটি Authorization হেডারে পাঠান:

Authorization: Bearer cmk_live_xxxxxxxxxxxxxxxxxxxxxxxx

কি-টি একটি প্রজেক্টের সাথে বাঁধা, আর অথেন্টিকেট করা কল বেনামি কলের চেয়ে উচ্চ রেট লিমিট পায়। বাই বাটন নিজে পাবলিক আর কোনো কি লাগে না। আপনার কি আপনার সার্ভারে রাখুন। কখনো এটি ব্রাউজার বা অন্য ক্লায়েন্ট-সাইড কোডে রাখবেন না।

এই এন্ডপয়েন্টগুলো সবই আপনার প্রজেক্ট URL-এর অধীনে থাকে। প্রোডাকশনে সেই বেস হলো https://api.coinmoebius.com। প্রতিটির সম্পূর্ণ URL নিচে দেখানো হয়েছে ({…} অংশগুলো আপনার নিজের মান দিয়ে প্রতিস্থাপন করুন)।

এন্ডপয়েন্টএটি যা করে
POST https://api.coinmoebius.com/api/checkout/{provider}/{projectId}একটি চেকআউট শুরু করুন। POST { productId, metadata }; প্রোভাইডারের যা দরকার তা ফেরত পান (Stripe-এর জন্য একটি রিডাইরেক্ট URL, PayPal-এর জন্য একটি অনুমোদন URL, Authorize.Net Accept Hosted-এর জন্য একটি টোকেন)। যেমন খুশি এটি রেন্ডার করুন।
POST https://api.coinmoebius.com/webhook/{provider}/{projectId}প্রোভাইডার এখানে পোস্ট করে। আমরা সিগনেচার যাচাই করি, ইভেন্ট নর্মালাইজ করি, সংরক্ষণ করি, কোটা গণনা করি। মূল চেকআউট আমাদের বাটন থেকে আসুক বা আপনার নিজের ইন্টিগ্রেশন থেকে, প্রোভাইডারের ওয়েবহুক এই URL-এ নির্দেশ করুন।
GET https://api.coinmoebius.com/status/{projectId}/{txId}একটি পেমেন্ট বা সাবস্ক্রিপশনের বর্তমান অবস্থার জন্য পোল করুন। বাই বাটন যে একই নর্মালাইজড আকার পায় তা ফেরত দেয়।
POST https://api.coinmoebius.com/api/subscriptions/{projectId}/{subscriptionId}/portal-urlক্রেতার সাবস্ক্রিপশন পরিচালনার জন্য একটি প্রোভাইডার-হোস্টেড পোর্টাল URL তৈরি করুন। যেকোনো প্রোভাইডারের জন্য কাজ করে যার একটি পোর্টাল আছে।

চেকআউট কলে metadata.customerRef পাঠিয়ে আপনার নিজের সিস্টেমে ক্রেতাকে শনাক্ত করুন। এটি প্রোভাইডারের মধ্য দিয়ে আর প্রতিটি ওয়েবহুক ইভেন্টে ফেরত যায়, তাই ক্রেতা সম্পর্কে আমরা কিছু সংরক্ষণ না করেই আপনি Coin Moebius-এর রেকর্ড আপনার নিজের ব্যবহারকারী ডেটাবেসের সাথে যুক্ত করতে পারেন।

কেউ এই পথ কেন ব্যবহার করেন: একজন স্ট্যাটিক-সাইট বিল্ডার যিনি তাঁর সাইটের ডিজাইনের সাথে মেলাতে নিজের বাটন লিখতে চান আর শুধু ওয়েবহুকটি সামলানো দরকার। একজন ডেভেলপার যিনি বাটন একদম বাদ দিয়ে নিজের সার্ভার থেকে API কল করতে চান। একজন মার্চেন্ট যিনি Square বা Authorize.Net সাবস্ক্রিপশন চালাতে চান আর নিজে কার্ড সংগ্রহ যুক্ত করতে রাজি। বাটন একটি শুরুর বিন্দু। API-ই আসল পণ্য।

ক্রেতার ইভেন্ট শোনা

এলিমেন্টটি তিনটি ব্রাউজার ইভেন্ট ঘটায়। এলিমেন্টে (বা document-এ, ইভেন্ট বাবল করে) addEventListener দিয়ে শুনুন। সব ইভেন্ট বাতিলযোগ্য, event.preventDefault() কল করলে ডিফল্ট ফ্লো থামে।

ইভেন্টকখন এটি ঘটেডিটেইল পেলোড
cm-load-providersপিকার মোডাল এই প্রজেক্টে কনফিগার করা প্রোভাইডারের তালিকার জন্য API-কে জিজ্ঞেস করতে চলেছে।খালি।
cm-checkout-startedক্রেতা একটি প্রোভাইডার বেছে নিয়েছেন আর Coin Moebius একটি চেকআউট সেশন তৈরি করতে চলেছে (Stripe / NOWPayments) কিংবা একটি রেফারেন্স কোড তৈরি করতে চলেছে (manual)।{ provider: 'stripe' | 'nowpayments' | 'manual', ... }
cm-errorকিছু ব্যর্থ হয়েছে: নেটওয়ার্ক ত্রুটি, সিগনেচার ব্যর্থতা, কোনো প্রোভাইডার কনফিগার করা নেই।{ error: Error }
document.addEventListener('cm-error', (event) => {
  console.error('Coin Moebius:', event.detail.error);
  // Show your own error UI, send to your analytics, etc.
});

ক্রেতার ব্রাউজারে কোনো cm-success ইভেন্ট নেই। পেমেন্ট আসলে সম্পন্ন হওয়ার সময়ের মধ্যে, ক্রেতাকে পেমেন্ট প্রোভাইডারের হোস্টেড চেকআউটে (Stripe Checkout, NOWPayments ইনভয়েস পৃষ্ঠা) রিডাইরেক্ট করা হয়েছে। তাঁরা আপনার কনফিগার করা success_url-এর মাধ্যমে আপনার সাইটে ফিরে আসেন (পরবর্তী বিভাগ দেখুন), আর আপনার সার্ভার ড্যাশবোর্ডের মাধ্যমে বা /status এন্ডপয়েন্ট পোল করে পেমেন্ট সম্পর্কে জানে।

আপনার ব্যাকএন্ড থেকে পোলিং

একটি সার্ভার-সাইড সত্যের উৎসের জন্য, আপনার ব্যাকএন্ড থেকে GET /status/:projectId/:txId পোল করুন। রেসপন্স আকার:

{
  "status": "succeeded",
  "amount": 29.99,
  "currency": "USD",
  "isTest": false,
  "createdAt": "2026-05-14T01:04:21.000Z",
  "updatedAt": "2026-05-14T01:04:21.000Z"
}

স্ট্যাটাস মান ড্যাশবোর্ডের মতোই একই enum অনুসরণ করে (লেনদেন স্ট্যাটাস দেখুন)। এন্ডপয়েন্টটি অননুমোদিত কিন্তু প্রতি IP-তে মিনিটে 60 অনুরোধে রেট-লিমিটেড। আপনি যে লেনদেন আইডি পাস করেন তা SDK cm-checkout-started ইভেন্টে যা ফেরত দিয়েছে কিংবা ড্যাশবোর্ডের Reference কলামে যা দেখায় তা।

একটি সাধারণ প্যাটার্ন: আপনার success_url পৃষ্ঠা লোড হলে, একটি ব্যাকএন্ড জব শুরু করুন যা প্রতি 15 সেকেন্ডে /status/:projectId/:txId পোল করে যতক্ষণ না এটি succeeded (বা failed / একটি টাইমআউট) দেখে, তারপর অর্ডারটি সম্পন্ন করুন।

যুক্ত করতে প্রস্তুত?

ফ্রি টিয়ার বেশিরভাগ সাইট কভার করে আর কখনো কার্ড চায় না।