diff --git a/SWSCloudCore/templates/default/payment/fail.html b/SWSCloudCore/templates/default/payment/fail.html
new file mode 100644
index 0000000..43d60c3
--- /dev/null
+++ b/SWSCloudCore/templates/default/payment/fail.html
@@ -0,0 +1,20 @@
+
+
+
+Что-то пошло не так
+
+Во время оплаты произошла ошибка, попробуйте ещё раз.
+В случае повторения ошибки обратитесь в поддержку.
+
+
+
+ - Биллинг
+ {% if g.settings.get('SERVICE_CONTAINERS_ENABLE', "0") == "1" %}
+ - Контейнеры
+ {% endif %}
+ {% if g.settings.get('SERVICE_VMS_ENABLE', '0') == '1' %}
+ - Виртуальные машины
+ {% endif %}
+
+
+
\ No newline at end of file
diff --git a/SWSCloudCore/templates/default/payment/robokassa/fail.html b/SWSCloudCore/templates/default/payment/robokassa/fail.html
deleted file mode 100644
index 0b09c4b..0000000
--- a/SWSCloudCore/templates/default/payment/robokassa/fail.html
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-Что-то пошло не так
-
-Во время оплаты произошла ошибка, попробуйте ещё раз.
-В случае повторения ошибки обратитесь в поддержку.
-
-В личный кабинет
-
-
\ No newline at end of file
diff --git a/SWSCloudCore/templates/default/payment/success.html b/SWSCloudCore/templates/default/payment/success.html
new file mode 100644
index 0000000..478d5c7
--- /dev/null
+++ b/SWSCloudCore/templates/default/payment/success.html
@@ -0,0 +1,21 @@
+
+
+
+
+ Успешное пополнение счёта
+
+
+Спасибо!
+
+Личный счёт успешно пополнен.
+
+ - Биллинг
+ {% if g.settings.get('SERVICE_CONTAINERS_ENABLE', "0") == "1" %}
+ - Контейнеры
+ {% endif %}
+ {% if g.settings.get('SERVICE_VMS_ENABLE', '0') == '1' %}
+ - Виртуальные машины
+ {% endif %}
+
+
+
\ No newline at end of file
diff --git a/SWSCloudCore/views/payments/__init__.py b/SWSCloudCore/views/payments/__init__.py
index e515d70..ea8e5e1 100644
--- a/SWSCloudCore/views/payments/__init__.py
+++ b/SWSCloudCore/views/payments/__init__.py
@@ -9,7 +9,7 @@ from flask import redirect
from flask import render_template
from flask import request
from flask import session
-from flask import url_for
+from flask import url_for, jsonify
from SWSCloudCore import models
from SWSCloudCore.controllers.users import ControllerUsers
@@ -17,6 +17,16 @@ from SWSCloudCore.controllers.users import ControllerUsers
viewPayments = Blueprint('payments', __name__, url_prefix='/payments')
+@viewPayments.route('/fail.html')
+def fail():
+ return render_template('default/payment/fail.html')
+
+
+@viewPayments.route('/success.html')
+def success():
+ return render_template('default/payment/success.html')
+
+
@viewPayments.route('/robokassa/', methods=['GET', 'POST'])
def robokassa(action):
controller_robokassa = ControllerPaymentsRobokassa(
@@ -51,25 +61,31 @@ def robokassa(action):
payment_details["signature"] = md5(
"%(login)s:%(amount)s:%(payment_id)s:%(password)s" % payment_details
).hexdigest()
- print payment_details
+ # print payment_details
return render_template('default/payment/robokassa/process.html', payment=payment_details)
if action == 'result':
- transaction_id = request.form['InvId']
- signature = request.form['SignatureValue']
- amount = request.form['OutSum']
+ if request.method == 'POST':
+ transaction_id = request.form['InvId']
+ signature = request.form['SignatureValue']
+ amount = request.form['OutSum']
- transaction_hash = md5("%s:%s:%s" % (amount, transaction_id, controller_robokassa.args['PAY_ROBOKASSA_PASSWORD2'])).hexdigest()
- # print transaction_hash
- # print signature.lower()
- if signature.lower() == transaction_hash.lower():
- # update transaction signature
- controller_robokassa.transaction_set_notified(transaction_id, 1)
- # update user balance
- controller_robokassa.balance_update(transaction_id, amount)
- else:
- print "ERR: invalid signature"
- return render_template('default/payment/robokassa/result.html')
+ transaction_hash = md5("%s:%s:%s" % (amount, transaction_id, controller_robokassa.args['PAY_ROBOKASSA_PASSWORD2'])).hexdigest()
+ # print transaction_hash
+ # print signature.lower()
+ if signature.lower() == transaction_hash.lower():
+ # update transaction signature
+ controller_robokassa.transaction_set_notified(transaction_id, 1)
+ # update user balance
+ controller_robokassa.balance_update(transaction_id, amount)
+
+ # update transaction signature
+ transaction = models.UsersBalanceTransactions.get(models.UsersBalanceTransactions.id == transaction_id)
+ transaction.status = 'success'
+ transaction.save()
+ else:
+ return jsonify(error="invalid signature")
+ return render_template('default/payment/robokassa/result.html')
if action == 'success':
# check session
@@ -80,19 +96,18 @@ def robokassa(action):
return redirect(url_for("account.logout"))
if request.method == "POST":
- print request.form
+ # print request.form
# culture = request.form['Culture']
- transaction_id = request.form['InvId']
+ # transaction_id = request.form.get('InvId')
+ # TODO: если эта часть делается на шаге `results`, то можно убрать его
# update transaction signature
- transaction = models.UsersBalanceTransactions.get(models.UsersBalanceTransactions.id == transaction_id)
- transaction.status = 'success'
- transaction.save()
+ # transaction = models.UsersBalanceTransactions.get(models.UsersBalanceTransactions.id == transaction_id)
+ # transaction.status = 'success'
+ # transaction.save()
- return redirect(url_for('payments.robokassa', action='success'))
- # else:
- # print "ERR: invalid signature"
- return render_template('payment/robokassa/success.html')
+ return redirect(url_for('payments.success'))
+ return redirect(url_for('payments.success'))
if action == 'fail':
# check session
@@ -104,7 +119,7 @@ def robokassa(action):
return redirect(url_for("account.logout"))
if request.method == "POST":
- print request.form
+ # print request.form
transaction_id = request.form['InvId']
@@ -113,5 +128,4 @@ def robokassa(action):
transaction.status = 'fail'
transaction.save()
- return redirect(url_for('payments.robokassa', action='fail'))
- return render_template('default/payment/robokassa/fail.html')
+ return redirect(url_for('payments.fail'))
diff --git a/setup.py b/setup.py
index 0ea7180..9c274d2 100644
--- a/setup.py
+++ b/setup.py
@@ -4,7 +4,7 @@ from setuptools import setup
setup(
name='SWSCloudCore',
- version='2.4.5',
+ version='2.4.6',
author='Vyacheslav Anzhiganov',
author_email='hello@anzhiganov.com',
packages=[