Current Production API https://pay.greenpay.bd
Developer Overview

Welcome To GreenPay Docs Last updated: 2026-07-06

GreenPay is a simple and Secure payment automation tool which is designed to use personal account as a payment gateway so that you can accept payments from your customer through your website where you will find a complete overview on how GreenPay works and how you can integrate GreenPay API in your website


API Introduction

Production API v1

GreenPay Merchant Payment API

JSON REST API

Merchant integration-এ চারটা অংশ: Create Payment → customer-কে Hosted Checkout-এ পাঠানো → Verify Payment দিয়ে নিশ্চিত হওয়া → Webhook-এ স্বয়ংক্রিয় খবর পাওয়া। Android device/SMS ingestion API merchant checkout-এর অংশ নয়, তাই এখানে আলাদা রাখা হয়েছে।

Base URL https://pay.greenpay.bd

Authentication এবং Domain Security

প্রতিটি request-এ Brand-এর API key API-KEY header-এ পাঠান। (api_key নামে body/query-তেও নেওয়া হয়, তবে header নিরাপদ।) API key শুধু server-side রাখুন — browser/JavaScript-এ কখনো না।

Required Headers
API-KEY: YOUR_BRAND_API_KEY
Content-Type: application/json
Accept: application/json
Domain rule: success_url, cancel_url এবং (থাকলে) webhook_url-এর domain Merchant-এর সক্রিয় approved Brand domain হতে হবে। Server থেকে call করলে source_domain (বা merchant_domain / X-GREENPAY-DOMAIN header) পাঠান; না পাঠালে callback URL-এর domain-ই ধরা হয়।
Platform domain: অন্য Merchant-এর Platform domain ব্যবহার করলে domain-মালিকের অনুমোদন (approve) না পাওয়া পর্যন্ত CALLBACK_DOMAIN_NOT_ALLOWED আসবে।
POST

Create Payment

https://pay.greenpay.bd/api/payment/create

নতুন hosted checkout session তৈরি করে। সফল হলে customer-কে payment_url-এ redirect করুন এবং transaction_id নিজের order-এ সংরক্ষণ করুন। Session ১৫ মিনিট valid থাকে।

FieldRequiredTypeRules
amountYesnumber0-এর বেশি, সর্বোচ্চ 1,000,000 (টাকা)।
success_urlYesURLApproved domain-এর URL। সফল/অপেক্ষমাণ payment-এ এখানে ফেরে।
cancel_urlYesURLApproved domain-এর URL। বাতিল/ব্যর্থ হলে এখানে ফেরে।
webhook_urlNoURLPayment-এর খবর server-to-server পাঠানো হয়; approved domain হতে হবে।
source_domainRecommendedstring/URLযে domain থেকে request (যেমন shop.example.com)। বিকল্প: merchant_domain।
cus_nameNostringCustomer-এর নাম।
cus_emailNoemailPayment সম্পন্ন/reminder ইমেইলের জন্য।
cus_phoneNostringCustomer-এর মোবাইল।
metadataNoJSON objectOrder/product reference। JSON body-তে object হিসেবে পাঠান (string নয়)। Verify ও webhook-এ ফেরত আসে।
return_typeNostringCallback preference; default GET।
currency——পাঠানোর দরকার নেই; সবসময় system currency (BDT)।
cURL Request
curl --request POST 'https://pay.greenpay.bd/api/payment/create' \
  --header 'API-KEY: YOUR_BRAND_API_KEY' \
  --header 'Content-Type: application/json' \
  --data-raw '{"amount":1200,"cus_name":"Aminul Islam","cus_email":"customer@example.com","cus_phone":"01300000000","success_url":"https://shop.example.com/payment/success","cancel_url":"https://shop.example.com/payment/cancel","webhook_url":"https://shop.example.com/payment/webhook","source_domain":"shop.example.com","metadata":{"order_id":"ORDER-1001","items":[{"name":"Premium Package","quantity":1,"price":1200}]}}'
