درگاه پرداخت کارت به کارت امن و سریع برای کسب و کارهای آنلاین
ورود به پنل کاربری
نکته مهم: تمامی درخواست‌ها باید با هدر Authorization: Bearer API_KEY ارسال شوند. کلید API خود را از پنل کاربری دریافت نمایید.

مستندات فنی پی جو

به راهنمای سرویس درگاه پرداخت پی جو خوش آمدید. این مستندات جهت آسانی استفاده شما از سرویس‌ پی جو جمع آوری شده‌اند. در صورت بروز هر گونه سوال با تیم فنی پی جو تماس بگیرید. وظیفه همکاران ما پاسخ به پیام‌های شما در اسرع وقت می‌باشد.

چرا پی جو؟

پی جو با ارائه راهکارهای نوین در پرداخت‌های کارت به کارت، تجربه‌ای سریع، امن و بدون دردسر را برای شما فراهم می‌کند. با استفاده از API ما می‌توانید به راحتی پرداخت‌های خود را مدیریت کنید.

مستندات API
نمونه کدها
سوالات متداول

ایجاد درخواست پرداخت

POST https://api.payjo.cam/v1/request

بدنه درخواست

پارامتر نوع الزامی توضیحات مثال
amount float بله مبلغ تراکنش به تومان (حداقل 10,000 تومان) 50000
source_card string بله شماره کارت مبدا (16 رقمی) 6037991234567890
callback_url string خیر آدرس کالبک برای اطلاع رسانی وضعیت پرداخت https://example.com/callback
نمونه JSON ارسالی شما برای این پایانه
{
    "amount": 50000,
    "source_card": "6037991234567890",
    "callback_url": "https://example.com/callback"
}

بدنه پاسخ

پارامتر نوع توضیحات
result int کد نتیجه درخواست (1 برای موفقیت آمیز)
success boolean وضعیت موفقیت آمیز بودن درخواست
message string پیغام توضیحی از سرور
track_id string کد رهگیری سفارش (منحصر به فرد)
amount float مبلغ تراکنش به تومان
destination_card string شماره کارت مقصد برای واریز
destination_bank string نام بانک مقصد
owner_name string نام صاحب کارت مقصد
نمونه JSON پاسخ پی جو برای این پایانه
{
    "result": 1,
    "success": true,
    "message": "درخواست پرداخت با موفقیت ثبت شد",
    "track_id": "a1b2c3d4e5f6",
    "amount": 50000,
    "source_card": "6037991234567890",
    "stats": {
        "daily_count": 5,
        "monthly_count": 45,
        "total_count": 120,
        "total_amount": 8500000
    },
    "limits": {
        "min_amount": 10000,
        "max_amount": 500000,
        "daily_limit": 50,
        "monthly_limit": 500
    },
    "destination_card": "5022291234567890",
    "destination_bank": "پاسارگاد",
    "owner_name": "شرکت پی جو",
    "expire_time": "2023-12-31T23:59:59"
}

جدول کدهای نتیجه

کد نتیجه پیغام وضعیت HTTP راهکار
1 موفق 200 -
2 API Key به درستی ارسال نشده است 400 هدر Authorization را با فرمت صحیح ارسال کنید
3 API Key صحیح نیست 403 کلید API را از پنل کاربری بررسی کنید
4 اجازه دسترسی به این سرویس صادر نشده‌است 403 در پنل کاربری دسترسی سرویس را فعال کنید
5 داده‌های ورودی نامعتبر است 400 مقادیر ارسالی را بررسی کنید
6 مبلغ باید بین {min} تا {max} تومان باشد 400 مبلغ را در محدوده مجاز وارد کنید
7 شما به سقف {limit} تراکنش در روز رسیده‌اید 400 تا روز بعد منتظر بمانید یا محدودیت را افزایش دهید
8 شما به سقف {limit} تراکنش در ماه رسیده‌اید 400 تا ماه بعد منتظر بمانید یا محدودیت را افزایش دهید
9 تراکنش تکراری 400 از track_id تراکنش قبلی که ایجاد شده و هنوز پرداخت نشده استفاده کنید و اطلاعات کارت مقصد هم در این خروجی وجود دارد
10 فایل توکن یافت نشد 500 با پشتیبانی تماس بگیرید
11 توکن دسترسی یافت نشد 500 با پشتیبانی تماس بگیرید
12 خطا در استعلام اطلاعات کارت 400 شماره کارت را بررسی کنید
13 اطلاعات کارت نامعتبر است 400 شماره کارت معتبر وارد کنید
14 خطا در ایجاد سفارش 500 دوباره تلاش کنید یا با پشتیبانی تماس بگیرید
15 خطا در پردازش درخواست 500 دوباره تلاش کنید یا با پشتیبانی تماس بگیرید

