trytonpsk-dash_sale/process_pay.py

107 lines
3.7 KiB
Python

import requests
from lxml import etree, builder
from io import BytesIO
from time import sleep
# url1 = "https://sipservicetest.azurewebsites.net/SIPService.asmx" # url test
url1 = "https://sipserviceclientev6.azurewebsites.net/SIPService.asmx"
namespaces = {
'xsi': "http://www.w3.org/2001/XMLSchema-instance",
'xsd': "http://www.w3.org/2001/XMLSchema",
'soapenv': "http://schemas.xmlsoap.org/soap/envelope/",
'sip': "http://sip.net.co/"
}
def get_pay(data, terminal):
soapenv = builder.ElementMaker(namespace=namespaces['soapenv'])
element = builder.ElementMaker(namespace=namespaces['sip'])
att_doc = builder.ElementMaker(nsmap=namespaces, namespace=namespaces['soapenv'])
doc_xml = att_doc.Envelope(
soapenv.Body(
element.EscribirSolicitudPC(
element.Terminal(terminal),
element.Data(data),
xmlns="http://sip.net.co",
)
)
)
xml_customer = etree.tostring(
doc_xml,
encoding='UTF-8',
pretty_print=True,
xml_declaration=True)
headers = {
# "Host": "sipservicetest.azurewebsites.net",
"Host": "sipserviceclientev6.azurewebsites.net",
"Content-Type": "text/xml; charset=utf-8",
"Content-Length": str(len(xml_customer)),
"SOAPAction": "http://sip.net.co/EscribirSolicitudPC",
}
response = requests.post(url1, data=xml_customer, headers=headers, timeout=10)
# file_ = open("/home/psk/redeban_test/escribirSolicitudV1.xml", "w")
# file_.write(xml_customer.decode("utf-8"))
# file_.close()
# print(response, 'this is response')
return response
def get_response_pay(terminal):
soapenv = builder.ElementMaker(namespace=namespaces['soapenv'])
element = builder.ElementMaker(namespace=namespaces['sip'])
att_doc = builder.ElementMaker(nsmap=namespaces, namespace=namespaces['soapenv'])
doc_xml = att_doc.Envelope(
soapenv.Body(
element.LeerRespuestaPC(
element.Terminal(terminal),
xmlns="http://sip.net.co",
)
)
)
xml_customer = etree.tostring(
doc_xml,
encoding='UTF-8',
pretty_print=True,
xml_declaration=True)
headers = {
# "Host": "sipservicetest.azurewebsites.net",
"Host": "sipserviceclientev6.azurewebsites.net",
"Content-Type": "text/xml; charset=utf-8",
"Content-Length": str(len(xml_customer)),
"SOAPAction": "http://sip.net.co/LeerRespuestaPC",
}
response = requests.post(url1, data=xml_customer, headers=headers, timeout=10)
# file_ = open("/home/psk/redeban_test/leerRespuestaV1.xml", "w")
# file_.write(xml_customer.decode("utf-8"))
# file_.close()
return response
def process_response(response):
response_text = None
if response.status_code == 200:
xml_response = BytesIO(response.content)
for event, element in etree.iterparse(xml_response):
if etree.QName(element).localname == 'EscribirSolicitudPCResult' and element.text:
response_text = element.text
elif etree.QName(element).localname == 'LeerRespuestaPCResult' and element.text:
response_text = element.text
return response_text
def get_dict_response_pay(data):
values = data.split(',')
keys = [
'respuesta', 'codigo_aprobacion', 'bin_tarjeta',
'tipo_cuenta', 'franquicia', 'monto_transaccion', 'iva_transaccion',
'base_devolucion', 'impuesto_consumo', 'recibo_datafono', 'num_cuotas',
'consecutivo_transaccion', 'numero_terminal', 'codigo_establecimiento',
'fecha', 'hora', 'num_bono'
]
return {keys[i]: values[i] for i in range(len(values))}