ই-মেইল : oraclesoft.org@gmail.com হোয়াটসঅ্যাপ নাম্বার : +44 7473 953402 কম্বোডিয়া অফিস : Preah Ang Yukanthor Street (19), Phnom Penh

Deposit Gateway API Documentation

আপনার ওয়েবসাইট বা অ্যাপে অটোমেটিক পেমেন্ট কালেকশন (Deposit) সিস্টেম চালু করার জন্য সম্পূর্ণ গাইডলাইন।

Integrate automated mobile banking payment verification into your website or e-commerce shop.

লগইন করে Key নিন

আপনার API Secret Key মার্চেন্ট ড্যাশবোর্ডের "API & Webhooks" মেনুতে পাবেন। Key কখনো কারও সাথে শেয়ার করবেন না।

Step 1: Create Payment Link (ডিপোজিট লিংক তৈরি করুন)

আপনার ওয়েবসাইট থেকে কাস্টমার যখন ডিপোজিট করতে চাইবে, তখন এই API কল করে একটি পেমেন্ট লিংক তৈরি করতে হবে।

POST https://api.mfswallet.com/api/gateway/create-link
PARAMETERTYPESTATUSDESCRIPTION
amountNumberRequiredকত টাকা পেমেন্ট করবে
methodStringRequiredbkash, nagad, rocket, upay
user_identyfy_addressStringRequiredকাস্টমারের ইমেইল বা ফোন
domainStringRequiredআপনার সাইটের ডোমেইন
success_redirect_urlURLRequiredপেমেন্ট সফল হলে কোথায় যাবে
fail_redirect_urlURLRequiredপেমেন্ট ফেইল হলে কোথায় যাবে
pending_redirect_urlURLRequiredপেমেন্ট পেন্ডিং হলে কোথায় যাবে
call_back_urlURLRequiredসাকসেস Webhook URL
pending_call_backURLRequiredপেন্ডিং Webhook URL
reject_call_backURLRequiredরিজেক্ট Webhook URL
checkout_itemsObjectOptionalআপনার যেকোনো কাস্টম ডাটা (যেমন: orderId)
const fetch = require('node-fetch');

const response = await fetch('https://api.mfswallet.com/api/gateway/create-link', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${apiKey}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    amount: 500, // (Required) [Number] পেমেন্ট এমাউন্ট
    method: 'bkash', // (Required) [String] Available: bkash, nagad, rocket, upay
    user_identyfy_address: 'customer@email.com', // (Required) [String] কাস্টমারের ইমেইল বা ফোন নাম্বার
    domain: 'mywebsite.com', // (Required) [String] আপনার ওয়েবসাইটের ডোমেইন
    success_redirect_url: 'https://mywebsite.com/success', // (Required) [URL] পেমেন্ট সাকসেস হলে কোথায় যাবে
    fail_redirect_url: 'https://mywebsite.com/fail', // (Required) [URL] পেমেন্ট ফেইল হলে কোথায় যাবে
    pending_redirect_url: 'https://mywebsite.com/pending', // (Required) [URL] পেমেন্ট পেন্ডিং হলে কোথায় যাবে
    call_back_url: 'https://mywebsite.com/api/callback/success', // (Required) [URL] সাকসেস ওয়েব হুক
    pending_call_back: 'https://mywebsite.com/api/callback/pending', // (Required) [URL] পেন্ডিং ওয়েব হুক
    reject_call_back: 'https://mywebsite.com/api/callback/reject', // (Required) [URL] রিজেক্ট ওয়েব হুক
    checkout_items: { orderId: 'ORD-12345' } // (Optional) [Object] আপনার যেকোনো কাস্টম ডাটা
  })
});

