صحن · توثيق المطوّرين
اربط نظام نقاط البيع (فودكس / أكسب / غيرهما) بولاء صحن. صحن مصدر الحقيقة؛ نظام البيع يقرأ الخصومات والنقاط ويستهلكها عبر هذا الـ API. النموذج مطابق لمحوّل الولاء في فودكس.
مفتاح API لكل فرع — يولّده المالك من لوحة التحكم ← التكاملات (لكل فرع مفتاح وزر تشغيل مستقل). يُرسَل في كل طلب:
Authorization: Bearer <API_KEY>
# أو
x-api-key: <API_KEY>reward_code من SAHNCUPN:<code>./reward (لا يستهلك) — للتحقّق «كم خصم العميل»./redeem (لمرة واحدة)./points لإضافة النقاط تلقائياً (والمرتجع يخصمها)./reward— معاينة (لا تستهلك)يرجّع نوع الخصم وقيمته دون استهلاك الكوبون. آمن للاستدعاء أكثر من مرة.
curl -X POST https://sahnqr.com/api/partner/reward \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{ "reward_code": "AB12CD34" }'الاستجابة — خصم على مستوى الطلب (type 1):
{
"code": 200,
"type": 1,
"title": "خصم ١٠٪",
"discount_amount": 10,
"is_percent": true,
"require_otp": false,
"is_discount_taxable": false,
"customer_name": "Fahad",
"customer_mobile_number": "+9665XXXXXXXX"
}مكافأة هدية (غير رقمية) ترجّع 422 — تُستبدل في تطبيق كاشير صحن.
/redeem— استهلاك (لمرة واحدة)نادِه عند تطبيق الخصم فعلاً. يعلّم الكوبون مستبدَلاً ذرّياً — النداء الثاني يرجّع 409. هذا النداء هو ما يجعل صحن يعرف يقيناً أن الخصم استُخدم.
curl -X POST https://sahnqr.com/api/partner/redeem \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{ "reward_code": "AB12CD34" }'{ "code": 200, "description": "Success", "title": "خصم ١٠٪", "discount_amount": 10, "is_percent": true }/points— نقاط البيع (ويبهوك)بيع مكتمل → إضافة نقاط. مرتجع (event=return) → خصم. العميل يُعرّف بالجوال (يُنشأ تلقائياً لو جديد). نفس الطلب لا يُحتسب مرتين (order_id).
curl -X POST https://sahnqr.com/api/partner/points \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"customer_mobile_number": "05XXXXXXXX",
"customer_name": "Fahad",
"amount": 100,
"event": "earn",
"order_id": "POS-90ea37ca"
}'الاستجابة:
{ "code": 200, "description": "Success", "points": 100, "applied": 100 }amount → النقاط = المبلغ × معدّل المطعم. أو أرسل points صراحةً.event: earn (افتراضي) أو return (خصم).order_id اختياري لكنه مُوصى به لمنع الاحتساب المزدوج./customer— بيانات العميل الكاملةيرجّع ملف العميل بالجوال: الاسم، الإيميل، المدينة، الحي، النقاط، وعدد الزيارات لكل فرع.
curl -X POST https://sahnqr.com/api/partner/customer \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{ "customer_mobile_number": "05XXXXXXXX" }'{
"code": 200,
"customer_name": "Fahad",
"customer_mobile_number": "+9665XXXXXXXX",
"email": "f@example.com",
"city": "الخرج",
"district": "الخالدية",
"points": 120,
"stamps": 3,
"total_visits": 5,
"visits": [
{ "branch_name": "فرع الخرج", "count": 4 },
{ "branch_name": "فرع العليا", "count": 1 }
]
}| الرمز | المعنى |
|---|---|
| 200 | نجاح |
| 400 | طلب غير صالح (حقل ناقص) |
| 401 | مفتاح غير صالح أو غائب |
| 404 | المكافأة/الكوبون غير صالح أو مستبدَل أو منتهٍ |
| 409 | المكافأة مستبدَلة مسبقاً |
| 422 | مكافأة هدية — تُستبدل في تطبيق كاشير صحن |
| 429 | طلبات كثيرة |