وثائق ربط TruePaySys

مرحباً بك في وثائق المطورين. تتيح لك واجهة برمجة التطبيقات (API) الخاصة بنا دمج بوابة الدفع TruePaySys في موقعك أو تطبيقك بسهولة تامة. نحن نستخدم معايير RESTful ونعيد البيانات بصيغة JSON.

الرابط الأساسي (Base URL)

https://truepaysys.com/api/v1

المصادقة (Authentication)

تتطلب جميع الطلبات وجود X-Api-Key في ترويسة الطلب (Headers). يمكنك الحصول على مفتاحك من لوحة تحكم التاجر.

headers example
X-Api-Key: pk_live_xxxxxxxxxxxxxxxxxxxxxxxx
Content-Type: application/json

بدء عملية دفع (Initiate Payment)

لبدء عملية دفع جديدة، قم بإرسال طلب POST إلى المسار أدناه. سيقوم النظام بإنشاء معاملة وإعادة رابط توجيه (Redirect URL) ليدفع من خلاله العميل.

POST https://truepaysys.com/api/v1/initiate

المتغيرات المطلوبة (JSON Body)

amount REQUIRED

مبلغ العملية (مثال: 150.00)

order_id REQUIRED

رقم الطلب الفريد في نظامك (ID)

method OPTIONAL

طريقة الدفع: instapay, wallet

Request Example
curl -X POST https://truepaysys.com/api/v1/initiate \
  -H "X-Api-Key: pk_test_..." \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 150.00,
    "order_id": "ORD-12345",
    "method": "instapay"
  }'

هيكل الاستجابة (Response)

Successful Response (200 OK)
{
  "transaction_id": 105,
  "redirect_url": "https://truepaysys.com/pay/105"
}

إشعارات الدفع (Webhooks)

بمجرد اكتمال عملية الدفع (بعد المراجعة من الإدارة)، سنقوم بإرسال طلب POST إلى رابط الـ Callback الذي قمت بتحديده في إعدادات حسابك.

التحقق من التوقيع (Signature Verification)

يتم إرسال توقيع رقمي في الـ Header باسم X-Signature. هو عبارة عن HMAC-SHA256 لجسم الطلب (Request Body) باستخدام الـ Secret Key الخاص بك.

أمثلة التحقق (Verification Examples)

$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_SIGNATURE'];
$secret = 'YOUR_SECRET_KEY';

$hash = hash_hmac('sha256', $payload, $secret);

if (hash_equals($hash, $signature)) {
    // Signature is valid
    $data = json_decode($payload, true);
    // Process order...
}
Webhook JSON Payload
{
  "id": 105,
  "status": "approved",
  "amount": 150.00,
  "foreign_id": "ORD-12345",
  "method": "instapay",
  "created_at": "2023-10-25 14:30:00"
}

بيانات الاختبار والسيناريوهات

بما أن النظام يعتمد على مراجعة الإيصالات يدوياً من قبل الإدارة، يمكنك في بيئة الاختبار رفع أي صورة توضيحية كإيصال. لتجربة السيناريوهات المختلفة:

محاكاة النجاح

قم برفع إيصال واضح وانتظر موافقة لوحة تحكم الأدمن (أو وافق عليها بنفسك إذا كنت تملك صلاحية الوصول للأدمن).

محاكاة الرفض

من لوحة تحكم الأدمن، اختر "رفض" للمعاملة المعلقة لتصلك إشارة بالفشل إلى الـ Webhook.

أكواد الخطأ (Error Codes)

نستخدم أكواد HTTP القياسية للإشارة إلى نجاح أو فشل الطلبات، بالإضافة إلى رسائل خطأ توضيحية في جسم الرد (JSON).

HTTP Code Error Type الوصف
200 OK Success الطلب تم بنجاح.
400 Bad Request Validation Error بيانات غير مكتملة أو غير صالحة (مثال: مبلغ سالب، رقم طلب مفقود).
401 Unauthorized Authentication Error مفتاح الـ API غير صالح أو مفقود.
403 Forbidden Permission Error حسابك محظور أو غير مفعل.
404 Not Found Resource Warning الرابط أو المورد غير موجود.
405 Method Not Allowed Method Error استخدام GET بدلاً من POST (أو العكس).
500 Server Error System Error خطأ داخلي في الخادم. يرجى التواصل مع الدعم الفني.

تكامل كامل باستخدام PHP (cURL)

$data = [
    'amount' => 500.00,
    'order_id' => 'MY_ORDER_123',
    'method' => 'instapay'
];

$ch = curl_init("https://truepaysys.com/api/v1/initiate");
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, [
    'Content-Type: application/json',
    'X-Api-Key: YOUR_PUBLIC_KEY'
]);

$response = curl_exec($ch);
$json = json_decode($response, true);

if (isset($json['redirect_url'])) {
    header("Location: " . $json['redirect_url']);
} else {
    echo "Error: " . ($json['error'] ?? 'Unknown');
}

Node.js (Using Axios)

const axios = require('axios');

const data = {
    amount: 500.00,
    order_id: 'MY_ORDER_123',
    method: 'instapay'
};

try {
    const response = await axios.post('https://truepaysys.com/api/v1/initiate', data, {
        headers: {
            'Content-Type': 'application/json',
            'X-Api-Key': 'YOUR_PUBLIC_KEY'
        }
    });

    if (response.data.redirect_url) {
        console.log('Payment URL:', response.data.redirect_url);
        // Redirect user...
    }
} catch (error) {
    console.error('Error:', error.response.data);
}

Python (Using Requests)

import requests

url = "https://truepaysys.com/api/v1/initiate"

payload = {
    "amount": 500.00,
    "order_id": "MY_ORDER_123",
    "method": "instapay"
}

headers = {
    "Content-Type": "application/json",
    "X-Api-Key": "YOUR_PUBLIC_KEY"
}

response = requests.post(url, json=payload, headers=headers)

if response.status_code == 200:
    data = response.json()
    print("Payment URL:", data["redirect_url"])
else:
    print("Error:", response.text)