سرویس تست (Sandbox)

محیط آزمایشی فینوپال برای شبیه‌سازی کامل جریان پرداخت بدون اتصال به PSP واقعی و بدون برداشت وجه است. پذیرنده می‌تواند با همان API محیط عملیاتی، درخواست پرداخت بسازد، صفحه درگاه آزمایشی را ببیند و نتیجه موفق یا ناموفق را تست کند.

در حالت Sandbox هیچ مبلغ واقعی از کارت کسر نمی‌شود. این محیط فقط برای توسعه و تست یکپارچه‌سازی است.

نحوه فعال‌سازی

  • همان endpointهای درگاه پرداخت فینوپال را صدا بزنید (Request / Redirect / Callback / Verify).
  • اگر درگاه در حالت آزمایشی باشد، به‌جای بانک واقعی به صفحه Sandbox هدایت می‌شوید.

URL

https://sandbox.finopal.ir

جریان پرداخت آزمایشی

  1. ارسال درخواست به POST /api/v1/payment/request با همان پارامترهای محیط واقعی.
  2. دریافت authority و هدایت کاربر به /api/v1/payment/redirect/{authority}.
  3. باز شدن صفحه درگاه آزمایشی (فرم شبیه‌سازی‌شده بانک).
  4. ورود کد امنیتی و رمز دوم (تستی) ، سپس انتخاب نتیجه با دکمه‌های «پرداخت موفق» یا «پرداخت ناموفق».
  5. بازگشت به Callback فینوپال و سپس به callback_url پذیرنده.
  6. تایید نهایی با POST /api/v1/payment/verify.

نمونه Request

بدنه درخواست با محیط عملیاتی یکسان است:

POST

https://payment.finopal.ir/api/v1/payment/request

JSON

{
  "merchant_id": "YOUR_MERCHANT_ID",
  "amount": 1000000,
  "callback_url": "https://yoursite.com/payment/callback",
  "order_id": "ORD-1001",
  "description": "تست سندباکس",
  "mobile": "09120000000"
}

در پاسخ، مشابه محیط واقعی، فیلدهایی مثل authority و payment_url برمی‌گردد و کاربر به صفحه Sandbox هدایت می‌شود.

صفحه درگاه آزمایشی

  • مدت اعتبار نشست: ۱۰ دقیقه. بعد از اتمام زمان، صفحه غیرفعال می‌شود.
  • کد امنیتی: فقط عدد ۵ رقمی (قالب #####).
  • رمز دوم: الزامی است (۴ تا ۱۲ رقم). دکمه «درخواست رمز پویا» فقط ظاهری است.
  • شماره کارت / CVV / تاریخ انقضا در فرم وارد نمی‌شود (فقط نمایش نمادین).

دکمه‌های شبیه‌سازی نتیجه

دکمه نتیجه Status در Callback
پرداخت موفق تراکنش موفق ثبت می‌شود Status=0 / status=OK
پرداخت ناموفق تراکنش ناموفق ثبت می‌شود Status=-1 / status=NOK
انصراف تراکنش لغو می‌شود Status=-138

Callback و Verify

پس از انتخاب نتیجه در صفحه Sandbox، کاربر به Callback فینوپال برمی‌گردد. در این حالت پارامتر sandbox=1 ارسال می‌شود. پذیرنده مانند محیط واقعی باید Authority و Status را بررسی کند و در صورت موفقیت، متد Verify را فراخوانی کند.

POST

https://sandbox.finopal.ir/api/v1/payment/verify

JSON

{
  "merchant_id": "YOUR_MERCHANT_ID",
  "authority": "FP...",
  "amount": 1000000
}

نکات مهم

  • ساختار API سندباکس با محیط عملیاتی یکی است؛ فقط مقصد نهایی بانک شبیه‌سازی می‌شود.
  • برای تست کامل، هر دو مسیر موفق و ناموفق را قبل از اتصال به محیط واقعی بررسی کنید.
  • اگر سرویس Sandbox در دسترس نباشد، ممکن است fallback داخلی بدون نمایش UI استفاده شود.
  • مستندات اتصال واقعی را از بخش «راهنمای اتصال» مطالعه کنید.