This document discusses developing a custom payment gateway for an e-commerce site using Kentico. It covers creating a payment gateway class and form, handling payment notifications, and ensuring security. The key steps are to create a payment gateway provider class that inherits from CMSPaymentGatewayProvider, a form that inherits from CMSPaymentGatewayForm, and a payment notification page to process payments and update orders. Security best practices like using HTTPS and validating data are also outlined. Real-world examples and documentation resources are provided to help understand implementation.
Download as PPTX, PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
360 views
Developing Custom Payment Gateway
This document discusses developing a custom payment gateway for an e-commerce site using Kentico. It covers creating a payment gateway class and form, handling payment notifications, and ensuring security. The key steps are to create a payment gateway provider class that inherits from CMSPaymentGatewayProvider, a form that inherits from CMSPaymentGatewayForm, and a payment notification page to process payments and update orders. Security best practices like using HTTPS and validating data are also outlined. Real-world examples and documentation resources are provided to help understand implementation.
Market Place: E-way, PayPal Payflow Pro, Built-in Payment Gateways 1 SQL Database Checkout steps Kentico Save order Buyer(s) Update result Payment provider HTTP(S) POST Redirect Redirect (optional) A) B) Payment Notification Payment gateway class, payment gateway form (1) Payment result (2) Payment Notification (3) Security (4) Real world example - DEMO
Agenda 2 Update result 2 PN page Thank you page 3 Confirmation (optional) Authorize.NET PayPal (1) Payment Gateway Class API CMS.EcommerceProvider.CMSPaymentGatewayProvider ShoppingCartControl (ShoppingCart) ShoppingCartInfoObj (ShoppingCartInfo) OrderId (int) PaymentResult (PaymentResultInfo) IsPaymentCompleted (bool) PaymentResult.PaymentIsCompleted AddCustomData() - CMSPaymentGatewayForm control is added to the payment data container and its data are loaded. RemoveCustomData() - All controls from payment data container are removed. ValidateCustomData() - CMSPaymentGatewayForm control data are validated. ProcessCustomData() - CMSPaymentGatewayForm data are processed. ShoppingCartInfoObj.PaymentGatewayCustomData (Hashtable) ProcessPayment() - Override this method to process payment by your payment processor. GetPaymentDataForm() - Override this method to get your own payment gateway form. (static)GetPaymentGatewayProvider(int paymentOptionId) Loads payment gateway. UpdateOrderPaymentResult() - Updates order payment result in database. OrderId PaymentResult
(1) Payment Gateway Form
API CMS.EcommerceProvider.CMSPaymentGatewayForm ShoppingCartControl (ShoppingCart) ShoppingCartInfoObj (ShoppingCartInfo) PaymentGatewayCustomData (Hashtable) LoadData() - Initializes form controls with customer payment data CMSPaymentGatewayProvider.AddCustomData() - ShoppingCartPaymentGateway ValidateData() - Validates form data and returns error message if some error occurs CMSPaymentGatewayProvider.ValidateCustomData() - ShoppingCartPaymentGateway ProcessData() - Process form data and returns error message if some error occurs CMSPaymentGatewayProvider.ProcessCustomData() - ShoppingCartPaymentGateway UI
(1) I Dont Need Payment Gateway Form
PaymentOptionInfo poi = PaymentOptionInfoProvider.GetPaymentOptionInfo(this.ShoppingCartInfoObj.ShoppingCartPaymentOptionID); if (poi != null && poi.PaymentOptionClassName.ToLower().Equals("worldpayprovider")) { this.ButtonNextClickAction(); } else { LoadData(); } API ShoppingCartPaymentGateway API
(3) Payment Notification Physical page (.aspx) vs. virtual page (served by Kentico), PN page is not displaying anything - it should only process the received data, Common location: ~\CMSModules\Ecommerce\CMSPages\ PN page needs to be accessible by public user, Compare order data (COM_Order) and secret (e.g. from settings) with payment gateway response/result data, Confirm payment with payment gateway (optional), Log any exceptions, error or suspicious behavior into Event log, Update order payment result, Confirmation e-mails are automatically sent,
int orderID = 5; // from response int paymentOptionID = 6; // from order (based on orderID) // Load payment provider CMSPaymentGatewayProvider provider = (WorldPayProvider)CMSPaymentGatewayProvider.GetPaymentGatewayProvider(paymentOptionID); provider.OrderId = orderId; // Compare data // provider.PaymentResult = provider.UpdateOrderPaymentResult();
(4) Security Consider using SSL (HTTPS) on shopping cart page when collecting sensitive information, Use POST instead of GET (redirect) if possible, Redirect/post with SSL (HTTPS), Do not send sensitive information as part of the URL (querystring), Verify data/integrity/result/etc. against some secret information, Dont save sensitive information in Kentico, Customer credit card etc., Use payment gateway security features, Be paranoid!,
Real World Example Understand how payment gateway works, o Documentation, Develop payment gateway class, form, PN page etc. o Take advantage of documentation examples, o Provide your code from App_Code folder, No need to rebuild your DLL file when upgrading or applying hotfix, Use custom setting keys, o CMS Site Manager -> Development -> Custom Settings (new from version 6.0), Register payment option (gateway) in Kentico, o Assign it to some shipping option, Test and review the security,