Credits এবং টপআপ

পাঁচটি পেমেন্ট পথ, যাচাইকৃত টপআপ এবং retry-নিরাপদ অনুরোধ।

সর্বশেষ আপডেট: ৩০ সেপ, ২০২৬

একটি draft দিয়ে শুরু করুন

টপআপ draft অনুরোধ করতে একটি write token ব্যবহার করুন। পেমেন্টের আগে pricing থেকে বর্তমান ন্যূনতম পরিমাণ, প্রতি-asset রেট, প্রাপ্যতা, বোনাস এবং cap পড়ুন। উদাহরণের পরিমাণ কমপক্ষে 10,000 credits এবং এই instance-এর কনফিগার করা ন্যূনতমের নিচে কখনো নয়। Credits USD-ভিত্তিক; asset-এর পরিমাণ quote করা হয়, নির্দিষ্ট নয়। একটি draft হলো একটি নির্দেশ, credit বুকিং নয়।

curl -X POST 'https://ftso.app/api/x402/topup' \
  -H 'authorization: Bearer fbx_WRITE_TOKEN' \
  -H 'content-type: application/json' \
  -H 'Idempotency-Key: topup_20260930_001' \
  -d '{"credits":10000,"asset":"FBEST"}'
# asset: FBEST | WFLR | FXRP | FLR | XRP

FBEST, WFLR এবং FXRP

Draft ফেরত দেয় PaymentRouter ঠিকানা, asset, amountRaw, deadline, signedBy, typedData এবং signature। FXRP ছয় দশমিক ব্যবহার করে; এটিকে 18-দশমিক token হিসেবে বিবেচনা করবেন না। প্রত্যাশিত router এবং treasury পাবলিক কনফিগারেশনের সাথে যাচাই করুন, settlementSigner() পড়ুন এবং EIP-712 signature ক্রিপ্টোগ্রাফিকভাবে যাচাই করুন। শুধু signedBy তুলনা করলে signature যাচাই হয় না। approve করার এবং pay() কল করার আগে buyer, asset, amount, chain, deadline, feeBps=0 এবং mode=0 নিশ্চিত করুন।

// draft is response.topup; router and token are viem contract instances.
// Verify the complete authorization before approval or payment.
const m = draft.typedData.message;
await token.write.approve([draft.routerAddress, BigInt(draft.amountRaw)]);
const txHash = await router.write.pay([
  { ...m, amount: BigInt(m.amount), deadline: BigInt(m.deadline), nonce: m.nonce },
  draft.signature,
]);
curl -X POST 'https://ftso.app/api/x402/topup/HANDLE/confirm' \
  -H 'authorization: Bearer fbx_WRITE_TOKEN' \
  -H 'content-type: application/json' \
  -d '{"txHash":"0xPAY_TRANSACTION_HASH"}'

Confirmation credit দেওয়ার আগে পেমেন্ট যাচাই করে। শুধু একটি transaction hash পরিশোধিত টপআপের প্রমাণ নয়। Router অনুমোদিত পরিমাণ স্থানান্তর করে; একটি ডুপ্লিকেট confirmation দুইবার credit দিতে পারে না।

Native FLR

Draft-এর amountWei chain 14-এ payTo ঠিকানায় পাঠান, সাথে এর হুবহু 32-বাইট dataHex handle সহ। কোনো token approval লাগে না। তারপর transaction hash confirm করুন। Credits নির্ভর করে পৌঁছানো মূল্যের উপর, নিচের দিকে round করা এবং কনফিগার করা cap দ্বারা সীমিত।

await wallet.sendTransaction({
  to: draft.payTo,
  value: BigInt(draft.amountWei),
  data: draft.dataHex,
  chainId: 14,
});

Native XRP

ফেরত পাওয়া XRPL ঠিকানা এবং destinationTag, সাথে amountDrops ব্যবহার করুন। Destination tag পেমেন্টকে সঠিক টপআপে বরাদ্দ করে। একটি read token দিয়ে status endpoint poll করুন; worker যাচাইকৃত পৌঁছানো পেমেন্ট asynchronously credit করে। সম্পন্ন হওয়ার কোনো নিশ্চিত সময় নেই। ঐচ্ছিক FDC attestation credit দেওয়ার পরে হয় এবং এটিকে আটকায় না। verifiedByFdc false থেকে যেতে পারে।

