راهنمای جامع اتصال به درگاه کارتگذر
درگاه پرداخت کارتگذر یک زیرساخت مدرن کارتبهکارت خودکار بر پایه تخصیص کد یکتای ۴ رقمی روی قیمت و پردازش بلادرنگ پیامکهای بانکی است. با استفاده از این API میتوانید هر نوع فروشگاه، وبسایت، اپلیکیشن یا ربات را به درگاه پرداخت متصل نمایید.
ثبت سفارش
ارسال مبلغ به API و دریافت لینک اختصاصی پرداخت با کد یکتای اضافه شده به مبلغ
هدایت خریدار
ریدایرکت خریدار به صفحه درگاه و واریز کارتبهکارت با تایمر ۱۵ دقیقهای
تطبیق هوشمند پیامک
شناسایی فوری پیامک واریز توسط سرور کارتگذر از طریق اپلیکیشن موبایل
ارسال وبهوک و تایید
ارسال اعلان وبهوک به سایت فروشگاه و راستیآزمایی نهایی با متد Verify
آدرس پایه سرور و احراز هویت (Base URL & Authentication)
درخواستها باید از طریق پروتکل HTTP یا HTTPS ارسال گردند:
احراز هویت از طریق کلیدهای امن API صورت میگیرد. کلید عمومی را در هدر درخواست قرار دهید:
Authorization: Bearer YOUR_API_KEY
# یا روش جایگزین:
x-api-key: YOUR_API_KEY
شما مبلغ سفارش، شناسه سفارش و آدرس بازگشت خریدار (callback_url) را ارسال میکنید. کارتگذر یک سفارش امن با کد ۴ رقمی یکتا ایجاد کرده و payment_url را برمیگرداند.
| نام فیلد | نوع داده | وضعیت | توضیحات |
|---|---|---|---|
| amount | integer | الزامی | مبلغ پایه فاکتور به ریال (مثال: ۱۲,۰۰۰,۰۰۰ ریال معادل ۱,۲۰۰,۰۰۰ تومان) |
| order_id | string | اختیاری | شناسه اختصاصی فاکتور در سیستم شما (مثلاً INV-84920) |
| callback_url | string (URL) | الزامی | آدرس بازگشت خریدار پس از پرداخت و مقصدی که وبهوک به آن ارسال میشود |
| description | string | اختیاری | شرح فاکتور جهت نمایش به خریدار در صفحه پرداخت |
{
"status": "success",
"order_token": "ord_a94f1082cba3e47b",
"payment_url": "https://payments.cardgozar.ir/pay/ord_a94f1082cba3e47b",
"base_amount": 12000000,
"final_amount": 12034500,
"final_amount_tomans": 1203450,
"unique_code": 3450,
"expires_in_seconds": 900
}
پس از دریافت پاسخ از متد Create، خریدار را با ریدایرکت مرورگر به مقدار payment_url هدایت کنید.
در این صفحه:
- شماره ۱۶ رقمی کارت بانکی فعال شما و نام صاحب حساب نمایش داده میشود.
- مبلغ نهایی با کد یکتا با امکان کپی مستقیم نمایش داده میشود.
- تایمر معکوس ۱۵ دقیقهای فعال شده و وضعیت پرداخت مانیتور میشود.
- به محض واریز و دریافت پیامک، رسید صادر شده و خریدار به
callback_urlبازگردانده میشود.
پس از بازگشت خریدار به سایت شما (یا قبل از تحویل خدمت/کالا)، حتماً این متد را از سمت سرور خود فراخوانی فرمایید تا از پرداخت واقعی و قطعی اطمینان حاصل شود.
{
"status": "PAID",
"is_paid": true,
"is_expired": false,
"order_token": "ord_a94f1082cba3e47b",
"merchant_order_id": "INV-84920",
"base_amount_tomans": 1200000,
"unique_code": 3450,
"final_amount_rials": 12034500,
"final_amount_tomans": 1203450,
"ref_id": "94821038",
"payer_card": "****-2841",
"paid_at": "2026-10-16T13:10:45Z"
}
وبهوک تایید آنی پرداخت (Server-to-Server Webhook)
در صورتی که خریدار پس از واریز مرورگر را ببندد، سرور کارتگذر به محض تطبیق پیامک، درخواست POST همراه با امضای دیجیتال به callback_url ارسال میکند.
X-CardGozar-Signature: 8f4a1c6e7b89... (HMAC-SHA256 signature calculated with your API Secret)
نمونهکدهای آماده پیادهسازی (Ready-to-use Code)
کد استاندارد PHP با cURL جهت اتصال وبسایت یا افزونه وردپرس/ووکامرس:
<?php
$apiKey = "YOUR_API_KEY";
$apiSecret = "YOUR_API_SECRET";
$baseUrl = "https://cardgozar.ir";
// ۱. ایجاد تراکنش جدید
function createOrder($amountRials, $orderId, $callbackUrl) {
global $apiKey, $baseUrl;
$payload = json_encode([
'amount' => $amountRials,
'order_id' => $orderId,
'callback_url' => $callbackUrl,
'description' => 'خرید سفارش ' . $orderId
]);
$ch = curl_init($baseUrl . "/api/v1/payments/create/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Authorization: Bearer ' . $apiKey
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$result = json_decode($response, true);
if ($httpCode === 201 && isset($result['payment_url'])) {
header("Location: " . $result['payment_url']);
exit;
} else {
die("خطا در ایجاد درگاه: " . ($result['error'] ?? 'نامشخص'));
}
}
?>
نمونه کد پایتون با کتابخانه requests:
import requests
BASE_URL = "https://cardgozar.ir"
API_KEY = "YOUR_API_KEY"
def create_payment(amount_rials, order_id, callback_url):
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
payload = {
"amount": amount_rials,
"order_id": order_id,
"callback_url": callback_url,
"description": f"Order {order_id}"
}
res = requests.post(f"{BASE_URL}/api/v1/payments/create/", json=payload, headers=headers)
if res.status_code == 201:
data = res.json()
return data['payment_url']
raise Exception(res.json().get('error'))
نمونه کد Node.js با کتابخانه axios:
const axios = require('axios');
const BASE_URL = 'https://cardgozar.ir';
const API_KEY = 'YOUR_API_KEY';
async function createPayment(amountRials, orderId, callbackUrl) {
const res = await axios.post(`${BASE_URL}/api/v1/payments/create/`, {
amount: amountRials,
order_id: orderId,
callback_url: callbackUrl,
description: `Order ${orderId}`
}, {
headers: { 'Authorization': `Bearer ${API_KEY}` }
});
return res.data.payment_url;
}
دستورات خط فرمان جهت تست سریع با cURL از ترمینال:
curl -X POST https://cardgozar.ir/api/v1/payments/create/ \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"amount": 1000000, "order_id": "TEST-101", "callback_url": "https://myshop.ir/cb"}'
جدول کدهای وضعیت و خطاهای استاندارد (Error Handling)
| کد HTTP | عنوان وضعیت | توضیحات و راهنمای رفع |
|---|---|---|
| 201 Created | سفارش با موفقیت ایجاد شد | مشتری را به payment_url هدایت فرمایید. |
| 200 OK | استعلام موفق | پاسخ استعلام با فیلد is_paid: true دریافت شد. |
| 400 Bad Request | خطای دادههای ورودی | پارامترهای الزامی مانند amount یا callback_url ارسال نشده یا معتبر نیستند. |
| 401 Unauthorized | احراز هویت نامعتبر | کلید API ارسالی اشتباه است یا غیرفعال شده است. |
| 403 Forbidden | درگاه معلق به دلیل سقف بدهی | بدهی کارمزد درگاه شما به سقف ۵۰۰,۰۰۰ تومان رسیده است. کیفپول را شارژ نمایید. |
| 404 Not Found | سفارش یافت نشد | توکن سفارش وارد شده نامعتبر است یا در سیستم وجود ندارد. |