Esempio n. 1
0
    def get(self, request):
        Payment = apps.get_model('getpaid', 'Payment')
        form = EpaydkOnlineForm(request.GET)
        if not form.is_valid():
            logger.debug("EpaydkOnlineForm not valid")
            logger.debug("form errors: %s", form.errors)
            return HttpResponseBadRequest("Bad request")

        params = qs_to_ordered_params(request.META['QUERY_STRING'])
        if not PaymentProcessor.is_received_request_valid(params):
            logger.error("MD5 hash check failed")
            return HttpResponseBadRequest("Bad request")

        payment = get_object_or_404(Payment,
                                    id=form.cleaned_data['orderid'])
        try:
            order_additional_validation\
                .send(sender=self, request=self.request,
                      order=payment.order,
                      backend=PaymentProcessor.BACKEND)
        except ValidationError:
            logger.debug("order_additional_validation raised ValidationError")
            return HttpResponseBadRequest("Bad request")

        try:
            PaymentProcessor.accepted_for_processing(payment_id=payment.id)
        except AssertionError as exc:
            logger.error("PaymentProcessor.accepted_for_processing"
                         " raised AssertionError %s", exc, exc_info=1)
            return HttpResponseBadRequest("Bad request")

        url_name = getattr(settings, 'GETPAID_SUCCESS_URL_NAME', None)
        if url_name:
            return redirect(url_name, pk=payment.order.pk)
        return redirect('getpaid:success-fallback', pk=payment.pk)
Esempio n. 2
0
    def get(self, request, *args, **kwargs):

        cb_secret_path = PaymentProcessor\
            .get_backend_setting('callback_secret_path', '')
        if cb_secret_path:
            if not kwargs.get('secret_path', ''):
                logger.debug("empty secret path")
                return HttpResponseBadRequest('400 Bad Request')

            if cb_secret_path != kwargs.get('secret_path', ''):
                logger.debug("invalid secret path")
                return HttpResponseBadRequest('400 Bad Request')

        form = EpaydkOnlineForm(request.GET)
        if form.is_valid():
            params = qs_to_ordered_params(request.META['QUERY_STRING'])
            if PaymentProcessor.is_received_request_valid(params):
                try:
                    PaymentProcessor.confirmed(form.cleaned_data)
                    return HttpResponse('OK')
                except AssertionError as exc:
                    logger.error("PaymentProcessor.confirmed raised"
                                 " AssertionError: %s", exc, exc_info=1)
            else:
                logger.error("MD5 hash check failed")
        logger.error('CallbackView received invalid request')
        logger.debug("GET: %s", request.GET)
        logger.debug("form errors: %s", form.errors)
        return HttpResponseBadRequest('400 Bad Request')
Esempio n. 3
0
    def get(self, request, *args, **kwargs):

        cb_secret_path = PaymentProcessor\
            .get_backend_setting('callback_secret_path', '')
        if cb_secret_path:
            if not kwargs.get('secret_path', ''):
                logger.debug("empty secret path")
                return HttpResponseBadRequest('400 Bad Request')

            if cb_secret_path != kwargs.get('secret_path', ''):
                logger.debug("invalid secret path")
                return HttpResponseBadRequest('400 Bad Request')

        form = EpaydkOnlineForm(request.GET)
        if form.is_valid():
            params = qs_to_ordered_params(request.META['QUERY_STRING'])
            if PaymentProcessor.is_received_request_valid(params):
                try:
                    PaymentProcessor.confirmed(form.cleaned_data)
                    return HttpResponse('OK')
                except AssertionError as exc:
                    logger.error(
                        "PaymentProcessor.confirmed raised"
                        " AssertionError: %s",
                        exc,
                        exc_info=1)
            else:
                logger.error("MD5 hash check failed")
        logger.error('CallbackView received invalid request')
        logger.debug("GET: %s", request.GET)
        logger.debug("form errors: %s", form.errors)
        return HttpResponseBadRequest('400 Bad Request')
Esempio n. 4
0
    def get(self, request):
        Payment = apps.get_model('getpaid', 'Payment')
        form = EpaydkOnlineForm(request.GET)
        if not form.is_valid():
            logger.debug("EpaydkOnlineForm not valid")
            logger.debug("form errors: %s", form.errors)
            return HttpResponseBadRequest("Bad request")

        params = qs_to_ordered_params(request.META['QUERY_STRING'])
        if not PaymentProcessor.is_received_request_valid(params):
            logger.error("MD5 hash check failed")
            return HttpResponseBadRequest("Bad request")

        payment = get_object_or_404(Payment, id=form.cleaned_data['orderid'])
        try:
            order_additional_validation\
                .send(sender=self, request=self.request,
                      order=payment.order,
                      backend=PaymentProcessor.BACKEND)
        except ValidationError:
            logger.debug("order_additional_validation raised ValidationError")
            return HttpResponseBadRequest("Bad request")

        try:
            PaymentProcessor.accepted_for_processing(payment_id=payment.id)
        except AssertionError as exc:
            logger.error(
                "PaymentProcessor.accepted_for_processing"
                " raised AssertionError %s",
                exc,
                exc_info=1)
            return HttpResponseBadRequest("Bad request")

        url_name = getattr(settings, 'GETPAID_SUCCESS_URL_NAME', None)
        if url_name:
            return redirect(url_name, pk=payment.order.pk)
        return redirect('getpaid-success-fallback', pk=payment.pk)