• Партнер

  • Как говорил великий ком­бинатор, «О кар­манных день­гах не надо думать — они валя­ются на дороге, и мы будем их под­бирать по мере надоб­ности». В сов­ремен­ном мире, где авто­мати­зация лег­ка и пов­семес­тна, кешем обза­водить­ся мож­но даже не нагиба­ясь. Дос­таточ­но сде­лать полез­ную прог­рамму или сер­вис и под­клю­чить пла­тежи. Сегод­ня мы погово­рим имен­но о пла­тежах и смас­терим собс­твен­ный скрипт для при­ема опла­ты на кошелек Qiwi.

    Этот сер­вис я выб­рал как один из самых рас­простра­нен­ных, удоб­ных и не тре­бующих слож­ных дей­ствий вро­де регис­тра­ции ИП или зак­лючения догово­ров. Зачем нам эта бюрок­ратия? Нам работать надо!

    Пи­сать будем на Python, хотя, вни­матель­но изу­чив при­меры, ты смо­жешь при желании вос­про­извести их на дру­гом язы­ке.

     

    Постановка задачи

    Итак, дано: есть прог­рамма, единс­твен­ная фун­кция которой — выводить на экран тек­сто­вое сооб­щение. Если прог­рамма работа­ет в деморе­жиме, то сооб­щение будет «Дем­ка», если в пол­ноцен­ном, то «Прог­рамма зарегис­три­рова­на». Дем­ка бес­плат­на, пол­ная вер­сия будет сто­ить рубль (дороже такое вряд ли кто‑то купит).

    Тре­бует­ся: прик­рутить к нашей прог­рамме воз­можность плат­но перек­лючать­ся из деморе­жима в пол­ноцен­ный, при этом желатель­но вооб­ще без нашего учас­тия.

    Вот наша прог­рамма:

    def get_ID():
    # Тут надо вставить генерацию уникального ключа,
    # но для иллюстрации сойдет и просто константа,
    # задаваемая вручную для каждого экземпляра ПО
    return 1
    def get_key_from_file(file_name):
    try:
    key_file = open(file_name, "r")
    key = key_file.read()
    return key
    except:
    return 0
    def check_key():
    key = int(get_key_from_file('key.txt'))
    # Такой вот простой алгоритм генерации ключа
    # В реальной программе следует придумать посложнее
    if key == get_ID() * 2:
    return True
    else:
    return False
    if check_key():
    print('Программа зарегистрирована!')
    else:
    print('Демка!')

    Ал­горитм работы такой:

    • Прог­рамма при запус­ке соз­дает ID поль­зовате­ля. Мож­но, к при­меру, генери­ровать иден­тифика­тор на осно­ве серий­ников уста­нов­ленно­го железа, а если ты решил делать бота для Telegram, то дос­таточ­но взять user_id.
    • Прог­рамма про­веря­ет файл лицен­зии, где наде­ется уви­деть сге­нери­рован­ный на осно­ве сво­его ID набор дан­ных (назовем его клю­чом), из которо­го будет понят­но, опла­тил ли поль­зователь покуп­ку.
    • Ес­ли ключ под­ходит, то выводим сооб­щение об этом.
    • Ес­ли ключ неп­равиль­ный, прог­рамма выводит сооб­щение «Дем­ка».

    Нам нуж­но реали­зовать воз­можность получе­ния клю­ча в авто­мати­чес­ком режиме, то есть без учас­тия соз­дателя прог­раммы. Ключ дол­жен выдавать­ся каж­дому свой, в зависи­мос­ти от ID, и толь­ко тем, кто нам зап­латил.

    Продолжение доступно только участникам

    Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».

    Присоединяйся к сообществу «Xakep.ru»!

    Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

    Подписаться
    Уведомить о
    2 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии