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

لینک پرداخت

لینک پرداخت نیازی به کد ندارد؛ از پنل ساخته و به مشتری داده می‌شود. اگر می‌خواهید در اپ/سایت خودتان دکمه‌ی «پرداخت» به لینک وصل کنید، بدون کلید API:

  • GET /public/links/{slug} اطلاعات لینک (عنوان، مبلغ ثابت یا بازه).
  • POST /public/links/{slug}/payments با { "amount": "…" } (اگر مبلغ آزاد است) → checkoutUrl.

این پرداخت‌ها callback ندارند؛ مشتری در پایان رسید می‌بیند و شما در پنل/ربات اعلان می‌گیرید.

sandbox

  • پروژه‌ی آزمایشی کلید sk_test_ می‌دهد؛ پرداخت‌هایش sandbox: true است، کارمزد ندارد، به اعتبار و گوشی آنلاین نیاز ندارد، و هرگز با پیامک واقعی تطبیق نمی‌خورد (و برعکس).
  • واریز را با POST /v1/sandbox/simulate-deposit شبیه‌سازی کنید:
outcomeنتیجه
matchتأیید خودکار → وب‌هوک payment.confirmed
base_amountمبلغ بدون کد → واریزی نامشخص با پیشنهاد (تا تأیید دستی را تست کنید)
wrong_amountمبلغ اشتباه → واریزی نامشخص
customمبلغ دلخواه با amount

همان شبیه‌ساز از پنل فروشنده (تب «شبیه‌ساز» پروژه‌ی آزمایشی) هم در دسترس است.

کدهای خطا

error.codeHTTPمعنی
validation_error422ورودی نامعتبر؛ details فیلدها را می‌گوید
unauthorized401کلید نامعتبر یا باطل
not_found404پرداخت/لینک پیدا نشد
merchant_credit_exhausted402اعتبار فروشنده تمام شده
no_card_available503کارتی در دسترس نیست
callback_host_not_allowed422میزبان callback مجاز نیست
not_sandbox403شبیه‌ساز با کلید live
payment_not_pending409پرداخت در وضعیت قابل شبیه‌سازی نیست
link_unavailable410لینک غیرفعال/منقضی
rate_limited429درخواست زیاد؛ details.retryAfterSeconds

بهترین عمل‌ها

  • id پرداخت را کنار سفارش ذخیره کنید؛ با orderId هم می‌توانید پیدا کنید.
  • وب‌هوک و verify هر دو را پیاده کنید و پردازش را idempotent نگه دارید.
  • secret را در سرور نگه دارید؛ هرگز در مرورگر یا اپ موبایل.
  • برای هر سایت یک پروژه و برای هر محیط (تست/واقعی) کلید جدا.
  • مهلت پرداخت را با رفتار مشتری‌هایتان تنظیم کنید (پیش‌فرض ۱۵ دقیقه).