In this post, we will learn how to integrate PayPal Express Checkout into Kentico. Implementing a payment gateway is like implementing any other third-party Rest/SOAP API- just follow the instructions provided in the documentation, and you’ll be all set. However, since payment APIs involve money, people tend to get a bit anxious when setting them up so we'll step through the process in a bit more detail here.
Prepping the Basics
First, you will need a PayPal business account. Alternatively, you can create a sandbox account for web development at https://developer.paypal.com/
. Make a note of the following information to load onto Kentico:
APIUserName, APIPassword, and APISignature
. You should next set up the
First, we will create a new user control interface under
CMSModules/Custom/Checkout/PaypalForm.ascx. In the UI, we will add a label that informs users we are taking them to another site to complete the payment.
<cms:LocalizedHeading ResourceString="PayPalForm.Title" runat="server" EnableViewState="false" Level="4" />
<cms:LocalizedLabel ResourceString="PayPalForm.InfoMessage" runat="server" EnableViewState="false" CssClass="InfoLabel" />
This controls class inherits
CMS.EcommerceProvider.CMSPaymentGatewayForm class. We will need to override the
ProcessData method. Here, we will get the token we get back from Paypal from the query string and store it in
PaymentGatewayCustomData, which will be available in the
public override string ProcessData()
PaymentGatewayCustomData[GatewayParameters.PAYPAL_TOKEN] = QueryHelper.GetString("token", string.Empty);
In this tutorial, we will use the same code for the payment and return pages. You can set it up to be different if you want.
After overriding ProcessData, create a copy of the user control
CMSWebparts/ECommerce/Checkout/Forms/PaymentForm.ascx so we make the most of the code that comes with Kentico.
Now, add the following piece of code to the
if (!Page.IsPostBack && PaymentGatewayProvider is IPaypalExpressGatewayProvider)
IPaypalExpressGatewayProvider ecProvider = ((IPaypalExpressGatewayProvider)PaymentGatewayProvider);
if (!PaymentGatewayProvider.IsPaymentCompleted && ecProvider.CanProcessPaymentCapture())
This basically checks if the user is coming from PayPal and if the query string has a token. If the conditions are true, the code proceeds to the processing step.
This is the most important piece of the puzzle. Here, we will send PayPal the details about the purchase in the cart, and when we get the token back, we will store the payment details in our records.
We will execute three PayPal methods here:
SetExpressCheckout, GetExpressCheckoutDetails, and DoExpressCheckout
To obtain a token from PayPal, this method sends it the order details and the merchant’s credentials through the API. Then, the user is redirected to PayPal, but remember that the money hasn’t been transferred to your account yet.
After the payment has been processed by PayPal, the user is redirected to the merchant’s website with a token for the transaction.
GetExpressCheckoutDetails confirms that the token we have received is valid.
We then send the token and PayerID values back to PayPal using
DoExpressCheckoutPayment, after which Paypal verifies the values and authorizes the transaction. After the payment has been processed successfully, you might want to store in a database the TransactionID you get from PayPal.
As we said in the introduction, configuring a payment API isn’t any more complex than implementing other APIs. I hope this tutorial helped you set up PayPal Express Checkout on your website. Please share this post if you found it useful.