If you want to make payment type plugin, main class in your plugin should inherit from IPaymentMethod.
Let's talk about each method.
1. ProcessPayment is changing status of payment to pending.
2. PostProcessPayment will be activated after ProcessPayment, you can put here anything you want, for example redirect.
3. HidePaymentMethod is used to hide payment method in some cases.
4. GetAdditionalHandlingFee will add fee beacuse of using this particural payment method.
5. Capture is used in transactions with credit cards. Explanation
6. This method allows you make a refund. Note that an order should be paid, and SupportRefund or SupportPartiallyRefund property should return true.
7. Void allows you void an authorized but not captured payment.
8. ProcessRecurringPayment will procces recurring payments
9. CancelRecurringPayment - cancel recurring payments.
10. CanRePostProcessPayment - usually this method is used when it redirects a customer to a third-party site for completing a payment. If the third party payment fails this option will allow customers to attempt the order again later without placing a new order.
11. GetControllerType get type of controller in this plugin.
12. ValidatePaymentForm is used in the public store to validate customer input.
13. GetPaymentInfo method is used in the public store to parse customer input, such as credit card information.
14. SkipPaymentInfo indicates if payment should be visible on page.
15. PaymentMethodDescription gets description for this payment method.
SupportCapture, SupportPartiallyRefund, SupportRefund, SupportVoid. These properties indicate whether appropriate methods of your payment method are supported.