AR
فوترة الاستضافة

مدفوعات العملات المشفرة لـ Paymenter

امتداد بوابة لـ Paymenter، نظام الفوترة مفتوح المصدر لخدمات الاستضافة. يختار العميل SnapEX Pay على فاتورة غير مدفوعة ويدفع بـ USDT على شبكة TRC20 أو ERC20 أو BEP20، أو بعملات أخرى متاحة على صفحة SnapEX Pay. يسجّل إشعار Webhook الموقّع الدفعة، فتصبح فاتورة Paymenter بحالة Paid.

تنزيل الوحدة

مجانًا. الإصدار 1.1.0.

ماذا تفعل الوحدة

  • امتداد بوابة أصلي لـ Paymenter v1 يظهر في ⁦Admin → Gateways⁩.
  • يُتحقَّق من إشعارات Webhook عبر HMAC-SHA256 ونافذة 5 دقائق، وتُقرأ الفاتورة مجددًا من API في SnapEX Pay قبل تسجيل أي دفعة.
  • تُسجَّل الدفعات مرة واحدة: إشعار Webhook المتكرر لا يضيف معاملة ثانية. والمبلغ المُضاف هو بالضبط ما فُوتر به، وبعملة الفاتورة.
  • كل موقع Paymenter يسوّي فواتيره فقط (تُوسَم بقيمة hash لـ APP_URL).
  • وضع الاختبار بفواتير تجريبية تُؤكَّد دون أموال حقيقية؛ وتُتجاهل الدفعات التجريبية ما دامت البوابة في الوضع الفعلي. وسعر صرف ثابت إلى USD للمتاجر التي لا تُصدر فواتيرها بالدولار.

التثبيت

  1. فك ضغط الأرشيف وضع مجلده في Paymenter باسم extensions/Gateways/SnapexPay/ (بحيث يكون SnapexPay.php وroutes.php بداخله؛ ويجب أن يطابق الاسم اسم الصنف). ومع صورة Docker استخدم /app/extensions/Gateways/SnapexPay.
  2. إذا لم تظهر البوابة، فشغّل composer dump-autoload -o وphp artisan optimize:clear.
  3. في Paymenter افتح ⁦Admin → Gateways → New⁩، واختر SnapEX Pay، والصق مفتاح API (بالصلاحيتين invoices.read وinvoices.write) من لوحة تحكم SnapEX Pay.
  4. في لوحة التحكم ← للمطورين اضبط عنوان Webhook على https://<your-paymenter>/extensions/snapexpay/webhook، والصق السر whsec_… (يظهر مرة واحدة فقط، عند حفظ العنوان أول مرة) في حقل Webhook secret.
  5. اضبط Environment على test، وادفع فاتورة، وأكّد الدفعة التجريبية على صفحة SnapEX Pay؛ يجب أن تصبح الفاتورة Paid. ثم أعدها إلى live.

الإعدادات

API keyمن لوحة تحكم SnapEX Pay ← مفاتيح API، بالصلاحيتين invoices.read وinvoices.write.
Webhook secretالسر whsec_… الخاص بنقطة نهاية Webhook. تُرفض إشعارات Webhook غير الموقّعة أو ذات التوقيع الخاطئ.
Network fee paid bymerchant: يدفع العميل مبلغ الفاتورة، وتُخصم الرسوم مما تستلمه. customer: تُضاف عمولة SnapEX Pay ورسوم الشبكة إلى المبلغ.
Payment window, minutes⁦1–1440⁩، الافتراضي 60.
USD per 1 invoice currency1 إذا كان Paymenter يُصدر الفواتير بالدولار USD؛ ولليورو EUR بسعر 1.08 USD أدخل 1.08.
Environmentlive أو test.
Partner IDاختياري: Partner ID للمُدمِج الذي أعدّ الوحدة (برنامج الإحالة في SnapEX Pay). اتركه فارغًا إذا أعددتها بنفسك.
API URLاتركه كما هو.

أسئلة

البوابة غير موجودة في ⁦Admin → Gateways⁩.

تحقّق من المسار extensions/Gateways/SnapexPay/SnapexPay.php (حساس لحالة الأحرف) ومن أن خادم الويب يستطيع قراءته، ثم شغّل composer dump-autoload -o && php artisan optimize:clear.

دفع العميل لكن الفاتورة ما زالت غير مدفوعة.

راجع عمليات تسليم Webhook في لوحة تحكم SnapEX Pay. تعني 400 invalid signature أن السر غير مطابق أو أن ساعة الخادم غير مضبوطة؛ وتعني not_paid أن الدفعة لم تكن قد تأكّدت بعد في تلك اللحظة، وتُسوّى الفاتورة عند وصول إشعار Webhook invoice.paid.

دفع العميل أقل من مبلغ الفاتورة.

لا تُضاف الفواتير المدفوعة جزئيًا تلقائيًا. راجع الدفعة في لوحة تحكم SnapEX Pay وأضف المعاملة في Paymenter يدويًا.

هل يمكن لعدة مواقع Paymenter استخدام حساب SnapEX Pay واحد؟

كل موقع يسوّي فواتيره فقط (تُوسَم بقيمة hash لـ APP_URL)، لكن لحساب SnapEX Pay عنوان Webhook واحد، والامتداد لا يسجّل الدفعات إلا من Webhook. لذلك لا تُسجَّل الدفعات تلقائيًا إلا في الموقع المضبوط عنوانًا لـ Webhook.

هل أنت مستعد لقبول العملات المشفرة؟

أنشئ حساب تاجر، واحصل على مفتاح API، ثم اربط الوحدة. عمولة ⁦1%⁩ على كل دفعة، دون رسوم شهرية.