CorePay
CorePayبوابة تحصيل المحافظ

الأسعار: 200 ج/شهر · 2000 ج/سنة

نظرة عامة

ملخّص حسابك النهارده

💳 آخر المعاملات

الطلبمرجعكالمبلغمنالحالةالوقت

المدفوعات

كل الطلبات اللي اتعملت على حسابك

الطلبمرجعكالمبلغمنعلىالحالةالوقت

أرقام الاستقبال

الأرقام اللي الزباين هيحوّلوا عليها

⚠️ لازم نفس الأرقام تكون متسجّلة في تطبيق الموبايل كمان — التطبيق هو اللي بيبعتلنا رسايل الاستلام.

📊 حالة الخطوط

الرقمرصيد الخطاستقبل النهاردهالشهرالحد الشهري

المفاتيح والربط

دي أسرارك — متشاركهاش مع حد

🔒 لو حد عرف مفتاح التطبيق يقدر يبعتلنا رسايل مزيّفة. لو اتسرّب، كلّمنا فوراً.

🔗 رابط الدفع الثابت

رابط دايم — حطه في بايو إنستجرام أو واتساب. الزبون يفتحه، يكتب المبلغ ورقمه، والطلب بيتعمل تلقائي.

🔔 رابط الـ Webhook

عنوان على سيرفرك انت — بنبعتله إشعار موقّع أول ما الدفع يتأكد. سيبه فاضي لو مالكش سيرفر.

التكامل

إزاي تربط CorePay بموقعك أو بوتك

الفكرة باختصار

  1. موقعك بينشئ طلب دفع عندنا بالمبلغ ورقم الزبون.
  2. بنرجّعلك رابط دفع + رقم الاستقبال — تعرضه للزبون.
  3. الزبون يحوّل المبلغ بالظبط من الرقم اللي سجّله.
  4. رسالة المحفظة بتوصل موبايلك، والتطبيق بيبعتها لنا.
  5. بنطابق ونأكّد الدفع، ونبلّغ سيرفرك بـwebhook موقّع.
المطابقة بـ(رقم المُرسِل + المبلغ + رقم الاستقبال) — مش بمبلغ فريد، فأسعارك تفضل زي ما هي.

① إنشاء طلب دفع

POST https://pay.coretopup.online/api/v1/payments
X-Api-Key: <مفتاح الـ API>
Content-Type: application/json

{
  "amount_egp": 240,
  "from_phone": "01xxxxxxxxx",
  "ext_ref": "ORDER-991"
}

الرد:

{
  "ok": true,
  "order_ref": "CP123456789",
  "amount": 240,
  "to_number": "01xxxxxxxxx",
  "expires_in": 600,
  "pay_url": "https://pay.coretopup.online/pay/CP123456789"
}
⚠️ ext_ref لازم يكون ثابت لكل طلب (رقم الطلب عندك). لو حطيت فيه وقت متغيّر، كل ضغطة بتفتح طلب جديد وبتستهلك أرقام الاستقبال.

② التحقق من الدفع (Webhook)

بنبعت POST على رابطك، مع هيدر X-CorePay-Signature:

{
  "event": "payment.completed",
  "order_ref": "CP123456789",
  "ext_ref": "ORDER-991",
  "amount_egp": 240.0,
  "from_phone": "01xxxxxxxxx",
  "to_number": "01xxxxxxxxx",
  "paid_at": 1786500000
}

التحقق (Python):

import hmac, hashlib, json
from aiohttp import web

async def hook(request):
    raw = await request.read()          # الخام — قبل أي تحليل
    sig = request.headers.get("X-CorePay-Signature", "")
    exp = hmac.new(API_KEY.encode(), raw, hashlib.sha256).hexdigest()
    if not hmac.compare_digest(sig, exp):
        return web.Response(status=401)

    d = json.loads(raw)
    if already_done(d["order_ref"]):    # idempotency
        return web.Response(text="ok")
    deliver(d["ext_ref"], d["amount_egp"])
    return web.Response(text="ok")      # لازم 2xx
🔴 3 قواعد إلزامية:
• احسب التوقيع على الجسم الخام — مش بعد json.loads وإعادة تحويل.
• استخدم compare_digest مش ==.
• خلّي التسليم idempotent من قاعدة بياناتك — بنعيد المحاولة 3 مرات لو مارديتش 2xx.

③ الاستعلام عن الحالة

GET https://pay.coretopup.online/api/v1/payments/CP123456789
X-Api-Key: <مفتاح الـ API>

الحالات: pending · completed · expired

أكواد الأخطاء

الكودالمعنىالتصرف
401مفتاح غلطراجع الـX-Api-Key
402الاشتراك انتهىجدّد من صفحة الاشتراك
bad_phoneرقم مش صحيحلازم 01xxxxxxxxx
duplicate_pendingطلب معلّق بنفس المبلغ والرقمخلّي الزبون يكمّله أو غيّر المبلغ
too_many_pendingالزبون عنده 3 طلبات معلّقةيكمّلها الأول
no_numbersمضفتش أرقام استقبالضيف رقم من صفحة الأرقام

📱 التطبيق

  1. نزّل تطبيق CorePay على موبايل فيه خطوط الاستقبال.
  2. حط مفتاح التطبيق وأرقامك.
  3. اسمحله يقرا الرسايل، وعطّل تحسين البطارية ليه.
  4. سيب الموبايل شغّال وعليه نت — لو وقف، التحويلات مش هتتأكد.
حالة التطبيق بتبان في «نظرة عامة» — لو ظهر 🔴 واقف، راجع النت والبطارية.

الاشتراك

الخطة الحالية والتجديد

تجديد / ترقية

شهري
200 ج
30 يوم
سنوي
2000 ج
365 يوم

لازم يكون نفس الرقم اللي هيتم التحويل منه — عليه بتتم المطابقة التلقائية.

💡 التجديد بيتضاف على باقي مدتك — مش بيصفّرها. تقدر تجدّد بدري بلا خسارة.

سجل الاشتراكات

الخطةالمدةالمبلغمنلـ