diff --git a/abonapp/pay_systems.py b/abonapp/pay_systems.py
new file mode 100644
index 0000000..f4b7863
--- /dev/null
+++ b/abonapp/pay_systems.py
@@ -0,0 +1,108 @@
+from hashlib import md5
+from django.utils import timezone
+from mydefs import safe_int, safe_float
+from .models import Abon, AllTimePayLog
+from django.db import DatabaseError
+
+
+SERV_ID = 'y832r92y8f9e'
+SECRET = '302u8u3280'
+
+
+
+#payin.php?ACT=1&PAY_AMOUNT=2&PAY_ACCOUNT=13&PAY_ID=2&RECEIPT_NUM=24&TRADE_POINT=tr2&SIGN=c069de1e5469ff7078f00d1acd4c413d
+#?ACT=1&PAY_ACCOUNT=7120&SERVICE_ID=y832r92y8f9e&PAY_ID=3561234&TRADE_POINT=377&SIGN=C90A5138C3B54010FE711BBFC947327C
+
+def allpay(request):
+
+ def bad_ret(err_id):
+ current_date = timezone.now()
+ return "\n" \
+ "\n" \
+ " %d\n" % safe_int(err_id) +\
+ " %s\n" % current_date.strftime("%d.%m.%Y %H:%M:%S") +\
+ ""
+
+ try:
+ serv_id = request.GET.get('SERVICE_ID')
+ act = safe_int(request.GET.get('ACT'))
+ pay_account = safe_int(request.GET.get('PAY_ACCOUNT'))
+ pay_id = request.GET.get('PAY_ID')
+ pay_amount = safe_float(request.GET.get('PAY_AMOUNT'))
+ sign = request.GET.get('SIGN').lower()
+
+ # check sign
+ md = md5()
+ s = '_'.join((str(act), str(pay_account), serv_id or '', pay_id, SECRET))
+ md.update(bytes(s, 'utf-8'))
+ our_sign = md.hexdigest()
+ print('Signs:', our_sign, sign, s)
+ if our_sign != sign:
+ return bad_ret(-101)
+
+ if act <= 0: return bad_ret(-101)
+ if pay_account == 0: return bad_ret(-40)
+
+ if act == 1:
+ abon = Abon.objects.get(username=pay_account)
+ fio = abon.fio
+ ballance = float(abon.ballance)
+ current_date = timezone.now().strftime("%d.%m.%Y %H:%M:%S")
+ return "\n" \
+ "\n" \
+ " %.2f\n" % ballance +\
+ " %s\n" % fio +\
+ " %d\n" % pay_account +\
+ " %s\n" % SERV_ID +\
+ " 10.0\n" \
+ " 50000\n" \
+ " 21\n" \
+ " %s\n" % current_date +\
+ ""
+ elif act == 4:
+ abon = Abon.objects.get(username=pay_account)
+ pays = AllTimePayLog.objects.filter(pay_id=pay_id)
+ if pays.count() > 0:
+ return bad_ret(-100)
+ AllTimePayLog.objects.create(
+ pay_id=pay_id,
+ summ=pay_amount
+ )
+ #TODO: тут в author надо передавать учётку автора платежа
+ abon.add_ballance(abon, pay_amount)
+ abon.save(update_fields=['ballance'])
+ current_date = timezone.now().strftime("%d.%m.%Y %H:%M:%S")
+ return "" \
+ "\n" +\
+ " %s\n" % pay_id +\
+ " %s\n" % serv_id +\
+ " %.2f\n" % pay_amount +\
+ " 22\n" +\
+ " %s\n" % current_date +\
+ ""
+ elif act == 7:
+ pay = AllTimePayLog.objects.get(pay_id=pay_id)
+ current_date = timezone.now().strftime("%d.%m.%Y %H:%M:%S")
+ return "\n" \
+ "\n" \
+ " 11\n" \
+ " %s\n" % current_date +\
+ " \n" \
+ " %s\n" % pay_id +\
+ " %s\n" % serv_id +\
+ " %.2f\n" % float(pay.summ) +\
+ " 111\n" +\
+ " %s\n" % current_date +\
+ " \n" \
+ ""
+ else:
+ return bad_ret(-101)
+
+ except Abon.DoesNotExist:
+ return bad_ret(-40)
+ except DatabaseError:
+ return bad_ret(-90)
+ except AllTimePayLog.DoesNotExist:
+ return bad_ret(-10)
+ except AttributeError:
+ return bad_ret(-101)