مستندات API درگاه پرداخت
نسخه ۱.۰ — REST API برای ساخت و مدیریت فاکتورهای پرداخت
اعتبارسنجی
تمام درخواستها باید شامل هدرهای کلید API باشند:
X-API-KEY: pk_********
X-API-SECRET: sk_********
کلیدها را از بخش تنظیمات توسعهدهنده در مینیاپ یا پنل مدیریت دریافت کنید.
ساخت فاکتور
POST
/bot2/v1.php?action=api_request_invoice
پارامترهای Body (JSON)
| پارامتر | نوع | وضعیت | توضیحات |
amount | integer | اجباری | مبلغ پایه به تومان (حداقل ۱,۰۰۰) |
gateway_type | string | اختیاری | pool (پیشفرض) یا own (کارت شخصی) |
callback_url | string | اختیاری | آدرس وبهوک برای اطلاع از وضعیت پرداخت |
api_key | string | اختیاری | کلید API (در صورت عدم ارسال هدر) |
api_secret | string | اختیاری | سکرت API (در صورت عدم ارسال هدر) |
پاسخها
پاسخ موفق (HTTP 201)
{
"success": true,
"status": 201,
"data": {
"authority": "INV_6a5d52c268309",
"payment_url": "https://example.com/bot2/pay.html?id=INV_6a5d52c268309",
"amount": 500000,
"payable": 502500,
"fee_amount": 2500,
"net_amount": 500000,
"gateway_type": "pool",
"status": "awaiting_payment"
}
}
پاسخ خطا (HTTP 401)
{
"success": false,
"status": 401,
"message": "اعتبارسنجی کلید API ناموفق بود."
}
| فیلد | توضیحات |
authority | کد یکتای فاکتور — برای بررسی وضعیت استفاده میشود |
payment_url | لینک صفحه پرداخت — کاربر باید به این آدرس هدایت شود |
amount | مبلغ پایه درخواستی |
payable | مبلغ نهایی قابل پرداخت (پایه + کارمزد) |
fee_amount | مبلغ کارمزد |
net_amount | مبلغ خالصی که به بالانس کاربر اضافه میشود |
gateway_type | نوع درگاه: pool یا own |
وبهوک (Callback)
پس از تایید پرداخت (خودکار یا دستی)، اگر callback_url تنظیم شده باشد، یک درخواست POST به آن آدرس ارسال میشود:
{
"status": 1,
"invoice_id": "INV_6a5d52c268309",
"amount": 502500
}
status=1 یعنی پرداخت تایید شده.
status=0 یعنی پرداخت ناموفق یا منقضی شده (در صورت ارسال).
کدهای خطا
| HTTP Status | معنی |
201 | فاکتور با موفقیت ساخته شد |
401 | کلید API نامعتبر یا اکانت غیرفعال |
404 | Endpoint نامعتبر |
مثال کامل (PHP)
<?php
$data = [
'amount' => 500000,
'gateway_type' => 'pool',
'callback_url' => 'https://yoursite.com/verify.php'
];
$ch = curl_init('https://example.com/bot2/v1.php?action=api_request_invoice');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'X-API-KEY: pk_********',
'X-API-SECRET: sk_********'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$result = json_decode($response, true);
if ($result['success']) {
// هدایت کاربر به صفحه پرداخت
header('Location: ' . $result['data']['payment_url']);
exit;
} else {
echo 'خطا: ' . $result['message'];
}
مثال کامل (cURL)
curl -X POST "https://example.com/bot2/v1.php?action=api_request_invoice" \
-H "Content-Type: application/json" \
-H "X-API-KEY: pk_********" \
-H "X-API-SECRET: sk_********" \
-d '{"amount": 100000, "callback_url": "https://yoursite.com/callback"}'
نکته مهم: مبلغ واریزی کاربر ممکن است مبلغ پایه دقیق نباشد (به دلیل مکانیزم ضد تداخل پیامک). همیشه از فیلد payable در پاسخ برای نمایش مبلغ به کاربر استفاده کنید.