Welcome To NullPay Docs
NullPay is a secure payment automation tool designed to use personal accounts as a payment gateway. Here you will find a complete overview for API integration and payment flow handling.
Integration guide for creating payment URLs, verifying transactions, and downloading ready-made modules.
NullPay is a secure payment automation tool designed to use personal accounts as a payment gateway. Here you will find a complete overview for API integration and payment flow handling.
NullPay enables merchants to receive payments by redirecting customers to secure checkout. After payment, customer is returned to merchant site and transaction details are shared.
Use Sandbox for testing and Live for production. Your server must support cURL. HTML form POST integration is also available.
Variables required for create payment request
| Field Name | Description | Required | Example Values |
|---|---|---|---|
| cus_name | Customer Full Name | Yes | John Doe |
| cus_email | Email address of the customer | Yes | john@gmail.com |
| amount | Total payable amount | Yes | 10 / 10.50 / 10.6 |
| success_url | Return URL after successful payment | Yes | https://yourdomain.com/success.php |
| cancel_url | Return URL after canceled payment | Yes | https://yourdomain.com/cancel.php |
| meta_data | Pass any JSON formatted data | No | {"order":"123"} |
Variables required for verify payment request
| Field Name | Description | Required | Example Values |
|---|---|---|---|
| transaction_id | Transaction id received from success URL query parameter | Yes | OVKPXW165414 |
| Header Name | Value |
|---|---|
| Content-Type | application/json |
| API-KEY | App key from API credentials |
| SECRET-KEY | Secret key from API credentials |
| BRAND-KEY | Brand key from Brands |
You can integrate our payment gateway into PHP, Laravel, WordPress, and WooCommerce sites.
<?php $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => 'https://secure-pay.nullphpscript.eu.org/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","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", "metadata": { "phone": "016****" }, "amount": "10" }'; $request = new Request('POST', 'https://secure-pay.nullphpscript.eu.org/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", "metadata": { "phone": "016****" }, "amount": "10" }); let config = { method: 'post', maxBodyLength: Infinity, url: 'https://secure-pay.nullphpscript.eu.org/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://secure-pay.nullphpscript.eu.org/api/payment/create" payload = json.dumps({ "success_url": "yourdomain.com/success", "cancel_url": "yourdomain.com/cancel", "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://secure-pay.nullphpscript.eu.org/api/payment/create" method := "POST" payload := strings.NewReader(`{"success_url":"yourdomain.com/success","cancel_url":"yourdomain.com/cancel","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)) } | 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 redirects users to success/cancel page with query params: yourdomain.com/(success/cancel)?transactionId=******&paymentMethod=***&paymentAmount=**.**&paymentFee=**.**&status=pending or success or failed | ||
<?php
$curl = curl_init();
curl_setopt_array($curl, array( CURLOPT_URL => 'https://secure-pay.nullphpscript.eu.org/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://secure-pay.nullphpscript.eu.org/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://secure-pay.nullphpscript.eu.org/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://secure-pay.nullphpscript.eu.org/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))
} { "cus_name": "John Doe", "cus_email": "john@gmail.com", "amount": "900.000", "transaction_id": "OVKPXW165414", "metadata": { "phone": "015****" }, "payment_method": "bkash", "status": "COMPLETED"
} | 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 |
See Setup Video: Video here
See Setup Video: Video here
See Setup Video: Video here
See Setup Video: Video here
See Setup Video: Video here