کالبک پرداخت

در صورت ثبت callback_url در هنگام ایجاد سفارش، پس از تأیید پرداخت، سیستم به آدرس مشخص شده درخواست GET ارسال می‌کند. این مکانیزم برای اطلاع‌رسانی خودکار وضعیت پرداخت به سیستم شما طراحی شده است.

توصیه: حتماً از HTTPS برای آدرس کالبک استفاده کنید تا اطلاعات حساس به صورت امن انتقال یابند.

پارامترهای کالبک

پارامتر نوع توضیحات
trackId string کد رهگیری سفارش (همان track_id دریافتی هنگام ایجاد درخواست)
success integer 1 برای موفق
status integer 2 برای وضعیت تکمیل شده

مثال کالبک

GET https://example.com/callback?trackId=a1b2c3d4e5f6&success=1&status=2
نکته فنی: سیستم ما انتظار دارد سرور شما به این درخواست با کد وضعیت HTTP 200 پاسخ دهد.

استعلام وضعیت پرداخت

POST https://api.payjo.cam/v1/inquiry

بدنه درخواست

پارامتر نوع الزامی توضیحات مثال
track_id string بله کد رهگیری تراکنش a1b2c3d4e5f6
نمونه JSON ارسالی شما برای این پایانه
{
    "track_id": "a1b2c3d4e5f6"
}

بدنه پاسخ

پارامتر نوع توضیحات
trackId string شناسه یکتا تراکنش
amount number مبلغ تراکنش به تومان
status string وضعیت تراکنش (مقادیر ممکن: completed, pending)
createdAt string (DateTime) تاریخ و زمان ایجاد تراکنش (فرمت: YYYY-MM-DD HH:MM:SS)
paidAt string (DateTime) تاریخ و زمان پرداخت تراکنش (فرمت: YYYY-MM-DD HH:MM:SS)
cardNumber string شماره کارت مبدا به صورت ماسک شده (مثال: 603799****1234)
refNumber string شماره مرجع تراکنش بانک
verifiedAt string | null تاریخ و زمان تایید تراکنش (فقط برای وضعیت completed)
نمونه JSON پاسخ پی جو برای این پایانه
{
    "result": 100,
    "success": true,
    "message": "با موفقیت گزارش ایجاد شد",
    "data": {
        "trackId": "TRACK123",
        "amount": 100000,
        "status": "completed",
        "createdAt": "2023-01-01 12:00:00",
        "paidAt": "2023-01-01 12:05:00",
        "cardNumber": "603799****1234",
        "refNumber": "REF123456",
        "verifiedAt": "2023-01-01 12:10:00"
    }
}

جدول کدهای نتیجه

کد نتیجه پیغام وضعیت HTTP راهکار
100 موفق - با موفقیت گزارش ایجاد شد 200 -
101 کلید API ارسال نشده است 401 لطفا کلید API معتبر را در هدر Authorization با فرمت Bearer Token ارسال کنید
102 داده‌های ورودی نامعتبر است 400 لطفا شناسه تراکنش (track_id) را به درستی ارسال کنید و از معتبر بودن آن اطمینان حاصل نمایید
103 کلید API نامعتبر است 403 کلید API را از پنل کاربری بررسی کنید یا در صورت نیاز یک کلید جدید ایجاد نمایید
104 تراکنش یافت نشد 404 شناسه تراکنش را بررسی کنید یا با پشتیبانی تماس بگیرید
105 خطا در سرویس دهنده 500 لطفا بعدا مجددا تلاش کنید یا با پشتیبانی فنی تماس بگیرید
106 دسترسی به این تراکنش مجاز نیست 403 اطمینان حاصل کنید که تراکنش متعلق به حساب کاربری شماست
107 سرویس موقتا غیرفعال است 503 لطفا بعدا مجددا تلاش کنید

