From 3857129fa271e265338d7843dea580506b393883 Mon Sep 17 00:00:00 2001 From: Adam BogdaƂ Date: Fri, 4 Dec 2015 14:51:34 +0100 Subject: Get links from the paypal card response --- payments/paypal/__init__.py | 12 ++++++------ payments/paypal/forms.py | 1 + 2 files changed, 7 insertions(+), 6 deletions(-) (limited to 'payments') diff --git a/payments/paypal/__init__.py b/payments/paypal/__init__.py index 8a0da22..228bc3a 100644 --- a/payments/paypal/__init__.py +++ b/payments/paypal/__init__.py @@ -81,7 +81,11 @@ class PaypalProvider(BasicProvider): (link['rel'], link) for link in response['links']) payment.extra_data = json.dumps(extra_data) - def set_response_links(self, payment, links): + def set_response_links(self, payment, response): + transaction = response['transactions'][0] + related_resources = transaction['related_resources'][0] + resource_key = 'sale' if self._capture else 'authorization' + links = related_resources[resource_key]['links'] extra_data = json.loads(payment.extra_data or '{}') extra_data['links'] = dict((link['rel'], link) for link in links) payment.extra_data = json.dumps(extra_data) @@ -222,11 +226,7 @@ class PaypalProvider(BasicProvider): else: return redirect(success_url) executed_payment = self.execute_payment(payment, payer_id) - transaction = executed_payment['transactions'][0] - related_resources = transaction['related_resources'][0] - resource_key = 'sale' if self._capture else 'authorization' - authorization_links = related_resources[resource_key]['links'] - self.set_response_links(payment, authorization_links) + self.set_response_links(payment, executed_payment) payment.attrs.payer_info = executed_payment['payer']['payer_info'] if self._capture: payment.captured_amount = payment.total diff --git a/payments/paypal/forms.py b/payments/paypal/forms.py index 8cda756..0a77205 100644 --- a/payments/paypal/forms.py +++ b/payments/paypal/forms.py @@ -34,6 +34,7 @@ class PaymentForm(CreditCardPaymentFormWithName): self.payment.change_status('error') else: self.payment.transaction_id = data['id'] + self.provider.set_response_links(self.payment, data) if self.provider._capture: self.payment.captured_amount = self.payment.total self.payment.change_status('confirmed') -- cgit v1.2.3