الأدلة
وصفة: بوت Telegram
بِع أوامر البوت، أو دورًا، أو مجموعة خاصة. يحصل كل مستخدم على فاتورته؛ ويفتح ويب هوك موقّع الوصول.
البوت لا يرى الأموال. عند /buy يرسل للمستخدم رابط فاتورته الخاصة؛ ويسمع خادمك invoice.fulfilled فيفتح الوصول. كل أمر مدفوع يسأل Perly Pay، لذا لا يضيع شيء بعد إعادة التشغيل. وDiscord بالطريقة نفسها، عبر دور.
sell-bot-access من إضافة Perly Pay. المثال القابل للتشغيل هو examples/telegram-bot (MIT) في مستودع الإضافة.كيف يعمل
- 1
المنتج والسعر
لمرة واحدة أو مدى الحياة — «للأبد»، ولمدة — للتصاريح، واشتراك — لعضوية تتجدد بالفاتورة.
- 2
عميل لكل مستخدم في الدردشة
external_id: "tg:<user id>". اطلب البريد للاشتراكات فقط: إليه تذهب التجديدات. - 3
/buy
فاتورة مع معرّف الدردشة في
metadata، تُرسل بزر. فاتورة واحدة لكل مستخدم في اليوم — بفضل مفتاح عدم التكرار. - 4
افتح الوصول
عند
invoice.fulfilledخذ معرّف الدردشة منmetadataوأجب: رسالة، أو دعوة لمرة واحدة، أو دور. - 5
الأوامر المدفوعة
entitlements.check({ customer_external_id: "tg:<id>", product }).
شغّل المثال
- 1
ثبّت
npm installفيexamples/telegram-bot(Node 20.12+). - 2
المفتاح
انسخ
.env.exampleإلى.envواكتب مفتاح الاختبار (sk_test_…) فيPERLY_PAY_SECRET_KEY. - 3
حضّر
npm run setupينشئ المنتج والسعر بمفتاحك ويطبع معرّفاتهما لـ.env. - 4
شغّل
npm start(أوnpm run dev)، كما يقول ملف README الخاص به. - 5
ادفع بلا محفظة
اكتب للبوت
/buy، وافتح Pay واضغط Simulate payment: سيقول البوت «Payment confirmed»، وسيجيب/secret.
مزالق
- رابط دفع مشترك واحد للجميع: لا يُعرف من دفع. فاتورة لكل مستخدم، مع معرّف الدردشة.
- فتح الوصول حين يضغط المستخدم «دفعت». لا يفتحه إلا الويب هوك أو
entitlements.check. - الوصول في ذاكرة البوت. بعد إعادة التشغيل يختفي؛ اسأل Perly Pay.