parent
9c4b262f9b
commit
50dc8a0401
32 changed files with 827 additions and 104 deletions
@ -1,4 +1,75 @@ |
|||||||
<form name="SendOrder" method="post" action="https://epay.kkb.kz/jsp/process/logon.jsp"> |
{% extends 'base.jinja' %} |
||||||
<input type="hidden" name="Signed_Order_B64" value="{{context}}"> |
{% block title %} |
||||||
<button type="submit">asdf</button> |
Перенаправление на платежный шлюз |
||||||
</form> |
{% endblock %} |
||||||
|
{% block content %} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<div class="well"><br> |
||||||
|
<h5>Нажмите, чтобы перейти на сайт платежного шлюза и продолжить оплату...</h5> |
||||||
|
|
||||||
|
<form class="text-center" name="SendOrder" method="post" action="https://epay.kkb.kz/jsp/process/logon.jsp"> |
||||||
|
<input type="hidden" name="Signed_Order_B64" value="{{ context }}"> |
||||||
|
<input type="hidden" name="email" value="{{ order.email }}"> |
||||||
|
<input type="hidden" name="BackLink" value="http://batiskaf-kz.kz/account/"> |
||||||
|
<input type="hidden" name="FailureBackLink" value="http://batiskaf-kz.kz/store/cart/"> |
||||||
|
<input type="hidden" name="PostLink" value="http://batiskaf-kz.kz/kkb_result/"> |
||||||
|
<input type="hidden" name="Language" value="rus"> |
||||||
|
<input type="hidden" name="appendix" value="{{ appendix }}"> <br> |
||||||
|
<button type="submit" class="btn btn-success btn-lg">Продолжить оплату →</button> |
||||||
|
</form> |
||||||
|
<br><br> |
||||||
|
|
||||||
|
</div> |
||||||
|
{# <div class="well">#} |
||||||
|
{# <table style="border:1px black solid; width: 100%">#} |
||||||
|
{# <tr>#} |
||||||
|
{# <td style="border-bottom:1px black solid; border-right:1px black solid; padding: 20px;">#} |
||||||
|
{# <b>Платеж</b>#} |
||||||
|
{# </td>#} |
||||||
|
{# <td style="border-bottom:1px black solid; padding: 20px;">#} |
||||||
|
{# <b>ИИК:</b> KZ809261001507363000 <br/>#} |
||||||
|
{# <b>РНН/БИН бенефециара:</b> 760419302190 <br/>#} |
||||||
|
{# <b>Бенефециар:</b> ИП Полинкин Матвей Владимирович <br/>#} |
||||||
|
{# <b>Банк бенефециара:</b> АО "Казкоммерцбанк" <br/>#} |
||||||
|
{# <b>БИК:</b> KZKOKZKX <br/>#} |
||||||
|
{# <b>Платеж:</b> Заказ №{{ order.pk }} от {{ date.strftime('%d.%m.%Y') }} <br/>#} |
||||||
|
{# <b>Плательщик:</b> {{ order.first_name }} {{ order.last_name }} <br/>#} |
||||||
|
{# <b>Адрес плательщика:</b> {{ order.address }} <br/>#} |
||||||
|
{# <b>Сумма:</b> {{ order.amount }} тенге<br/> <br/>#} |
||||||
|
{# Подпись:_____________________ Дата: {{ date.strftime('%d.%m.%Y') }}<br/>#} |
||||||
|
{##} |
||||||
|
{# </td>#} |
||||||
|
{# </tr>#} |
||||||
|
{# <tr>#} |
||||||
|
{# <td style=" border-right:1px black solid; padding: 20px;">#} |
||||||
|
{# <b>Квитанция</b><br/>#} |
||||||
|
{# Кассир#} |
||||||
|
{# </td>#} |
||||||
|
{# <td style="padding: 20px;">#} |
||||||
|
{# <b>ИИК:</b> KZ809261001507363000 <br/>#} |
||||||
|
{# <b>РНН/БИН бенефециара:</b> 760419302190 <br/>#} |
||||||
|
{# <b>Бенефециар:</b> ИП Полинкин Матвей Владимирович <br/>#} |
||||||
|
{# <b>Банк бенефециара:</b> АО "Казкоммерцбанк" <br/>#} |
||||||
|
{# <b>БИК:</b> KZKOKZKX <br/>#} |
||||||
|
{# <b>Платеж:</b> Заказ №{{ order.pk }} от {{ date.strftime('%d.%m.%Y') }} <br/>#} |
||||||
|
{# <b>Плательщик:</b> {{ order.first_name }} {{ order.last_name }} <br/>#} |
||||||
|
{# <b>Адрес плательщика:</b> {{ order.address }} <br/>#} |
||||||
|
{# <b>Сумма:</b> {{ order.amount }} тенге<br/> <br/>#} |
||||||
|
{# Подпись:_____________________ Дата: {{ date.strftime('%d.%m.%Y') }}<br/>#} |
||||||
|
{##} |
||||||
|
{# </td>#} |
||||||
|
{# </tr>#} |
||||||
|
{# </table>#} |
||||||
|
{# <br/>#} |
||||||
|
{##} |
||||||
|
{# <p class="text-right"><a class="btn" target="_blank" href="/order/{{ order.pk }}/print/">Версия для печати</a>#} |
||||||
|
{# </p>#} |
||||||
|
{# </div>#} |
||||||
|
|
||||||
|
{% endblock %} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1 @@ |
|||||||
|
OK |
||||||
@ -1,67 +1,86 @@ |
|||||||
{% extends 'base.jinja' %} |
{% extends 'base.jinja' %} |
||||||
{% block title %} |
{% block title %} |
||||||
Заказ успешно оформлен |
Заказ успешно оформлен |
||||||
{% endblock %} |
{% endblock %} |
||||||
{% block content %} |
{% block content %} |
||||||
|
|
||||||
<div class="alert alert-success alert-dismissable"> |
<div class="alert alert-success alert-dismissable"> |
||||||
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> |
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button> |
||||||
<h4>Спасибо!</h4> |
<h4>Спасибо!</h4> |
||||||
<p>Ваш заказ успешно принят и поступит в обработку сразу после оплаты.</p> |
|
||||||
<p><a class="btn btn-success" target="_blank" href="/order/{{ order.pk }}/print/">Распечатать квитанцию для оплаты</a></p> |
|
||||||
</div> |
|
||||||
<div class="well"> |
|
||||||
<h5>Вы можете отправить прямой платеж на карту:</h5> |
|
||||||
<p class="text-center"> |
|
||||||
<strong>Банк:</strong> Казкоммерцбанк <br/> |
|
||||||
<strong>ИИН:</strong> 760419302190 <br/> |
|
||||||
<strong>Номер карты:</strong> 4405 6452 0912 2014 <br/><br/> |
|
||||||
<i>...либо воспользуйтесь квитанцией для оплаты банковским платежом</i> |
|
||||||
</p> |
|
||||||
</div> |
|
||||||
<div class="well"> |
|
||||||
<table style="border:1px black solid; width: 100%"> |
|
||||||
<tr> |
|
||||||
<td style="border-bottom:1px black solid; border-right:1px black solid; padding: 20px;"> |
|
||||||
<b>Платеж</b> |
|
||||||
</td> |
|
||||||
<td style="border-bottom:1px black solid; padding: 20px;"> |
|
||||||
<b>ИИК:</b> KZ809261001507363000 <br/> |
|
||||||
<b>РНН/БИН бенефециара:</b> 760419302190 <br/> |
|
||||||
<b>Бенефециар:</b> ИП Полинкин Матвей Владимирович <br/> |
|
||||||
<b>Банк бенефециара:</b> АО "Казкоммерцбанк" <br/> |
|
||||||
<b>БИК:</b> KZKOKZKX <br/> |
|
||||||
<b>Платеж:</b> Заказ №{{ order.pk }} от {{ date.strftime('%d.%m.%Y') }} <br/> |
|
||||||
<b>Плательщик:</b> {{ order.first_name }} {{ order.last_name }} <br/> |
|
||||||
<b>Адрес плательщика:</b> {{ order.address }} <br/> |
|
||||||
<b>Сумма:</b> {{ order.amount }} тенге<br/> <br/> |
|
||||||
Подпись:_____________________ Дата: {{ date.strftime('%d.%m.%Y') }}<br/> |
|
||||||
|
|
||||||
</td> |
<p>Ваш заказ успешно принят и поступит в обработку сразу после оплаты.</p> |
||||||
</tr> |
|
||||||
<tr> |
|
||||||
<td style=" border-right:1px black solid; padding: 20px;"> |
|
||||||
<b>Квитанция</b><br/> |
|
||||||
Кассир |
|
||||||
</td> |
|
||||||
<td style="padding: 20px;"> |
|
||||||
<b>ИИК:</b> KZ809261001507363000 <br/> |
|
||||||
<b>РНН/БИН бенефециара:</b> 760419302190 <br/> |
|
||||||
<b>Бенефециар:</b> ИП Полинкин Матвей Владимирович <br/> |
|
||||||
<b>Банк бенефециара:</b> АО "Казкоммерцбанк" <br/> |
|
||||||
<b>БИК:</b> KZKOKZKX <br/> |
|
||||||
<b>Платеж:</b> Заказ №{{ order.pk }} от {{ date.strftime('%d.%m.%Y') }} <br/> |
|
||||||
<b>Плательщик:</b> {{ order.first_name }} {{ order.last_name }} <br/> |
|
||||||
<b>Адрес плательщика:</b> {{ order.address }} <br/> |
|
||||||
<b>Сумма:</b> {{ order.amount }} тенге<br/> <br/> |
|
||||||
Подпись:_____________________ Дата: {{ date.strftime('%d.%m.%Y') }}<br/> |
|
||||||
|
|
||||||
</td> |
{# <p><a class="btn btn-success" target="_blank" href="/order/{{ order.pk }}/print/">Распечатать квитанцию для#} |
||||||
</tr> |
{# оплаты</a></p>#} |
||||||
</table> |
</div> |
||||||
<br/> |
<div class="radio"> |
||||||
<p class="text-right"><a class="btn" target="_blank" href="/order/{{ order.pk }}/print/">Версия для печати</a></p> |
<label> |
||||||
|
<input type="radio" name="optionsRadios" id="optionsRadios1" value="card" checked> |
||||||
|
Оплата пластиковой картой <br><img src="/static/img/cards.png" alt=""> |
||||||
|
</label> |
||||||
</div> |
</div> |
||||||
|
<div class="radio"> |
||||||
|
<label> |
||||||
|
<input type="radio" name="optionsRadios" id="optionsRadios2" value="bank"> |
||||||
|
Прямой банковский платеж <br><img src="/static/img/bank.png" alt=""> |
||||||
|
</label> |
||||||
|
</div> |
||||||
|
|
||||||
|
{# <div class="well">#} |
||||||
|
{# <h5>Вы можете отправить прямой платеж на карту:</h5>#} |
||||||
|
{##} |
||||||
|
{# <p class="text-center">#} |
||||||
|
{# <strong>Банк:</strong> Казкоммерцбанк <br/>#} |
||||||
|
{# <strong>ИИН:</strong> 760419302190 <br/>#} |
||||||
|
{# <strong>Номер карты:</strong> 4405 6452 0912 2014 <br/><br/>#} |
||||||
|
{# <i>...либо воспользуйтесь квитанцией для оплаты банковским платежом</i>#} |
||||||
|
{# </p>#} |
||||||
|
{# </div>#} |
||||||
|
{# <div class="well">#} |
||||||
|
{# <table style="border:1px black solid; width: 100%">#} |
||||||
|
{# <tr>#} |
||||||
|
{# <td style="border-bottom:1px black solid; border-right:1px black solid; padding: 20px;">#} |
||||||
|
{# <b>Платеж</b>#} |
||||||
|
{# </td>#} |
||||||
|
{# <td style="border-bottom:1px black solid; padding: 20px;">#} |
||||||
|
{# <b>ИИК:</b> KZ809261001507363000 <br/>#} |
||||||
|
{# <b>РНН/БИН бенефециара:</b> 760419302190 <br/>#} |
||||||
|
{# <b>Бенефециар:</b> ИП Полинкин Матвей Владимирович <br/>#} |
||||||
|
{# <b>Банк бенефециара:</b> АО "Казкоммерцбанк" <br/>#} |
||||||
|
{# <b>БИК:</b> KZKOKZKX <br/>#} |
||||||
|
{# <b>Платеж:</b> Заказ №{{ order.pk }} от {{ date.strftime('%d.%m.%Y') }} <br/>#} |
||||||
|
{# <b>Плательщик:</b> {{ order.first_name }} {{ order.last_name }} <br/>#} |
||||||
|
{# <b>Адрес плательщика:</b> {{ order.address }} <br/>#} |
||||||
|
{# <b>Сумма:</b> {{ order.amount }} тенге<br/> <br/>#} |
||||||
|
{# Подпись:_____________________ Дата: {{ date.strftime('%d.%m.%Y') }}<br/>#} |
||||||
|
{##} |
||||||
|
{# </td>#} |
||||||
|
{# </tr>#} |
||||||
|
{# <tr>#} |
||||||
|
{# <td style=" border-right:1px black solid; padding: 20px;">#} |
||||||
|
{# <b>Квитанция</b><br/>#} |
||||||
|
{# Кассир#} |
||||||
|
{# </td>#} |
||||||
|
{# <td style="padding: 20px;">#} |
||||||
|
{# <b>ИИК:</b> KZ809261001507363000 <br/>#} |
||||||
|
{# <b>РНН/БИН бенефециара:</b> 760419302190 <br/>#} |
||||||
|
{# <b>Бенефециар:</b> ИП Полинкин Матвей Владимирович <br/>#} |
||||||
|
{# <b>Банк бенефециара:</b> АО "Казкоммерцбанк" <br/>#} |
||||||
|
{# <b>БИК:</b> KZKOKZKX <br/>#} |
||||||
|
{# <b>Платеж:</b> Заказ №{{ order.pk }} от {{ date.strftime('%d.%m.%Y') }} <br/>#} |
||||||
|
{# <b>Плательщик:</b> {{ order.first_name }} {{ order.last_name }} <br/>#} |
||||||
|
{# <b>Адрес плательщика:</b> {{ order.address }} <br/>#} |
||||||
|
{# <b>Сумма:</b> {{ order.amount }} тенге<br/> <br/>#} |
||||||
|
{# Подпись:_____________________ Дата: {{ date.strftime('%d.%m.%Y') }}<br/>#} |
||||||
|
{##} |
||||||
|
{# </td>#} |
||||||
|
{# </tr>#} |
||||||
|
{# </table>#} |
||||||
|
{# <br/>#} |
||||||
|
{##} |
||||||
|
{# <p class="text-right"><a class="btn" target="_blank" href="/order/{{ order.pk }}/print/">Версия для печати</a>#} |
||||||
|
{# </p>#} |
||||||
|
{# </div>#} |
||||||
|
|
||||||
{% endblock %} |
{% endblock %} |
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,31 @@ |
|||||||
|
from django.conf import settings |
||||||
|
from django.core.exceptions import ImproperlyConfigured |
||||||
|
from kkb.process import get_context, postlink_process as postlink |
||||||
|
|
||||||
|
version_info = (0, 3, 0) |
||||||
|
|
||||||
|
__version__ = version = '.'.join(map(str, version_info)) |
||||||
|
__project__ = PROJECT = 'kkb' |
||||||
|
__author__ = AUTHOR = "sofaku <kushibayev@gmail.com>" |
||||||
|
|
||||||
|
if not hasattr(settings, 'MERCHANT_ID'): |
||||||
|
raise ImproperlyConfigured('MERCHANT_ID is required') |
||||||
|
|
||||||
|
if not hasattr(settings, 'MERCHANT_CERTIFICATE_ID'): |
||||||
|
raise ImproperlyConfigured('MERCHANT_CERTIFICATE_ID is required') |
||||||
|
|
||||||
|
if not hasattr(settings, 'MERCHANT_NAME'): |
||||||
|
raise ImproperlyConfigured('MERCHANT_NAME is required') |
||||||
|
|
||||||
|
if not hasattr(settings, 'PRIVATE_KEY_FN'): |
||||||
|
raise ImproperlyConfigured('PRIVATE_KEY_FN is required') |
||||||
|
|
||||||
|
if not hasattr(settings, 'PRIVATE_KEY_PASS'): |
||||||
|
raise ImproperlyConfigured('PRIVATE_KEY_PASS is required') |
||||||
|
|
||||||
|
if not hasattr(settings, 'PUBLIC_KEY_FN'): |
||||||
|
raise ImproperlyConfigured('PUBLIC_KEY_FN is required') |
||||||
|
|
||||||
|
settings.XML_TEMPLATE_FN = getattr(settings, 'XML_TEMPLATE_FN', 'kkb/template.xml') |
||||||
|
|
||||||
|
settings.XML_COMMAND_TEMPLATE_FN = getattr(settings, 'XML_COMMAND_TEMPLATE_FN', 'kkb/command_template.xml') |
||||||
@ -0,0 +1,70 @@ |
|||||||
|
import os |
||||||
|
from django.conf import settings |
||||||
|
import tempfile |
||||||
|
import subprocess |
||||||
|
import shlex |
||||||
|
import base64 |
||||||
|
|
||||||
|
|
||||||
|
class KKBSign(object): |
||||||
|
"""docstring for KBBSign""" |
||||||
|
|
||||||
|
def check(self, rawsign, data): |
||||||
|
tempSignature = tempfile.NamedTemporaryFile(mode="wb", delete=False) |
||||||
|
tempData = tempfile.NamedTemporaryFile(mode="wb", delete=False) |
||||||
|
tempPubKey = tempfile.NamedTemporaryFile(mode="wb", delete=False) |
||||||
|
rawsign = base64.b64decode(rawsign)[::-1] |
||||||
|
try: |
||||||
|
tempSignature.write(bytes(rawsign, 'UTF-8')) |
||||||
|
except Exception as e: |
||||||
|
tempSignature.write(rawsign) |
||||||
|
tempSignature.seek(0) |
||||||
|
|
||||||
|
try: |
||||||
|
tempData.write(bytes(data, 'UTF-8')) |
||||||
|
except Exception as e: |
||||||
|
tempData.write(data) |
||||||
|
tempData.seek(0) |
||||||
|
|
||||||
|
cmd = "".join(["openssl x509 -pubkey -noout -in ", settings.PUBLIC_KEY_FN]) |
||||||
|
pubkey = \ |
||||||
|
subprocess.Popen(shlex.split(cmd), shell=False, stdin=subprocess.PIPE, stdout=subprocess.PIPE).communicate()[0] |
||||||
|
try: |
||||||
|
tempPubKey.write(bytes(pubkey, 'UTF-8')) |
||||||
|
except Exception as e: |
||||||
|
tempPubKey.write(pubkey) |
||||||
|
|
||||||
|
tempPubKey.seek(0) |
||||||
|
|
||||||
|
cmd = "".join( |
||||||
|
["openssl dgst -sha1 -verify ", tempPubKey.name, " -signature ", tempSignature.name, " ", tempData.name]) |
||||||
|
result = \ |
||||||
|
subprocess.Popen(shlex.split(cmd), shell=False, stdin=subprocess.PIPE, stdout=subprocess.PIPE).communicate()[0] |
||||||
|
|
||||||
|
tempPubKey.close() |
||||||
|
tempData.close() |
||||||
|
tempSignature.close() |
||||||
|
os.unlink(tempPubKey.name) |
||||||
|
os.unlink(tempData.name) |
||||||
|
os.unlink(tempSignature.name) |
||||||
|
return result.decode('utf-8') |
||||||
|
|
||||||
|
def sign64(self, text): |
||||||
|
tempData = tempfile.NamedTemporaryFile(delete=False) |
||||||
|
try: |
||||||
|
tempData.write(bytes(text, 'UTF-8')) |
||||||
|
except Exception as e: |
||||||
|
tempData.write(text) |
||||||
|
tempData.seek(0) |
||||||
|
|
||||||
|
tempSignature = tempfile.NamedTemporaryFile(mode="rb", delete=False) |
||||||
|
cmd = "".join(["openssl dgst -sha1 -sign ", settings.PRIVATE_KEY_FN, " -passin ", |
||||||
|
"".join(['pass:', settings.PRIVATE_KEY_PASS]), " -out ", tempSignature.name, " ", tempData.name]) |
||||||
|
p = subprocess.Popen(shlex.split(cmd), shell=False, stdin=subprocess.PIPE) |
||||||
|
p.communicate() |
||||||
|
signature = tempSignature.read()[::-1] |
||||||
|
tempData.close() |
||||||
|
tempSignature.close() |
||||||
|
os.unlink(tempData.name) |
||||||
|
os.unlink(tempSignature.name) |
||||||
|
return base64.b64encode(signature) |
||||||
@ -0,0 +1,104 @@ |
|||||||
|
from django.conf import settings |
||||||
|
import xml.etree.ElementTree as ET |
||||||
|
from kkb.kkb_sign import KKBSign |
||||||
|
from django.template.loader import render_to_string |
||||||
|
import base64 |
||||||
|
|
||||||
|
|
||||||
|
class Result: |
||||||
|
def __init__(self, **entries): |
||||||
|
self.__dict__.update(entries) |
||||||
|
|
||||||
|
|
||||||
|
def xml2dict(xml): |
||||||
|
root = ET.fromstring(xml) |
||||||
|
bank = root.find('bank') |
||||||
|
customer = bank.find('customer') |
||||||
|
merchant = customer.find('merchant') |
||||||
|
order = merchant.find('order') |
||||||
|
department = order.find('department') |
||||||
|
merchant_sign = customer.find('merchant_sign') |
||||||
|
customer_sign = bank.find('customer_sign') |
||||||
|
results = bank.find('results') |
||||||
|
payment = results.find('payment') |
||||||
|
bank_sign = root.find('bank_sign') |
||||||
|
result = { |
||||||
|
'BANK_NAME': bank.get('name'), |
||||||
|
'CUSTOMER_NAME': customer.get('name'), |
||||||
|
'CUSTOMER_MAIL': customer.get('mail'), |
||||||
|
'CUSTOMER_PHONE': customer.get('phone'), |
||||||
|
'MERCHANT_CERT_ID': merchant.get('cert_id'), |
||||||
|
'MERCHANT_NAME': merchant.get('name'), |
||||||
|
'ORDER_ID': order.get('order_id'), |
||||||
|
'ORDER_AMOUNT': order.get('amount'), |
||||||
|
'ORDER_CURRENCY': order.get('currency'), |
||||||
|
'DEPARTMENT_MERCHANT_ID': department.get('merchant_id'), |
||||||
|
'DEPARTMENT_AMOUNT': department.get('amount'), |
||||||
|
'MERCHANT_SIGN_TYPE': merchant_sign.get('type'), |
||||||
|
'CUSTOMER_SIGN_TYPE': customer_sign.get('type'), |
||||||
|
'RESULTS_TIMESTAMP': results.get('timestamp'), |
||||||
|
'PAYMENT_MERCHANT_ID': payment.get('merchant_id'), |
||||||
|
'PAYMENT_AMOUNT': payment.get('amount'), |
||||||
|
'PAYMENT_REFERENCE': payment.get('reference'), |
||||||
|
'PAYMENT_APPROVAL_CODE': payment.get('approval_code'), |
||||||
|
'PAYMENT_RESPONSE_CODE': payment.get('response_code'), |
||||||
|
'BANK_SIGN_CERT_ID': bank_sign.get('cert_id'), |
||||||
|
'BANK_SIGN_TYPE': bank_sign.get('type'), |
||||||
|
} |
||||||
|
result['LETTER'] = letter = '<bank ' + xml.split('<bank ')[1].split('</bank>')[0] + '</bank>' |
||||||
|
result['SIGN'] = ET.tostring(bank_sign) |
||||||
|
result['RAWSIGN'] = bank_sign.text |
||||||
|
return result |
||||||
|
|
||||||
|
|
||||||
|
def postlink_process(response=""): |
||||||
|
args = { |
||||||
|
'status': False, |
||||||
|
'message': "", |
||||||
|
} |
||||||
|
result = Result(**args) |
||||||
|
try: |
||||||
|
root = ET.fromstring(response) |
||||||
|
except Exception as e: |
||||||
|
result.message = "xml file not parsable" |
||||||
|
return result |
||||||
|
if root.find('error'): |
||||||
|
result.message = root.find('error').text |
||||||
|
return result |
||||||
|
if root.tag == 'document': |
||||||
|
kkbSign = KKBSign() |
||||||
|
data = xml2dict(response) |
||||||
|
check = kkbSign.check(data['RAWSIGN'], data['LETTER']) |
||||||
|
if "Verified OK" in check: |
||||||
|
result.status = True |
||||||
|
result.data = data |
||||||
|
result.message = check |
||||||
|
else: |
||||||
|
result.message = check |
||||||
|
else: |
||||||
|
result.message = "[XML_DOCUMENT_UNKNOWN_TYPE]" |
||||||
|
return result |
||||||
|
|
||||||
|
|
||||||
|
def get_context(order_id, amount='0', currency_id='398', b64=True): |
||||||
|
context = { |
||||||
|
'ORDER_ID': int(order_id), |
||||||
|
'CURRENCY': currency_id, |
||||||
|
'AMOUNT': float(amount), |
||||||
|
'MERCHANT_CERTIFICATE_ID': settings.MERCHANT_CERTIFICATE_ID, |
||||||
|
'MERCHANT_NAME': settings.MERCHANT_NAME, |
||||||
|
'MERCHANT_ID': settings.MERCHANT_ID, |
||||||
|
} |
||||||
|
kkbSign = KKBSign() |
||||||
|
try: |
||||||
|
rendered = render_to_string(settings.XML_TEMPLATE_FN, context) |
||||||
|
except Exception as e: |
||||||
|
return "Error reading XML template." |
||||||
|
result_sign = "".join(['<merchant_sign type="RSA" cert_id="', settings.MERCHANT_CERTIFICATE_ID, '">', |
||||||
|
kkbSign.sign64(rendered).decode('utf-8'), '</merchant_sign>']) |
||||||
|
xml = "".join(["<document>", rendered, result_sign, "</document>"]) |
||||||
|
if b64: |
||||||
|
return base64.b64encode(xml.encode('ascii')).decode('utf-8') |
||||||
|
# return "".join(base64.b64encode(xml.encode('utf-8')).split("\n")) |
||||||
|
else: |
||||||
|
return xml |
||||||
@ -0,0 +1,7 @@ |
|||||||
|
<document> |
||||||
|
<item number="0" name="Доставка" quantity="1" amount="{{ deliv_price }}"/> |
||||||
|
{% for item in items %} |
||||||
|
<item number="{{ forloop.counter }}" name="{{ item.item.product.title }}. {{ item.item.variation }}" |
||||||
|
quantity="{{ item.count }}" amount="{{ item.subtotal }}"/> |
||||||
|
{% endfor %} |
||||||
|
</document> |
||||||
@ -0,0 +1,6 @@ |
|||||||
|
<merchant id="[MERCHANT_ID]"> |
||||||
|
<command type="[COMMAND]"/> |
||||||
|
<payment reference="[REFERENCE_ID]" approval_code="[APPROVAL_CODE]" orderid="[ORDER_ID]" amount="[AMOUNT]" |
||||||
|
currency_code="[CURRENCY]"/> |
||||||
|
<reason>[REASON]</reason> |
||||||
|
</merchant> |
||||||
@ -0,0 +1,5 @@ |
|||||||
|
<merchant cert_id="{{ MERCHANT_CERTIFICATE_ID }}" name="{{ MERCHANT_NAME }}"> |
||||||
|
<order order_id="{{ ORDER_ID }}" amount="{{ AMOUNT }}" currency="{{ CURRENCY }}"> |
||||||
|
<department merchant_id="{{ MERCHANT_ID }}" amount="{{ AMOUNT }}"/> |
||||||
|
</order> |
||||||
|
</merchant> |
||||||
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 12 KiB |
@ -0,0 +1,37 @@ |
|||||||
|
Content-Type: text/plain; charset="utf-8" |
||||||
|
MIME-Version: 1.0 |
||||||
|
Content-Transfer-Encoding: 8bit |
||||||
|
Subject: =?utf-8?b?0KDQvtCx0L7RgiBCYXRpc2thZi1rei5reg==?= |
||||||
|
From: admin@batiskaf-kz.kz |
||||||
|
To: asdfasdf@sadf.com |
||||||
|
Date: Mon, 27 Jul 2015 18:35:20 -0000 |
||||||
|
Message-ID: <20150727183520.60869.33366@macbook-pro.local> |
||||||
|
|
||||||
|
Привет, gre! |
||||||
|
|
||||||
|
Поздравляем, вы успешно оформили заказ. |
||||||
|
|
||||||
|
Для того, чтобы его было удобнее отслеживать, войдите в свой личный кабинет, используя свой номер телефона +7: |
||||||
|
|
||||||
|
http://batiskaf-kz.kz/account/ |
||||||
|
|
||||||
|
|
||||||
|
Это автоматическое сообщение. Отвечать на него не нужно! |
||||||
|
|
||||||
|
С Уважением, |
||||||
|
Администрация Batiskaf-kz.kz |
||||||
|
-- |
||||||
|
Skype: batiskaf_kz |
||||||
|
Тел: +7 (777) 163-14-34 или +7 (775) 859-12-17 |
||||||
|
------------------------------------------------------------------------------- |
||||||
|
Content-Type: text/plain; charset="utf-8" |
||||||
|
MIME-Version: 1.0 |
||||||
|
Content-Transfer-Encoding: 8bit |
||||||
|
Subject: =?utf-8?b?W0RqYW5nb10g0J7RhNC+0YDQvNC40LvQuCDQt9Cw0LrQsNC3?= |
||||||
|
From: admin@batiskaf-kz.kz |
||||||
|
To: spacenergy@me.com, admin@batiskaf-kz.kz |
||||||
|
Date: Mon, 27 Jul 2015 18:35:20 -0000 |
||||||
|
Message-ID: <20150727183520.60869.15005@macbook-pro.local> |
||||||
|
|
||||||
|
Смотреть в админке |
||||||
|
------------------------------------------------------------------------------- |
||||||
@ -0,0 +1,37 @@ |
|||||||
|
Content-Type: text/plain; charset="utf-8" |
||||||
|
MIME-Version: 1.0 |
||||||
|
Content-Transfer-Encoding: 8bit |
||||||
|
Subject: =?utf-8?b?0KDQvtCx0L7RgiBCYXRpc2thZi1rei5reg==?= |
||||||
|
From: admin@batiskaf-kz.kz |
||||||
|
To: asdfasdf@sadf.com |
||||||
|
Date: Mon, 27 Jul 2015 19:09:13 -0000 |
||||||
|
Message-ID: <20150727190913.62010.2321@macbook-pro.local> |
||||||
|
|
||||||
|
Привет, gre! |
||||||
|
|
||||||
|
Поздравляем, вы успешно оформили заказ. |
||||||
|
|
||||||
|
Для того, чтобы его было удобнее отслеживать, войдите в свой личный кабинет, используя свой номер телефона +7: |
||||||
|
|
||||||
|
http://batiskaf-kz.kz/account/ |
||||||
|
|
||||||
|
|
||||||
|
Это автоматическое сообщение. Отвечать на него не нужно! |
||||||
|
|
||||||
|
С Уважением, |
||||||
|
Администрация Batiskaf-kz.kz |
||||||
|
-- |
||||||
|
Skype: batiskaf_kz |
||||||
|
Тел: +7 (777) 163-14-34 или +7 (775) 859-12-17 |
||||||
|
------------------------------------------------------------------------------- |
||||||
|
Content-Type: text/plain; charset="utf-8" |
||||||
|
MIME-Version: 1.0 |
||||||
|
Content-Transfer-Encoding: 8bit |
||||||
|
Subject: =?utf-8?b?W0RqYW5nb10g0J7RhNC+0YDQvNC40LvQuCDQt9Cw0LrQsNC3?= |
||||||
|
From: admin@batiskaf-kz.kz |
||||||
|
To: spacenergy@me.com, admin@batiskaf-kz.kz |
||||||
|
Date: Mon, 27 Jul 2015 19:09:13 -0000 |
||||||
|
Message-ID: <20150727190913.62010.34998@macbook-pro.local> |
||||||
|
|
||||||
|
Смотреть в админке |
||||||
|
------------------------------------------------------------------------------- |
||||||
@ -0,0 +1,37 @@ |
|||||||
|
Content-Type: text/plain; charset="utf-8" |
||||||
|
MIME-Version: 1.0 |
||||||
|
Content-Transfer-Encoding: 8bit |
||||||
|
Subject: =?utf-8?b?0KDQvtCx0L7RgiBCYXRpc2thZi1rei5reg==?= |
||||||
|
From: admin@batiskaf-kz.kz |
||||||
|
To: asdfasdf@sadf.com |
||||||
|
Date: Mon, 27 Jul 2015 19:09:25 -0000 |
||||||
|
Message-ID: <20150727190925.62010.23670@macbook-pro.local> |
||||||
|
|
||||||
|
Привет, gre! |
||||||
|
|
||||||
|
Поздравляем, вы успешно оформили заказ. |
||||||
|
|
||||||
|
Для того, чтобы его было удобнее отслеживать, войдите в свой личный кабинет, используя свой номер телефона +7: |
||||||
|
|
||||||
|
http://batiskaf-kz.kz/account/ |
||||||
|
|
||||||
|
|
||||||
|
Это автоматическое сообщение. Отвечать на него не нужно! |
||||||
|
|
||||||
|
С Уважением, |
||||||
|
Администрация Batiskaf-kz.kz |
||||||
|
-- |
||||||
|
Skype: batiskaf_kz |
||||||
|
Тел: +7 (777) 163-14-34 или +7 (775) 859-12-17 |
||||||
|
------------------------------------------------------------------------------- |
||||||
|
Content-Type: text/plain; charset="utf-8" |
||||||
|
MIME-Version: 1.0 |
||||||
|
Content-Transfer-Encoding: 8bit |
||||||
|
Subject: =?utf-8?b?W0RqYW5nb10g0J7RhNC+0YDQvNC40LvQuCDQt9Cw0LrQsNC3?= |
||||||
|
From: admin@batiskaf-kz.kz |
||||||
|
To: spacenergy@me.com, admin@batiskaf-kz.kz |
||||||
|
Date: Mon, 27 Jul 2015 19:09:25 -0000 |
||||||
|
Message-ID: <20150727190925.62010.21647@macbook-pro.local> |
||||||
|
|
||||||
|
Смотреть в админке |
||||||
|
------------------------------------------------------------------------------- |
||||||
@ -0,0 +1,37 @@ |
|||||||
|
Content-Type: text/plain; charset="utf-8" |
||||||
|
MIME-Version: 1.0 |
||||||
|
Content-Transfer-Encoding: 8bit |
||||||
|
Subject: =?utf-8?b?0KDQvtCx0L7RgiBCYXRpc2thZi1rei5reg==?= |
||||||
|
From: admin@batiskaf-kz.kz |
||||||
|
To: asdfasdf@sadf.com |
||||||
|
Date: Mon, 27 Jul 2015 19:14:21 -0000 |
||||||
|
Message-ID: <20150727191421.62010.24196@macbook-pro.local> |
||||||
|
|
||||||
|
Привет, gre! |
||||||
|
|
||||||
|
Поздравляем, вы успешно оформили заказ. |
||||||
|
|
||||||
|
Для того, чтобы его было удобнее отслеживать, войдите в свой личный кабинет, используя свой номер телефона +7: |
||||||
|
|
||||||
|
http://batiskaf-kz.kz/account/ |
||||||
|
|
||||||
|
|
||||||
|
Это автоматическое сообщение. Отвечать на него не нужно! |
||||||
|
|
||||||
|
С Уважением, |
||||||
|
Администрация Batiskaf-kz.kz |
||||||
|
-- |
||||||
|
Skype: batiskaf_kz |
||||||
|
Тел: +7 (777) 163-14-34 или +7 (775) 859-12-17 |
||||||
|
------------------------------------------------------------------------------- |
||||||
|
Content-Type: text/plain; charset="utf-8" |
||||||
|
MIME-Version: 1.0 |
||||||
|
Content-Transfer-Encoding: 8bit |
||||||
|
Subject: =?utf-8?b?W0RqYW5nb10g0J7RhNC+0YDQvNC40LvQuCDQt9Cw0LrQsNC3?= |
||||||
|
From: admin@batiskaf-kz.kz |
||||||
|
To: spacenergy@me.com, admin@batiskaf-kz.kz |
||||||
|
Date: Mon, 27 Jul 2015 19:14:21 -0000 |
||||||
|
Message-ID: <20150727191421.62010.4569@macbook-pro.local> |
||||||
|
|
||||||
|
Смотреть в админке |
||||||
|
------------------------------------------------------------------------------- |
||||||
@ -0,0 +1,26 @@ |
|||||||
|
Content-Type: text/plain; charset="utf-8" |
||||||
|
MIME-Version: 1.0 |
||||||
|
Content-Transfer-Encoding: 8bit |
||||||
|
Subject: =?utf-8?b?0KDQvtCx0L7RgiBCYXRpc2thZi1rei5reg==?= |
||||||
|
From: admin@batiskaf-kz.kz |
||||||
|
To: asdfasdf@sadf.com |
||||||
|
Date: Tue, 28 Jul 2015 16:24:12 -0000 |
||||||
|
Message-ID: <20150728162412.68057.81489@macbook-pro.local> |
||||||
|
|
||||||
|
Привет, gre! |
||||||
|
|
||||||
|
Поздравляем, вы успешно оформили заказ. |
||||||
|
|
||||||
|
Для того, чтобы его было удобнее отслеживать, войдите в свой личный кабинет, используя свой номер телефона +7: |
||||||
|
|
||||||
|
http://batiskaf-kz.kz/account/ |
||||||
|
|
||||||
|
|
||||||
|
Это автоматическое сообщение. Отвечать на него не нужно! |
||||||
|
|
||||||
|
С Уважением, |
||||||
|
Администрация Batiskaf-kz.kz |
||||||
|
-- |
||||||
|
Skype: batiskaf_kz |
||||||
|
Тел: +7 (777) 163-14-34 или +7 (775) 859-12-17 |
||||||
|
------------------------------------------------------------------------------- |
||||||
@ -0,0 +1,11 @@ |
|||||||
|
Content-Type: text/plain; charset="utf-8" |
||||||
|
MIME-Version: 1.0 |
||||||
|
Content-Transfer-Encoding: 8bit |
||||||
|
Subject: =?utf-8?b?W0RqYW5nb10g0J7RhNC+0YDQvNC40LvQuCDQt9Cw0LrQsNC3?= |
||||||
|
From: admin@batiskaf-kz.kz |
||||||
|
To: spacenergy@me.com, admin@batiskaf-kz.kz |
||||||
|
Date: Tue, 28 Jul 2015 16:24:12 -0000 |
||||||
|
Message-ID: <20150728162412.68057.17322@macbook-pro.local> |
||||||
|
|
||||||
|
Смотреть в админке |
||||||
|
------------------------------------------------------------------------------- |
||||||
@ -0,0 +1,26 @@ |
|||||||
|
Content-Type: text/plain; charset="utf-8" |
||||||
|
MIME-Version: 1.0 |
||||||
|
Content-Transfer-Encoding: 8bit |
||||||
|
Subject: =?utf-8?b?0KDQvtCx0L7RgiBCYXRpc2thZi1rei5reg==?= |
||||||
|
From: admin@batiskaf-kz.kz |
||||||
|
To: asdfasdf@sadf.com |
||||||
|
Date: Tue, 28 Jul 2015 16:40:18 -0000 |
||||||
|
Message-ID: <20150728164018.68341.81056@macbook-pro.local> |
||||||
|
|
||||||
|
Привет, gre! |
||||||
|
|
||||||
|
Поздравляем, вы успешно оформили заказ. |
||||||
|
|
||||||
|
Для того, чтобы его было удобнее отслеживать, войдите в свой личный кабинет, используя свой номер телефона +7: |
||||||
|
|
||||||
|
http://batiskaf-kz.kz/account/ |
||||||
|
|
||||||
|
|
||||||
|
Это автоматическое сообщение. Отвечать на него не нужно! |
||||||
|
|
||||||
|
С Уважением, |
||||||
|
Администрация Batiskaf-kz.kz |
||||||
|
-- |
||||||
|
Skype: batiskaf_kz |
||||||
|
Тел: +7 (777) 163-14-34 или +7 (775) 859-12-17 |
||||||
|
------------------------------------------------------------------------------- |
||||||
@ -0,0 +1,11 @@ |
|||||||
|
Content-Type: text/plain; charset="utf-8" |
||||||
|
MIME-Version: 1.0 |
||||||
|
Content-Transfer-Encoding: 8bit |
||||||
|
Subject: =?utf-8?b?W0RqYW5nb10g0J7RhNC+0YDQvNC40LvQuCDQt9Cw0LrQsNC3?= |
||||||
|
From: admin@batiskaf-kz.kz |
||||||
|
To: spacenergy@me.com, admin@batiskaf-kz.kz |
||||||
|
Date: Tue, 28 Jul 2015 16:40:18 -0000 |
||||||
|
Message-ID: <20150728164018.68341.64244@macbook-pro.local> |
||||||
|
|
||||||
|
Смотреть в админке |
||||||
|
------------------------------------------------------------------------------- |
||||||
@ -0,0 +1,26 @@ |
|||||||
|
Content-Type: text/plain; charset="utf-8" |
||||||
|
MIME-Version: 1.0 |
||||||
|
Content-Transfer-Encoding: 8bit |
||||||
|
Subject: =?utf-8?b?0KDQvtCx0L7RgiBCYXRpc2thZi1rei5reg==?= |
||||||
|
From: admin@batiskaf-kz.kz |
||||||
|
To: asdfasdf@sadf.com |
||||||
|
Date: Tue, 28 Jul 2015 16:41:47 -0000 |
||||||
|
Message-ID: <20150728164147.68341.19068@macbook-pro.local> |
||||||
|
|
||||||
|
Привет, gre! |
||||||
|
|
||||||
|
Поздравляем, вы успешно оформили заказ. |
||||||
|
|
||||||
|
Для того, чтобы его было удобнее отслеживать, войдите в свой личный кабинет, используя свой номер телефона +7: |
||||||
|
|
||||||
|
http://batiskaf-kz.kz/account/ |
||||||
|
|
||||||
|
|
||||||
|
Это автоматическое сообщение. Отвечать на него не нужно! |
||||||
|
|
||||||
|
С Уважением, |
||||||
|
Администрация Batiskaf-kz.kz |
||||||
|
-- |
||||||
|
Skype: batiskaf_kz |
||||||
|
Тел: +7 (777) 163-14-34 или +7 (775) 859-12-17 |
||||||
|
------------------------------------------------------------------------------- |
||||||
@ -0,0 +1,11 @@ |
|||||||
|
Content-Type: text/plain; charset="utf-8" |
||||||
|
MIME-Version: 1.0 |
||||||
|
Content-Transfer-Encoding: 8bit |
||||||
|
Subject: =?utf-8?b?W0RqYW5nb10g0J7RhNC+0YDQvNC40LvQuCDQt9Cw0LrQsNC3?= |
||||||
|
From: admin@batiskaf-kz.kz |
||||||
|
To: spacenergy@me.com, admin@batiskaf-kz.kz |
||||||
|
Date: Tue, 28 Jul 2015 16:41:47 -0000 |
||||||
|
Message-ID: <20150728164147.68341.15616@macbook-pro.local> |
||||||
|
|
||||||
|
Смотреть в админке |
||||||
|
------------------------------------------------------------------------------- |
||||||
@ -0,0 +1,11 @@ |
|||||||
|
Content-Type: text/plain; charset="utf-8" |
||||||
|
MIME-Version: 1.0 |
||||||
|
Content-Transfer-Encoding: 8bit |
||||||
|
Subject: =?utf-8?b?W0RqYW5nb10g0J7RhNC+0YDQvNC40LvQuCDQt9Cw0LrQsNC3?= |
||||||
|
From: admin@batiskaf-kz.kz |
||||||
|
To: spacenergy@me.com, admin@batiskaf-kz.kz |
||||||
|
Date: Tue, 28 Jul 2015 16:45:04 -0000 |
||||||
|
Message-ID: <20150728164504.68482.44783@macbook-pro.local> |
||||||
|
|
||||||
|
Смотреть в админке |
||||||
|
------------------------------------------------------------------------------- |
||||||
@ -0,0 +1,26 @@ |
|||||||
|
Content-Type: text/plain; charset="utf-8" |
||||||
|
MIME-Version: 1.0 |
||||||
|
Content-Transfer-Encoding: 8bit |
||||||
|
Subject: =?utf-8?b?0KDQvtCx0L7RgiBCYXRpc2thZi1rei5reg==?= |
||||||
|
From: admin@batiskaf-kz.kz |
||||||
|
To: asdfasdf@sadf.com |
||||||
|
Date: Tue, 28 Jul 2015 16:45:04 -0000 |
||||||
|
Message-ID: <20150728164504.68482.57283@macbook-pro.local> |
||||||
|
|
||||||
|
Привет, gre! |
||||||
|
|
||||||
|
Поздравляем, вы успешно оформили заказ. |
||||||
|
|
||||||
|
Для того, чтобы его было удобнее отслеживать, войдите в свой личный кабинет, используя свой номер телефона +7: |
||||||
|
|
||||||
|
http://batiskaf-kz.kz/account/ |
||||||
|
|
||||||
|
|
||||||
|
Это автоматическое сообщение. Отвечать на него не нужно! |
||||||
|
|
||||||
|
С Уважением, |
||||||
|
Администрация Batiskaf-kz.kz |
||||||
|
-- |
||||||
|
Skype: batiskaf_kz |
||||||
|
Тел: +7 (777) 163-14-34 или +7 (775) 859-12-17 |
||||||
|
------------------------------------------------------------------------------- |
||||||
@ -0,0 +1,26 @@ |
|||||||
|
Content-Type: text/plain; charset="utf-8" |
||||||
|
MIME-Version: 1.0 |
||||||
|
Content-Transfer-Encoding: 8bit |
||||||
|
Subject: =?utf-8?b?0KDQvtCx0L7RgiBCYXRpc2thZi1rei5reg==?= |
||||||
|
From: admin@batiskaf-kz.kz |
||||||
|
To: spacenergy@asd.com |
||||||
|
Date: Tue, 28 Jul 2015 16:58:43 -0000 |
||||||
|
Message-ID: <20150728165843.68923.61730@macbook-pro.local> |
||||||
|
|
||||||
|
Привет, Виталий1! |
||||||
|
|
||||||
|
Поздравляем, вы успешно оформили заказ. |
||||||
|
|
||||||
|
Для того, чтобы его было удобнее отслеживать, войдите в свой личный кабинет, используя свой номер телефона +77083044916: |
||||||
|
|
||||||
|
http://batiskaf-kz.kz/account/ |
||||||
|
|
||||||
|
|
||||||
|
Это автоматическое сообщение. Отвечать на него не нужно! |
||||||
|
|
||||||
|
С Уважением, |
||||||
|
Администрация Batiskaf-kz.kz |
||||||
|
-- |
||||||
|
Skype: batiskaf_kz |
||||||
|
Тел: +7 (777) 163-14-34 или +7 (775) 859-12-17 |
||||||
|
------------------------------------------------------------------------------- |
||||||
@ -0,0 +1,11 @@ |
|||||||
|
Content-Type: text/plain; charset="utf-8" |
||||||
|
MIME-Version: 1.0 |
||||||
|
Content-Transfer-Encoding: 8bit |
||||||
|
Subject: =?utf-8?b?W0RqYW5nb10g0J7RhNC+0YDQvNC40LvQuCDQt9Cw0LrQsNC3?= |
||||||
|
From: admin@batiskaf-kz.kz |
||||||
|
To: spacenergy@me.com, admin@batiskaf-kz.kz |
||||||
|
Date: Tue, 28 Jul 2015 16:58:44 -0000 |
||||||
|
Message-ID: <20150728165844.68923.14083@macbook-pro.local> |
||||||
|
|
||||||
|
Смотреть в админке |
||||||
|
------------------------------------------------------------------------------- |
||||||
Loading…
Reference in new issue