PHP (cURL)
$ch = curl_init('https://pay.greenpay.bd/api/payment/create');
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => [
        'API-KEY: ' . getenv('GREENPAY_API_KEY'),
        'Content-Type: application/json',
        'Accept: application/json',
    ],
    CURLOPT_POSTFIELDS     => json_encode([
        'amount'        => 1200,
        'cus_name'      => 'Aminul Islam',
        'cus_email'     => 'customer@example.com',
        'success_url'   => 'https://shop.example.com/payment/success',
        'cancel_url'    => 'https://shop.example.com/payment/cancel',
        'webhook_url'   => 'https://shop.example.com/payment/webhook',
        'source_domain' => 'shop.example.com',
        'metadata'      => ['order_id' => 'ORDER-1001'],
    ]),
]);
$res = json_decode(curl_exec($ch), true);
if (!empty($res['success'])) {
    // $res['transaction_id'] order-এ সংরক্ষণ করুন
    header('Location: ' . $res['payment_url']);
    exit;
}
echo $res['message'] ?? 'Payment তৈরি করা যায়নি';
Success Response · HTTP 200
{
    "success": true,
    "status": 1,
    "state": "success",
    "code": "PAYMENT_SESSION_CREATED",
    "message": "Payment session created successfully.",
    "payment_url": "https://pay.greenpay.bd/api/execute/0f37dcbfa54a42bd9cf04e25d52f0201",
    "status_url": "https://pay.greenpay.bd/api/status/0f37dcbfa54a42bd9cf04e25d52f0201",
    "transaction_id": "GP7QKEK1003399",
    "payment_id": "0f37dcbfa54a42bd9cf04e25d52f0201",
    "expires_at": "2026-10-16 16:30:00"
}
Error — API key / Merchant / Package (HTTP 401/403/404)
{
    "success": false,
    "status": "error",
    "state": "blocked",
    "code": "INVALID_API_KEY",
    "message": "API key সঠিক নয়।",
    "data": []
}
Error — Domain / Parameter (HTTP 403/422)
{
    "success": false,
    "status": "error",
    "code": "CALLBACK_DOMAIN_NOT_ALLOWED",
    "message": "shop.example.net এই Merchant account-এর approved domain নয়।",
    "data": {
        "can_retry": false,
        "count_attempt": false,
        "approved_domains": [
            "shop.example.com"
        ]
    }
}

Payment Create Response Codes

HTTPCodeMeaning
200PAYMENT_SESSION_CREATEDCheckout session তৈরি হয়েছে; payment_url-এ customer redirect করুন।
400INVALID_API_REQUESTশুধু create এবং verify operation গ্রহণযোগ্য।
401INVALID_API_KEYAPI-KEY পাওয়া যায়নি বা সঠিক নয়।
404MERCHANT_NOT_FOUND / BRAND_NOT_FOUNDAPI key-এর Merchant বা Brand পাওয়া যায়নি।
403MERCHANT_INACTIVE / MERCHANT_ACCESS_DISABLED / BRAND_INACTIVEMerchant বা Brand বন্ধ আছে।
403MERCHANT_PLAN_INACTIVE / MERCHANT_PLAN_EXPIREDMerchant-এর package সক্রিয় নয় বা মেয়াদ শেষ।
403MERCHANT_DOMAIN_NOT_CONFIGUREDMerchant-এর কোনো সক্রিয় approved domain নেই।
403INVALID_CALLBACK_DOMAINsuccess_url, cancel_url বা webhook_url valid URL নয়।
403CALLBACK_DOMAIN_NOT_ALLOWEDCallback URL-এর domain Merchant-এর approved domain নয়।
403DOMAIN_NOT_ALLOWEDRequest কোনো approved domain থেকে আসেনি।
403INTERNAL_*GreenPay-এর নিজস্ব Add Wallet/Invoice reference, ownership বা amount মেলেনি।
422INVALID_METADATAmetadata JSON object/array নয়।
422INVALID_PAYMENT_PARAMETERSamount, success_url অথবা cancel_url ভুল বা নেই।
500PAYMENT_SESSION_CREATE_FAILEDSession তৈরি করা যায়নি; আবার চেষ্টা করা যাবে।

Checkout Redirect এবং Status Page

Customer payment_url-এ payment সম্পন্ন করলে আপনার URL-এ ফেরত পাঠানো হয়, সাথে এই query parameters:

