Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion Adyen/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,10 @@ def _determine_checkout_url(self, platform, action):
action = "payments/result"
if action == "originKeys":
api_version = settings.API_CHECKOUT_UTILITY_VERSION
if action == "paymentMethodsBalance":
action = "paymentMethods/balance"
if action == "ordersCancel":
action = "orders/cancel"

return '/'.join([base_uri, api_version, action])

Expand Down Expand Up @@ -492,7 +496,8 @@ def call_checkout_api(self, request_data, action, idempotency_key=None,
"authorise3ds2",
"payments",
"paymentSession",
"paymentLinks"
"paymentLinks",
"paymentMethodsBalance"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should we add orders and ordersCancel here or it's not supported?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Checking the documentation the application info is only part of paymentMethodsBalance request.

]

if action in with_app_info:
Expand Down
18 changes: 18 additions & 0 deletions Adyen/services.py
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,7 @@ class AdyenCheckoutApi(AdyenServiceBase):
payments
payments/details
originKeys

Please refer to the checkout documentation for specifics around the API.
https://docs.adyen.com/developers/checkout

Expand Down Expand Up @@ -325,6 +326,23 @@ def origin_keys(self, request=None, **kwargs):
action = "originKeys"
return self.client.call_checkout_api(request, action, **kwargs)

# Orders endpoints

# /paymentMethods/balance
def payment_methods_balance(self, request, **kwargs):
action = "paymentMethodsBalance"
return self.client.call_checkout_api(request, action, **kwargs)

# /orders
def orders(self, request, **kwargs):
action = "orders"
return self.client.call_checkout_api(request, action, **kwargs)

# /orders/cancel
def orders_cancel(self, request, **kwargs):
action = "ordersCancel"
return self.client.call_checkout_api(request, action, **kwargs)


class AdyenBinLookup(AdyenServiceBase):
"""This represents the Adyen API Bin Lookup service.
Expand Down
39 changes: 39 additions & 0 deletions test/CheckoutTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -235,3 +235,42 @@ def test_payments_result_error_mocked(self):
self.assertEqual("14_018", result.message['errorCode'])
self.assertEqual("Invalid payload provided", result.message['message'])
self.assertEqual("validation", result.message['errorType'])

def test_orders_success(self):
request = {'merchantAccount': "YourMerchantAccount"}
self.adyen.client = self.test.create_client_from_file(200, request,
"test/mocks/"
"checkout/"
"orders"
"-success.json")
result = self.adyen.checkout.orders(request)
self.assertEqual("8515930288670953", result.message['pspReference'])
self.assertEqual("Success", result.message['resultCode'])
self.assertEqual("order reference", result.message['reference'])
self.assertEqual("EUR", result.message['remainingAmount']["currency"])
self.assertEqual(2500, result.message['remainingAmount']['value'])

def test_orders_cancel_success(self):
request = {'merchantAccount': "YourMerchantAccount"}
self.adyen.client = self.test.create_client_from_file(200, request,
"test/mocks/"
"checkout/"
"orders-cancel"
"-success.json")
result = self.adyen.checkout.orders_cancel(request)
self.assertEqual("8515931182066678", result.message['pspReference'])
self.assertEqual("Received", result.message['resultCode'])

def test_paymentmethods_balance_success(self):
request = {'merchantAccount': "YourMerchantAccount"}
self.adyen.client = self.test.create_client_from_file(200, request,
"test/mocks/"
"checkout/"
"paymentmethods"
"-balance"
"-success.json")
result = self.adyen.checkout.payment_methods_balance(request)
self.assertEqual("851611111111713K", result.message['pspReference'])
self.assertEqual("Success", result.message['resultCode'])
self.assertEqual(100, result.message['balance']['value'])
self.assertEqual("EUR", result.message['balance']['currency'])
22 changes: 22 additions & 0 deletions test/DetermineEndpointTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,3 +106,25 @@ def test_binlookup_url_no_live_endpoint_prefix_test_platform(self):
("https://pal-test.adyen.com/pal/servlet/"
"BinLookup/v50/get3dsAvailability")
)

def test_checkout_api_url_orders(self):
self.client.live_endpoint_prefix = None
url = self.adyen.client._determine_checkout_url("test",
"orders")
self.assertEqual(url, "https://checkout-test.adyen.com"
"/v67/orders")

def test_checkout_api_url_order_cancel(self):
self.client.live_endpoint_prefix = None
url = self.adyen.client._determine_checkout_url("test",
"ordersCancel")
self.assertEqual(url, "https://checkout-test.adyen.com"
"/v67/orders/cancel")

def test_checkout_api_url_order_payment_methods_balance(self):
self.client.live_endpoint_prefix = None
url = self.adyen.client._determine_checkout_url("test",
"paymentMethods"
"Balance")
self.assertEqual(url, "https://checkout-test.adyen.com""/v67/"
"paymentMethods/balance")
4 changes: 4 additions & 0 deletions test/mocks/checkout/orders-cancel-success.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
"pspReference": "8515931182066678",
"resultCode": "Received"
}
11 changes: 11 additions & 0 deletions test/mocks/checkout/orders-success.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"pspReference": "8515930288670953",
"resultCode": "Success",
"expiresAt": "2020-06-25T20:01:07Z",
"orderData": "Ab02b4c0!BQABAgBqxSuFhuXUF7IvIRvSw5bDPHN...",
"reference": "order reference",
"remainingAmount": {
"currency": "EUR",
"value": 2500
}
}
12 changes: 12 additions & 0 deletions test/mocks/checkout/paymentmethods-balance-success.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"pspReference": "851611111111713K",
"resultCode": "Success",
"balance": {
"currency": "EUR",
"value": 100
},
"transactionLimit": {
"currency": "EUR",
"value": 5000
}
}