Authorization: Bearer API_KEY ارسال شوند. کلید API خود را از پنل کاربری دریافت نمایید.
به راهنمای سرویس درگاه پرداخت پی جو خوش آمدید. این مستندات جهت آسانی استفاده شما از سرویس پی جو جمع آوری شدهاند. در صورت بروز هر گونه سوال با تیم فنی پی جو تماس بگیرید. وظیفه همکاران ما پاسخ به پیامهای شما در اسرع وقت میباشد.
پی جو با ارائه راهکارهای نوین در پرداختهای کارت به کارت، تجربهای سریع، امن و بدون دردسر را برای شما فراهم میکند. با استفاده از API ما میتوانید به راحتی پرداختهای خود را مدیریت کنید.
| پارامتر | نوع | الزامی | توضیحات | مثال |
|---|---|---|---|---|
| amount | float | بله | مبلغ تراکنش به تومان (حداقل 10,000 تومان) | 50000 |
| source_card | string | بله | شماره کارت مبدا (16 رقمی) | 6037991234567890 |
| callback_url | string | خیر | آدرس کالبک برای اطلاع رسانی وضعیت پرداخت | https://example.com/callback |
{
"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 | نام صاحب کارت مقصد |
{
"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 ارسال میکند. این مکانیزم برای اطلاعرسانی خودکار وضعیت پرداخت به سیستم شما طراحی شده است.
| پارامتر | نوع | توضیحات |
|---|---|---|
| trackId | string | کد رهگیری سفارش (همان track_id دریافتی هنگام ایجاد درخواست) |
| success | integer | 1 برای موفق |
| status | integer | 2 برای وضعیت تکمیل شده |
GET https://example.com/callback?trackId=a1b2c3d4e5f6&success=1&status=2
| پارامتر | نوع | الزامی | توضیحات | مثال |
|---|---|---|---|---|
| track_id | string | بله | کد رهگیری تراکنش | a1b2c3d4e5f6 |
{
"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) |
{
"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
$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'];
}
?>
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);
});
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
// دریافت پارامترهای کالبک
$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";
}
?>
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
$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'];
}
?>
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 دقیقه بعد وضعیت پرداخت به "تکمیل شده" تغییر خواهد کرد.
بله، تمامی کارتهای عضو شتاب (به جز کارتهای هدیه و حسابهای قرضالحسنه بدون شبا) قابل استفاده هستند. شماره کارت مقصد ممکن است از بانکهای مختلف باشد.
با تکمیل مراحل احراز هویت در پنل کاربری میتوانید محدودیتهای حساب خود را افزایش دهید. همچنین میتوانید از طریق پشتیبانی درخواست افزایش محدودیت دهید.
خیر، این سرویس فعلاً فقط برای کارتهای بانکی صادر شده در ایران قابل استفاده است.