مدفوعات العملات المشفرة لـ 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 للمتاجر التي لا تُصدر فواتيرها بالدولار.
التثبيت
- فك ضغط الأرشيف وضع مجلده في Paymenter باسم
extensions/Gateways/SnapexPay/(بحيث يكونSnapexPay.phpوroutes.phpبداخله؛ ويجب أن يطابق الاسم اسم الصنف). ومع صورة Docker استخدم/app/extensions/Gateways/SnapexPay. - إذا لم تظهر البوابة، فشغّل
composer dump-autoload -oوphp artisan optimize:clear. - في Paymenter افتح Admin → Gateways → New، واختر SnapEX Pay، والصق مفتاح API (بالصلاحيتين
invoices.readوinvoices.write) من لوحة تحكم SnapEX Pay. - في لوحة التحكم ← للمطورين اضبط عنوان Webhook على
https://<your-paymenter>/extensions/snapexpay/webhook، والصق السرwhsec_…(يظهر مرة واحدة فقط، عند حفظ العنوان أول مرة) في حقل Webhook secret. - اضبط Environment على
test، وادفع فاتورة، وأكّد الدفعة التجريبية على صفحة SnapEX Pay؛ يجب أن تصبح الفاتورة Paid. ثم أعدها إلىlive.
الإعدادات
| API key | من لوحة تحكم SnapEX Pay ← مفاتيح API، بالصلاحيتين invoices.read وinvoices.write. |
|---|---|
| Webhook secret | السر whsec_… الخاص بنقطة نهاية Webhook. تُرفض إشعارات Webhook غير الموقّعة أو ذات التوقيع الخاطئ. |
| Network fee paid by | merchant: يدفع العميل مبلغ الفاتورة، وتُخصم الرسوم مما تستلمه. customer: تُضاف عمولة SnapEX Pay ورسوم الشبكة إلى المبلغ. |
| Payment window, minutes | 1–1440، الافتراضي 60. |
| USD per 1 invoice currency | 1 إذا كان Paymenter يُصدر الفواتير بالدولار USD؛ ولليورو EUR بسعر 1.08 USD أدخل 1.08. |
| Environment | live أو 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% على كل دفعة، دون رسوم شهرية.