const data = await response.json();
console.log(data);
/* Response:
{
  "success": true,
  "payment_page_url": "https://mfswallet.com/payment/1a2b3c4d5e",
  "short_code": "1a2b3c4d5e",
  "request_data": {
    "amount": 500,
    "method": "bkash",
    "user_identyfy_address": "customer@email.com",
    "domain": "mywebsite.com",
    "success_redirect_url": "https://mywebsite.com/success",
    "fail_redirect_url": "https://mywebsite.com/fail",
    "pending_redirect_url": "https://mywebsite.com/pending",
    "call_back_url": "https://mywebsite.com/api/callback/success",
    "pending_call_back": "https://mywebsite.com/api/callback/pending",
    "reject_call_back": "https://mywebsite.com/api/callback/reject",
    "checkout_items": {
      "orderId": "ORD-12345"
    }
  }
}
*/
<?php
$apiKey = 'YOUR_API_SECRET_KEY';

$payload = [
    'amount' => 500, // (Required) [Number] পেমেন্ট এমাউন্ট
    'method' => 'bkash', // (Required) [String] Available: bkash, nagad, rocket, upay
    'user_identyfy_address' => 'customer@email.com', // (Required) [String] কাস্টমারের ইমেইল বা ফোন নাম্বার
    'domain' => 'mywebsite.com', // (Required) [String] আপনার ওয়েবসাইটের ডোমেইন
    'success_redirect_url' => 'https://mywebsite.com/success', // (Required) [URL]
    'fail_redirect_url' => 'https://mywebsite.com/fail', // (Required) [URL]
    'pending_redirect_url' => 'https://mywebsite.com/pending', // (Required) [URL]
    'call_back_url' => 'https://mywebsite.com/api/callback/success', // (Required) [URL]
    'pending_call_back' => 'https://mywebsite.com/api/callback/pending', // (Required) [URL]
    'reject_call_back' => 'https://mywebsite.com/api/callback/reject', // (Required) [URL]
    'checkout_items' => ['orderId' => 'ORD-12345'], // (Optional) [Object]
];

$ch = curl_init('https://api.mfswallet.com/api/gateway/create-link');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode($payload),
]);

$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
print_r($data);
import requests

api_key = "YOUR_API_SECRET_KEY"

payload = {
    "amount": 500,  # (Required) [Number] পেমেন্ট এমাউন্ট
    "method": "bkash",  # (Required) [String] Available: bkash, nagad, rocket, upay
    "user_identyfy_address": "customer@email.com",  # (Required) [String] কাস্টমারের ইমেইল বা ফোন নাম্বার
    "domain": "mywebsite.com",  # (Required) [String] আপনার ওয়েবসাইটের ডোমেইন
    "success_redirect_url": "https://mywebsite.com/success",  # (Required) [URL]
    "fail_redirect_url": "https://mywebsite.com/fail",  # (Required) [URL]
    "pending_redirect_url": "https://mywebsite.com/pending",  # (Required) [URL]
    "call_back_url": "https://mywebsite.com/api/callback/success",  # (Required) [URL]
    "pending_call_back": "https://mywebsite.com/api/callback/pending",  # (Required) [URL]
    "reject_call_back": "https://mywebsite.com/api/callback/reject",  # (Required) [URL]
    "checkout_items": {"orderId": "ORD-12345"},  # (Optional) [Object]
}

response = requests.post(
    "https://api.mfswallet.com/api/gateway/create-link",
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    json=payload,
)

data = response.json()
print(data)

Step 2: Webhook Callback Structures (ওয়েবহুক ডাটা স্ট্রাকচার)

পেমেন্টের বিভিন্ন স্ট্যাটাস অনুযায়ী আমরা আপনার দেওয়া স্পেসিফিক Webhook URL গুলোতে নিচে দেওয়া JSON ফরম্যাটে ডাটা সেন্ড করবো। রিয়েল লাইফ টেস্ট করার জন্য আপনার সার্ভারের API লিংক বসিয়ে টেস্ট করতে পারেন।

Success Callback (পেমেন্ট সাকসেস হলে)

