lingo: add transaction id and date to invoice payment notification (#9280)

Send data through POST
This commit is contained in:
Serghei Mihai 2015-12-09 16:19:44 +01:00 committed by Frédéric Péters
parent 1b6b570981
commit a2fe92d59d
2 changed files with 17 additions and 12 deletions

View File

@ -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):

View File

@ -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()