Ejemplo n.º 1
0
def payment_pagodigital(request):
    # Vars
    integrator = Integrator.get('pagodigital')
    baseurl = Setting.get_var('baseurl')
    template = 'pagodigital/pagodigital.html'

    # Verifico ApiKey
    cap = __check_apikey(request)
    if cap['status'] == 'error':
        return HttpResponse(status=http_UNAUTHORIZED)

    # Cargo el JSON
    try:
        data = json.loads(request.body)
        print "CONTENT MA: %s" % data
    except Exception:
        message = 'error decoding json'
        body = {'status': 'error', 'message': message}
        return HttpResponse(json.dumps(body),
                            content_type='application/json',
                            status=http_BAD_REQUEST)

    # Verifico las key mandatorias
    keys = ['user_id', 'email', 'payment_date', 'recurrence']
    json_loader = __validate_json(data, keys)

    if json_loader['status'] == 'error':
        return HttpResponse(json.dumps(json_loader),
                            content_type='application/json',
                            status=http_BAD_REQUEST)

    # Verifico si el usuario existe y sino lo creo
    try:
        user = User.objects.get(user_id=data['user_id'])
        user.email = data['email']
        user.save()
    except ObjectDoesNotExist:
        user = User.create(data['user_id'], data['email'], integrator.country)

    # Verifico que no tenga un User Payment activo
    up = UserPayment.get_active(user)
    if up is not None:
        if up.enabled_card:
            message = 'enabled user payment already exists'
            body = {'status': 'error', 'message': message}
            return HttpResponse(json.dumps(body),
                                content_type='application/json',
                                status=http_BAD_REQUEST)
        else:
            up.status = 'PE'
            up.save()

    # Obtengo el paquete
    if 'package_id' in data:
        package = Package.get_by_id(data['package_id'], integrator)
    else:
        package = Package.get(data['recurrence'], integrator)

    if package is None:
        message = "package not found with that duration"
        body = {'status': 'error', 'message': message}
        return HttpResponse(json.dumps(body),
                            content_type="application/json",
                            status=http_BAD_REQUEST)

    # Creo UserPayment
    up = UserPayment.create_from_package(user, package, data['payment_date'],
                                         0, 0, True)

    # Aplico descuento si existe
    if 'discount' in data and 'disc_counter' in data:
        up.discount(data['discount'], data['disc_counter'])

    # Creo el form
    form = Form.create(user, up, integrator, template, 'UP', package)
    if form is None:
        message = "form could not be created"
        body = {'status': 'error', 'message': message}
        return HttpResponse(json.dumps(body),
                            content_type="application/json",
                            status=http_INTERNAL_ERROR)

    iframe_params = {'user_id': user.user_id, 'token': form.token}
    iframe_url = '%sapi/v1/pagodigital/userpayment/form/?%s' % (
        baseurl, urlencode(iframe_params))
    body = {'status': 'success', 'value': {'url': iframe_url}}

    return HttpResponse(json.dumps(body),
                        content_type="application/json",
                        status=http_POST_OK)
Ejemplo n.º 2
0
def add_card_pagodigital(request):
    # Vars
    integrator = Integrator.get('pagodigital')
    baseurl = Setting.get_var('baseurl')
    template = 'pagodigital/pagodigital.html'

    # Verifico ApiKey
    cap = __check_apikey(request)
    if cap['status'] == 'error':
        return HttpResponse(status=http_UNAUTHORIZED)

    # Cargo el JSON
    try:
        data = json.loads(request.body)
    except Exception:
        message = 'error decoding json'
        body = {'status': 'error', 'message': message}
        return HttpResponse(json.dumps(body),
                            content_type='application/json',
                            status=http_BAD_REQUEST)

    # Verifico las key mandatorias
    keys = ['user_id']
    json_loader = __validate_json(data, keys)

    if json_loader['status'] == 'error':
        return HttpResponse(json.dumps(json_loader),
                            content_type='application/json',
                            status=http_BAD_REQUEST)

    # Verifico si el usuario existe y sino devuelvo error
    try:
        user = User.objects.get(user_id=data['user_id'])
    except ObjectDoesNotExist:
        message = 'user does not exist'
        body = {'status': 'error', 'message': message}
        return HttpResponse(json.dumps(body),
                            content_type='application/json',
                            status=http_BAD_REQUEST)

    # Obtengo el User Payment activo sino devuelvo error
    up = UserPayment.get_active(user)
    if up is None:
        message = 'enabled user payment does not exist'
        body = {'status': 'error', 'message': message}
        return HttpResponse(json.dumps(body),
                            content_type='application/json',
                            status=http_BAD_REQUEST)

    # Creo el form
    form = Form.create(user, up, integrator, template, 'AC')
    if form is None:
        message = "form could not be created"
        body = {'status': 'error', 'message': message}
        return HttpResponse(json.dumps(body),
                            content_type="application/json",
                            status=http_INTERNAL_ERROR)

    iframe_params = {'user_id': user.user_id, 'token': form.token}
    iframe_url = '%sapi/v1/pagodigital/addcard/form/?%s' % (
        baseurl, urlencode(iframe_params))
    body = {'status': 'success', 'value': {'url': iframe_url}}

    return HttpResponse(json.dumps(body),
                        content_type="application/json",
                        status=http_POST_OK)