আপনার সার্ভারে এই JSON ফরম্যাটে ডাটা সেন্ড করা হবে। আপনি নিচের পেলোড (Payload) অনুযায়ী আপনার সিস্টেম আপডেট করবেন।

💡 Developer Note: কোন অর্ডারের পেমেন্ট স্ট্যাটাস আপডেট করতে হবে, তা আইডেন্টিফাই করার জন্য সবচেয়ে প্রফেশনাল এবং নিরাপদ উপায় হলো short_code ব্যবহার করা, কারণ এটি সবসময় ইউনিক হয়। প্রয়োজনে user_identyfy_address ও ব্যবহার করতে পারেন।
{
  "status": "COMPLETED",
  "transaction_id": "9K82L1M0P",
  "short_code": "1a2b3c4d5e",
  "amount": 500,
  "method": "bkash",
  "sender_number": "018XXXXXX00",
  "user_identyfy_address": "customer@email.com",
  "checkout_items": {
    "orderId": "ORD-12345"
  }
}

Real-life Test Simulator

আপনার রিয়েল সার্ভার URL দিয়ে এখনই টেস্ট করে দেখুন আপনার স্ক্রিপ্ট ঠিকমতো রেসপন্স করছে কি না।

Pending Callback (ম্যানুয়াল ভেরিফিকেশনে গেলে)

আপনার সার্ভারে এই JSON ফরম্যাটে ডাটা সেন্ড করা হবে। আপনি নিচের পেলোড (Payload) অনুযায়ী আপনার সিস্টেম আপডেট করবেন।

💡 Developer Note: কোন অর্ডারের পেমেন্ট স্ট্যাটাস আপডেট করতে হবে, তা আইডেন্টিফাই করার জন্য সবচেয়ে প্রফেশনাল এবং নিরাপদ উপায় হলো short_code ব্যবহার করা, কারণ এটি সবসময় ইউনিক হয়। প্রয়োজনে user_identyfy_address ও ব্যবহার করতে পারেন।
{
  "status": "PENDING",
  "transaction_id": "PENDING_VERIFICATION",
  "short_code": "1a2b3c4d5e",
  "amount": 500,
  "method": "bkash",
  "message": "Payment is pending manual verification",
  "user_identyfy_address": "customer@email.com",
  "checkout_items": {
    "orderId": "ORD-12345"
  }
}

Real-life Test Simulator

আপনার রিয়েল সার্ভার URL দিয়ে এখনই টেস্ট করে দেখুন আপনার স্ক্রিপ্ট ঠিকমতো রেসপন্স করছে কি না।

Reject Callback (পেমেন্ট ফেইল বা রিজেক্ট হলে)

আপনার সার্ভারে এই JSON ফরম্যাটে ডাটা সেন্ড করা হবে। আপনি নিচের পেলোড (Payload) অনুযায়ী আপনার সিস্টেম আপডেট করবেন।

💡 Developer Note: কোন অর্ডারের পেমেন্ট স্ট্যাটাস আপডেট করতে হবে, তা আইডেন্টিফাই করার জন্য সবচেয়ে প্রফেশনাল এবং নিরাপদ উপায় হলো short_code ব্যবহার করা, কারণ এটি সবসময় ইউনিক হয়। প্রয়োজনে user_identyfy_address ও ব্যবহার করতে পারেন।
{
  "status": "FAILED",
  "transaction_id": "INVALID",
  "short_code": "1a2b3c4d5e",
  "amount": 500,
  "method": "bkash",
  "reason": "Payment amount mismatched or invalid sender",
  "user_identyfy_address": "customer@email.com",
  "checkout_items": {
    "orderId": "ORD-12345"
  }
}

Real-life Test Simulator

আপনার রিয়েল সার্ভার URL দিয়ে এখনই টেস্ট করে দেখুন আপনার স্ক্রিপ্ট ঠিকমতো রেসপন্স করছে কি না।

Step 3: Test Payment Link Generator

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