সংক্ষিপ্ত উত্তর

নির্ভরযোগ্য SMS যাচাই ক্যাটালগ অনুসন্ধান, ব্যবহারকারী-নির্দিষ্ট মূল্য প্রস্তাব, idempotent অর্ডার তৈরি, অবস্থা পাওয়া ও নিশ্চিত বাতিল আলাদা করে। প্রদানকারীর key সার্ভারে রাখুন এবং প্রতি অনুরোধে মালিকানা যাচাই করুন। অনিশ্চিত উত্তরকে মিলিয়ে দেখার প্রয়োজন হিসেবে ধরুন; স্বয়ংক্রিয় পুনরায় কেনা বা নিশ্চিত না হয়ে ফেরত দেবেন না।

ক্লায়েন্ট ইন্টারফেস ও প্রদানকারীর প্রবেশাধিকার আলাদা করুন

ব্রাউজার আপনার অ্যাপ API চাইবে; আপনার সার্ভার SMS প্রদানকারীকে ডাকবে। প্রদানকারীর তথ্য runtime secret-এ রাখুন এবং পরিচয় যাচাই করা ব্যবহারকারীর প্রয়োজনীয় অর্ডার ক্ষেত্রই ফেরান। প্রকাশ্য ক্যাটালগ ব্যক্তিগত অ্যাকাউন্ট বা ইনবক্স থেকে আলাদা। অবস্থা polling, বাতিল ও সম্পন্নসহ প্রতি অর্ডারের কাজে মালিকানা দেখুন। শুধু কেনার রুটে পরিচয় যাচাই যথেষ্ট নয়।

স্বল্পস্থায়ী ও নির্ভরযোগ্য মূল্য প্রস্তাব তৈরি করুন

ReceiveSMSGo-এর বাস্তবায়িত POST /api/v1/quotes ব্যবহারকারী-নির্দিষ্ট 60 সেকেন্ডের মূল্য প্রস্তাব দেয়। সার্ভার USD মূল্য max($0.39, রূপান্তরিত প্রদানকারীর খরচ × 2) হিসেবে গণনা করে। অর্ডার তৈরিতে ক্লায়েন্ট বিশ্বাসযোগ্য বলে কোনো মূল্য নয়, প্রস্তাবের পরিচিতি পাঠায়। মেয়াদ শেষ হলে নতুন প্রস্তাব চান। দেখা ও কেনার মাঝখানে অফার শেষ হতে পারে, তাই প্রাপ্যতার ত্রুটি স্পষ্টভাবে দেখান।

একবার সংরক্ষণ করুন, অনিশ্চিত কেনাকাটা মেলান

POST /api/v1/orders-এ Idempotency-Key ও quoteId লাগে। একই কাজের জন্য একই key আবার ব্যবহার করলে বিদ্যমান অর্ডার ফেরত আসে। ওয়ালেট সংরক্ষণ ও লেজার হালনাগাদ একসঙ্গে atomic হয়। প্রদানকারীর কেনার উত্তর অস্পষ্ট হলে অর্ডার পর্যালোচনায় যায়, স্বয়ংক্রিয়ভাবে আবার কেনে না। Idempotency অ্যাপের সীমা সুরক্ষিত করে; প্রদানকারীর টাইমআউট জাদুর মতো মেলায় না।

  1. একটি কেনার জন্য একটি key তৈরি করে পুনঃচেষ্টায় রাখুন।
  2. পরিচয় যাচাই করা ব্যবহারকারীর সঙ্গে বর্তমান মূল্য প্রস্তাবের পরিচিতি পাঠান।
  3. আরেকটি কেনার আগে অস্পষ্ট ফলাফল মিলিয়ে দেখুন।

প্রদানকারীকে অতিরিক্ত অনুরোধ না করে নিজের অর্ডার poll করুন