statusকোথায় ফেরেমানে
completedsuccess_urlPayment যাচাই হয়ে সম্পন্ন।
pendingsuccess_urlMerchant/ব্যাংক review-এর অপেক্ষায় — এখনো order confirm করবেন না।
failedcancel_urlবাতিল বা ব্যর্থ।
Redirect Example
https://shop.example.com/payment/success
  ?paymentMethod=bkash
  &transactionId=GP7QKEK1003399
  &paymentAmount=1200.000
  &paymentFee=0
  &status=completed
Important: Redirect-এর query parameter কেউ হাতে বদলে দিতে পারে। Redirect পাওয়ার পর server থেকে Verify API call করে code = PAYMENT_COMPLETED নিশ্চিত হলে তবেই order confirm করুন। Customer-এর live অবস্থা দেখাতে create response-এর status_url ব্যবহার করা যায়।
POST

Verify Payment

https://pay.greenpay.bd/api/payment/verify

transaction_id দিয়ে payment-এর বর্তমান অবস্থা জানায়। একই Brand-এর (বা একই Merchant-এর) API key দিয়ে পাঠান। transaction পাওয়া গেলে প্রতিটা response-এ একই key-গুলো থাকে; payment সম্পন্ন না হলে বাড়তি তথ্যের মান null।

Verify Request
curl --request POST 'https://pay.greenpay.bd/api/payment/verify' \
  --header 'API-KEY: YOUR_BRAND_API_KEY' \
  --header 'Content-Type: application/json' \
  --data-raw '{"transaction_id":"GP7QKEK1003399"}'
Completed
{
    "success": true,
    "status": "COMPLETED",
    "code": "PAYMENT_COMPLETED",
    "message": "আপনার payment সফলভাবে যাচাই ও সম্পন্ন হয়েছে।",
    "data": {
        "can_retry": false,
        "count_attempt": false,
        "reason": null
    },
    "cus_name": "Aminul Islam",
    "cus_email": "customer@example.com",
    "amount": "1200.000",
    "currency": "BDT",
    "transaction_id": "GP7QKEK1003399",
    "metadata": "{\"order_id\":\"ORDER-1001\",\"source_domain\":\"shop.example.com\",\"api_brand_id\":27,\"request_source\":\"external_merchant_api\"}",
    "payment_method": "bkash",
    "payment_setting_id": 68,
    "review_id": null,
    "review_status": null,
    "method_trx_id": "DJF10SIYJH",
    "paid_to_number": "01747627522",
    "paid_to_account_type": "personal",
    "payer_number": "737",
    "payer_number_partial": true,
    "paid_at": "2026-10-16 16:18:20",
    "bank_reference": null,
    "sender_bank_name": null,
    "sender_account_last4": null,
    "gateway_transaction_id": "GP7QKEK1003399"
}
Pending
{
    "success": false,
    "status": "PENDING",
    "code": "PAYMENT_PENDING",
    "message": "Payment এখনো সম্পন্ন হয়নি। payment তথ্য সঠিকভাবে দিয়ে verification সম্পন্ন করুন।",
    "data": {
        "can_retry": true,
        "count_attempt": false,
        "reason": null
    },
    "cus_name": "Aminul Islam",
    "cus_email": "customer@example.com",
    "amount": "1200.000",
    "currency": "BDT",
    "transaction_id": "GP7QKEK1003399",
    "metadata": "{\"order_id\":\"ORDER-1001\",\"source_domain\":\"shop.example.com\",\"api_brand_id\":27,\"request_source\":\"external_merchant_api\"}",
    "payment_method": "",
    "payment_setting_id": null,
    "review_id": null,
    "review_status": null,
    "method_trx_id": null,
    "paid_to_number": null,
    "paid_to_account_type": null,
    "payer_number": null,
    "payer_number_partial": false,
    "paid_at": null,
    "bank_reference": null,
    "sender_bank_name": null,
    "sender_account_last4": null,
    "gateway_transaction_id": "GP7QKEK1003399"
}
Verification Locked
{
    "success": false,
    "status": "VERIFICATION_LOCKED",
    "code": "VERIFICATION_ATTEMPTS_EXCEEDED",
    "message": "আপনার 3টি payment verification attempt শেষ হয়েছে। নিরাপত্তার কারণে এই checkout সাময়িকভাবে ব্লক করা হয়েছে। …",
    "data": {
        "can_retry": false,
        "count_attempt": false,
        "reason": null,
        "unlock_at": "2026-10-16 19:30:00",
        "seconds_until_unlock": 7200
    },
    "transaction_id": "GP7QKEK1003399"
}
metadata: Verify response-এ metadata একটা JSON string হিসেবে আসে — json_decode($res['metadata'], true) করে ব্যবহার করুন। এতে আপনার পাঠানো মানের সাথে source_domain, api_brand_id, request_source যোগ থাকে।

