مستندات اتصال درگاه پرداخت
راهنمای گامبهگام اتصال فروشگاه شما به درگاه پرداخت اعتباریت
مقدمه
درگاه پرداخت اعتباریت به فروشگاه شما اجازه میدهد مشتریان خرید خود را بهصورت اقساطی یا از کیف پول و پرداخت آنلاین تسویه کنند. این درگاه مستقل است اما با قراردادِ استاندارد شتابمحور سازگار است، بنابراین اتصال آن مشابه هر درگاه ایرانی دیگری است. افزونهٔ سمت فروشگاه را خودتان بر اساس همین مستندات پیادهسازی میکنید.
- ۱ فروشگاه با فراخوانی «ایجاد پرداخت»، مبلغ سفارش را اعلام میکند و یک توکن و آدرس پرداخت دریافت میکند.
- ۲ کاربر به آدرس پرداخت هدایت میشود و در صفحهٔ اعتباریت پرداخت را کامل میکند.
- ۳ اعتباریت کاربر را به آدرس Callback فروشگاه بازمیگرداند و نتیجه را همراه توکن ارسال میکند.
- ۴ فروشگاه با فراخوانی «تأیید پرداخت»، نتیجه را قطعی و رسید را دریافت میکند.
پیشنیازها
برای اتصال، به کلیدهای اتصال فروشگاه خود نیاز دارید که در پنل فروشگاه، بخش «کلیدهای اتصال» در دسترس است. این کلیدها محرمانهاند و باید فقط در سمت سرور فروشگاه شما نگهداری شوند؛ هرگز آنها را در سمت کاربر (مرورگر) قرار ندهید. همچنین باید در پنل فروشگاه «آدرس وبسایت» خود را ثبت کنید؛ این آدرس باید با https (دارای گواهی SSL معتبر) باشد و پس از تأیید نماد اعتماد الکترونیکی توسط اعتباریت، درگاه فعال میشود. درگاه فقط روی همان دامنهٔ ثبتشده کار میکند.
https://shivapay.gisoonline.ir/api/v1/payment
هر دو درخواست API با ارسال api_key و api_secret احراز هویت میشوند. تمام مبالغ به «تومان» و بهصورت عدد صحیح هستند.
گام ۱: ایجاد پرداخت
با این فراخوانی یک سفارش باز میشود و توکن پرداخت بههمراه آدرسی که باید کاربر را به آن هدایت کنید بازگردانده میشود. سفارش تا ۱۵ دقیقه معتبر است.
https://shivapay.gisoonline.ir/api/v1/payment/request
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
| api_key | string | بله | کلید اتصال فروشگاه. |
| api_secret | string | بله | کلید محرمانهٔ فروشگاه. |
| amount | integer | بله | مبلغ سفارش به تومان (حداقل ۱۰۰۰). |
| callback_url | string | خیر | آدرس بازگشت. باید با https و روی همان دامنهٔ وبسایت ثبتشدهٔ فروشگاه باشد (فقط www بهعنوان معادل دامنهٔ اصلی پذیرفته میشود؛ زیردامنههای دیگر مجاز نیستند). اگر ارسال نشود، آدرس وبسایت ثبتشده در پنل فروشگاه استفاده میشود. |
| order_id | string | خیر | شناسهٔ سفارش در سیستم شما (اختیاری) که در پاسخها بازگردانده میشود. |
{
"api_key": "etb_1a2b3c4d5e6f7g8h",
"api_secret": "xxxxxxxxxxxxxxxxxxxx",
"amount": 2500000,
"callback_url": "https://your-shop.ir/etebarit/callback",
"order_id": "A-1024"
}
{
"success": true,
"status": 100,
"token": "8f2a...e7b1",
"order_id": "ORD-40027153",
"merchant_order_id": "A-1024",
"amount": 2500000,
"expires_at": "2026-07-25T12:00:00+00:00",
"payment_url": ".../pay/8f2a...e7b1"
}
گام ۲: هدایت کاربر به درگاه
پس از دریافت پاسخ موفق، کاربر را به مقدار payment_url هدایت کنید. کاربر در صفحهٔ اعتباریت هویت خود را با پیامک تأیید کرده و پرداخت را (اقساطی، از کیف پول یا آنلاین) کامل میکند.
گام ۳: بازگشت به فروشگاه
پس از پایان پرداخت، کاربر به آدرس Callback شما بازگردانده میشود و پارامترهای زیر بهصورت query string اضافه میشوند. توجه کنید که این بازگشت بهتنهایی سند پرداخت نیست؛ همیشه باید نتیجه را در گام بعد با «تأیید پرداخت» بررسی کنید.
| پارامتر | توضیح |
|---|---|
| token | توکن پرداخت، همان مقدار گام ۱. |
| status | نتیجهٔ اولیه: OK برای موفق، NOK برای ناموفق. |
| order_id | شناسهٔ سفارش اعتباریت (ORD-xxxx). |
| merchant_order_id | همان order_id که در گام ۱ فرستادید (در صورت ارسال). |
گام ۴: تأیید پرداخت
با ارسال توکن، پرداخت را قطعی کنید. نخستین فراخوانی موفق کد ۱۰۰ و فراخوانیهای تکراری کد ۱۰۱ را با همان reference_id بازمیگردانند؛ بنابراین اگر تأیید را دوباره فراخوانی کنید، سفارش دوبار تحویل داده نمیشود. اگر amount را بفرستید، باید دقیقاً با مبلغ سفارش برابر باشد.
https://shivapay.gisoonline.ir/api/v1/payment/verify
| پارامتر | نوع | الزامی | توضیح |
|---|---|---|---|
| api_key | string | بله | کلید اتصال فروشگاه. |
| api_secret | string | بله | کلید محرمانهٔ فروشگاه. |
| token | string | بله | توکن پرداخت از گام ۱. |
| amount | integer | خیر | مبلغ سفارش به تومان (اختیاری). در صورت ارسال، برای اطمینان بررسی میشود. |
{
"success": true,
"status": 100,
"order_id": "ORD-40027153",
"merchant_order_id": "A-1024",
"amount": 2500000,
"reference_id": "483920157604",
"paid_at": "2026-07-25T12:03:00+00:00"
}
| پارامتر | توضیح |
|---|---|
| order_id | شناسهٔ سفارش اعتباریت (ORD-xxxx). |
| merchant_order_id | شناسهٔ سفارش در سیستم شما. |
| amount | مبلغ نهایی به تومان. |
| reference_id | کد پیگیری یکتای پرداخت؛ آن را نزد خود ذخیره کنید. |
| paid_at | زمان پرداخت بهصورت ISO 8601. |
کدهای وضعیت
همهٔ پاسخها با HTTP 200 و یک فیلد status بازمیگردند. کدهای مثبت موفقیت و کدهای منفی خطا هستند. فیلد success نیز درست یا نادرست بودن نتیجه را نشان میدهد.
| کد | معنی |
|---|---|
| 100 | عملیات با موفقیت انجام شد. |
| 101 | این پرداخت پیشتر تایید شده است. |
| -1 | پارامترهای ارسالی نامعتبر است. |
| -2 | کلید یا رمز درگاه نامعتبر است. |
| -3 | این فروشگاه فعال نیست. |
| -4 | آدرس بازگشت (callback) تعیین نشده است. |
| -5 | توکن پرداخت یافت نشد. |
| -6 | مبلغ ارسالی با مبلغ سفارش یکسان نیست. |
| -7 | پرداخت هنوز تکمیل نشده است. |
| -8 | پرداخت انجام نشد یا مهلت آن به پایان رسید. |
| -9 | آدرس وبسایت فروشگاه هنوز برای اتصال درگاه تأیید نشده است؛ آن را در پنل فروشگاه وارد و منتظر تأیید بمانید. |
| -10 | آدرس بازگشت باید https و روی همان دامنهٔ تأییدشدهٔ فروشگاه باشد. |
نکات مهم
- کلید محرمانه را هرگز در سمت کاربر یا کد قابلمشاهده قرار ندهید؛ فقط در سرور نگه دارید.
- مبالغ همیشه به تومان و عدد صحیحاند. هیچ اطلاعاتی دربارهٔ نوع کالا ارسال یا ذخیره نمیشود.
- هر سفارش ۱۵ دقیقه فرصت پرداخت دارد؛ پس از آن توکن منقضی میشود.
- درگاه فقط برای وبسایتی فعال میشود که آدرس آن در پنل ثبت و توسط اعتباریت (با بررسی نماد اعتماد الکترونیکی) تأیید شده باشد. آدرس بازگشت نیز باید با https و روی همان دامنه باشد؛ در غیر این صورت درخواست با کد ۹- یا ۱۰- رد میشود.
- تحویل کالا یا خدمت را فقط پس از دریافت کد ۱۰۰ یا ۱۰۱ از «تأیید پرداخت» انجام دهید، نه صرفاً با بازگشت Callback.
- در صورت لو رفتن کلیدها، از پنل فروشگاه آنها را بازتولید کنید؛ کلید قبلی بلافاصله باطل میشود.
افزونههای آماده
اگر از یکی از سیستمهای زیر استفاده میکنید، بهجای نوشتن افزونه، میتوانید افزونهٔ آمادهٔ درگاه اعتباریت را دانلود و نصب کنید.
۱) فایل zip دانلودشده را در وردپرس از «افزونهها ← افزودن ← بارگذاری افزونه» نصب و فعال کنید. ۲) به «ووکامرس ← تنظیمات ← پرداختها ← اعتباریت» بروید و کلید اتصال و کلید محرمانهٔ فروشگاه را وارد کنید. ۳) واحد پول فروشگاه (تومان/ریال) را تنظیم و درگاه را فعال کنید. توجه: دامنهٔ فروشگاه ووکامرس باید همان آدرس وبسایتِ تأییدشده در پنل اعتباریت (با https) باشد.
برای پروژههایی که از پیش از shetabit/multipay (یا shetabit/payment لاراول) استفاده میکنند. ۱) فایل zip را باز کنید و کلاس src/Etebarit.php را در پروژهتان کپی کنید. ۲) درایور «etebarit» را در config/payment.php (بخشهای drivers و map) ثبت و کلیدهای اتصال را وارد کنید. ۳) واحد پول (IRR/IRT) را تنظیم کنید؛ در حالت ریال، مبلغ بهطور خودکار به تومان تبدیل میشود. راهنمای کامل در فایل README همراه است.