پرش به مطلب اصلی

ایجاد پرداخت، callback و verify

ایجاد پرداخت

POST /v1/payments با هدر Authorization: Bearer sk_….

فیلدالزامیتوضیح
amountبلهریال، رشته یا عدد صحیح؛ بین ۱۰٬۰۰۰ تا ۱٬۰۰۰٬۰۰۰٬۰۰۰ ریال
callbackUrlبلهhttps؛ اگر در پروژه «میزبان‌های مجاز» تنظیم شده، باید یکی از آن‌ها باشد
orderIdخیرشناسه‌ی سفارش شما (تا ۶۴ کاراکتر)؛ در وب‌هوک و verify برمی‌گردد
descriptionخیرمتن کوتاه که مشتری روی صفحه‌ی پرداخت می‌بیند
payerPhoneخیرموبایل مشتری
metadataخیرتا ۲۰ کلید ساده؛ عیناً برمی‌گردد

خطاها:

کد HTTPerror.codeمعنی
402merchant_credit_exhaustedاعتبار فروشنده تمام شده؛ پرداخت جدید ساخته نمی‌شود
503no_card_availableکارتی در دسترس نیست (سقف‌ها، دستگاه آفلاین)؛ details.reasons می‌گوید چرا
422callback_host_not_allowedمیزبان callback مجاز نیست
401unauthorizedکلید نامعتبر
403project_inactive / merchant_inactiveپروژه یا فروشنده فعال نیست

بازگشت مشتری (callback)

بعد از نتیجه، مشتری به callbackUrl هدایت می‌شود با این پارامترها:

https://shop.example.com/varizyar/callback
?varizyar_token=Avz4_43Khv...
&varizyar_status=confirmed
&varizyar_ref=01a0acf1-e835-7ed7-91e8-f25a128276f3
&order_id=ORD-1024

varizyar_status یکی از confirmed، expired، canceled، rejected است، ولی به آن اعتماد نکنید؛ با varizyar_ref (شناسه‌ی پرداخت) verify کنید.

اگر مشتری صفحه را ببندد، callback نمی‌آید؛ وب‌هوک شما را باخبر می‌کند.

verify

POST /v1/payments/{id}/verify — idempotent؛ هر چند بار صدا بزنید همان نتیجه است و alreadyVerified می‌گوید قبلاً verify شده بود.

  • verified: true و status: confirmed → سفارش را تکمیل کنید.
  • verified: false → پرداخت هنوز معلق است یا ناموفق شده (status را ببینید). اگر pending است، مشتری شاید هنوز واریز نکرده یا پیامک بانک هنوز نرسیده؛ بعداً دوباره verify کنید یا منتظر وب‌هوک بمانید.

وضعیت پرداخت

GET /v1/payments/{id} هر وقت خواستید. GET /v1/payments?orderId=… برای پیدا کردن با شناسه‌ی سفارش.

چرخه‌ی عمر

pending ──► confirmed (تأیید خودکار یا دستی)

├──► expired (مهلت تمام شد؛ اگر واریزی دیر برسد، تا پنجره‌ی تطبیق دیرهنگام هنوز confirmed می‌شود)
├──► canceled (مشتری انصراف داد)
└──► rejected (فروشنده رد کرد)

مهلت پرداخت (پیش‌فرض ۱۵ دقیقه) در تنظیمات پروژه است.