Payment মেলানোর বাড়তি তথ্য

Keyমানে
method_trx_idbKash/Nagad/Rocket-এর আসল TrxID। শুধু COMPLETED হলে থাকে, নইলে null।
gateway_transaction_idGreenPay-এর transaction_id (একই মান, স্পষ্ট নামে)।
paid_to_numberযে নম্বর/অ্যাকাউন্টে টাকা গেছে।
paid_to_account_typepersonal / agent / merchant ইত্যাদি।
payer_numberযে নম্বর থেকে টাকা এসেছে (অনেক সময় শেষ ৩ ডিজিট)।
payer_number_partialpayer_number আংশিক হলে true।
paid_atপরিশোধ/যাচাইয়ের সময় (COMPLETED হলে)।
bank_reference, sender_bank_name, sender_account_last4ব্যাংক পেমেন্টে (COMPLETED হলে)।

Verify Lifecycle Codes

HTTPCodeMeaning
200PAYMENT_COMPLETEDPayment সম্পন্ন — order confirm করুন।
200PAYMENT_PENDINGPayment এখনো হয়নি; পরে আবার verify করা যাবে।
200MERCHANT_REVIEW_PENDINGMerchant review-এর অপেক্ষায়।
200MERCHANT_REVIEW_APPROVEDMerchant approve করেছেন; customer checkout থেকে আবার verify করবেন।
200PAYMENT_REJECTEDMerchant payment reject করেছেন; reason থাকলে data.reason-এ।
200PAYMENT_CANCELLEDPayment বাতিল — terminal state।
200PAYMENT_REFUNDEDPayment refund — terminal state।
200VERIFICATION_ATTEMPTS_EXCEEDEDAttempt limit শেষ; data.unlock_at পর্যন্ত blocked।
422TRANSACTION_ID_REQUIREDtransaction_id দেওয়া হয়নি।
404TRANSACTION_NOT_FOUNDএই API key-এর Merchant-এর এমন transaction নেই।
401/403/404INVALID_API_KEY ও অন্যান্য access codeAPI key, Merchant, Brand বা Package সমস্যা (Create-এর মতোই)।

Hosted Checkout Security Codes

Code groupPossible codesWhat it means
Payment methodPAYMENT_METHOD_DISABLED, PAYMENT_METHOD_MISMATCHSelected method global/merchant configuration-এর সঙ্গে মিলছে না অথবা বন্ধ।
Receiving accountPAYMENT_ACCOUNT_NOT_SELECTED, PAYMENT_ACCOUNT_SELECTION_REQUIRED, PAYMENT_ACCOUNT_NOT_FOUND, PAYMENT_ACCOUNT_INACTIVE, PAYMENT_ACCOUNT_INCOMPLETECheckout-এর জন্য valid receiving account নির্বাচন বা configuration প্রয়োজন।
Account integrityPAYMENT_ACCOUNT_MISMATCH, PAYMENT_ACCOUNT_CHANGED, PAYMENT_ACCOUNT_TYPE_REQUIRED, PAYMENT_ACCOUNT_TYPE_INACTIVESession তৈরির পর account/method context বদলেছে অথবা requested account type usable নয়।
Reuse protectionPAYMENT_ALREADY_USED, PAYMENT_ALREADY_RESERVED, PAYMENT_ALREADY_COMPLETEDএকটি transaction evidence অন্য checkout-এ ব্যবহার/reserve হয়েছে অথবা payment আগে completed।
Terminal/reviewMERCHANT_REVIEW_PENDING, PAYMENT_CANCELLED, PAYMENT_REFUNDED, VERIFICATION_ATTEMPTS_EXCEEDEDMerchant decision, terminal lifecycle অথবা verification lock।
Important: status এবং code দুটোই দেখুন। Completed ছাড়া terminal state — Rejected, Cancelled ও Refunded — আর কখনো success হবে না।

