ترخيص أصيل بالعملات الرقمية

الترخيص هو المحفظة.

بِع إضافة متصفح أو ملحقًا أو تطبيق سطح مكتب مقابل العملات الرقمية دون نظام حسابات. يدفع المشتري من محفظته، وتلك المحفظة هي الترخيص — يفتح أي جهاز آخر بتوقيع رسالة مجانية. بلا بريد إلكتروني، بلا مفاتيح ترخيص تُفقد، بلا ردّ مدفوعات.

لماذا وُجد هذا

أُغلقت مدفوعات متجر Chrome في فبراير 2021، لذا صار كل مطوّر إضافات بحاجة إلى طبقة دفع خارجية. الخيار الأبرز يشترط حساب Stripe، وهو ما يستبعد تمامًا المطوّرين في تركيا وباكستان ونيجيريا وبنغلاديش وإندونيسيا ومصر ودول أخرى كثيرة.

بوابات الدفع بالعملات الرقمية تتوقف عند "تم استلام الدفعة". تمنحك خطّاف ويب لا ترخيصًا: بلا سجل استحقاقات، بلا SDK، بلا تحقق عبر الأجهزة. فينتهي بك الأمر ببناء النصف الصعب بنفسك. هذه العدّة هي ذلك النصف.

مقارنة

                        ExtensionPay   Paddle / LS   Bawwabat crypto   XPayr Kit
rasm                    5% + Stripe    5% + 50c      0.5-1%            2.9% flat
bidun Stripe            la             juzئiyan     naam              naam
tabaqat tarkhis         naam           juzئi        la                naam
radd madfuat            naam           naam          la yujad          la yujad
tajir musajjal          la             naam          la                la

لسنا تاجرًا مسجَّلًا: أنت من يقدّم إقراراتك الضريبية. هذا تحديدًا ما تشتريه العمولة الأعلى لدى Paddle وLemon Squeezy، وهي مقايضة حقيقية تستحق الفهم قبل الاختيار.

البدء السريع

أنشئ منتجًا في لوحة التاجر للحصول على رمز المنتج، ثم اربط الـ SDK. لا حاجة إلى host_permissions، لذا لا يظهر أي تحذير بشأن الوصول إلى البيانات عند تثبيت إضافتك.

التثبيت

npm install @xpayr/extension-kit

# or copy src/index.js into your extension —
# zero dependencies, no build step, MV3-ready

manifest.json

{
  "manifest_version": 3,
  "permissions": ["storage", "alarms"],
  "externally_connectable": { "matches": ["https://xpayr.com/*"] }
}

background.js

import XPayrKit from '@xpayr/extension-kit';

const xpayr = XPayrKit('prod_my_extension');
xpayr.startBackground();          // required: token delivery + daily refresh

xpayr.onLicenseChanged.addListener(user => {
  console.log(user.licensed ? 'unlocked' : 'locked');
});

حجب ميزة

const user = await xpayr.getUser();

if (user.licensed) {
  enableProFeatures();
} else {
  showUpgradeButton(() => xpayr.openCheckout());
}

هذا هو التكامل بأكمله. أما رحلة المشتري — اختيار الشبكة، الدفع، التوقيع، فتح القفل — فنستضيفها نحن على xpayr.com/buy/{product_code}.

كائن user

الحقل النوع المعنى
licensed boolean اجعل ميزاتك مشروطة بهذا الحقل. يجيب من رمز مُتحقَّق منه محليًا، فهو فوري ويعمل دون اتصال.
plan 'lifetime' | 'prepaid_year' | null الخطة التي اشتراها المشتري.
wallet string | null المحفظة المرتبط بها الترخيص — أي المحفظة التي دفعت.
paidAt Date | null وقت إصدار الترخيص.
expiresAt Date | null تاريخ الانتهاء للخطط المحدودة زمنيًا؛ وnull للخطط مدى الحياة.
source 'cache' | 'network' من أين جاءت هذه الإجابة.
staleSince Date | null يُضبَط أثناء العمل برمز قديم ضمن مهلة السماح دون اتصال البالغة 30 يومًا.

واجهة البرمجة

