মূল কনটেন্টে যান
BetterSoftZ
ইঞ্জিনিয়ারিংপ্রকাশিত ৫ সেপ্টেম্বর, ২০২৬

বিকাশ ও নগদ ইন্টিগ্রেশন সঠিকভাবে করার উপায়

পেমেন্ট কল করাটা সহজ অংশ। একটি ইন্টিগ্রেশনকে ভরসাযোগ্য করে তোলার সব কাজ হয় ব্যর্থতার পথগুলোতে।

লিখেছেন BetterSoftZ Engineering, ঢাকা

প্রোডাকশনে চালানোর মতো বিকাশ বা নগদ ইন্টিগ্রেশনে শুধু পেমেন্ট কল যথেষ্ট নয়। লাগে আইডেমপোটেন্সি, যাতে রিট্রাইয়ে দুবার টাকা না কাটে; বারবার আসা কলব্যাক বাদ দেওয়ার ব্যবস্থা; নির্দিষ্ট সময় পরপর স্ট্যাটাস চেক, কারণ কলব্যাক আসবেই এমন নিশ্চয়তা নেই; রিফান্ড ও রিভার্সালের সুস্পষ্ট ব্যবস্থা; আর প্রোভাইডারের সেটেলমেন্ট স্টেটমেন্টের সাথে প্রতিদিন স্বয়ংক্রিয়ভাবে হিসাব মেলানো।

প্রোভাইডারকে কল করার আগেই নিজের রেকর্ড তৈরি করুন

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

টাকা নড়াচড়া করে এমন প্রতিটি অপারেশন আইডেমপোটেন্ট রাখুন

রিট্রাই স্বাভাবিক ব্যাপার — দুর্বল কানেকশনে থাকা মোবাইল ক্লায়েন্ট আবার পাঠাবেই। টাকা নড়াচড়া করে এমন প্রতিটি অপারেশনের সাথে একটি আইডেমপোটেন্সি কী থাকে, আর একই কী দিয়ে আবার রিকোয়েস্ট এলে কাজটি দ্বিতীয়বার না করে আগের ফলাফলই ফেরত দেওয়া হয়। শুধু এই একটি সিদ্ধান্তেই দুবার টাকা কাটার বেশিরভাগ ঘটনা ঠেকানো যায়।

কলব্যাককে অনির্ভরযোগ্য, এলোমেলো ও পুনরাবৃত্ত ধরে নিন

প্রোভাইডারের কলব্যাক দুবার আসতে পারে, দেরিতে আসতে পারে, ক্রম ভেঙে আসতে পারে, আবার একেবারেই না-ও আসতে পারে। একটি সঠিক হ্যান্ডলার:

  1. কলব্যাকটি আসল কি না যাচাই করে।
  2. প্রোভাইডারের ট্রানজ্যাকশন আইডি ধরে ডুপ্লিকেট বাদ দেয়।
  3. লেনদেনটি তখনও পেন্ডিং থাকলেই কেবল স্টেট পরিবর্তন করে।
  4. পরে বিরোধ তদন্তের জন্য মূল পেলোড সংরক্ষণ করে।

এর পাশাপাশি একটি নির্ধারিত জব তখনও পেন্ডিং থাকা সব কিছু প্রোভাইডারের স্ট্যাটাস এপিআই দিয়ে যাচাই করে, কারণ যে সিস্টেম শুধু কলব্যাকের প্রতিক্রিয়া দেখায়, সেখানে কিছু লেনদেন চিরকাল আটকে থাকে।

রিফান্ড মানে নেগেটিভ পেমেন্ট নয়

রিফান্ডকে মূল পেমেন্টের সাথে যুক্ত আলাদা লেনদেন হিসেবে সাজান — আংশিক পরিমাণ সমর্থন করে, নিজস্ব স্টেট মেশিনসহ। এতে হিসাব মেলানো, বিরোধ নিষ্পত্তি ও অ্যাকাউন্টিং — সবই উল্লেখযোগ্যভাবে সহজ হয়, আর আংশিক ডেলিভারি হওয়া অর্ডারে আংশিক রিফান্ড আর হাতে ঠিক করার কাজ থাকে না।

প্রতিদিন, স্বয়ংক্রিয়ভাবে হিসাব মেলান

দিনশেষে আপনার লেজার প্রোভাইডারের সেটেলমেন্ট স্টেটমেন্টের সাথে মিলিয়ে দেখুন। যা মেলে না, তা লেনদেনের প্রাসঙ্গিক তথ্যসহ একটি এক্সেপশন কিউতে যায়। লক্ষ্য হলো প্রতিদিন সকালে ছোট একটি তালিকা, যা একজন মানুষ কয়েক মিনিটে শেষ করতে পারেন — এমন কোনো পার্থক্য নিয়ে মাসিক তদন্ত নয়, যার ব্যাখ্যা কেউ দিতে পারে না।

প্রোডাকশনের আগে নিজেই ব্যর্থতাগুলো পরীক্ষা করুন

প্রোভাইডারের স্যান্ডবক্সে সেই পরিস্থিতিগুলো স্ক্রিপ্ট করে চালান, যেগুলো আসলেই সমস্যা তৈরি করে: পেমেন্টের মাঝপথে টাইমআউট, ডুপ্লিকেট কলব্যাক, অজানা লেনদেনের কলব্যাক, আংশিক রিফান্ড এবং সেটেলমেন্টে গরমিল। লঞ্চের আগে যে ব্যর্থতা পরীক্ষা করা হয়নি, সেটি পরে একজন গ্রাহকই পরীক্ষা করে দেখাবেন।

সাধারণ জিজ্ঞাসা

পেমেন্ট মাঝে মাঝে দুবার রেকর্ড হয় কেন?

সাধারণত কারণ ইন্টিগ্রেশনটি কলব্যাককে একবারের ঘটনা ধরে নেয়। প্রোভাইডার রিট্রাই করে, আর নেটওয়ার্কে সামান্য সমস্যা হলেই একই নোটিফিকেশন একাধিকবার পৌঁছাতে পারে। ডিডুপ্লিকেশন ও আইডেমপোটেন্সি কী না থাকলে প্রতিবার পৌঁছানো মানেই আরেকটি ক্রেডিট।

কলব্যাক যদি কখনো না আসে?

এমনটা ঘটে, তাই সিস্টেমকে কলব্যাকের উপর নির্ভরশীল রাখা উচিত নয়। নির্দিষ্ট সময়ের বেশি পেন্ডিং থাকা লেনদেন নিয়ম করে প্রোভাইডারের স্ট্যাটাস এপিআই দিয়ে যাচাই করা হয় এবং অপেক্ষা না করে সেখান থেকেই নিষ্পত্তি করা হয়।

রিফান্ড কীভাবে সামলানো উচিত?

আলাদা লেনদেন হিসেবে, নিজস্ব রেকর্ডসহ, মূল পেমেন্টের সাথে যুক্ত করে — আংশিক রিফান্ডসহ। রিফান্ডকে নেগেটিভ পেমেন্ট হিসেবে ধরলে পরে হিসাব মেলানো আর বিরোধ নিষ্পত্তি অনেক কঠিন হয়ে যায়।

এই সিদ্ধান্তটি কি নিজেই নিচ্ছেন?

আপনার পরিস্থিতি জানান, আমরা বলব আমরা হলে কী করতাম — উত্তর যদি হয় আমাদের নিয়োগ না দেওয়া, সেটাও।