مستندات API درگاه پرداخت
راهنمای اتصال سایتهای دیگر به درگاه پرداخت اسرار نهان (متصل به زرینپال).
۱. مقدمه
برای استفاده از این درگاه، ابتدا باید در پنل مدیریت اسرار نهان برای کسبوکار شما یک «دامنه» ثبت شود. پس از ثبت، یک merchant_id اختصاصی در اختیار شما قرار میگیرد که در تمام درخواستهای زیر باید ارسال شود. مبلغ در تمام endpointها به تومان است.
۲. ساخت درخواست پرداخت
برای شروع یک پرداخت، درخواست زیر را از سمت سرور خودتان ارسال کنید:
POST https://asrarnahan.ir/api/gateway/payment/request
| فیلد | نوع | الزامی | توضیح |
|---|---|---|---|
| merchant_id | string | بله | merchantID دریافتی از اسرار نهان |
| amount | integer | بله | مبلغ به تومان (عدد صحیح مثبت) |
| description | string | خیر | توضیح تراکنش |
| mobile | string | خیر | شماره موبایل خریدار |
| callback_url | string | بله | آدرسی که پس از پرداخت، کاربر و نتیجه نهایی به آن برمیگردد |
نمونه درخواست:
curl -X POST https://asrarnahan.ir/api/gateway/payment/request \
-H "Content-Type: application/json" \
-d '{
"merchant_id": "MERCHANT_ID",
"amount": 250000,
"description": "خرید اشتراک",
"mobile": "09120000000",
"callback_url": "https://your-site.com/payment/callback?order_id=123"
}'نمونه پاسخ موفق (HTTP 201):
{
"authority": "A00000000000000000000000000000wwOGYpd",
"pay_url": "https://asrarnahan.ir/pay/A00000000000000000000000000000wwOGYpd"
}کاربر را به pay_url ریدایرکت کنید. این آدرس مستقیم او را به صفحه واقعی پرداخت زرینپال میبرد.
۳. جریان کامل پرداخت
- سایت شما درخواست پرداخت را میسازد و کاربر را به
pay_urlمیفرستد. - کاربر روی صفحه واقعی زرینپال، پرداخت را انجام میدهد.
- زرینپال نتیجه را به اسرار نهان برمیگرداند و ما آن را نزد زرینپال Verify میکنیم.
- مرورگر کاربر به همان
callback_urlای که در مرحله ۱ داده بودید ریدایرکت میشود، با query paramهایauthority،statusوref_id. - همزمان یک درخواست POST (وبهوک) با همین اطلاعات مستقیم به همان
callback_urlارسال میشود؛ برای اطمینان بیشتر، به وبهوک هم اعتماد کنید نه فقط ریدایرکت مرورگر.
نمونه ریدایرکت/وبهوک:
GET https://your-site.com/payment/callback?order_id=123&authority=A00...&status=paid&ref_id=123456
POST https://your-site.com/payment/callback
{
"authority": "A00000000000000000000000000000wwOGYpd",
"status": "paid",
"amount": 250000,
"ref_id": "123456"
}۴. مقادیر وضعیت
| فیلد | نوع | الزامی | توضیح |
|---|---|---|---|
| pending | status | خیر | هنوز پرداخت انجام یا نهایی نشده |
| paid | status | خیر | پرداخت با موفقیت انجام و تایید شد |
| failed | status | خیر | پرداخت ناموفق بود یا لغو شد |
۵. استعلام وضعیت
برای اطمینان از وضعیت نهایی یک تراکنش (مثلا اگر وبهوک به هر دلیلی دریافت نشد)، میتوانید در هر زمان این endpoint را صدا بزنید:
POST https://asrarnahan.ir/api/gateway/payment/verify
curl -X POST https://asrarnahan.ir/api/gateway/payment/verify \
-H "Content-Type: application/json" \
-d '{ "merchant_id": "MERCHANT_ID", "authority": "A00000000000000000000000000000wwOGYpd" }'نمونه پاسخ:
{
"status": "paid",
"amount": 250000,
"authority": "A00000000000000000000000000000wwOGYpd",
"ref_id": "123456"
}۶. خطاها
| فیلد | نوع | الزامی | توضیح |
|---|---|---|---|
| 400 | HTTP | خیر | فیلد الزامی ارسال نشده یا نامعتبر است |
| 404 | HTTP | خیر | merchant_id/authority یافت نشد یا درگاه غیرفعال است |
| 502 | HTTP | خیر | خطا در ارتباط با زرینپال |
در تمام خطاها بدنه پاسخ به شکل { "error": "..." } است.
۷. نکات مهم
- مبلغ همیشه به تومان است، نه ریال.
callback_urlباید یک آدرس معتبر و در دسترس (http/https) باشد.- هر
authorityفقط یکبار پردازش میشود؛ درخواستهای تکراری همان نتیجه قبلی را برمیگردانند. - برای دریافت merchant_id، از طریق راههای تماس با ما درخواست بدهید.