کل سطح API عمومی واریزا همین دو قدم است: یک لینک پرداخت بسازید، و پس از پرداخت موفق، یک وبهوک امضاشده در سرور خودتان دریافت کنید.
# 1. Create a payment link
curl -s -X POST https://variza.ir/api/v1/pay \
-H "Authorization: Bearer YOUR_API_KEY" \
-d amount=500000 -d return_url=https://shop.com/ok
# 201 Created
{ "pay_url": "https://variza.ir/pay/aB3xY9", "amount": 500000, ... }
# 2. Buyer pays, you receive a webhook
POST https://shop.com/webhook
X-Webhook-Signature: sha256=<signature>
{ "event": "payment.paid", "amount": 500000, ... }
برای هر سفارش یک لینک پرداخت میسازید و به خریدار میدهید. خریدار همان مبلغ را کارتبهکارت واریز میکند. سیستم واریزی بانکی را تشخیص میدهد و بلافاصله یک وبهوک درباره موفقیت پرداخت به آدرس callback شما ارسال میکند؛ بدون رسید، بدون تایید دستی.
یک لینک با POST /api/v1/pay بسازید
خریدار مبلغ نمایشدادهشده را واریز میکند
یک وبهوک امضاشده دریافت میکنید
از پنل کاربری ← پروفایل ← کلید API یک کلید بسازید. کلید فقط همان لحظه نمایش داده میشود، آن را ذخیره کنید. هر درخواست باید آن را در هدر Authorization بفرستد:
Authorization: Bearer YOUR_API_KEY
کلید معادل رمز حساب شماست؛ فقط سمت سرور نگهداری شود، هرگز در کد سمت کاربر قرار نگیرد.
/api/v1/pay
POST
پیشنیاز: باید یک بار آدرس callback_url را در پروفایل خود ثبت کرده
باشید، وگرنه با خطای 422 مواجه میشوید.
| فیلد | نوع | توضیح |
|---|---|---|
| amount * | integer | مبلغ به تومان، حداقل ۱۰۰۰ |
| return_url * | string | آدرس بازگشت خریدار، باید با https:// شروع شود |
| title | string | عنوان اختیاری برای نمایش به خریدار |
| card_last_4 | string |
۴ رقم آخر کارت مقصد، یا یکی از مقادیر ویژه
random
(کارت تصادفی) و
variza
(کارتهای واریزا با تسویه کیفپول)
|
| member_phone | string | شماره موبایل عضو مارکتپلیس، فقط برای اشتراکهای مارکتپلیس (اختیاری، فرمت 09...) |
| expires_in | string |
30m ,
1h ,
2h ,
6h ,
1d ,
3d ,
1w ,
never
|
توصیه میشود expires_at را بیشتر از یک ساعت وارد نکنید.
curl -X POST https://variza.ir/api/v1/pay \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"amount": 500000,
"return_url": "https://example.com/callback",
"title": "Order #123",
"expires_in": "1h",
"card_last_4": "random",
"member_phone": "09123456789"
}'
کارت تصادفی — کمترین تراکنش روزانه
با ارسال card_last_4: "random" نیازی به
انتخاب کارت ثابت نیست.
سیستم در لحظهی پرداخت، از بین کارتهای فعال شما کارتی با کمترین تعداد تراکنش موفق
امروز را انتخاب میکند
(در صورت تساوی، بهصورت تصادفی). توزیع بار خودکار، بدون مدیریت دستی.
نیازمند اشتراک دارای قابلیت «کارت تصادفی» و حداقل ۲ کارت فعال. در غیر این صورت خطای ۴۲۲
دریافت میکنید.
کارتهای واریزا — تسویه کیفپول با تتر
با ارسال card_last_4: "variza" خریدار به
کارت
واریزا واریز میکند و نیازی به ثبت کارت بانکی ندارید؛ کیفپول شما به تومان (پس از کسر
کارمزد) شارژ میشود و از سقف حداقل برداشت به بالا، بهصورت تتر (USDT) به حساب بیتپین
شما(بدون کارمزد) و یا ولت شما(با کارمزد) واریز میشود.
سقف مبلغ هر لینک واریزایی 2,000,000 تومان است.
نیازمند اشتراک دارای قابلیت «کارتهای واریزا» است؛ در غیر این صورت خطای ۴۲۲ دریافت
میکنید.
{
"slug": "aB3xY9...",
"pay_url": "https://variza.ir/pay/aB3xY9...",
"amount": 500000,
"title": "Order #123",
"return_url": "https://example.com/callback",
"expires_at": "2026-08-05T12:00:00+00:00"
}
pay_url لینکی است که باید خریدار را به آن ریدایرکت کنید.
اگر اشتراک مارکتپلیس دارید، میتوانید لینک را به نام یکی از اعضای تیم بسازید. کافیست
member_phone را در درخواست ارسال کنید. لینک برای
حساب آن عضو و با کارتهای خودش ساخته میشود، اما
callback_url و امضای وبهوک همچنان از مالک مارکتپلیس استفاده
میشود و مقدار
member_phone در بدنه وبهوک برمیگردد تا سفارش را به نماینده مربوطه
نسبت دهید.
نماینده باید از قبل با دعوتنامه به مارکتپلیس شما اضافه شده و کارت بانکی خودش را ثبت کرده باشد. اعتبار از اشتراک مالک کسر میشود.
بهمحض موفقیت پرداخت، رویداد payment.paid با متد POST به
callback_url ثبتشده در پروفایل شما ارسال میشود.
| هدر | توضیح |
|---|---|
| X-Webhook-Signature | امضای HMAC-SHA256 بدنه خام، بهفرمت sha256=... |
| X-Delivery-Id | شناسه یکتای ارسال، برای فیلتر درخواستهای تکراری |
| X-Event | نام رویداد، همیشه payment.paid |
{
"event": "payment.paid",
"slug": "aB3xY9...",
"attempt_code": "152688947983",
"amount": 500128,
"base_amount": 500000,
"status": "paid",
"sent_at": "2026-08-05T11:45:00+00:00",
"member_phone": "09123456789" // or null
}
در حالت مارکتپلیس فیلد member_phone نیز در بدنه
ارسال میشود (در غیر این صورت null).
امضا با کلید webhook_secret شما و روی بدنه خام دریافتی محاسبه
میشود:
$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_WEBHOOK_SIGNATURE'] ?? '';
$expected = 'sha256=' . hash_hmac('sha256', $payload, $secret);
if (! hash_equals($expected, $signature)) {
http_response_code(400);
exit;
}
برای تایید دریافت با HTTP 200 پاسخ دهید. در غیر این صورت، ارسال با فاصلههای ۳۰ ثانیه تا ۱۰ دقیقه، حداکثر ۵ بار تکرار میشود.
| کد | شرایط |
|---|---|
| 422 | فیلدهای ارسالی معتبر نیستند |
| 401 | کلید API نامعتبر یا ناقص است |
| 422 | callback_url در پروفایل
ثبت
نشده
|
| 422 | کارت مقصد معتبر یا فعال نیست |
| 422 | محدودیت اشتراک برای لینک فعال جدید |
| 429 | تعداد درخواست بیش از حد مجاز در بازه زمانی |
برای اتصال سریعتر و مطمئنتر، کتابخانههای رسمی را بهجای درخواستهای دستی استفاده کنید. هر SDK ساخت لینک پرداخت و تایید امضای وبهوک را بهصورت آماده و تستشده در اختیار شما قرار میدهد.
افزونهی رسمی ووکامرس؛ فقط نصب و تنظیم کنید — بدون نیاز به کدنویسی. پرداخت کارتبهکارت با تأیید کاملاً خودکار سفارش، صفحهی تنظیمات فارسی و پشتیبانی از ووکامرس ۷.۰ به بالا.
پکیج رسمی لاراول برای ساخت لینک پرداخت و مدیریت وبهوک — با Facade، Event و Middleware آماده، کاملاً یکپارچه با اکوسیستم لاراول.
کتابخانه رسمی PHP برای ساخت لینک پرداخت و تایید وبهوک — با مستندات کامل، تست واحد و پشتیبانی از PHP 8.1 به بالا.
کتابخانه رسمی Node.js برای ساخت لینک پرداخت و تایید وبهوک — بدون وابستگی، با تعریف کامل تایپها و پشتیبانی از Node.js 18 به بالا.
SDKهای بیشتری در راهاند
بهزودی SDK های رسمی برای زبانهای دیگر منتشر میشود. اگر به زبان خاصی نیاز دارید، با ما در میان بگذارید.
در صورتی که پاسخ سوال خود را پیدا نکردید، به سادگی با پشتیبانی ما در پنل ارتباط بگیرید.
اگر اینماد ندارید، همچنان میتوانید از مشتریان خود پرداخت دریافت کنید. در این مقاله روشهای دریافت درگاه بدون اینماد و مزایای استفاده از درگاه کارتبهکارت خودکار را بررسی میکنیم.
تأیید پرداخت با پیامک بانکی، تراکنشهای کارتبهکارت را بدون بررسی دستی رسید مشتری شناسایی و تطبیق میدهد. در این مقاله نحوه کار این روش، امنیت آن و نکات مهم برای استفاده را بررسی میکنیم.
با واریزا میتوانید برای دریافت حمایت مالی بدون کارمزد یک لینک پرداخت بسازید و پرداختهای کارتبهکارت را بدون بررسی دستی، بهصورت خودکار تأیید کنید.
در کمتر از دو دقیقه، اولین لینک پرداخت خود را بسازید