الدالة الوصف
startBackground() استدعِها مرة واحدة في service worker. تربط تسليم الرمز ومنبّه التجديد اليومي.
getUser() فحص ترخيص يعمل دون اتصال أولًا. يتحقق محليًا من رمز ES256 المخزَّن — بلا رحلة شبكة في المسار الساخن.
openCheckout() يفتح صفحة الدفع المستضافة في تبويب جديد. يختار المشتري أي شبكة ورمز فعّلتهما.
openRestore() "لقد اشتريته بالفعل" — يفتح جهازًا آخر بتوقيع المحفظة. بلا بريد إلكتروني وبلا مفتاح ترخيص.
refresh() يفرض إعادة تحقق عبر الإنترنت. يلتقط المستردات وعمليات الإلغاء فورًا.
getPlans() معلومات المنتج العامة: السعر ونوع الخطة والشبكات المسموح بها.
onLicenseChanged يُطلَق كلما تغيّرت حالة الترخيص.

كيف يعمل التحقق

  1. يدفع المشتري من محفظته في صفحة الدفع المستضافة.
  2. يسجّل XPayr الاستحقاق مقابل عنوان المحفظة التي دفعت.
  3. يوقّع المشتري رسالة مجانية أحادية الاستخدام تثبت سيطرته على تلك المحفظة. لا تتحرك أي أموال.
  4. يعيد XPayr رمزًا موقَّعًا بـ ES256، مقصورًا على منتجك وصالحًا لسبعة أيام.
  5. تتحقق إضافتك من هذا الرمز محليًا عبر WebCrypto في كل استدعاء getUser()، وتجدّده بصمت مرة يوميًا.

انقطع اتصالك فترة؟ يظل الترخيص فعّالًا 30 يومًا بعد انتهاء الرمز، ثم ينتقل إلى قفل ليّن مع دعوة لإعادة الاتصال — فلا يُقفل أحد في منتصف الطريق. هل رددت المبلغ لعميل؟ ألغِ الترخيص من اللوحة: يفشل التجديد فورًا ويموت الرمز خلال 7 أيام.

التسعير

أول 300 دولار من مبيعات التراخيص بلا أي رسوم إطلاقًا. بعدها 2.9% ثابتة، تُقتطع ضمن معاملة السلسلة نفسها — بلا فاتورة وبلا شيء يُحصَّل لاحقًا. بلا رسم ثابت، بلا رسم شهري، بلا ردّ مدفوعات. رسوم غاز الشبكة منفصلة ويدفعها المشتري.

ترخيص بـ 14 دولارًا ضمن الشريحة المجانية  ->  تستلم 14.00 دولارًاترخيص بـ 14 دولارًا بعد الشريحة المجانية  ->  تستلم 13.59 دولارًا  (الرسوم 0.41 دولار)

خطافات الويب

خطّافات الويب اختيارية — تُصدر العدّة التراخيص وتتحقق منها دون أي خادم من جهتك. وإن أردت أحداثًا على الخادم، فهي تستخدم مخطط التوقيع نفسه المستخدَم في كل خطّافات XPayr (انظر دليل التوقيع) ويُعاد إرسالها بتباعد متزايد. استخدم event_id لضمان عدم التكرار.

الحدث متى
license.issued أنتجت دفعةٌ ترخيصًا. يحمل الحدث المحفظة ورمز المنتج والخطة وبصمة المعاملة.
license.revoked ألغيتَ ترخيصًا من اللوحة، عادةً بعد استرداد مبلغ.
payment.pending أُنشئت جلسة دفع.
payment.processing الدفعة على السلسلة وتنتظر التأكيدات.
payment.completed تم التحقق من الدفعة على السلسلة.
payment.failed لم تُطابق المعاملة المُرسَلة الجلسةَ عند التحقق.
payment.expired انتهت صلاحية الجلسة دون دفع.

ترخيص وكلاء الذكاء الاصطناعي وMCP (@xpayr/mcp-server)

