بالنسبة لأولئك الذين لم يقرأوا الأجزاء السابقة:
لماذا تحتاج الدفع؟
في حياة كل مطور برامج telegram bot ، يأتي وقت تحتاج فيه إلى تنفيذ عملية الدفع في برنامج الروبوت الخاص بك. وهنا لديك طريقتان. الأول هو تسجيل رقم TIN و IP / Legal وتوصيل الدفعة الرسمية من البرق أو مجرد استخدام خدمة تابعة لجهات أخرى مثل Free-Kassa و QIWI ، إلخ. أعتقد أن الخيار واضح ، في هذه المقالة سأستخدم QIWI ، لأنني أريد ذلك.
بادئ ذي بدء ، دعونا نفكر في الطريقة التي سيتحقق فيها الروبوت من ما جاء ومن ومن وكيف. يخبرني كابتن الأدلة أنه سيكون من الضروري الحصول على سجل التحويلات بأكمله في حساب ، والذي سنستخدمه كحسابنا لقبول المدفوعات. لنقم بذلك:
import requests import json QIWI_TOKEN = '' QIWI_ACCOUNT = '' s = requests.Session() s.headers['authorization'] = 'Bearer ' + QIWI_TOKEN parameters = {'rows': '50'} h = s.get('https://edge.qiwi.com/payment-history/v1/persons/'+ QIWI_ACCOUNT +'/payments', params = parameters) req = json.loads(h.text)
في ثابت
QIWI_TOKEN ، نكتب مفتاح api للعمل مع QIWI ، ويمكنك الحصول عليه
هنا . وفي
QIWI_ACCOUNT نسجل رقم هاتف حسابك الرئيسي. إذا فعلت كل شيء بشكل صحيح ، فلن يكون هناك أي أخطاء. البيانات موجودة في قاموس
req ، والذي يتضمن قوائم البيانات. بشكل أكثر تحديدًا
(لا تقرأ) متغير req الذي يتضمن قاموس البيانات ، والذي يحتوي على قائمة من القواميس المرقمة التي تتضمن قوائم.
هنا يجب أن نحصل على رقم هاتف وتعليق (فيما بعد ستفهم السبب) ومبلغ المعاملة. لمتابعة كتابة التعليمات البرمجية ، ستحتاج إلى أن تكون قادرًا على استخدام قواعد البيانات ، إذا كنت لا تعرف أي شيء أو حتى لا تعرف ما هي عليه -
هنا رابط لمقال يصف العمل مع
Sqlite3 بوضوح تام. الآن دعونا نفكر في الخوارزمية التي سيتم استخدامها في الروبوت الخاص بنا.
- نقوم بإنشاء رقم عشوائي من 100000 إلى 999999.
- أدخل البيانات مؤقتًا في الجدول (معرف المستخدم ، رقم الهاتف ، المبلغ الذي تم إنشاؤه في وقت مبكر رقم عشوائي)
- نحن التحقق من التعليق والحساب والمبلغ في القاموس مسا .
- إذا وافق المبلغ والهاتف والتعليق ، فإننا نحسب المبلغ.
- أضف وظيفتك بعد الدفع ...
ربما تفكر الآن ، لماذا تحتاج إلى مراجعة هذا التعليق وإنشاء رقم عشوائي؟ وكل عبقري بسيط. والحقيقة هي أنه إذا تحققنا فقط من المبلغ والهاتف ، فسيتمكن الروبوت من العثور على المعاملة المرسلة مسبقًا وحسابها. ببساطة ، يتم ذلك من أجل الأمن وتقليل الأخطاء. دعنا نواصل كتابة الكود:
إنشاء جدول:
import sqlite3 c.execute("CREATE TABLE IF NOT EXISTS payment_query(user_id INTEGER, phone TEXT, sum INTEGER, code INTEGER)")
نقوم بإدخال البيانات في الجدول بمجرد أن يرغب المستخدم في دفع شيء ما في روبوتك.
from random import randint
بعد ذلك ، يتعين عليك القيام بالتحقق من نوع ما من الدفع ، في حالتي ستكون لوحة مفاتيح مضمّنة:
هنا مثال من روبوتي الأخير.
بمجرد أن ينقر المستخدم على زر الدفع ، سيتلقى الروبوت تاريخ الترجمة مع QIWI. الآن نحن بحاجة إلى فعل الشيء الأكثر أهمية - التحقق من الدفع.
result = c.execute(f"SELECT * FROM payment_query WHERE user_id = {call.message.chat.id}").fetchone()
هذا كل شيء ، وآمل أنني ساعدتكم في حل مشكلة أخرى! العملاء ، أين أنت؟ اكتب لي في البرقيات:
dimagorovtsov ، في انتظار الجميع!