Esempio n. 1
0
    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)
Esempio n. 2
0
    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
Esempio n. 3
0
    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)))
Esempio n. 4
0
    def test_inexisting_webpay_file(self):

        order = Order()
        res_order = order.InitById(402)
        response = ExitoHandler.readWebpayMAC('Testttttt', order)
        self.assertDictEqual(response, {})