From 1b6b5709818e6eade700276eabfc4888ae08ce5c Mon Sep 17 00:00:00 2001 From: Serghei Mihai Date: Thu, 17 Dec 2015 09:53:22 +0100 Subject: [PATCH] lingo: handle callback calls with POST method (#9360) --- combo/apps/lingo/views.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/combo/apps/lingo/views.py b/combo/apps/lingo/views.py index 67282f69..0684ac0e 100644 --- a/combo/apps/lingo/views.py +++ b/combo/apps/lingo/views.py @@ -170,10 +170,10 @@ class PayView(View): class CallbackView(View): - def get(self, request, *args, **kwargs): + def handle_callback(self, request, backend_response, **kwargs): regie = Regie.objects.get(id=kwargs.get('regie_pk')) payment = eopayment.Payment(regie.service, regie.service_options) - payment_response = payment.response(request.environ['QUERY_STRING']) + payment_response = payment.response(backend_response) if not payment_response.result == eopayment.CANCELLED: # cancellation are not signed... assert payment_response.signed is True @@ -204,6 +204,16 @@ class CallbackView(View): return HttpResponse() + def get(self, request, *args, **kwargs): + return self.handle_callback(request, request.environ['QUERY_STRING'], **kwargs) + + def post(self, request, *args, **kwargs): + return self.handle_callback(request, request.body, **kwargs) + + @csrf_exempt + def dispatch(self, *args, **kwargs): + return super(CallbackView, self).dispatch(*args, **kwargs) + class ReturnView(View):