Powerful payment processing API for seamless transactions
Welcome to the WowPay API documentation. This API allows you to integrate payment processing capabilities into your application.
All API requests require authentication using your API keys. Include these in every request:
appid
: Your application IDapp_secret
: Your secret API keysign
: MD5 signature of appid and app_secretapp_secret
confidential and never expose it in client-side code.
https://wowpay.cfd/api
API requests are limited to 60 requests per minute. Exceeding this limit will result in a 429 status code.
Version | Status | Description | Base URL |
---|---|---|---|
v1 | Active | Original API version | /api/ |
v2 | Latest | Enhanced with customer details | /api/v2/ |
Check user's wallet balance
https://wowpay.cfd/api/balance
Header | Value | Required |
---|---|---|
Content-Type | application/x-www-form-urlencoded; charset=UTF-8 |
Yes |
Server | True |
Yes |
Parameter | Type | Required | Description |
---|---|---|---|
appid | string | Yes | Your API authentication key (API 令牌) |
app_secret | string | Yes | API密钥 to check balance for |
sign | string | Yes | MD5 signature of appid and app_secret |
{ "status": "success", "balance": 1000.50, "currency": "USD" }
Initiating Collection Request
https://wowpay.cfd/api/payment
The signature for v1 API is calculated as:
sign = md5(strtolower(appid . app_secret));
Parameter | Type | Required | Description |
---|---|---|---|
appid | string | Yes | Application ID |
app_secret | string | Yes | Application secret key |
orderid | string | Yes | Unique order ID |
amount | decimal | Yes | Amount to collect |
time | string | Optional | Timestamp of the request |
sign | string | Yes | MD5 signature of appid and app_secret |
{ "status": "success", "message": "success", "app_id": "wow10000", "amount": "100", "orderid": "8021455822", "payment_id": "WOW20250323193504", "url": "https://wowpay.cfd/payment/WOW20250323193504" }
orderid
must be unique for each transactionEnhanced payment collection with customer details
https://wowpay.cfd/api/v2/payment
The signature for v2 API is calculated as:
sign = md5(appid + app_secret + orderid + amount + name + mobile)
// Generate v2 signature $appid = "YOUR_APP_ID"; $app_secret = "YOUR_APP_SECRET"; $orderid = "UNIQUE_ORDER_123"; $amount = "100.00"; $name = "John Doe"; $mobile = "9876543210"; $sign = md5($appid . $app_secret . $orderid . $amount . $name . $mobile);
Parameter | Type | Required | Description |
---|---|---|---|
appid | string | Yes | Application ID |
app_secret | string | Yes | Application secret key |
orderid | string | Yes | Unique order ID |
amount | decimal | Yes | Amount to collect |
name | string | Yes | Customer name |
mobile | string | Yes | Customer mobile number |
redirect_url | string | Optional | After Payment Done Page will be Redirect |
sign | string | Yes | MD5 signature (see calculation above) |
{ "status": "success", "message": "Payment initiated", "app_id": "WOW10000", "amount": "100.00", "orderid": "ORDER_123456", "customer": { "name": "John Doe", "mobile": "9876543210" }, "payment_id": "WOW20250323193504", "url": "https://wowpay.cfd/payment/WOW20250323193504", "version": "2.0" }
name
and mobile
Initiating Payout Request
https://wowpay.cfd/api/payout
Header | Value | Required |
---|---|---|
Content-Type | application/x-www-form-urlencoded; charset=UTF-8 |
Yes |
Server | True |
Yes |
Parameter | Type | Required | Description |
---|---|---|---|
appid | string | Yes | Application ID |
app_secret | string | Yes | Application secret key |
orderid | string | Yes | Unique order ID |
amount | decimal | Yes | Amount to payout |
beneficiary_name | string | Yes | Account Holder Name |
bank_name | string | Yes | Bank Name |
account_no | string | Yes | Bank Account Number |
ifsc | string | Yes | IFSC Code |
sign | string | Yes | MD5 signature of appid and app_secret |
{ "status": "success", "message": "payout initiate", "app_id": "wow10000", "amount": "10000", "orderid": "t104" }
Payouts typically process within 1-3 business days, depending on the bank.
Real-time payment status updates
Bind our server IP to your webhook page to accept notifications
103.229.28.159
Configure this in your WowPay Merchant Dashboard under Settings → Webhooks
All webhook requests are signed with HMAC-SHA256 for verification:
X-WowPay-Signature: HMAC-SHA256(timestamp + body, YOUR_APP_SECRET) X-WowPay-Timestamp: UNIX_TIMESTAMP
Field | Type | Description |
---|---|---|
orderid | string | Your original order ID |
status | string | Payment status (success , failed , pending ) |
type | string | Transaction Type (payin , payout ) |
app_id | string | Your WowPay application ID |
amount | decimal | Payment amount |
payment_id | string | WowPay transaction reference |
utr | string | Bank transaction number |
currency | string | 3-letter currency code (e.g. USD) |
timestamp | integer | Unix timestamp of the event |
function verifyWebhook() { $headers = getallheaders(); $signature = $headers['X-WowPay-Signature'] ?? ''; $timestamp = $headers['X-WowPay-Timestamp'] ?? ''; $payload = file_get_contents('php://input'); // Verify timestamp (5-minute window) if (abs(time() - $timestamp) > 300) { throw new Exception('Expired request'); } // Verify signature $expected = hash_hmac('sha256', $timestamp.$payload, APP_SECRET); if (!hash_equals($expected, $signature)) { throw new Exception('Invalid signature'); } return json_decode($payload, true); }
Your endpoint should return HTTP 200 within 5 seconds with:
{ "status": "success", "message": "Webhook processed" }
Event | Description | Retry Policy |
---|---|---|
payment.success |
Payment completed successfully | 3 retries |
payment.failed |
Payment failed or was declined | No retries |
payment.refunded |
Payment was refunded | 5 retries |
Reference for all API error responses
{ "status": "error", "code": "ERR_4001", "message": "Invalid API credentials", "documentation_url": "https://docs.wowpay.example/errors/ERR_4001" }
Code | Status | Description |
---|---|---|
200 | OK | Request succeeded |
400 | Bad Request | Invalid request parameters |
401 | Unauthorized | Authentication failed |
403 | Forbidden | Insufficient permissions |
404 | Not Found | Resource doesn't exist |
429 | Too Many Requests | Rate limit exceeded |
500 | Server Error | Internal server error |
Error Code | HTTP Status | Description | Solution |
---|---|---|---|
ERR_4001 |
400 | Missing required parameter | Check all required fields are included |
ERR_4002 |
400 | Invalid parameter value | Verify parameter formats and types |
ERR_4003 |
400 | Duplicate order ID | Generate a unique order ID |
ERR_4011 |
401 | Invalid API credentials | Verify your appid and app_secret |
ERR_4012 |
401 | Signature verification failed | Recalculate the MD5 signature |
ERR_4031 |
403 | IP not whitelisted | Add your IP to merchant dashboard |
ERR_4041 |
404 | Transaction not found | Verify the payment_id |
ERR_4291 |
429 | API rate limit exceeded | Wait 1 minute before retrying |
ERR_5001 |
500 | Internal server error | Retry after 5 minutes |
ERR_5002 |
500 | Payment gateway timeout | Check transaction status later |
appid
and app_secret
match your merchant dashboardmd5(appid + app_secret)