NAGAD API v3.3

Developer Portal & Reference

Architecture Comparison
Architectural Comparison

bKash vs Nagad API Setup Comparison

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

bKash Payment API OAuth2 Token Based
  • অথেনটিকেশন: App Key, App Secret, Username ও Password দিয়ে JWT Bearer Token জেনারেট করা হয়।
  • এনক্রিপশন: কোনো পাবলিক/প্রাইভেট কি বা RSA এনক্রিপশন লাগে না। প্লেইন JSON পাঠানো যায়।
  • কল ফ্লো: Grant Token → Create Payment → User PIN → Execute Payment।
Nagad Payment API RSA Dual-Key Crypto
  • অথেনটিকেশন: কোনো Token নেই। প্রতিটি রিকোয়েস্টে RSA Encryption ও Digital Signature দিতে হয়।
  • এনক্রিপশন: 2048-bit RSA PKCS1Padding এনক্রিপশন এবং SHA1withRSA সাইনিং বাধ্যতামূলক।
  • কল ফ্লো: Initialize Order → Place Order → User PIN → Callback → Verify API।

Side-by-Side Master Comparison Table

বৈশিষ্ট্য (Feature) bKash Gateway Nagad Gateway
১. অথেনটিকেশন মডেল OAuth 2.0 Bearer Token
Token রিকোয়েস্ট করে এক ঘণ্টা পর পর Refresh করতে হয়।
Asymmetric RSA Cryptography
কোনো টোকেন নেই, প্রতিটি রিকোয়েস্টে লাইভ সাইন করতে হয়।
২. ক্রেডেনশিয়ালস ও সেটআপ
  • app_key
  • app_secret
  • username
  • password
  • Merchant ID (১৫ ডিজিট)
  • Merchant RSA Private Key
  • Merchant RSA Public Key
  • Nagad Gateway Public Key
৩. পে-লোড এনক্রিপশন প্রয়োজন নেই
প্লেইন JSON ডাটা সরাসরি পাঠানো যায়।
বাধ্যতামূলক
sensitiveData-কে RSA/PKCS1Padding দিয়ে এনক্রিপ্ট ও Base64 এনকোড করতে হয়।
৪. ডিজিটাল সিগনেচার প্রয়োজন নেই। SHA1withRSA অ্যালগরিদম দিয়ে প্লেইন JSON সাইন করে signature ফিল্ডে পাঠাতে হয়।
৫. পেমেন্ট তৈরি করার ধাপ ১টি ধাপ:
POST /tokenized/checkout/create (সরাসরি bkashURL ফেরত দেয়)।
২টি ধাপ:
১. POST /initialize (PaymentRefId নেয়)
২. POST /complete (Redirect URL পায়)
৬. ফাইনাল পেমেন্ট কনফার্মেশন Execute API Call:
ইউজার পিন দেওয়ার পর মার্চেন্ট সার্ভার থেকে POST /execute কল করে টাকা কাটা সম্পন্ন করতে হয়।
Automatic Debit & Verify API:
নগদ নিজে টাকা কাটার পর মার্চেন্টকে কলব্যাক পাঠায়। এরপর মার্চেন্ট GET /verify কল করে স্ট্যাটাস নিশ্চিত করে।
৭. রিকোয়েস্ট হেডার্স (Headers) - authorization: Bearer {token}
- x-app-key: {app_key}
- Content-Type: application/json
- X-KM-IP-V4: {user_ip}
- X-KM-Client-Type: PC_WEB
- X-KM-Api-Version: v-0.2.0
- Content-Type: application/json
৮. টাইমস্ট্যাম্প ও ঘড়ি সিনক্রোনাইজেশন সার্ভার টাইমে তেমন কড়াকড়ি নেই। অত্যন্ত সংবেদনশীল:
হুবহু 14-ডিজিট yyyyMMddHHmmss হতে হয় এবং সার্ভার টাইম কয়েক মিনিট অমিল হলেই এরর (16_0006_076) দেয়।
৯. ডেভেলপার ইন্টিগ্রেশন জটিলতা সহজ (Easy): যে কোনো REST ক্লায়েন্ট বা curl দিয়ে সহজেই টেস্ট করা যায়। মাঝারি থেকে জটিল (Intermediate/Complex): RSA এনক্রিপশন ও সাইনিং ফাংশন ঠিকমতো কনফিগার করতে হয়।

ডেভেলপারদের জন্য গুরুত্বপূর্ণ ৩টি পরামর্শ

১. bKash-এ যা সহজ, Nagad-এ তা কেন আলাদা?

bKash তাদের সিকিউরিটি নিয়ন্ত্রণ করে OAuth 2.0 টোকেনের মাধ্যমে। অন্যদিকে Nagad (Kona Software Lab) ব্যাংকিং লেভেলের End-to-End Payload Encryption অনুসরণ করে। তাই নগদ গেটওয়েতে আপনার ডাটা ট্রাফিকের মাঝপথে কেউ দেখতে বা ম্যানিপুলেট করতে পারে না।

২. bKash Execute vs Nagad Verification

bKash-এ ইউজার পেমেন্ট পেজে পিন দেওয়ার পর যদি ব্রাউজার বন্ধ করে দেয়, তবে টাকা কাটে না কারণ Execute API কল হয়নি। কিন্তু Nagad-এ ইউজার পিন দিলেই একাউন্ট থেকে টাকা কেটে নেওয়া হয় এবং সাথে সাথে merchantCallbackURL-এ রিডাইরেক্ট করা হয়। তাই আপনাকে অবশ্যই আপনার সার্ভার থেকে GET /verify/payment কল করে নিশ্চিত করতে হবে।

৩. একসাথে bKash ও Nagad ইন্টিগ্রেশনের বেস্ট প্র্যাকটিস

আপনার ই-কমার্স বা অ্যাপে পেমেন্ট সার্ভিস ডিজাইন করার সময় একটি Payment Gateway Interface তৈরি করুন। কন্ট্রোলারে শুধু createPayment() এবং verifyPayment() মেথড কল করবেন; আর ক্রিপ্টো ও টোকেনের জটিলতা থাকবে স্ব স্ব সার্ভিস ক্লাসের ভেতরে।