نمونه کدهای پیاده‌سازی

ایجاد درخواست پرداخت
کالبک پرداخت
استعلام پرداخت
PHP
<?php
$apiKey = 'YOUR_API_KEY';
$amount = 50000;
$sourceCard = '6037991234567890';
$callbackUrl = 'https://example.com/callback';

$data = [
    'amount' => $amount,
    'source_card' => $sourceCard,
    'callback_url' => $callbackUrl
];

$ch = curl_init('https://api.payjo.cam/v1/request');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $apiKey,
    'Content-Type: application/json'
]);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response, true);

if ($result['success']) {
    echo "پرداخت با موفقیت ثبت شد. کد رهگیری: " . $result['track_id'];
    echo "کارت مقصد: " . $result['destination_card'];
} else {
    echo "خطا: " . $result['message'];
}
?>
JavaScript (Fetch)
const apiKey = 'YOUR_API_KEY';
const amount = 50000;
const sourceCard = '6037991234567890';
const callbackUrl = 'https://example.com/callback';

const data = {
    amount: amount,
    source_card: sourceCard,
    callback_url: callbackUrl
};

fetch('https://api.payjo.cam/v1/request', {
    method: 'POST',
    headers: {
        'Authorization': `Bearer ${apiKey}`,
        'Content-Type': 'application/json'
    },
    body: JSON.stringify(data)
})
.then(response => response.json())
.then(result => {
    if (result.success) {
        console.log('پرداخت با موفقیت ثبت شد. کد رهگیری:', result.track_id);
        console.log('کارت مقصد:', result.destination_card);
    } else {
        console.error('خطا:', result.message);
    }
})
.catch(error => {
    console.error('خطا در ارتباط با سرور:', error);
});
Python
import requests
import json

api_key = 'YOUR_API_KEY'
amount = 50000
source_card = '6037991234567890'
callback_url = 'https://example.com/callback'

data = {
    'amount': amount,
    'source_card': source_card,
    'callback_url': callback_url
}

headers = {
    'Authorization': f'Bearer {api_key}',
    'Content-Type': 'application/json'
}

response = requests.post(
    'https://api.payjo.cam/v1/request',
    data=json.dumps(data),
    headers=headers
)

result = response.json()

if result.get('success'):
    print(f"پرداخت با موفقیت ثبت شد. کد رهگیری: {result['track_id']}")
    print(f"کارت مقصد: {result['destination_card']}")
else:
    print(f"خطا: {result.get('message', 'خطای نامشخص')}")
PHP
<?php
// دریافت پارامترهای کالبک
$trackId = $_GET['trackId'];
$success = $_GET['success'];
$status = $_GET['status'];

// بررسی صحت پرداخت
if ($success == 1 && $status == 2) {
    // پرداخت موفقیت آمیز بوده است
    // انجام عملیات مورد نظر مانند فعال سازی سرویس
    
    // پاسخ موفقیت آمیز به سرور پی جو
    http_response_code(200);
    echo "OK";
} else {
    // پرداخت ناموفق بوده است
    http_response_code(400);
    echo "Error";
}
?>
Node.js
const express = require('express');
const app = express();

app.get('/callback', (req, res) => {
    const { trackId, success, status } = req.query;
    
    // بررسی صحت پرداخت
    if (success === '1' && status === '2') {
        // پرداخت موفقیت آمیز بوده است
        // انجام عملیات مورد نظر مانند فعال سازی سرویس
        
        // پاسخ موفقیت آمیز به سرور پی جو
        res.status(200).send('OK');
    } else {
        // پرداخت ناموفق بوده است
        res.status(400).send('Error');
    }
});