GET /api/v1/orders/{id} ব্যবহারকারীর অর্ডার ফেরায় এবং সক্রিয় প্রদানকারীর অবস্থা হালনাগাদ করতে পারে। বাস্তবায়নে প্রতি অর্ডারে পাঁচ সেকেন্ডে সর্বোচ্চ একবার প্রদানকারী যাচাই হয়। অপেক্ষা, বার্তা পাওয়া, সম্পন্ন, বাতিল, মেয়াদোত্তীর্ণ ও পর্যালোচনা পৃথক রাখুন। নথিতে একক অস্পষ্ট হলে নিজে থেকে মেয়াদ বানাবেন না। ব্রাউজার বন্ধ হওয়া দূরের অর্ডার শেষের প্রমাণ নয়।

ব্যালেন্স বদলানোর আগে বাতিল নিশ্চিত করুন

POST /api/v1/orders/{id} cancel বা finish গ্রহণ করে। তৈরি হওয়ার পর 120 সেকেন্ড বাতিল বন্ধ; এরপর সার্ভার একবার ফেরতের আগে প্রদানকারীর বাতিল চায়। সম্পন্ন করতে পাওয়া SMS কোড দরকার। সমান্তরাল কাজ state transition দিয়ে ওভারল্যাপ ঠেকায়। ব্যর্থ নেটওয়ার্ক অনুরোধ সফল বাতিল বা দ্বিগুণ অর্থ জমার অনুমতি হিসেবে ধরা যাবে না।

Callback যাচাই করুন এবং কোড ও চালুর প্রস্তুতি আলাদা রাখুন

আসা কোনো কলব্যাক নিজে থেকেই নির্ভরযোগ্য নয়। Stripe-এর স্বাক্ষর যাচাইয়ের পর ব্যালেন্স যোগ করার আগে পেমেন্টের মূল রেকর্ড অনুসন্ধান করা হয়। স্বাক্ষরহীন SMS অবস্থার বিজ্ঞপ্তি কেবল পরিচয় যাচাই করে অর্ডারের অবস্থা জানার একটি সংকেত। Stripe-এর পরীক্ষামূলক ও প্রকৃত ইভেন্টকে নিজস্ব endpoint secret, অ্যাকাউন্ট এবং জমার পরিবেশের সঙ্গে মিলতে হবে। বাইরের কলব্যাকের ঠিকানায় পৌঁছানো সম্ভব হতে হবে; রিডাইরেক্ট পেমেন্টের প্রমাণ নয়। কর্মক্ষেত্রের API ব্যবহার করতে সাইটে পরিচয় যাচাইকৃত সেশন প্রয়োজন, প্রকাশ্য ডেভেলপার API কী নয়। ইন্টিগ্রেশনের আগে সক্রিয় কার্যক্রম এবং OpenAPI দেখুন।

দরকারি প্রশ্ন, স্পষ্ট উত্তর

প্রদানকারীর API key frontend কোডে রাখতে পারি?

না। সার্ভারের runtime secret-এ রাখুন। Frontend পরিচয় যাচাই করা ব্যবহারকারীর সঙ্গে আপনার নিজের API ডাকবে।

কেনা টাইমআউট হলে নতুন key দিয়ে আবার চেষ্টা করব?

আগে আসল অর্ডার নিয়ে অবস্থা মিলিয়ে দেখুন। নতুন key আরেক কেনাকাটা বোঝায় এবং আবার অর্থ কাটতে পারে।

ReceiveSMSGo API কি প্রকাশ্য developer key সেবা?

না। কাজগুলো সাইটের পরিচয় যাচাই করা session ব্যবহার করে। আলাদা প্রকাশ্য API-key পণ্য ও পুরো যাচাই করা production কার্যক্রম এখনো নেই।

তথ্যসূত্র ও আরও পড়া

সূত্র নিজস্ব সেবা বোঝায় এবং বদলাতে পারে। নম্বর বাছার আগে গন্তব্যের বর্তমান শর্ত দেখুন।

শুরুর আগে কার্যপ্রবাহ বুঝুন।

কর্মক্ষেত্রে সেবা, দেশ ও SMS অবস্থা দেখুন। অফার ও প্রাপ্যতা প্রদানকারীর ওপর নির্ভর করে; নম্বর গ্রহণ ও পৌঁছানোর নিশ্চয়তা নেই। ওয়ালেট ও অর্ডারে লগইন লাগে।

কর্মক্ষেত্র খুলুন