Payment plugin

In GrandNode we can distinguish two standard types of payment :

 

Redirection – customer after place order is redirected to payment site

 

Standard – during checkout display to customer component with a payment form, usually credit cart form 



public partial interface IPaymentProvider : IProvider
    {
        Task InitPaymentTransaction();
        Task ProcessPayment(PaymentTransaction paymentTransaction);
        Task PostProcessPayment(PaymentTransaction paymentTransaction);
        Task PostRedirectPayment(PaymentTransaction paymentTransaction);
        Task HidePaymentMethod(IList cart);
        Task GetAdditionalHandlingFee(IList cart);
        Task Capture(PaymentTransaction paymentTransaction);
        Task Refund(RefundPaymentRequest refundPaymentRequest);
        Task Void(PaymentTransaction paymentTransaction);
        Task CancelPayment(PaymentTransaction paymentTransaction);
        Task CanRePostRedirectPayment(PaymentTransaction paymentTransaction);
        Task> ValidatePaymentForm(IFormCollection form);
        Task SavePaymentInfo(IFormCollection form);
        void GetPublicViewComponent(out string viewComponentName);
        PaymentMethodType PaymentMethodType { get; }
        Task SkipPaymentInfo();
        Task Description();
        string LogoURL { get; }
        Task SupportCapture();
        Task SupportPartiallyRefund();
        Task SupportRefund();
        Task SupportVoid();
    }
	


InitPaymentTransaction – we can add initial value to our payment transaction

 

ProcessPayment –  method for processing a payment transaction, for example in credit card payment  you should authorize your payment in this method

 

PostProcessPayment – invoke after ProcessPayment

 

PostRedirectPayment – use for redirection payment method, you can inject IHttpContextAccessor to your class and make the redirect.

 

HidePaymentMethod - Returns a value indicating whether the payment method should be hidden during checkout. For example, you can return true if the currency is not supported.

 

GetAdditionalHandlingFee – Calculate additional handling fee

 

Capture – capture payment ( can be invoked from admin panel)

 

Refund - refund  payment ( can be invoked from admin panel)

 

Void - void   payment ( can be invoked from admin panel)

 

CancelPayment -cancel payment, you can in this method for example send cancel request to your payment provider

 

CanRePostRedirectPayment – indicate that PostRedirectPayment will be invoke. Return true if you use redirect payment.

 

GetPublicViewComponent – view component name that will be rendered in payment info (during checkout). This can be the simple view that displays additional info about payment or can be a form that takes data (for example credit card form)

 

SkipPaymentInfo – return true if you want to omit payment info (associated with GetPublicViewComponent)

 

ValidatePaymentForm – if you use the view component you can validate passed data by customers in this method

 

SavePaymentInfo – you can save data from your form. PaymentTransaction class has the field CustomValues that allow you to pass additional data.

 

Description – return description string. Recommended to use with resources string

 

LogoUrl – path to your logo image. It doesn't have to be the same as the plugin's logo

 

PaymentMethodType – Redirect/Standard/Other 


To sum up we will discuss a sample flow of the payment method with a credit card :

 

HidePaymentMethod  (after enter to checkout) ->

Description ->

GetAdditionalHandlingFee ->

InitPaymentTransaction ->

SkipPaymentInfo (in our case return false, because we want to display form) ->

GetPublicViewComponent (display html form with inputs for credit cart data)->

ValidatePaymentForm (validate card number, month, year)->

SavePaymentInfo (save credit cart data to Session or PaymentTransaction)  ->

ProcessPayment (in this method send request to payment provider and make payment as Authorized, this is our last step)

 

If you want to know more check out our free plugin source code : Payments.BrainTree