From a2fe92d59d02f90021c50ffff8dfc1699e52756d Mon Sep 17 00:00:00 2001 From: Serghei Mihai Date: Wed, 9 Dec 2015 16:19:44 +0100 Subject: [PATCH] lingo: add transaction id and date to invoice payment notification (#9280) Send data through POST --- combo/apps/lingo/models.py | 26 +++++++++++++++----------- combo/apps/lingo/views.py | 3 ++- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/combo/apps/lingo/models.py b/combo/apps/lingo/models.py index 55794e59..5b246e4e 100644 --- a/combo/apps/lingo/models.py +++ b/combo/apps/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,29 @@ 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.strftime('%Y-%m-%dT%H:%M:%S')} + headers = {'content-type': 'application/json'} + return requests.post(self.signed_url(request, url), + data=json.dumps(data), headers=headers).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/combo/apps/lingo/views.py b/combo/apps/lingo/views.py index 0684ac0e..44b3ac8a 100644 --- a/combo/apps/lingo/views.py +++ b/combo/apps/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()