From 8ed6debcc77ed16b167ae9690983c736d215d6ff Mon Sep 17 00:00:00 2001 From: Jorik Kraaikamp Date: Tue, 6 Sep 2022 16:54:34 +0200 Subject: [PATCH] Fixed a python 2 issue with a naming conflict --- djadyen/notifications/hmac.py | 44 ---------------------------------- djadyen/notifications/views.py | 2 +- djadyen/views.py | 24 ++++++++++++++++++- setup.cfg | 2 +- 4 files changed, 25 insertions(+), 47 deletions(-) delete mode 100644 djadyen/notifications/hmac.py diff --git a/djadyen/notifications/hmac.py b/djadyen/notifications/hmac.py deleted file mode 100644 index 3ade3c7..0000000 --- a/djadyen/notifications/hmac.py +++ /dev/null @@ -1,44 +0,0 @@ -import base64 -import binascii -import hashlib -import hmac -import logging - -from djadyen import settings - -logger = logging.getLogger("adyen") - - -def get_signature(params): - """ - Description of how the HMAC can be signed can be found here - - https://docs.adyen.com/development-resources/webhooks/verify-hmac-signatures - """ - hmac_key = binascii.a2b_hex(settings.DJADYEN_NOTIFICATION_KEY) - - logger.debug("Params: %s", params) - - signing_string = "{part1}:{part2}".format( - part1="{psp_reference}:{original_reference}:{merchant_account_code}".format( - psp_reference=params.get("pspReference", ""), - original_reference=params.get("originalReference", ""), - merchant_account_code=params.get("merchantAccountCode", ""), - ), - part2="{merchant_reference}:{value}:{currency}:{event_code}:{success}".format( - merchant_reference=params.get("merchantReference", ""), - value=params.get("amount", {}).get("value", ""), - currency=params.get("amount", {}).get("currency", ""), - event_code=params.get("eventCode", ""), - success=params.get("success", ""), - ), - ) - print(signing_string) - logger.debug("Signing Params: %s", signing_string) - - hmac_string = hmac.new(hmac_key, signing_string.encode("utf-8"), hashlib.sha256) - logger.debug("HMAC: %s", hmac_string) - - signature = base64.b64encode(hmac_string.digest()).decode("utf-8") - logger.debug("signature: %s", signature) - return signature diff --git a/djadyen/notifications/views.py b/djadyen/notifications/views.py index 1a3844c..078f1a8 100644 --- a/djadyen/notifications/views.py +++ b/djadyen/notifications/views.py @@ -8,7 +8,7 @@ from django.views.generic import View from ..models import AdyenNotification -from .hmac import get_signature +from .signing import get_signature logger = logging.getLogger("adyen") diff --git a/djadyen/views.py b/djadyen/views.py index d8c3b66..7d2ad7b 100644 --- a/djadyen/views.py +++ b/djadyen/views.py @@ -3,7 +3,10 @@ from django.http import JsonResponse, HttpResponseRedirect from django.views.generic.detail import DetailView -from .choices import Status +import Adyen + +from djadyen import settings +from djadyen.choices import Status logger = logging.getLogger("adyen") @@ -31,8 +34,27 @@ class AdyenResponseView(DetailView): def get(self, request, *args, **kwargs): self.object = self.get_object() + if self.object.get_price_in_cents() == 0: self.handle_authorised(self.object) + + resultRedirect = request.GET.get("redirectResult") + if resultRedirect: + ady = Adyen.Adyen() + # Setting global values + ady.payment.client.platform = settings.DJADYEN_ENVIRONMENT + ady.payment.client.xapikey = settings.DJADYEN_SERVER_KEY + ady.payment.client.app_name = settings.DJADYEN_APPNAME + # Setting request data. + request = { + "details": { + "redirectResult": resultRedirect, + }, + } + # Requesting the status. + result = ady.checkout.payments_details(request) + if result.message.get("resultCode") == "Authorised": + self.handle_authorised(self.object) return super(AdyenResponseView, self).get(request, *args, **kwargs) def handle_authorised(self, order): diff --git a/setup.cfg b/setup.cfg index 1371ebb..379d25b 100644 --- a/setup.cfg +++ b/setup.cfg @@ -2,7 +2,7 @@ # see http://setuptools.readthedocs.io/en/latest/setuptools.html#configuring-setup-using-setup-cfg-files [metadata] name = djadyen -version = 2.0.4a19 +version = 2.0.4a21 description = Django adyen payment integration long_description = file: README.rst url = https://github.com/maykinmedia/djadyen