v2.0 Developer API
Gateway Integration Guide
যেকোনো ওয়েবসাইট, সফটওয়্যার বা মোবাইল অ্যাপ্লিকেশনে আমাদের বিকাশ ও নগদ পেমেন্ট গেটওয়ে যুক্ত করার সম্পূর্ণ টেকনিক্যাল ডকুমেন্টেশন।
🚀 ১. চেকআউট এন্ডপয়েন্ট (Endpoints)
গ্রাহককে পেমেন্ট পেজে পাঠাতে নিচের যেকোনো একটি URL-এ প্রয়োজনীয় প্যারামিটার সহ রিডাইরেক্ট করুন:
GET / POST
https://pay.autopaybd.click/bkash_checkout.php
GET / POST
https://pay.autopaybd.click/nagad_checkout.php
📋 ২. রিকোয়েস্ট প্যারামিটারসমূহ
চেকআউট পেজে ইউজারকে পাঠানোর সময় নিচের প্যারামিটারগুলো পাস করতে হবে:
| প্যারামিটার | টাইপ | প্রয়োজনীয়তা | বিবরণ |
|---|---|---|---|
| brand_key | String | Required | মার্চেন্টের ইউনিক ব্র্যান্ড কি (যেমন: YOUR_BRAND_KEY) |
| amount | Float / Int | Required | টাকার পরিমাণ (যেমন: 500.00) |
| payer_email | String | Required | পেমেন্টকারী কাস্টমারের ইমেইল অ্যাড্রেস |
| callback_url | URL | Required | সার্ভার-টু-সার্ভার Webhook নোটিফিকেশন রিসিভ করার URL |
| return_url | URL | Required | পেমেন্ট সফল হলে কাস্টমারকে ফেরত পাঠানোর URL |
💻 ৩. পেমেন্ট ইনিশিয়েট কোড (PHP Integration)
আপনার সাইটের চেকআউট ফাইলে কাস্টমারকে গেটওয়েতে পাঠাতে নিচের কোডটি ব্যবহার করুন:
PHP (payment_process.php)
<?php
$brand_key = "YOUR_BRAND_KEY";
$callback_url = "https://yourwebsite.com/callback.php";
$return_url = "https://yourwebsite.com/dashboard.php";
$amount = 500.00;
$payer_email = "[email protected]";
$method = "bKash";
$gateway_domain = "https://pay.autopaybd.click";
$endpoint = ($method === 'Nagad') ? "nagad_checkout.php" : "bkash_checkout.php";
$payment_url = $gateway_domain . "/" . $endpoint . "?" . http_build_query([
'brand_key' => $brand_key,
'amount' => $amount,
'payer_email' => $payer_email,
'callback_url' => $callback_url,
'return_url' => $return_url
]);
header("Location: " . $payment_url);
exit();
?>
⚡ ৪. কলব্যাক হ্যান্ডলার (Webhook / Callback Handler)
পেমেন্ট সফল হলে গেটওয়ে cURL POST রিকোয়েস্টের মাধ্যমে আপনার callback_url-এ নিচের ডাটা পাঠাবে:
| POST প্যারামিটার | বিবরণ |
|---|---|
| status | পেমেন্ট সফল হলে রিটার্ন আসবে success |
| trx_id | বিকাশ বা নগদ থেকে আসা আসল লেনদেন আইডি (যেমন: 760UPPEM) |
| amount | কাস্টমার কর্তৃক প্রেরিত সফল টাকার পরিমাণ |
| payer_email | যে কাস্টমার টাকা পরিশোধ করেছে তার ইমেইল |
| brand_key | রিকোয়েস্ট ভেরিফিকেশনের জন্য মার্চেন্ট Brand Key |
PHP (callback.php)
<?php
date_default_timezone_set('Asia/Dhaka');
require_once 'config.php';
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
http_response_code(405);
exit("Method Not Allowed");
}
$brand_key = trim($_POST['brand_key'] ?? '');
$status = trim($_POST['status'] ?? '');
$trx_id = strtoupper(trim($_POST['trx_id'] ?? ''));
$amount = floatval($_POST['amount'] ?? 0);
$payer_email = trim($_POST['payer_email'] ?? '');
$merchant_email = trim($_POST['merchant_email'] ?? '');
$MY_BRAND_KEY = "YOUR_BRAND_KEY";
if ($brand_key !== $MY_BRAND_KEY || $status !== 'success' || empty($trx_id) || empty($payer_email) || $amount <= 0) {
http_response_code(400);
exit("Invalid Request Data");
}
try {
$pdo->beginTransaction();
$stmtCheck = $pdo->prepare("SELECT id FROM `transactions` WHERE `trx_id` = :trx LIMIT 1");
$stmtCheck->execute(['trx' => $trx_id]);
if ($stmtCheck->fetch()) {
$pdo->rollBack();
exit("ALREADY_PROCESSED");
}
$stmtUpdate = $pdo->prepare("UPDATE `users` SET `balance` = `balance` + :amt WHERE `email` = :email");
$stmtUpdate->execute([
'amt' => $amount,
'email' => $payer_email
]);
$stmtInsert = $pdo->prepare("INSERT INTO `transactions` (`user_email`, `trx_id`, `amount`, `type`, `status`, `created_at`)
VALUES (:email, :trx, :amt, 'Add Money', 'success', NOW())");
$stmtInsert->execute([
'email' => $payer_email,
'trx' => $trx_id,
'amt' => $amount
]);
$pdo->commit();
http_response_code(200);
echo "SUCCESS";
} catch (PDOException $e) {
if ($pdo->inTransaction()) {
$pdo->rollBack();
}
http_response_code(500);
echo "Database Error";
}
?>
🔄 ৫. রিটার্ন পেজে হ্যান্ডলিং (Return URL)
পেমেন্ট সফল হলে গেটওয়ে কাস্টমারকে আপনার return_url-এ ফেরত পাঠাবে: https://yourwebsite.com/dashboard.php?trx_id=760UPPEM&status=success
PHP (dashboard.php or success.php)
<?php
if (isset($_GET['status']) && $_GET['status'] === 'success') {
$trx_id = htmlspecialchars($_GET['trx_id'] ?? '');
echo "<div style='background:#dcfce7; color:#15803d; padding:12px; border-radius:8px; margin-bottom:15px;'>
Payment Successful! Transaction ID: <strong>" . $trx_id . "</strong>
</div>";
}
?>