وثائق ربط TruePaySys
مرحباً بك في وثائق المطورين. تتيح لك واجهة برمجة التطبيقات (API) الخاصة بنا دمج بوابة الدفع TruePaySys في موقعك أو تطبيقك بسهولة تامة. نحن نستخدم معايير RESTful ونعيد البيانات بصيغة JSON.
الرابط الأساسي (Base URL)
https://truepaysys.com/api/v1
المصادقة (Authentication)
تتطلب جميع الطلبات وجود X-Api-Key في ترويسة الطلب (Headers). يمكنك الحصول على مفتاحك من لوحة تحكم التاجر.
X-Api-Key: pk_live_xxxxxxxxxxxxxxxxxxxxxxxx
Content-Type: application/json
بدء عملية دفع (Initiate Payment)
لبدء عملية دفع جديدة، قم بإرسال طلب POST إلى المسار أدناه. سيقوم النظام بإنشاء معاملة وإعادة رابط توجيه (Redirect URL) ليدفع من خلاله العميل.
https://truepaysys.com/api/v1/initiate
المتغيرات المطلوبة (JSON Body)
مبلغ العملية (مثال: 150.00)
رقم الطلب الفريد في نظامك (ID)
طريقة الدفع: instapay, wallet
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)
{
"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...
}
{
"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)