From 39009d56127572ccf4973121b999ff8069ee8030 Mon Sep 17 00:00:00 2001 From: Taimoor Ahmed <68893403+taimoor-ahmed-1@users.noreply.github.com> Date: Tue, 18 Apr 2023 06:55:48 +0500 Subject: [PATCH] Fix authorizenet payment gateway - EDLY-5499 (#126) Co-authored-by: Taimoor Ahmed --- ecommerce/extensions/payment/processors/authorizenet.py | 6 +++--- ecommerce/extensions/payment/views/authorizenet.py | 6 ++++-- requirements/base.in | 2 +- requirements/base.txt | 2 +- requirements/dev.txt | 2 +- requirements/production.txt | 2 +- requirements/test.txt | 2 +- 7 files changed, 12 insertions(+), 10 deletions(-) diff --git a/ecommerce/extensions/payment/processors/authorizenet.py b/ecommerce/extensions/payment/processors/authorizenet.py index 5efc4446c3d..a6e47c7fc98 100644 --- a/ecommerce/extensions/payment/processors/authorizenet.py +++ b/ecommerce/extensions/payment/processors/authorizenet.py @@ -1,9 +1,9 @@ """ AuthorizeNet payment processor. """ from __future__ import absolute_import, unicode_literals -import base64 import json import logging +from urllib.parse import quote from authorizenet import apicontractsv1 from authorizenet.apicontrollers import ( @@ -62,12 +62,12 @@ def get_authorizenet_payment_settings(self, basket): Visit https://developer.authorize.net/api/reference/features/accept_hosted.html for more detail. """ course_id = basket.all_lines()[0].product.course_id - course_id_hash = base64.b64encode(course_id.encode()) + course_id_url_encoded = quote(course_id) redirect_url = reverse('authorizenet:redirect') ecommerce_base_url = get_ecommerce_url() - return_url = '{}{}?course={}'.format(ecommerce_base_url, redirect_url, course_id_hash) + return_url = '{}{}?course={}'.format(ecommerce_base_url, redirect_url, course_id_url_encoded) # Create Authorizenet Settings object payment_button_setting = apicontractsv1.settingType() diff --git a/ecommerce/extensions/payment/views/authorizenet.py b/ecommerce/extensions/payment/views/authorizenet.py index c1f08381d9f..9efb02112b3 100644 --- a/ecommerce/extensions/payment/views/authorizenet.py +++ b/ecommerce/extensions/payment/views/authorizenet.py @@ -2,6 +2,7 @@ from __future__ import unicode_literals +import base64 import logging from django.conf import settings @@ -245,8 +246,9 @@ def handle_redirection(request): lms_dashboard = get_lms_dashboard_url() response = redirect(lms_dashboard) - course_id_hash = request.GET.get('course') - if course_id_hash: + course_id = request.GET.get('course') + if course_id: + course_id_hash = base64.b64encode(course_id.encode()) response.set_cookie('pendingTransactionCourse', course_id_hash, domain=domain) return response diff --git a/requirements/base.in b/requirements/base.in index 827206b8ef3..2d9eb12a1da 100755 --- a/requirements/base.in +++ b/requirements/base.in @@ -1,6 +1,6 @@ -c pins.txt -authorizenet==1.1.3 +authorizenet==1.1.4 analytics-python bleach coreapi diff --git a/requirements/base.txt b/requirements/base.txt index 7c17a8d0637..53910831b44 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -8,7 +8,7 @@ amqp==1.4.9 # via kombu analytics-python==1.2.9 # via -r requirements/base.in anyjson==0.3.3 # via kombu appdirs==1.4.3 # via zeep -authorizenet==1.1.3 +authorizenet==1.1.4 attrs==19.3.0 # via zeep babel==2.8.0 # via django-oscar, django-phonenumber-field billiard==3.3.0.23 # via celery diff --git a/requirements/dev.txt b/requirements/dev.txt index ea05f014999..59302c7892a 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -10,7 +10,7 @@ analytics-python==1.2.9 # via -r requirements/test.txt anyjson==0.3.3 # via -r requirements/test.txt, kombu appdirs==1.4.3 # via -r requirements/test.txt, zeep astroid==2.3.3 # via -r requirements/test.txt, pylint -authorizenet==1.1.3 +authorizenet==1.1.4 attrs==19.3.0 # via -r requirements/test.txt, pytest, zeep babel==2.8.0 # via -r requirements/docs.txt, -r requirements/test.txt, django-oscar, django-phonenumber-field, sphinx beautifulsoup4==4.9.0 # via -r requirements/test.txt, webtest diff --git a/requirements/production.txt b/requirements/production.txt index 1707aad8e58..d1bb7ff627f 100644 --- a/requirements/production.txt +++ b/requirements/production.txt @@ -9,7 +9,7 @@ analytics-python==1.2.9 # via -r requirements/base.in anyjson==0.3.3 # via kombu appdirs==1.4.3 # via zeep attrs==19.3.0 # via zeep -authorizenet==1.1.3 +authorizenet==1.1.4 babel==2.8.0 # via django-oscar, django-phonenumber-field billiard==3.3.0.23 # via celery bleach==3.1.4 # via -r requirements/base.in diff --git a/requirements/test.txt b/requirements/test.txt index 74ae05a6be7..1f5fd9e8912 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -10,7 +10,7 @@ anyjson==0.3.3 # via -r requirements/base.txt, kombu appdirs==1.4.3 # via -r requirements/base.txt, zeep astroid==2.3.3 # via pylint attrs==19.3.0 # via -r requirements/base.txt, -r requirements/e2e.txt, pytest, zeep -authorizenet==1.1.3 +authorizenet==1.1.4 babel==2.8.0 # via -r requirements/base.txt, django-oscar, django-phonenumber-field beautifulsoup4==4.9.0 # via webtest billiard==3.3.0.23 # via -r requirements/base.txt, celery