When sending a request (eg. Authorize -> WithCurrencyCode) we need a strongly typed property (Enum which too general and not as good as Amazon.Regions.currencyCode).
Why does IPN Notifications not return a strongly typed enum (like GetCurrencyCode of GetAmazonOrderReferenceDetailsResponse)? So we have to convert it to enum. This should be part of a flawless interface.
Another example: GetNotificationType of IpnHandler returns a string instead of AmazonPay.NotificationType.
It would make programming more secure and readable if this could already be handled and maybe you can add an "Unknown" type for NotificationTypes (or CurrencyCode) that are not known in this version of the package.
Also I would suggest to rename types according to the (MS) casing guidline. E.g. Amazon.Regions.currencyCode should become Amazon.Regions.CurrencyCode.
I also would like to know why you are using Get functions instead of readonly properties.
In my opinion GetAuthorizationId could be easily changed to a property AuthorizationId - if it is empty return an empty string, nothing is also fine.
When sending a request (eg. Authorize -> WithCurrencyCode) we need a strongly typed property (Enum which too general and not as good as Amazon.Regions.currencyCode).
Why does IPN Notifications not return a strongly typed enum (like GetCurrencyCode of GetAmazonOrderReferenceDetailsResponse)? So we have to convert it to enum. This should be part of a flawless interface.
Another example: GetNotificationType of IpnHandler returns a string instead of AmazonPay.NotificationType.
It would make programming more secure and readable if this could already be handled and maybe you can add an "Unknown" type for NotificationTypes (or CurrencyCode) that are not known in this version of the package.
Also I would suggest to rename types according to the (MS) casing guidline. E.g. Amazon.Regions.currencyCode should become Amazon.Regions.CurrencyCode.
I also would like to know why you are using Get functions instead of readonly properties. In my opinion GetAuthorizationId could be easily changed to a property AuthorizationId - if it is empty return an empty string, nothing is also fine.
Thank you for your consideration!