From e79d93f3c4e1b416e94a3904d756c3e04e4413fa Mon Sep 17 00:00:00 2001 From: Serghei Mihai Date: Wed, 9 Dec 2015 16:19:44 +0100 Subject: [PATCH] add transaction id and date to invoice payment notification (#9280) Send data through POST --- lingo/models.py | 24 +++++++++++++----------- lingo/views.py | 3 ++- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/lingo/models.py b/lingo/models.py index 55794e5..3390749 100644 --- a/lingo/models.py +++ b/lingo/models.py @@ -109,8 +109,8 @@ class Regie(models.Model): url = self.webservice_url + '/invoices/' if past: url += 'history' - items = self.get_url(context['request'], url, - NameID=mellon['name_id_content']).json() + items = requests.get(self.signed_url(context['request'], url, + NameID=mellon['name_id_content'])).json() if items.get('data'): return [build_remote_item(item, self) for item in items.get('data')] return [] @@ -124,7 +124,8 @@ class Regie(models.Model): if hasattr(request, 'session') and request.session.get('mellon_session'): mellon = request.session.get('mellon_session') url = self.webservice_url + '/invoice/%s/pdf' % item_id - return self.get_url(request, url, NameID=mellon['name_id_content']) + return requests.get(self.signed_url(request, url, + NameID=mellon['name_id_content'])) raise PermissionDenied def get_item(self, request, item): @@ -134,26 +135,27 @@ class Regie(models.Model): if hasattr(request, 'session') and request.session.get('mellon_session'): mellon = request.session.get('mellon_session') url = self.webservice_url + '/invoice/%s/' % item - item = self.get_url(request, url, - NameID=mellon['name_id_content']).json() + item = requests.get(self.signed_url(request, url, + NameID=mellon['name_id_content'])).json() return build_remote_item(item.get('data'), self) return {} - def pay_item(self, request, item): - url = self.webservice_url + '/invoice/%s/pay/' % item - return self.get_url(request, url) + def pay_item(self, request, item, transaction_id, transaction_date): + url = self.webservice_url + '/invoice/pay/' + data = {'invoice_id': item, 'transaction_id': transaction_id, + 'transaction_date': transaction_date.isoformat()} + return requests.post(self.signed_url(request, url), data=json.dumps(data)).json() def as_api_dict(self): return {'slug': self.slug, 'label': self.label, 'description': self.description} - def get_url(self, request, url, **params): + def signed_url(self, request, url, **params): orig = request.get_host() url += '?orig=' + orig +'&' + urllib.urlencode(params) signature_key = settings.LINGO_SIGNATURE_KEY - url = sign_url(url, key=signature_key) - return requests.get(url) + return sign_url(url, key=signature_key) class BasketItem(models.Model): diff --git a/lingo/views.py b/lingo/views.py index 2f21284..6d77eee 100644 --- a/lingo/views.py +++ b/lingo/views.py @@ -200,7 +200,8 @@ class CallbackView(View): pass if transaction.remote_items: for item in transaction.remote_items.split(','): - regie.pay_item(request, item) + regie.pay_item(request, item, transaction.order_id, + transaction.end_date) return HttpResponse() -- 2.6.4