أصدر وأدِر تراخيص برمجيات المحفظة الموقّعة بـ ES256 مباشرةً من Claude Desktop أو Cursor أو VS Code Copilot أو وكلاء الدعم المستقلين بالذكاء الاصطناعي باستخدام خادم XPayr MCP الرسمي (`xpayr_issue_wallet_license`).

استدعاء أداة MCP (xpayr_issue_wallet_license)

{
  "name": "xpayr_issue_wallet_license",
  "arguments": {
    "product_id": "prod_my_extension",
    "buyer_wallet": "0x71C...89A",
    "plan": "lifetime",
    "tx_hash": "0x9f8e...3b2a"
  }
}

شارات الشركاء الموثّقة وأداة حاسبة الرسوم القابلة للتضمين

ضمِّن شارات الثقة الديناميكية بصيغة SVG (partner-badge.php) أو أداة حاسبة رسوم 0.5% والوفورات بدون اعتماديات (xpayr-fee-widget.js) داخل ملف README لإضافتك أو بوابة التوثيق أو صفحة الهبوط الخاصة بوكالتك.

شارة الشريك الديناميكية SVG والحاسبة القابلة للتضمين

<!-- Official Dynamic SVG Trust Badge -->
<a href="https://xpayr.com?utm_source=partner_badge" target="_blank" rel="noopener">
  <img src="https://xpayr.com/partner-badge.php?type=powered_by&theme=dark" alt="Powered by XPayr — 0.5% Non-Custodial Crypto Checkout" height="28">
</a>

<!-- Interactive 0.5% Fee & Savings Calculator Widget -->
<div data-xpayr-fee-widget data-volume="100000" data-invoice="250" data-rate="1.0"></div>
<script src="https://xpayr.com/public/sdk/xpayr-fee-widget.js" async></script>

الانتقال من ExtensionPay

ExtensionPayحزمة XPayr Kit
ExtPay('extension-id') XPayrKit('prod_code')
extpay.startBackground() xpayr.startBackground()
user.paid user.licensed
user.email user.wallet
openPaymentPage() openCheckout()
openLoginPage() openRestore()
onPaid.addListener onLicenseChanged.addListener
getPlans() getPlans()

الفارق البنيوي الوحيد هو الهوية: يعرّف ExtensionPay العميل بالبريد الإلكتروني، بينما تعرّفه العدّة بالمحفظة. هذا يلغي رحلة الرابط السحري، ويعني أن الترخيص لا يمكن مشاركته دون مشاركة المحفظة.

قيود نذكرها بصراحة

  • الترخيص من جهة العميل رادعٌ لا نظام حماية DRM. المستخدم المصمِّم يستطيع تعديل الفحص المحلي — وهذا صحيح لكل مكتبة في هذه الفئة، بما فيها مكتبتنا.
  • لسنا تاجرًا مسجَّلًا. أنت مسؤول عن إقراراتك الضريبية.
  • يحتاج المشتري إلى محفظة. لدى الجمهور المعتاد على العملات الرقمية هذا ليس عائقًا؛ أما مع المستهلك العام فشغّل مسارًا نقديًا تقليديًا إلى جانب هذا المسار.
  • لا اشتراكات بالسحب التلقائي. لا توجد بطاقة محفوظة في العملات الرقمية، لذا يدعم الإصدار الأول التراخيص مدى الحياة والسنوية المدفوعة مقدمًا.

ابدأ

حزم NPM SDK الرسمية (v0.2.0) وخادم MCP عن بُعد

تكامل أسرع باستخدام حزم XPayr الرسمية وخادم MCP دون تثبيت

ثبّت @xpayr/node-sdk (v0.2.0), @xpayr/payment-evidence (v0.2.0), @xpayr/extension-kit (v0.2.0)أو @xpayr/mcp-server (v1.0.0) من NPM، أو نفّذ استدعاءات أدوات JSON-RPC 2.0 المباشرة عبر POST https://xpayr.com/api/mcp.

بيئة تجربة MCP المباشرة (/tools/mcp-playground) أداة التحقق من تراخيص ES256 محاكي سياسات وكلاء الذكاء الاصطناعي أداة اختبار توقيع الويب هوك HMAC-SHA256 mcp.xpayr.com docs.xpayr.com api-docs.xpayr.com