NAGAD API v3.3

Developer Portal & Reference

Step 2 of 3
POST /remote-payment-gateway-1.0/api/dfs/check-out/complete/{paymentRefId}

Place Order & Get Redirect URL

Initialize API সফল হওয়ার পর প্রাপ্ত paymentRefId এবং challenge দিয়ে এই API কল করা হয়। Nagad রেসপন্সে একটি callBackUrl ফেরত দেয়, যেখানে ইউজারকে রিডাইরেক্ট করে পেমেন্ট সম্পন্ন করতে হয়।

POST https://{NAGAD_HOST}/remote-payment-gateway-1.0/api/dfs/check-out/complete/{paymentRefId}
Content-Type: application/json

Request Headers

Header Requirement Allowed Values Description
X-KM-IP-V4 Mandatory "103.100.12.34" Client / Customer public IPv4 address.
X-KM-Client-Type Mandatory PC_WEB | MOBILE_WEB | MOBILE_APP User's platform device identifier.
X-KM-Api-Version Mandatory "v-0.2.0" (or "v-3.0.1") Use v-0.2.0 (or v-3.0.1 if using sender fee).
Content-Type Mandatory application/json Request payload format.

Request Body Parameters

Parameter Data Type Req Length Description
sensitiveData Base64 String M 1~1024 RSA PKCS1Padding encrypted order details (amount, challenge, etc.).
signature Base64 String M 1~1024 SHA1withRSA signature generated using Merchant Private Key.
merchantCallbackURL String (URL) M 10~255 Your server callback route where user is redirected after payment.
additionalMerchantInfo JSON Object O 1~2048 Optional custom meta-info displayed on Nagad Checkout screen.

Data Elements inside Plain sensitiveData:

Place Order-এর sensitiveData এনক্রিপ্ট করার আগে নিচের ফিল্ডগুলো প্রস্তুত করতে হবে:

{
  "merchantId": "687450000031324",
  "orderId": "ORD123456",
  "currencyCode": "050",
  "amount": "1790.00",
  "challenge": "40C88FFFF3274CD3698B140E7F7C211C415E0812",
  "otherAmount": {
    "serviceFee": "0"
  }
}
amount: দশমিকের পর দুই ঘর সহ স্ট্রিং (e.g. "1790.00" অথবা "50.00")।
currencyCode: BDT এর জন্য কারেন্সি কোড সবসময় "050"।
challenge: Initialize API রেসপন্স ডিক্রিপ্ট করে প্রাপ্ত challenge মানটি এখানে দিতে হবে।

Place Order Code Implementation

curl -X POST "http://sandbox.mynagad.com:10080/remote-payment-gateway-1.0/api/dfs/check-out/complete/MTEwNzE2NTMxODgwNC42ODc0NTAwMDAwMzEzMjQuTkFHMTU3MzEyMzk5MzE1NzMuZDA3Mjg5YTQxNDRhNWVjYzcxYjU=" \
  -H "X-KM-IP-V4: 103.100.12.34" \
  -H "X-KM-Client-Type: PC_WEB" \
  -H "X-KM-Api-Version: v-0.2.0" \
  -H "Content-Type: application/json" \
  -d '{
    "merchantCallbackURL": "http://yourdomain.com/nagad/callback",
    "additionalMerchantInfo": {
      "serviceName": "E-Commerce Checkout",
      "serviceLogoURL": "https://yourdomain.com/logo.png"
    },
    "sensitiveData": "PSFButymlhAlKrOjiG+RKrz4uETizC9Z0mueKMRvqi62Ctz+o4AQ3+8Z/...",
    "signature": "hANZKhCwPZEbP5brZ6Nh9JnOgcrkBdOSnznPN0Mk5vS0rs3Ta/gPeCZH2X..."
  }'

Customer Redirection & Callback Payload

1. User Browser Redirection:

API রেসপন্সে প্রাপ্ত callBackUrl-এ ইউজারের ব্রাউজার রিডাইরেক্ট করুন (HTTP 302):

https://sandbox.mynagad.com:12345/payment/aser834sdafdsf0awerasdfasdr5
2. Nagad Callback to Merchant:

কাস্টমার নগদ গেটওয়েতে মোবাইল নাম্বার, OTP ও PIN দিয়ে পেমেন্ট কনফার্ম করলে Nagad ইউজারের ব্রাউজারকে আপনার merchantCallbackURL-এ GET কুয়েরি প্যারামিটার সহ রিডাইরেক্ট করে:

http://yourdomain.com/nagad/callback?merchant=687450000031324&order_id=ORD123456&payment_ref_id=MTEwNzE2NTMxODgw...&status=Success&status_code=00_000_000&issuer_payment_ref=70IZV6G7&payment_dt=20260909120530
Security Rule: কখনই শুধুমাত্র এই Callback URL-এর স্ট্যাটাসের উপর ভিত্তি করে অর্ডার কনফার্ম করবেন না! আপনাকে অবশ্যই সার্ভার থেকে Verification API (Step 3) কল করে ফাইনাল স্ট্যাটাস নিশ্চিত করতে হবে।