- finish topics
Create a payment provider class
Derive it from
PaymentMethodBase and optionally from
IConfigurable. Decorate the provider with required attributes:
- SystemName: The system name of the provider.
- SystemName: The friendly name of the provider.
- DisplayOrder: The display order in payment method lists.
- DependentWidgets: Optional. System name of a widget that should be activated\deactivated when the payment method is activated\deactivated.
Develop the core implementation of your payment method by overriding the properties and methods of
PaymentMethodBase. If your plugin implements multiple payment methods then add one payment provider for each payment method. For example the PayPal plugin has currently three providers (Direct, Express and Standard).
Methods of PaymentMethodBase in detail
- PreProcessPayment: Called while placing an order but before the order object has been created and stored into the database. Typically used for preauthorization when the payment gateway reports a failure that leads to order cancellation.
- ProcessPayment: .....
- PostProcessPayment: .....
- GetAdditionalHandlingFee: .....
Create a payment controller
Derive it from
PaymentControllerBase. Add a
PaymentInfo action method that returns a partial view with information of your payment method displayed in checkout payment list. Optional (if required): Add endpoints for the payment gateway of your payment method. For instance IPN (instant payment notification) should be handled here.
Methods of PaymentControllerBase in detail
- ValidatePaymentForm: Used to validate the form data entered by the customer in checkout, for example a credit card number.
- GetPaymentInfo: Deprecated method to temporary store data entered by the customer in checkout. Better use
HttpContextBase.GetCheckoutState().CustomPropertiesif you need session based data storing during checkout.
- GetPaymentSummary: Return a string as short summary of the data entered by the customer in checkout.
Properties of PaymentMethodBase in detail
- RequiresInteraction: Gets a value indicating whether the payment method requires user input before proceeding in checkout (e.g. CreditCard, DirectDebit etc.).
- SupportCapture: Gets a value indicating whether payment capturing is supported.
- PaymentMethodType: Gets the payment method type. See below.
Values of PaymentMethodType
- Unknown: ....
- Standard: ....
- Redirection: ...
- Button: ....
- StandardAndButton: ....
- StandardAndRedirection: Rare special case. Payment information is entered in checkout and customer is redirected to complete payment (e.g. 3D Secure) after order has been placed.