For this task you will require the ID of the payment processor provider. The value is stored in the PaymentProcessorId property of the PaymentMethod instance. The JSON string is stored in the PaymentProcessorSettings property of the PaymentMethod instance.
To deserialize payment processor settings from a JSON string to the respective settings type, you must perform the following:
- Get the config manager.
Get an instance of the ConfigManager object.
- Get the payment processors section.
To do this, call the GetSection method of the manager and pass the PaymentProcessorConfigType as the generic argument.
- Get the specified payment processor provider.
To do this filter the Values collection of the section by the ID of the provider.
- Get the type of the settings.
The type of the settings for the provider is stored in the SettingsType property of the PaymentProcessorProviderSettings instance.
- Deserialize the settings.
TIP: Cast the deserialization result to the IPaymentSettings interface. Each of the payment processor settings classes implements it.
Here is a code example:
settingsJson, Guid payentProcessorProviderId)
ConfigManager configManager = ConfigManager.GetManager();
PaymentProcessorConfig paymentProcessorConfig = configManager.GetSection<PaymentProcessorConfig>();
PaymentProcessorProviderSettings providerSettings = paymentProcessorConfig.PaymentProcessorProviders.Values.Where(p => p.Id == payentProcessorProviderId.ToString()).SingleOrDefault();
Type settingsType = providerSettings.SettingsType;
IPaymentSettings settings = (IPaymentSettings)serializer.Deserialize(settingsJson, settingsType);