예제 #1
0
def deleteuserpayment(request):
    if request.is_ajax():
        if request.method == 'POST':
            txtmessage = ''

            try:
                json_data = json.loads(request.body)

                if json_data['txtmessage']:
                    txtmessage = json_data['txtmessage']

                userpayment_id = json_data['userpayment_id']
                registro = UserPayment.objects.get(
                    user_payment_id=userpayment_id)
                registro.message = txtmessage
                registro.enabled = False
                registro.status = 'CA'
                registro.channel = 'X'
                registro.save()

                # Envio envento a intercom
                ep = Setting.get_var('intercom_endpoint')
                token = Setting.get_var('intercom_token')

                try:
                    intercom = Intercom(ep, token)
                    reply = intercom.submitEvent(
                        registro.user.user_id, registro.user.email,
                        "cancelled-sub", {
                            "event_description":
                            "recurrencia cancelada por el administrador"
                        })
                    if not reply:
                        registro.message = "Intercom error: cannot post the event"
                        registro.save()
                except Exception as e:
                    registro.message = "Intercom error: %s" % str(e)
                    registro.save()

                return JsonResponse({'message': 'activado correctamente'},
                                    status=200)
            except Exception as e:
                return JsonResponse(
                    {
                        'message': 'Hubo un error',
                        'data': e.message
                    },
                    status=500)
    return JsonResponse({
        'message': 'Metodo no permitido',
        'data': ''
    },
                        status=500)
예제 #2
0
def expireuser(request):
    if request.is_ajax():
        if request.method == 'GET':
            fecha = datetime.today()

        if request.method == 'POST':
            try:
                json_data = json.loads(request.body)
                user_id = json_data['user_id']
                user = User.objects.get(user_id=user_id)
                fecha = datetime.today()
                d = timedelta(days=1)
                fecha -= d
                user.expiration = fecha
                user.save()

                # Envio envento a intercom
                ep = Setting.get_var('intercom_endpoint')
                token = Setting.get_var('intercom_token')
                try:
                    intercom = Intercom(ep, token)
                    metadata = {
                        "event_description":
                        "usuario expirado por el administrador",
                        "expire_at":
                        str(int(mktime(user.expiration.timetuple())))
                    }
                    reply = intercom.submitEvent(user.user_id, user.email,
                                                 "user_expired", metadata)
                except Exception as e:
                    pass

                return JsonResponse(
                    {
                        'message': 'Guardado correctamente',
                        'data': fecha
                    },
                    status=200)
            except Exception as e:
                return JsonResponse(
                    {
                        'message': 'Hubo un error',
                        'data': e.message
                    },
                    status=500)
    return JsonResponse({
        'message': 'Metodo no permitido',
        'data': ''
    },
                        status=500)
예제 #3
0
def activateuser(request):
    if request.is_ajax():
        if request.method == 'POST':
            try:
                json_data = json.loads(request.body)
                user_id = json_data['user_id']
                days = json_data['days']
                user = User.objects.get(user_id=user_id)

                # Sumar la cantidad de dias a hoy
                date = user.enable_for(days)

                # Envio evento a intercom
                ep = Setting.get_var('intercom_endpoint')
                token = Setting.get_var('intercom_token')

                try:
                    intercom = Intercom(ep, token)
                    metadata = {
                        'event_description':
                        'usuario activado por el administrador',
                        'expire_at': str(int(mktime(date.timetuple())))
                    }
                    reply = intercom.submitEvent(user.user_id, user.email,
                                                 'user_activated', metadata)
                except Exception as e:
                    pass

                return JsonResponse({'message': 'activado correctamente'},
                                    status=200)
            except Exception as e:
                return JsonResponse(
                    {
                        'message': 'Hubo un error',
                        'data': e.message
                    },
                    status=500)
    return JsonResponse({
        'message': 'Metodo no permitido',
        'data': ''
    },
                        status=500)
예제 #4
0
def __callback_paymentez_proc(data, country):
    # Verifico el stoken
    if not __validate_stoken(data, country):
        body = {"status": "error", "message": "not authorized"}
        return HttpResponse(json.dumps(body),
                            content_type="application/json",
                            status=200)

    # Obtengo los valores segun la respuesta de Paymentez
    pr = paymentez_translator(data)

    # Obtengo el PaymentHistory con el dev_reference informado
    try:
        ph = PaymentHistory.objects.get(
            payment_id=data["transaction"]["dev_reference"])
    except ObjectDoesNotExist:
        body = {"status": "error", "message": "invalid dev_refence"}
        return HttpResponse(json.dumps(body),
                            content_type="application/json",
                            status=200)

    # Verifico que este en Waiting Callback
    if ph.status == 'W' or (ph.status == 'A' and pr["ph_status"] == 'C'):

        # Seteo los valores de la UserPayment
        ph.user_payment.status = pr["up_status"]
        ph.user_payment.message = pr["up_message"]
        ph.user_payment.enabled = pr["up_recurrence"]

        if ph.user_payment.status == 'AC':
            # calcular next_payment_day
            ph.user_payment.payment_date = ph.user_payment.calc_payment_date()
            # Fija la fecha de expiration del usuario
            ph.user_payment.user.set_expiration(ph.user_payment.payment_date)
            if ph.user_payment.disc_counter > 0:
                ph.user_payment.disc_counter = ph.user_payment.disc_counter - 1
        else:
            ph.user_payment.channel = 'C'
        ph.user_payment.save()

        # Seteo los valores del PaymentHistory
        ph.status = pr["ph_status"]
        ph.gateway_id = pr["ph_gatewayid"]
        ph.message = pr["ph_message"]
        ph.save()

        if pr["user_expire"]:
            ph.user_payment.user.expire()

        if pr["intercom"]["action"]:
            ep = Setting.get_var('intercom_endpoint')
            token = Setting.get_var('intercom_token')
            try:
                intercom = Intercom(ep, token)
                reply = intercom.submitEvent(
                    ph.user_payment.user.user_id, ph.user_payment.user.email,
                    pr["intercom"]["event"],
                    paymentez_intercom_metadata(data['transaction']))
                if not reply:
                    ph.message = "%s - Intercom error: cannot post the event" % (
                        ph.message)
                    ph.save()
            except Exception as e:
                ph.message = "%s - Intercom error: %s" % (ph.message, str(e))
                ph.save()

    else:
        body = {
            "status": "error",
            "message": "ignoring callback: PH status %s" % ph.status
        }
        return HttpResponse(json.dumps(body),
                            content_type="application/json",
                            status=200)

    body = {'status': 'success', 'message': ''}
    return HttpResponse(json.dumps(body),
                        content_type="application/json",
                        status=200)