예제 #1
0
def get_pago_contraentrega(request):
    if request.POST:
        metodo = MetodoPago.objects.get(nombre='Contra entrega')
        pedido = Pedido.objects.get(numero_pedido=request.POST.get('id_pago'))
        carro = Carro.objects.get(pedido=pedido.pk)

        total = carro.total_carro()

        pago = Pago(cantidad=total,
                    id_pago=pedido.numero_pedido,
                    metodo_pago=metodo,
                    descripcion=
                    'Pago contra entrega, esperando el pago cuando se envia',
                    transaccion=request.POST['transaccion'])
        pago.save()

        pedido.pago_pedido = pago
        pedido.metodo_pago = metodo
        pedido.save()

        carro.estado = carro.ENVIADA
        carro.save()

        request.session['pedido'] = pedido.numero_pedido
        return HttpResponse(json.dumps({'status': 'ok'}),
                            content_type='application/json;charset=utf8')
    else:
        raise Http404("No Hay Pedido")
예제 #2
0
def stripe_paymet(request):
    stripe.api_key = settings.STRIPE_SECRET_KEY

    if request.method == 'POST':
        datos = json.loads(request.body)
        try:
            card_token = datos['stripeToken']
            carro_id = datos['carro']
        except KeyError:
            return HttpResponseBadRequest('stripeToken not set')
        currency = getattr(settings, 'SHOP_CURRENCY', 'usd')
        carro = Carro.objects.get(pk=carro_id)
        pedido = carro.pedido
        amount = carro.total_carro()
        amount = int(amount * 100)
        if request.user.is_authenticated():
            propietario = request.user.email
        else:
            propietario = 'Invitado'
        description = '%s de %s' % (card_token, propietario)

        stripe_dict = {
            'amount': amount,
            'currency': currency,
            'card': card_token,
            'description': description,
        }
        try:
            stripe_result = stripe.Charge.create(**stripe_dict)
        except stripe.error.CardError, e:
            error = e
            return HttpResponse(json.dumps({'error', error}),
                                content_type='application/json;charset=utf8')
        else:
            metodo = MetodoPago.objects.get(nombre='Stripe')
            pago = Pago(cantidad=amount / 100,
                        id_pago=stripe_result['id'],
                        descripcion=description,
                        metodo_pago=metodo,
                        transaccion=card_token)
            pago.save()
            #Grabar PEdido
            pedido.pago_pedido = pago
            pedido.metodo_pago = metodo
            pedido.save()
            carro.estado = carro.ENVIADA
            carro.save()
            request.session['pedido'] = pedido.numero_pedido
        return HttpResponse(json.dumps({
            'status': stripe_result['status'],
            'pedido': pedido.numero_pedido
        }),
                            content_type='application/json;charset=utf8')
예제 #3
0
def mercadopago_succes(request, pedido):

    carro = Carro.objects.get(pedido__numero_pedido=pedido)
    pago = Pago(cantidad=carro.total_carro(),
                id_pago='',
                descripcion='',
                metodo_pago='',
                transaccion='')
    pago.save()
    carro.estado = carro.ENVIADA
    carro.save()
    url = "%s/%s" % (settings.PAYPAL_URL_FRONT_RETURN, pedido)
    return HttpResponseRedirect(url)
예제 #4
0
def retorn_mercado_pago(request, pedido):
    metodo = MetodoPago.objects.get(nombre='Mercado Pago')
    carro = Carro.objects.get(pedido__numero_pedido=pedido)
    pedido = carro.pedido

    carro.estado = carro.ENVIADA
    carro.save()

    pago = Pago(cantidad=carro.total_carro(),
                id_pago=pedido.numero_pedido,
                metodo_pago=metodo,
                descripcion='Pago por Mercado Pago',
                transaccion='')
    pago.save()

    pedido.pago_pedido = pago
    pedido.save()

    url = "%s/%s" % (settings.PAYPAL_URL_FRONT_RETURN, pedido.numero_pedido)
    return HttpResponseRedirect(url)
예제 #5
0
파일: models.py 프로젝트: ryujiin/apistore
def show_me_the_money(sender, **kwargs):
    ipn_obj = sender

    if ipn_obj.payment_status == ST_PP_COMPLETED:

        pedido = Pedido.objects.get(numero_pedido=ipn_obj.invoice)
        carro = Carro.objects.get(pedido=pedido.pk)
        total = carro.total_carro()
        today = datetime.now().date()
        tipos_cambio = TipoCambio.objects.filter(fecha=today)
        metodo = MetodoPago.objects.get(nombre='Paypal')

        pago = Pago(cantidad=ipn_obj.mc_gross,
                    id_pago=ipn_obj.txn_id,
                    metodo_pago=metodo,
                    transaccion=ipn_obj.invoice)
        if ipn_obj.receiver_email != settings.PAYPAL_RECEIVER_EMAIL:
            pago.descripcion = 'Ocurrio un Error en el email de receptor'
            pago.save()
            return

        for tipo in tipos_cambio:
            tipo_cambio = tipo.cambio

        tipo_cambio = round(tipo_cambio, 2)
        total_dolares = round(total / tipo_cambio, 2)

        if ipn_obj.mc_gross == total_dolares and ipn_obj.mc_currency == 'USD':
            pago.valido = True
            pago.descripcion = 'Todo Perfecto'
        else:
            pago.descripcion = 'El pago tiene datos incorrectos'

        pago.save()
        pedido.pago_pedido = pago
        pedido.metodo_pago = metodo
        pedido.save()

        carro.estado = carro.ENVIADA
        carro.save()
예제 #6
0
def retorn_paypal(request):
    if request.POST:
        metodo = MetodoPago.objects.get(nombre='Paypal')
        pedido = Pedido.objects.get(numero_pedido=request.POST['invoice'])
        carro = Carro.objects.get(pedido=pedido.pk)

        pago = Pago(cantidad=request.POST['payment_gross'],
                    id_pago=request.POST['invoice'],
                    metodo_pago=metodo,
                    descripcion=request.POST['payment_status'],
                    transaccion=request.POST['txn_id'])
        pago.save()

        pedido.pago_pedido = pago
        pedido.metodo_pago = metodo
        pedido.save()

        carro.estado = carro.ENVIADA
        carro.save()

        request.session['pedido'] = request.POST['invoice']

        return HttpResponseRedirect(reverse('felicidades'))