Adyen / adyen-3ds2-ios

Other
18 stars 12 forks source link

Challenge fail for payment #21

Closed ajacquelin closed 2 years ago

ajacquelin commented 3 years ago

Problem

We are using adyen 2.8.6 with adyen-3ds2 0.9.6 and we are getting the following error while trying to pay with a payment card

ERROR AdyenPaymentProvider.handle3DS2Challenge():213 - An error occurred: Error Domain=com.adyen.Adyen3DS2.ADYProtocolError Code=203 "Data element not in the required format or value is invalid." UserInfo={ADYProtocolErrorSDKTransactionIdentifierKey=21490978-f36e-465d-a180-3dae406f2e10, NSLocalizedDescription=Data element not in the required format or value is invalid., ADYProtocolErrorDetailKey=whyInfoText}

We have the same issue with adyen-3ds2 2.1.0-rc.6 and 2.2.0.

It seems related to https://github.com/Adyen/adyen-3ds2-android/issues/31 which is in Android. Is it the same issue ? What should we do to fix it?

mohammedDehairy commented 3 years ago

Hi @ajacquelin ,

Thanks for reaching out!.

This means that the ACS CRes is sending whyInfoText field as an empty string, which is not allowed, they can omit whyInfoText completely and not send it, but if they send it it can't be empty.

You can contact the ACS that belong to the card issuer and send them the ACS transaction identifier and ask them to fix this problem.

If you need help with this let us know.

Note: The error object from 2.1.0-rc.6 and 2.2.0 should have the ACS reference number and the ACS transaction identifier.

Mohamed

mohammedDehairy commented 2 years ago

Will close this issue due to lack of activity, please feel free to reopen if you still need our help regarding this issue.

magdapilarczyk commented 1 year ago

Hi @mohammedDehairy! We see similar errors with whitelistingInfoText key, and if I understand correctly, the problem is on the ACS side. I don't think I can identify ACS based on the information from the error:

ADYProtocolErrorACSTransactionIdentifierKey: 3dc8cb01-3cfd-4a0f-94dd-a77cadc42f75
ADYProtocolErrorDetailKey: whitelistingInfoText
ADYProtocolErrorSDKTransactionIdentifierKey: 22ec87f0-5d44-4a8c-a5ab-58e6a9eb64c5
ADYProtocolErrorServerTransactionIdentifierKey: 87abb7bf-51ef-4179-9e99-41ffc938bf43
nserror-domain: com.adyen.Adyen3DS2.ADYProtocolError
NSLocalizedDescription: Data element not in the required format or value is invalid.

Would it make sense to return ACS Reference number as well (https://github.com/Adyen/adyen-3ds2-ios/blob/master/Static/Adyen3DS2.framework/Headers/ADYProtocolError.h), so it's possible to identify the ACS, or is it possible to find ACS having only the above information? Thank you!

mohammedDehairy commented 1 year ago

@magdapilarczyk

Thanks so much for this suggestion, indeed you can't identify the ACS from the current information in the NSError object, we will add the ACS Reference number in the NSError object in a future release.

Kind regards

Mohamed