Webhook

webhook_url দিলে GreenPay দুইভাবে খবর পাঠায়। দুটোই একই webhook_url-এ আসে, তাই endpoint দুটো format-ই গ্রহণ করবে, দ্রুত HTTP 2xx ফেরত দেবে, এবং একই খবর একাধিকবার এলেও একবারই কাজ করবে (idempotent)।

১) তাৎক্ষণিক checkout খবর — form POST

Customer checkout শেষ করা মাত্র একবার পাঠানো হয় (application/x-www-form-urlencoded), redirect-এর মতোই field:

Form body
paymentMethod=bkash
&transactionId=GP7QKEK1003399
&paymentAmount=1200.000
&paymentFee=0
&status=completed

২) Lifecycle খবর — JSON POST (retry সহ)

Payment সম্পন্ন, review, reject, cancel, refund ইত্যাদি প্রতিটা ঘটনায় JSON পাঠানো হয়। ব্যর্থ হলে (2xx না পেলে বা ১৫ সেকেন্ডে উত্তর না এলে) ১, ২, ৪, ৮… মিনিট পরপর আবার চেষ্টা হয়, সর্বোচ্চ ৪৮ ঘণ্টা।

Headers
Content-Type: application/json
User-Agent: GreenPay-Webhook/1.0
X-GreenPay-Event: PAYMENT_COMPLETED
X-GreenPay-Delivery: 1532
X-GreenPay-Transaction: GP7QKEK1003399
Webhook JSON Payload
{
    "success": true,
    "code": "PAYMENT_COMPLETED",
    "status": "payment_completed",
    "message": "Payment completed successfully.",
    "reason": null,
    "transaction_id": "GP7QKEK1003399",
    "payment_id": "0f37dcbfa54a42bd9cf04e25d52f0201",
    "merchant_uid": 384,
    "brand_id": 27,
    "amount": 1200,
    "currency": "BDT",
    "payment_method": "bkash",
    "payment_setting_id": 68,
    "state_updated_at": "2026-10-16 16:18:20",
    "occurred_at": "2026-10-16T16:18:20+06:00",
    "method_trx_id": "DJF10SIYJH",
    "paid_to_number": "01747627522",
    "paid_to_account_type": "personal",
    "payer_number": "737",
    "payer_number_partial": true,
    "paid_at": "2026-10-16 16:18:20",
    "bank_reference": null,
    "sender_bank_name": null,
    "sender_account_last4": null,
    "gateway_transaction_id": "GP7QKEK1003399",
    "transactionId": "GP7QKEK1003399",
    "event": "PAYMENT_COMPLETED"
}

Event code:

PAYMENT_COMPLETEDMERCHANT_REVIEW_PENDINGBANK_REVIEW_PENDINGMERCHANT_REVIEW_APPROVEDPAYMENT_REJECTEDPAYMENT_CANCELLEDPAYMENT_REFUNDEDPAYMENT_CLAIM_FAILEDVERIFICATION_ATTEMPTS_EXCEEDEDVERIFICATION_ATTEMPTS_RESETVERIFICATION_AUTO_UNLOCKED
PHP webhook handler (দুই format-ই)
$data = json_decode(file_get_contents('php://input'), true);
if (!is_array($data)) {
    $data = $_POST;                       // তাৎক্ষণিক form POST
}
$trx = $data['transaction_id'] ?? $data['transactionId'] ?? '';
http_response_code(200);                  // আগে 2xx দিন

if ($trx !== '') {
    // webhook-এর মানে ভরসা না করে Verify API দিয়ে নিশ্চিত হোন
    $res = greenpay_verify($trx);         // উপরের Verify request
    if (($res['code'] ?? '') === 'PAYMENT_COMPLETED') {
        mark_order_paid($trx, $res['method_trx_id'] ?? null);  // আগেই paid হলে কিছু করবেন না
    }
}

