def test_check_order_exists(self): order_id = 400 order = Order() response = order.InitById(order_id) existe = None if "success" in response: if order_id == order.id: existe = True else: existe = False self.assertEqual(existe, True)
def verifyOrderState(order_id): order = Order() init_by_id = order.InitById(order_id) if "success" in init_by_id: if int(order.state) == Order.ESTADO_PENDIENTE: ExitoHandler.sendError( "pedido {} esta pendiente de pago".format(order_id)) return None else: return order else: ExitoHandler.sendError("error al inicializar pedido {}, {}".format( order_id, init_by_id["error"])) return None
def post(self): username = '' TBK_RESPUESTA = self.get_argument("TBK_RESPUESTA") TBK_ORDEN_COMPRA = self.get_argument("TBK_ORDEN_COMPRA") TBK_MONTO = self.get_argument("TBK_MONTO") TBK_ID_SESION = self.get_argument("TBK_ID_SESION") myPath = "{}webpay/dato{}.log".format(project_path, TBK_ID_SESION) filename_txt = "{}webpay/MAC01Normal{}.txt".format( project_path, TBK_ID_SESION) cmdline = "{}cgi-bin/tbk_check_mac.cgi {}".format( cgi_path, filename_txt) acepta = False if TBK_RESPUESTA == "0": acepta = True else: order = Order() init_by_id = order.InitById(TBK_ORDEN_COMPRA) if "success" in init_by_id: order.state = Order.ESTADO_RECHAZADO_WP save_order = order.Edit() try: f = open(myPath, "r") linea = "" for l in f: if l.strip() != "": linea = l f.close() detalle = linea.split(";") # print "linea:{}".format(linea) if len(detalle) > 0: monto = detalle[0] ordenCompra = detalle[1] f = open(filename_txt, "wt") f.write("{}={}&".format("TBK_ORDEN_COMPRA", self.get_argument("TBK_ORDEN_COMPRA"))) f.write("{}={}&".format("TBK_TIPO_TRANSACCION", self.get_argument("TBK_TIPO_TRANSACCION"))) f.write("{}={}&".format("TBK_RESPUESTA", self.get_argument("TBK_RESPUESTA"))) f.write("{}={}&".format("TBK_MONTO", self.get_argument("TBK_MONTO"))) f.write("{}={}&".format( "TBK_CODIGO_AUTORIZACION", self.get_argument("TBK_CODIGO_AUTORIZACION"))) f.write("{}={}&".format( "TBK_FINAL_NUMERO_TARJETA", self.get_argument("TBK_FINAL_NUMERO_TARJETA"))) f.write("{}={}&".format("TBK_FECHA_CONTABLE", self.get_argument("TBK_FECHA_CONTABLE"))) f.write("{}={}&".format( "TBK_FECHA_TRANSACCION", self.get_argument("TBK_FECHA_TRANSACCION"))) f.write("{}={}&".format("TBK_HORA_TRANSACCION", self.get_argument("TBK_HORA_TRANSACCION"))) f.write("{}={}&".format("TBK_ID_SESION", self.get_argument("TBK_ID_SESION"))) f.write("{}={}&".format("TBK_ID_TRANSACCION", self.get_argument("TBK_ID_TRANSACCION"))) f.write("{}={}&".format("TBK_TIPO_PAGO", self.get_argument("TBK_TIPO_PAGO"))) f.write("{}={}&".format("TBK_NUMERO_CUOTAS", self.get_argument("TBK_NUMERO_CUOTAS"))) f.write("{}={}&".format("TBK_VCI", self.get_argument("TBK_VCI"))) f.write("{}={}&".format("TBK_MAC", self.get_argument("TBK_MAC"))) f.close() if (TBK_MONTO == monto and TBK_ORDEN_COMPRA == ordenCompra and acepta): acepta = True else: acepta = False except: self.write("RECHAZADO") return if acepta: resultado = os.popen(cmdline).read() # print "RESULTADO:-----{}----".format(resultado.strip()) if resultado.strip() == "CORRECTO": acepta = True else: acepta = False if acepta: order = Order() init_by_id = order.InitById(TBK_ORDEN_COMPRA) detail = OrderDetail() lista = detail.ListByOrderId(TBK_ORDEN_COMPRA) if "success" in init_by_id: user = User() usuario = user.InitById(order.user_id) user_email = '' if "error" not in usuario: username = usuario['name'] user_email = usuario["email"] # rechaza si orden no esta pendiente if order.state != Order.ESTADO_PENDIENTE: acepta = False # si esta pendiente actualizar a pagado elif order.state == Order.ESTADO_PENDIENTE: order.state = Order.ESTADO_CONFIRMADO save_order = order.Edit() # rechaza si no puede actualizar la orden if "error" in save_order: acepta = False webpay = Webpay() webpay.order_id = order.id webpay.tbk_orden_compra = self.get_argument( "TBK_ORDEN_COMPRA") webpay.tbk_tipo_transaccion = self.get_argument( "TBK_TIPO_TRANSACCION") webpay.tbk_monto = self.get_argument("TBK_MONTO") webpay.tbk_codigo_autorizacion = self.get_argument( "TBK_CODIGO_AUTORIZACION") webpay.tbk_final_numero_tarjeta = self.get_argument( "TBK_FINAL_NUMERO_TARJETA") webpay.tbk_fecha_contable = self.get_argument( "TBK_FECHA_CONTABLE") webpay.tbk_fecha_transaccion = self.get_argument( "TBK_FECHA_TRANSACCION") webpay.tbk_hora_transaccion = self.get_argument( "TBK_HORA_TRANSACCION") webpay.tbk_id_sesion = self.get_argument("TBK_ID_SESION") webpay.tbk_id_transaccion = self.get_argument( "TBK_ID_TRANSACCION") webpay.tbk_tipo_pago = self.get_argument("TBK_TIPO_PAGO") webpay.tbk_numero_cuotas = self.get_argument( "TBK_NUMERO_CUOTAS") res = webpay.Save() if "error" in res: print res["error"] else: try: self.moveStock(lista, order.user_id) except Exception, e: ExitoHandler.sendError( 'error moviendo stock, {}'.format( TBK_ORDEN_COMPRA)) if username != '': try: subject = "Giani Da Firenze - Procesando Compra Nº {}".format( TBK_ORDEN_COMPRA) mandrill_client = mandrill.Mandrill( mailchimp_api_key) mandrill_client.templates.update( processing_order_template, subject=subject) info = mandrill_client.templates.info( processing_order_template) template_content = [{ "name": "", "content": info["code"] }] merge_vars = [{ "name": "name", "content": username }, { "name": "order_id", "content": TBK_ORDEN_COMPRA }, { "name": "company", "content": "Giani Da Firenze" }, { "name": "current_year", "content": 2015 }, { "name": "list_address_html", "content": '*****@*****.**' }, { "name": "user_email", "content": user_email }] html = mandrill_client.templates.render( processing_order_template, template_content, merge_vars) sg = sendgrid.SendGridClient( sendgrid_user, sendgrid_pass) mensaje = sendgrid.Mail() mensaje.set_from("{nombre} <{mail}>".format( nombre=info["from_name"], mail=info["from_email"])) mensaje.add_to([ '*****@*****.**', '*****@*****.**' ]) mensaje.set_subject(info["subject"]) mensaje.set_html(html["html"]) status, msg = sg.send(mensaje) except Exception, e: print 'enviando correo procesamiento, {}'.format( str(e)) ExitoHandler.sendError( 'enviando correo procesamiento, {}'.format( str(e)))
def test_inexisting_webpay_file(self): order = Order() res_order = order.InitById(402) response = ExitoHandler.readWebpayMAC('Testttttt', order) self.assertDictEqual(response, {})