@@ -107,6 +107,10 @@ def service_url_base(service)
107107 when 'PosMobile'
108108 url = "https://checkout-#{ @env } .adyen.com/checkout/possdk"
109109 supports_live_url_prefix = true
110+ when 'SessionAuthentication'
111+ subdomain = @env == :live ? "authe-#{ @env } " : @env
112+ url = "https://#{ subdomain } .adyen.com/authe/api"
113+ supports_live_url_prefix = false
110114 else
111115 raise ArgumentError , 'Invalid service specified'
112116 end
@@ -140,7 +144,7 @@ def service_url(service, action, version)
140144 def call_adyen_api ( service , action , request_data , headers , version , _with_application_info : false )
141145 # get URL for requested endpoint
142146 url = service_url ( service , action . is_a? ( String ) ? action : action . fetch ( :url ) , version )
143-
147+
144148 auth_type = auth_type ( service , request_data )
145149
146150 # initialize Faraday connection object
@@ -223,6 +227,9 @@ def call_adyen_api(service, action, request_data, headers, version, _with_applic
223227 when 403
224228 full_message = build_error_message ( response . body , 'Authorisation error' )
225229 raise Adyen ::PermissionError . new ( full_message , request_data , response . body )
230+ when 404
231+ full_message = build_error_message ( response . body , 'Not found error' )
232+ raise Adyen ::NotFoundError . new ( full_message , request_data , response . body )
226233 when 422
227234 full_message = build_error_message ( response . body , 'Validation error' )
228235 raise Adyen ::ValidationError . new ( full_message , request_data , response . body )
@@ -368,8 +375,10 @@ def build_error_message(response_body, default_message)
368375 full_message = default_message
369376 begin
370377 error_details = response_body
378+ error_details = JSON . parse ( response_body , symbolize_names : true ) if response_body . is_a? ( String )
379+
371380 # check different attributes to support both RFC 7807 and legacy models
372- message = error_details [ :detail ] || error_details [ :message ]
381+ message = error_details [ :detail ] || error_details [ :message ] || error_details
373382 error_code = error_details [ :errorCode ]
374383 if message && error_code
375384 full_message = "#{ message } ErrorCode: #{ error_code } "
0 commit comments