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 নিচে দেখানো হয়েছে ({…} অংশগুলো আপনার নিজের মান দিয়ে প্রতিস্থাপন করুন)।

এন্ডপয়েন্টএটি যা করে
GET https://api.coinmoebius.com/api/projects/{projectId}/public-infoবাই বাটন যে প্রোভাইডার লিস্ট রেন্ডার করে: প্রজেক্টে সক্ষম করা প্রতিটি পেমেন্ট পদ্ধতি, প্রতিটি শুধুমাত্র তার পাবলিক-সেফ ফিল্ড সহ (লেবেল, আইকন, পাবলিশেবল কি, পে-বাই-মেইলের মেইলিং এড্রেস)। প্রতি-পণ্যের মূল্য, অর্ডারিং এবং লেবেল পেতে ?productId=… যোগ করুন। কোনো কি লাগে না। রেসপন্স এজ ক্যাশ থেকে আসে এবং এক মিনিট পর্যন্ত পুরনো হতে পারে; আপনার ড্যাশবোর্ড সেভ অবিলম্বে দেখা যায়।
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 দিয়ে শুনুন। Angular-তে তা (cm-busy)="onBusy($event)" সরাসরি টেমপ্লেটে, এবং React, Vue এবং সাধারণ JavaScript একই উপায়ে যেকোনো DOM ইভেন্ট বাঁধে। সব ইভেন্ট বাতিলযোগ্য; preventDefault() কী করে তা প্রতিটি ইভেন্টে তালিকাভুক্ত।

ইভেন্টকখন এটি ঘটেডিটেইল পেলোড
cm-busyএকটি ক্লিক প্রসেস শুরু করেছে: বাটন নিজেকে লক করেছে এবং এর স্পিনার দেখিয়েছে। এটি বাতিল করুন বিল্ট-ইন স্পিনার লুকাতে এবং আপনার নিজের লোডিং UI চালাতে। ডাবল-ক্লিক লক সর্বদা ধরে রাখে।খালি।
cm-load-providersপিকার মোডাল এই প্রজেক্টে কনফিগার করা প্রোভাইডারের তালিকার জন্য API-কে জিজ্ঞেস করতে চলেছে।খালি।
cm-checkout-startedক্রেতা একটি প্রোভাইডার বেছে নিয়েছেন আর Coin Moebius একটি চেকআউট সেশন তৈরি করতে চলেছে (Stripe / NOWPayments) কিংবা একটি রেফারেন্স কোড তৈরি করতে চলেছে (manual)।{ provider: 'stripe' | 'nowpayments' | 'manual', ... }
cm-errorকিছু ব্যর্থ হয়েছে: নেটওয়ার্ক ত্রুটি, স্বাক্ষর ব্যর্থতা, কোনো প্রোভাইডার কনফিগার করা নেই। এটি বাতিল করুন বিল্ট-ইন ত্রুটি প্রদর্শন দমন করতে এবং বার্তা আপনার নিজের UI-তে রুট করতে।{ error: Error }
cm-idleপ্রসেসিং স্থির হয়েছে: ক্রেতা চেকআউটে হস্তান্তরিত হয়েছে, পপআপ খুলেছে, অথবা একটি ত্রুটি সামনে এসেছে। cm-busy-এর সঙ্গী শেষ।খালি।
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 / একটি টাইমআউট) দেখে, তারপর অর্ডারটি সম্পন্ন করুন।

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

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