From ec4922fd7c9d095af5c2f31c4ee4f6a2145e6548 Mon Sep 17 00:00:00 2001 From: Serghei Mihai Date: Sun, 10 Jan 2016 15:54:39 +0100 Subject: [PATCH] lingo: notify wcs about local items payment (#9351) --- combo/apps/lingo/models.py | 24 ++++++++++++++++++++---- combo/apps/lingo/views.py | 2 +- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/combo/apps/lingo/models.py b/combo/apps/lingo/models.py index 4e57524..e03676f 100644 --- a/combo/apps/lingo/models.py +++ b/combo/apps/lingo/models.py @@ -16,8 +16,10 @@ import datetime import json +import logging import requests import urllib +import urlparse from dateutil import parser from decimal import Decimal @@ -49,6 +51,7 @@ SERVICES = [ (eopayment.PAYZEN, _('PayZen')), ] +logger = logging.getLogger(__name__) def build_remote_item(data, regie): return RemoteItem(id=data.get('id'), regie=regie, @@ -173,10 +176,23 @@ class BasketItem(models.Model): payment_date = models.DateTimeField(null=True) notification_date = models.DateTimeField(null=True) - def notify(self): - # TODO: sign with real values - url = self.source_url + 'jump/trigger/paid?email=trigger@localhost&orig=combo' - url = sign_url(url, key='xxx') + def notify(self, request): + source_server = urlparse.urlparse(self.source_url).netloc.split(':')[0] + service_dict = None + for services in settings.KNOWN_SERVICES.values(): + for service in services.values(): + if service['verif_orig'] == source_server: + service_dict = service + break + else: + continue + break + if not service_dict: + logger.error('failed to find data for server %s', source_server) + raise RuntimeError('failed to find data for server') + params = urllib.urlencode({'orig': service_dict.get('orig')}) + url = self.source_url + 'jump/trigger/paid?' + params + url = sign_url(url, key=service_dict.get('secret')) message = {'result': 'ok'} r = requests.post(url, data=json.dumps(message), timeout=3) self.notification_date = timezone.now() diff --git a/combo/apps/lingo/views.py b/combo/apps/lingo/views.py index f025e74..dcf8704 100644 --- a/combo/apps/lingo/views.py +++ b/combo/apps/lingo/views.py @@ -200,7 +200,7 @@ class CallbackView(View): item.payment_date = transaction.end_date item.save() try: - item.notify() + item.notify(request) except: # ignore errors, it will be retried later on if it fails pass -- 2.7.0.rc3