نظرة عامة
ملخّص حسابك النهارده
💳 آخر المعاملات
| الطلب | مرجعك | المبلغ | من | الحالة | الوقت |
|---|
المدفوعات
كل الطلبات اللي اتعملت على حسابك
| الطلب | مرجعك | المبلغ | من | على | الحالة | الوقت |
|---|
أرقام الاستقبال
الأرقام اللي الزباين هيحوّلوا عليها
⚠️ لازم نفس الأرقام تكون متسجّلة في تطبيق الموبايل كمان — التطبيق هو اللي بيبعتلنا رسايل الاستلام.
📊 حالة الخطوط
| الرقم | رصيد الخط | استقبل النهارده | الشهر | الحد الشهري |
|---|
المفاتيح والربط
دي أسرارك — متشاركهاش مع حد
—
—
🔒 لو حد عرف مفتاح التطبيق يقدر يبعتلنا رسايل مزيّفة. لو اتسرّب، كلّمنا فوراً.
🔗 رابط الدفع الثابت
رابط دايم — حطه في بايو إنستجرام أو واتساب. الزبون يفتحه، يكتب المبلغ ورقمه، والطلب بيتعمل تلقائي.
—
🔔 رابط الـ Webhook
عنوان على سيرفرك انت — بنبعتله إشعار موقّع أول ما الدفع يتأكد. سيبه فاضي لو مالكش سيرفر.
التكامل
إزاي تربط CorePay بموقعك أو بوتك
الفكرة باختصار
- موقعك بينشئ طلب دفع عندنا بالمبلغ ورقم الزبون.
- بنرجّعلك رابط دفع + رقم الاستقبال — تعرضه للزبون.
- الزبون يحوّل المبلغ بالظبط من الرقم اللي سجّله.
- رسالة المحفظة بتوصل موبايلك، والتطبيق بيبعتها لنا.
- بنطابق ونأكّد الدفع، ونبلّغ سيرفرك بـ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 قواعد إلزامية:
• احسب التوقيع على الجسم الخام — مش بعد
• استخدم
• خلّي التسليم idempotent من قاعدة بياناتك — بنعيد المحاولة 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 | مضفتش أرقام استقبال | ضيف رقم من صفحة الأرقام |
📱 التطبيق
- نزّل تطبيق CorePay على موبايل فيه خطوط الاستقبال.
- حط مفتاح التطبيق وأرقامك.
- اسمحله يقرا الرسايل، وعطّل تحسين البطارية ليه.
- سيب الموبايل شغّال وعليه نت — لو وقف، التحويلات مش هتتأكد.
حالة التطبيق بتبان في «نظرة عامة» — لو ظهر 🔴 واقف، راجع النت والبطارية.
الاشتراك
الخطة الحالية والتجديد
تجديد / ترقية
شهري
200 ج
30 يوم
سنوي
2000 ج
365 يوم
لازم يكون نفس الرقم اللي هيتم التحويل منه — عليه بتتم المطابقة التلقائية.
💡 التجديد بيتضاف على باقي مدتك — مش بيصفّرها. تقدر تجدّد بدري بلا خسارة.
سجل الاشتراكات
| الخطة | المدة | المبلغ | من | لـ |
|---|