app.listen(3000, () => {
    console.log('Server is running on port 3000');
});
PHP
<?php
$apiKey = 'YOUR_API_KEY';
$trackId = 'a1b2c3d4e5f6'; // کد رهگیری تراکنش

$data = [
    'track_id' => $trackId
];

$ch = curl_init('https://api.payjo.cam/v1/inquiry');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $apiKey,
    'Content-Type: application/json'
]);

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response, true);

if ($result['success']) {
    echo "وضعیت پرداخت: " . $result['data']['status'];
    echo "مبلغ: " . $result['data']['amount'] . " تومان";
} else {
    echo "خطا در استعلام: " . $result['message'];
}
?>
Python
import requests
import json

api_key = 'YOUR_API_KEY'
track_id = 'a1b2c3d4e5f6'  # کد رهگیری تراکنش

data = {
    'track_id': track_id
}

headers = {
    'Authorization': f'Bearer {api_key}',
    'Content-Type': 'application/json'
}

response = requests.post(
    'https://api.payjo.cam/v1/inquiry',
    data=json.dumps(data),
    headers=headers
)

result = response.json()

if result.get('success'):
    print(f"وضعیت پرداخت: {result['data']['status']}")
    print(f"مبلغ: {result['data']['amount']} تومان")
else:
    print(f"خطا در استعلام: {result.get('message', 'خطای نامشخص')}")

سوالات متداول

حداقل و حداکثر مبلغ قابل پرداخت چقدر است؟

حداقل مبلغ قابل پرداخت 10,000 تومان و حداکثر مبلغ 500,000 تومان برای هر تراکنش می‌باشد. این محدوده ممکن است بسته به سطح احراز هویت شما تغییر کند.

مدت زمان تأیید پرداخت چقدر است؟

سیستم به صورت خودکار هر 10 دقیقه تراکنش‌های بانکی را بررسی می‌کند. در صورتی که پرداخت انجام شده باشد، حداکثر تا 10 دقیقه بعد وضعیت پرداخت به "تکمیل شده" تغییر خواهد کرد.

آیا می‌توانم از کارت‌های بانک‌های مختلف استفاده کنم؟

بله، تمامی کارت‌های عضو شتاب (به جز کارت‌های هدیه و حساب‌های قرض‌الحسنه بدون شبا) قابل استفاده هستند. شماره کارت مقصد ممکن است از بانک‌های مختلف باشد.

چگونه می‌توانم محدودیت‌های حساب خود را افزایش دهم؟

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

آیا این سرویس برای کسب و کارهای بین‌المللی قابل استفاده است؟

خیر، این سرویس فعلاً فقط برای کارت‌های بانکی صادر شده در ایران قابل استفاده است.

موارد مهمی که باید بدانید

  • تمامی مبالغ باید به تومان ارسال شوند
  • حداقل مبلغ قابل پرداخت 10,000 تومان می‌باشد
  • شماره کارت مقصد ممکن است تغییر کند و ثابت نیست
  • پس از تأیید پرداخت، موجودی حساب دارنده API Key افزایش می‌یابد
  • در صورت تعریف callback_url، پس از تأیید پرداخت، کالبک فراخوانی می‌شود
  • سیستم به صورت خودکار هر 10 دقیقه تراکنش‌های بانکی را بررسی می‌کند
  • پرداخت می‌تواند به روش‌های مختلف (کارت به کارت، پل، حساب به حساب، پایا) انجام شود
  • در روش پایا، مدت زمان تأیید پرداخت طولانی‌تر خواهد بود
  • پرداخت از طریق کارت‌های هدیه امکان‌پذیر نمی‌باشد
  • پرداخت از طریق حساب‌های صندوق قرض‌الحسنه که فاقد شماره شبا هستند امکان‌پذیر نمی‌باشد
  • می‌توانید از طریق API وضعیت تراکنش را استعلام کنید