Как говорил великий ком­бинатор, «О кар­манных день­гах не надо думать — они валя­ются на дороге, и мы будем их под­бирать по мере надоб­ности». В сов­ремен­ном мире, где авто­мати­зация лег­ка и пов­семес­тна, кешем обза­водить­ся мож­но даже не нагиба­ясь. Дос­таточ­но сде­лать полез­ную прог­рамму или сер­вис и под­клю­чить пла­тежи. Сегод­ня мы погово­рим имен­но о пла­тежах и смас­терим собс­твен­ный скрипт для при­ема опла­ты на кошелек 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, и толь­ко тем, кто нам зап­латил.

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

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

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

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

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