Production Integration Checklist

  1. Brand ও Merchant package সক্রিয় রাখুন; API key server-side environment variable-এ রাখুন।
  2. Brand domain approved রাখুন; success/cancel/webhook URL একই approved domain-এর হবে।
  3. Create response থেকে payment_url-এ redirect করুন এবং transaction_id order-এ সংরক্ষণ করুন।
  4. Redirect-কে একা payment প্রমাণ ধরবেন না; Verify API বা webhook → Verify দিয়ে PAYMENT_COMPLETED নিশ্চিত করুন।
  5. Webhook duplicate হতে পারে; transaction_id + code দিয়ে একবারই কাজ করুন।
  6. হিসাব মেলাতে method_trx_id (bKash/Nagad TrxID) ও paid_to_number সংরক্ষণ করুন।
  7. Error response-এর data.can_retry অনুসরণ করুন; false হলে একই request আবার পাঠাবেন না।

Integration

You can integrate our payment gateway into your PHP Laravel WordPress WooCommerce sites.

Sample Request

 <?php $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://pay.greenpay.bd/api/payment/create', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS =>'{"success_url":"yourdomain.com/success","cancel_url":"yourdomain.com/cancel","webhook_url":"yourdomain.com/webhook","metadata":{"phone":"016****"},"amount":"10"}', CURLOPT_HTTPHEADER => array( 'API-KEY: gnXi7etgWNhFyFGZFrOMYyrmnF4A1eGU5SC2QRmUvILOlNc2Ef', 'Content-Type: application/json' ), )); $response = curl_exec($curl); curl_close($curl); echo $response; ?> 
 <?php $client = new Client(); $headers = [ 'API-KEY' => 'gnXi7etgWNhFyFGZFrOMYyrmnF4A1eGU5SC2QRmUvILOlNc2Ef', 'Content-Type' => 'application/json' ]; $body = '{ "success_url": "yourdomain.com/success", "cancel_url": "yourdomain.com/cancel", "webhook_url": "yourdomain.com/webhook", "metadata": { "phone": "016****" }, "amount": "10" }'; $request = new Request('POST', 'https://pay.greenpay.bd/api/payment/create', $headers, $body); $res = $client->sendAsync($request)->wait(); echo $res->getBody(); ?> 
 const axios = require('axios'); let data = JSON.stringify({ "success_url": "yourdomain.com/success", "cancel_url": "yourdomain.com/cancel", "webhook_url": "yourdomain.com/webhook", "metadata": { "phone": "016****" }, "amount": "10" }); let config = { method: 'post', maxBodyLength: Infinity, url: 'https://pay.greenpay.bd/api/payment/create', headers: { 'API-KEY': 'gnXi7etgWNhFyFGZFrOMYyrmnF4A1eGU5SC2QRmUvILOlNc2Ef', 'Content-Type': 'application/json' }, data : data }; axios.request(config) .then((response) => { console.log(JSON.stringify(response.data)); }) .catch((error) => { console.log(error); }); 
 import requests import json url = "https://pay.greenpay.bd/api/payment/create" payload = json.dumps({ "success_url": "yourdomain.com/success", "cancel_url": "yourdomain.com/cancel", "webhook_url": "yourdomain.com/webhook", "metadata": { "phone": "016****" }, "amount": "10" }) headers = { 'API-KEY': 'gnXi7etgWNhFyFGZFrOMYyrmnF4A1eGU5SC2QRmUvILOlNc2Ef', 'Content-Type': 'application/json' } response = requests.request("POST", url, headers=headers, data=payload) print(response.text) 
 package main import ( "fmt" "strings" "net/http" "io/ioutil" ) func main() { url := "https://pay.greenpay.bd/api/payment/create" method := "POST" payload := strings.NewReader(`{"success_url":"yourdomain.com/success","cancel_url":"yourdomain.com/cancel","webhook_url":"yourdomain.com/webhook","metadata":{"phone":"01521412457"},"amount":"10"}`) client := &http.Client { } req, err := http.NewRequest(method, url, payload) if err != nil { fmt.Println(err) return } req.Header.Add("API-KEY", "gnXi7etgWNhFyFGZFrOMYyrmnF4A1eGU5SC2QRmUvILOlNc2Ef") req.Header.Add("Content-Type", "application/json") res, err := client.Do(req) if err != nil { fmt.Println(err) return } defer res.Body.Close() body, err := ioutil.ReadAll(res.Body) if err != nil { fmt.Println(err) return } fmt.Println(string(body)) } 

Response Details

Field Name Type Description
Success Response
status bool TRUE
message String Message for Status
payment_url String Payment Link (where customers will complete their payment)
Error Response
status bool FALSE
message String Message associated with the error response
Completing Payment Page task you will be redirected to success or cancel page based on transaction status with the following Query Parameters: yourdomain.com/(success/cancel)?transactionId=******&paymentMethod=***&paymentAmount=**.**&paymentFee=**.**&status=pending or success or failed

Verify Request

 <?php $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://pay.greenpay.bd/api/payment/verify', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 0, CURLOPT_FOLLOWLOCATION => true, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_POSTFIELDS =>'{"transaction_id":"ABCDEFH"}', CURLOPT_HTTPHEADER => array( 'API-KEY: gnXi7etgWNhFyFGZFrOMYyrmnF4A1eGU5SC2QRmUvILOlNc2Ef', 'Content-Type: application/json' ), )); $response = curl_exec($curl); curl_close($curl); echo $response; ?> 
 <?php $client = new Client(); $headers = [ 'API-KEY' => 'gnXi7etgWNhFyFGZFrOMYyrmnF4A1eGU5SC2QRmUvILOlNc2Ef', 'Content-Type' => 'application/json' ]; $body = '{ "transaction_id": "ABCDEFH" }'; $request = new Request('POST', 'https://pay.greenpay.bd/api/payment/verify', $headers, $body); $res = $client->sendAsync($request)->wait(); echo $res->getBody(); ?> 
 const axios = require('axios'); let data = JSON.stringify({ "transaction_id": "ABCDEFH" }); let config = { method: 'post', maxBodyLength: Infinity, url: 'https://pay.greenpay.bd/api/payment/verify', headers: { 'API-KEY': 'gnXi7etgWNhFyFGZFrOMYyrmnF4A1eGU5SC2QRmUvILOlNc2Ef', 'Content-Type': 'application/json' }, data : data }; axios.request(config) .then((response) => { console.log(JSON.stringify(response.data)); }) .catch((error) => { console.log(error); }); 
 import http.client import json conn = http.client.HTTPSConnection("local.pay.expensivepay.com") payload = json.dumps({ "transaction_id": "ABCDEFH" }) headers = { 'API-KEY': 'gnXi7etgWNhFyFGZFrOMYyrmnF4A1eGU5SC2QRmUvILOlNc2Ef', 'Content-Type': 'application/json' } conn.request("POST", "/api/payment/verify", payload, headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) 
 package main import ( "fmt" "strings" "net/http" "io/ioutil" ) func main() { url := "https://pay.greenpay.bd/api/payment/verify" method := "POST" payload := strings.NewReader(`{"transaction_id":"ABCDEFH"}`) client := &http.Client { } req, err := http.NewRequest(method, url, payload) if err != nil { fmt.Println(err) return } req.Header.Add("API-KEY", "gnXi7etgWNhFyFGZFrOMYyrmnF4A1eGU5SC2QRmUvILOlNc2Ef") req.Header.Add("Content-Type", "application/json") res, err := client.Do(req) if err != nil { fmt.Println(err) return } defer res.Body.Close() body, err := ioutil.ReadAll(res.Body) if err != nil { fmt.Println(err) return } fmt.Println(string(body)) } 
Sample Response
 { "cus_name": "John Doe", "cus_email": "john@gmail.com", "amount": "900.000", "transaction_id": "OVKPXW165414", "metadata": { "phone": "015****", }, "payment_method": "bkash", "status": "COMPLETED" } 

Response Details

Field Name Type Description
Success Response
status string COMPLETED or PENDING or ERROR
cus_name String Customer Name
cus_email String Customer Email
amount String Amount
transaction_id String Transaction id Generated by System
metadata json Metadata used for Payment creation
Error Response
status bool FALSE
message String Message associated with the error response

Modules

Download ready-made plugins, modules and tools to integrate quickly with your system.

WordPress WooCommerce Plugin Version

See Setup Video: YouTube Video

WHMCS Module

See Setup Video: How To Setup Video here

Sketchware Module

See Setup Video: How To Setup Video here

Modified SMM Panel Module

See Setup Video: Video here

Mobile App Download

See Setup Video: How To Setup App Video here