API key, signature, endpoint — এসব নিয়ে কাজ করলে পাশের API Docs পাতা দেখুন। এখানে শুধু প্যানেল আর অ্যান্ড্রয়েড অ্যাপ।
গেটওয়ে সরাসরি বিকাশ বা নগদে কোনো রিকোয়েস্ট পাঠায় না। আপনার গ্রাহক টাকা পাঠান, ব্যাংক/অপারেটর আপনার ফোনে SMS পাঠায়, আর আপনার ফোনের অ্যাপ সেই SMS-টা সার্ভারে পাঠায়। সার্ভার তখন গ্রাহকের দেওয়া Transaction ID-এর সাথে SMS-এর TrxID মিলিয়ে পেমেন্টটি সম্পন্ন করে।
- ০১গ্রাহক আপনার চেকআউটে টাকা পাঠান
- ০২অপারেটর আপনার ফোনে SMS পাঠায়
- ০৩অ্যাপ SMS-টি সার্ভারে পাঠায়
- ০৪সার্ভার TrxID ও টাকার পরিমাণ মেলায়
- ০৫অর্ডার confirm, আপনার সাইটে ফেরত
এই কারণেই আপনার ফোন সবসময় অনলাইন আর ইন্টারনেটে থাকা লাগবে। ফোন বন্ধ থাকলে, প্লেন মোডে থাকলে, বা অ্যাপটি battery optimisation-এ বন্ধ হয়ে গেলে SMS সার্ভারে পৌঁছাবে না — গ্রাহকের টাকা কেটে যাবে, কিন্তু অর্ডার confirm হবে না।
নতুন অ্যাকাউন্টে এই চারটি কাজ করলেই পেমেন্ট নেওয়া শুরু করা যায়।
- ১Brand যোগ করুনBrands → Add Brand। দোকানের নাম, লোগো, এবং
success_url ও cancel_url দিন — পেমেন্ট শেষে গ্রাহক এই ঠিকানায় ফিরে আসবে।
- ২পেমেন্ট মেথড চালু করুনPayment Settings-এ আপনার Brand বেছে নিয়ে Mobile Banking, Bank Transfer, International Banking ও Bangla QR — যেগুলো দরকার সেগুলো চালু করুন।
- ৩হ্যান্ডসেট যোগ করুনDevices → Add Device। যে ফোনে অপারেটরের SMS আসে, সেটাই যোগ করবেন।
- ৪একটা টেস্ট পেমেন্ট করুননিজে ১০ টাকা পাঠিয়ে দেখে নিন অর্ডার confirm হয় কিনা। নতুন অ্যাকাউন্টে এই একটা পরীক্ষা করলে পরে অনেক ঝামেলা বাঁচে।
অ্যাপটি আপনার ফোনে বসিয়ে তিনটি কাজ করতে হয়।
- ১Device Key নিনপ্যানেলে Devices → Add Device থেকে যে key পাবেন, সেটি অ্যাপে বসান। এই key দিয়ে ফোনটি আপনার অ্যাকাউন্টের সাথে যুক্ত হয়।
- ২অনুমতি দিনঅ্যাপ চালু করে সব অনুমতি "Allow" দিন — বিশেষ করে SMS পড়া ও গ্রহণ। একটা অনুমতি আটকে রাখলে পেমেন্ট একেবারেই আসবে না।
- ৩কাজ চালু রাখুনAuto-Sync এবং Floating Bubble — দুটোই চালু রাখুন। প্যানেলের Device Status পাতায় সবুজ Online দেখলেই বুঝবেন ঠিক আছে।
ফোন যেন অ্যাপটা বন্ধ না করে। Android-এর ব্যাটারি সেভার কয়েক ঘণ্টা পরপর অ্যাপ বন্ধ করে দেয়। ফোনের Settings → Apps → Nagorik Pay → Battery থেকে Unrestricted (বা "Battery optimisation" বন্ধ) করে দিন। এটাই সবচেয়ে বেশি পেমেন্ট নষ্ট করে।
ফোন হারালে বা বদলালে প্যানেলের Device Status পাতা থেকে পুরনো key-টি unbind করে নতুন ফোনটি যোগ করুন। পুরনো key চালু রেখে দিলে দুই ফোনের SMS মিশে যেতে পারে।
| স্ট্যাটাস | অর্থ | কী করবেন |
Pending |
গ্রাহক পেমেন্টের তথ্য দিয়েছেন, কিন্তু SMS এখনো মেলানো যায়নি। |
অপেক্ষা করুন। অপারেটরের SMS আসতে ২–৫ মিনিট লাগতে পারে। |
Initiate |
পেমেন্ট শুরু হয়েছে, তবে এখনো চূড়ান্ত হয়নি। |
সাধারণত নিজে থেকেই এগিয়ে যায়। আটকে থাকলে নিচে দেখুন। |
Success |
TrxID ও টাকার পরিমাণ — দুটোই মিলেছে। অর্ডার নিশ্চিত। |
কিছু করার নেই। গ্রাহককে জানিয়ে দিন। |
Cancel |
গ্রাহক নিজে বাতিল করেছেন, অথবা আপনি বাতিল করেছেন। |
গ্রাহক চাইলে আবার শুরু করতে পারবেন। |
টাকার হিসাব মিলিয়ে দেখুন। Success মানেই টাকা আপনার অ্যাকাউন্টে এসেছে। Fund History পাতায় সবসময় আপনার ব্যালেন্সের সাথে মিলিয়ে নিন — কোনো পেমেন্ট বাদ পড়লে সেটা দিয়েই ধরতে পারবেন।
পেমেন্ট Pending বা Initiate-এ বসে থাকলে এই ক্রমে দেখুন — বেশিরভাগ সমস্যা প্রথম দুই ধাপেই ধরা পড়ে।
- ১ফোন কি অনলাইন?প্যানেলে Device Status খুলুন। Offline বা Never seen দেখালে অ্যাপটি ফোনে আর চালু নেই — ফোন খুলে অ্যাপ চালু করুন।
- ২SMS কি ফোনে এসেছে?ফোনের Messages-এ অপারেটরের SMS-টা খুঁজুন। এসেছে অথচ প্যানেলে আসেনি — অ্যাপের অনুমতি বন্ধ হয়ে গেছে।
- ৩টাকার পরিমাণ মিলছে কি?গ্রাহক কম/বেশি পাঠালে অমিল হবে। নিচের অংশটি দেখুন।
- ৪একই TrxID আগে ব্যবহৃত হয়েছে কি?একই Transaction ID দিয়ে দুইবার পেমেন্ট নেওয়া যায় না — সিস্টেম সেটি আটকে দেয়। গ্রাহককে নতুন পেমেন্টের নতুন ID দিতে বলুন।
- ৫Stored Data দেখুনStored Data পাতায় আপনার ফোন থেকে আসা সব SMS থাকে। গ্রাহকের TrxID সেখানে খুঁজে পেলে প্যানেল থেকে হাতে যাচাই করে Success করে দিতে পারেন।
প্যানেলের Transaction Details থেকে পেমেন্টটি Success বা Cancel করে দেওয়ার সুযোগ আছে। তবে আগে নিশ্চিত হোন যে টাকা সত্যিই আপনার অ্যাকাউন্টে এসেছে — অ্যাপের মোবাইল ব্যাংকিং ব্যালেন্স চেক করে দেখুন। ভুল করে Success দিলে পরে হিসাব মেলানো কঠিন হয়ে যায়।
চেকআউটে গ্রাহককে যে টাকাটা দেখানো হয়, সেটি শুধু আপনার পণ্যের দাম নয় — তার সাথে আপনার charge-ও যোগ করা থাকে। গ্রাহক যদি শুধু দামটা পাঠান, তাহলে SMS-এর পরিমাণ কম আসবে আর পেমেন্ট মিলবে না।
| যা হয়েছে | কেন | সমাধান |
| গ্রাহক "টাকার পরিমাণ মিলছে না" বার্তা পেয়েছেন |
তিনি দাম পাঠিয়েছেন, দাম + charge নয়। |
গ্রাহককে চেকআউটে দেখানো Total Payable-এর পুরো টাকাটাই পাঠাতে বলুন। |
| পেমেন্ট Pending-এ পড়ে আছে |
SMS-টি এখনো আসেনি, অথবা অন্য অপারেটরের SMS হিসেবে এসেছে। |
কয়েক মিনিট অপেক্ষা করুন; না হলে Stored Data-তে TrxID খুঁজুন। |
গ্রাহক পেমেন্টে ভুল করলে তাকে আরেকবার টাকা পাঠাতে বলবেন না। আগেরটা ফেরত পেতে অপারেটরে আবেদন করতে হয়, আর দুবার পাঠালে হিসাব গুলিয়ে যায়। আগের TrxID-টা ব্যবহার করে অর্ডারটি Success করে দিন।
Brand-এ webhook_url দিয়ে রাখলে পেমেন্টের স্ট্যাটাস বদলালেই আপনার সাইটে একটি POST যাবে। চেকআউট খোলা রেখে গ্রাহকের অপেক্ষা না করে অর্ডার প্রসেস করার সবচেয়ে ভালো উপায় এটাই — বিশেষ করে SMS দেরিতে এলে।
- ১HTTPS দিনশুধু
https:// ঠিকানা গ্রহণ করা হয়। http:// দিলে কিছুই যাবে না।
- ২একই ডেলিভারি দুবার আসতে পারেআপনার কোডে
transactionId একবারই প্রসেস করবেন। আবার এলে ignore করুন — নইলে এক পেমেন্টে দুইবার অর্ডার হয়ে যাবে।
- ৩না এলে আবার পাঠানTransaction Details পাতায় Resend Webhook আছে। আপনার সার্ভার কিছুক্ষণ বন্ধ ছিল — এমন হলে ওখান থেকেই আবার পাঠিয়ে দিন।
প্রতিটি ডেলিভারির ফলাফল প্যানেলের Webhook Logs-এ লেখা থাকে — কবে, কোন স্ট্যাটাসে, কী উত্তর এসেছে। কিছু না এলে সেখান থেকেই প্রথমে দেখুন।
উপরের ধাপগুলো দেখেও সমস্যা না মিললে যোগাযোগ করার আগে এই তথ্যগুলো হাতে রাখুন — তাহলে অনেক দ্রুত সমাধান হবে।
| যা লাগবে | কোথায় পাবেন |
| Payment ID | Transaction Details পাতা |
| TrxID | Transaction Details পাতা, অথবা Stored Data |
| ফোনের অবস্থা | Device Status — Online না Offline |
| সময় | পেমেন্টটি কখন হয়েছিল |