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")
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')
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)
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)
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()
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'))