curl 'https://ftso.app/api/x402/topup/HANDLE' \
  -H 'authorization: Bearer fbx_READ_TOKEN'

মেয়াদ এবং অতিরিক্ত পেমেন্ট

Draft-এর deadline মেনে চলুন। দেরিতে আসা আনুপাতিক FLR/XRP পেমেন্টে frozen এবং বর্তমান রেটের মধ্যে কমটি ব্যবহৃত হয়; বর্তমান মূল্য না থাকলে worker অপেক্ষা করে। প্রতি-টপআপ cap অতিরিক্ত পেমেন্টের credit সীমিত করে; asset holdings cap অতিক্রম করলে নতুন draft বন্ধ থাকে। Router order, dataHex বা destinationTag ছাড়া কখনো পাঠাবেন না: অ্যাপ্লিকেশন এমন পেমেন্ট নির্ভরযোগ্যভাবে শনাক্ত করতে পারে না।

Idempotency-Key

Bearer সাবস্ক্রিপশন ক্রয়ের জন্য 8–128টি অক্ষর, সংখ্যা, underscore বা hyphen-এর একটি Idempotency-Key প্রয়োজন। এই header watch তৈরি, টপআপ draft, recipient তৈরি এবং channel PUT-এর জন্যও সমর্থিত। Timeout-এর পরে একই key এবং body পুনরায় ব্যবহার করুন। চূড়ান্ত রেসপন্স 24 ঘণ্টা সংরক্ষিত থাকে; body পরিবর্তিত হলে 409 idempotency_key_reused ফেরত আসে। একটি সক্রিয় lease Retry-After সহ 409 idempotency_in_progress ফেরত দেয়। Retry-যোগ্য ব্যর্থতা key মুক্ত করে; মেয়াদোত্তীর্ণ draft 410 draft_expired ফেরত দেয়। Replay rate limit-এ গণনা হয়। ফেরত দেওয়া secret একই ওয়ালেটের replay থেকে 24 ঘণ্টা পর্যন্ত পুনরুদ্ধারযোগ্য হতে পারে।

অর্জিত credits

অর্জিত credits ক্রয় করা credits থেকে আলাদাভাবে হিসাব করা হয়। বিদ্যমান FBEST রূপান্তরে একটি অনুরোধ, admin অনুমোদন এবং ConversionVault-এ একটি ওয়ালেট claim লাগে; স্বয়ংক্রিয় payout বাস্তবায়িত নয়। ব্যবহারকারীর workflow-এর জন্য দেখুন Credits।

টপআপ cap এবং credit সেটিংস

বর্তমানে সক্রিয় রেট, প্রাপ্যতা এবং কনফিগারেশনের জন্য /api/x402/pricing ব্যবহার করুন। এই অংশ এই অ্যাপ্লিকেশন instance-এর কনফিগারেশন পড়ে; এটি treasury বা কোনো remote সার্ভারে query করে না।

  • ন্যূনতম টপআপ credits: 10000
  • প্রতি 1,000 credits-এ USD: 1
  • FBEST: প্রতি-টপআপ সর্বোচ্চ: কোনো cap কনফিগার করা নেই; Treasury holdings সীমা: কোনো cap কনফিগার করা নেই.
  • WFLR: প্রতি-টপআপ সর্বোচ্চ: কোনো cap কনফিগার করা নেই; Treasury holdings সীমা: কোনো cap কনফিগার করা নেই.
  • FXRP: প্রতি-টপআপ সর্বোচ্চ: 1000; Treasury holdings সীমা: 5000.
  • FLR: প্রতি-টপআপ সর্বোচ্চ: কোনো cap কনফিগার করা নেই; Treasury holdings সীমা: কোনো cap কনফিগার করা নেই.
  • XRP: প্রতি-টপআপ সর্বোচ্চ: 1000; Treasury holdings সীমা: 5000.