Paypal Payment Integration In ASP.NET MVC

In this article, we will learn how to implement a Paypal payment gateway in ASP.NET MVC

Now first Get Paypal client id and client secret Key using below Document:

https://www.appinvoice.com/en/s/documentation/how-to-get-paypal-client-id-and-secret-key-22

create ASP.NET MVC Project

Now, Install PayPal SDK in your application

Add client id and client secret in web.config

<settings>
      <add name="mode" value="sandbox" />
      <add name="connectionTimeout" value="360000" />
      <add name="requestRetries" value="1" />
      <add name="clientId" value="Your client Id" />
      <add name="clientSecret" value="Your client Secret" />
</settings>

Now Add controller and insert below code in controller

using PayPal.Api;
using System;
using System.Collections.Generic;
using System.Web.Mvc;

namespace PayPalPayment.Controllers
{
    public class PaymentController : Controller
    {
        public ActionResult PaymentWithPaypal(string Cancel = null)
        {           
            APIContext apiContext = PayPalPayment.GetAPIContext();
            try
            {
                string payerId = Request.Params["PayerID"];
                if (string.IsNullOrEmpty(payerId))
                {            
                    string baseURI = Request.Url.Scheme + "://" + Request.Url.Authority + "/Payment/PaymentWithPayPal?";                   
                    var guid = Convert.ToString((new Random()).Next(100000));
                    var createdPayment = this.CreatePayment(apiContext, baseURI + "guid=" + guid);        
                    var links = createdPayment.links.GetEnumerator();
                    string paypalRedirectUrl = null;
                    while (links.MoveNext())
                    {
                        Links lnk = links.Current;
                        if (lnk.rel.ToLower().Trim().Equals("approval_url"))
                        {                         
                            paypalRedirectUrl = lnk.href;
                        }
                    }             
                    Session.Add(guid, createdPayment.id);
                    return Redirect(paypalRedirectUrl);
                }
                else
                {                  
                    var guid = Request.Params["guid"];
                    var executedPayment = ExecutePayment(apiContext, payerId, Session[guid] as string);                  
                    if (executedPayment.state.ToLower() != "approved")
                    {
                        return View("FailureView");
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return View("SuccessView");
        }
        private PayPal.Api.Payment payment;
        private Payment ExecutePayment(APIContext apiContext, string payerId, string paymentId)
        {
            var paymentExecution = new PaymentExecution()
            {
                payer_id = payerId
            };
            this.payment = new Payment()
            {
                id = paymentId
            };
            return this.payment.Execute(apiContext, paymentExecution);
        }
        private Payment CreatePayment(APIContext apiContext, string redirectUrl)
        {
      
            var itemList = new ItemList()
            {
                items = new List<Item>()
            };
     
            itemList.items.Add(new Item()
            {
                name = "Item Name comes here",
                currency = "USD",
                price = "10",
                quantity = "1",
                //sku = "abc"
            });
            var payer = new Payer()
            {
                payment_method = "paypal"
            };
            // Configure Redirect Urls here with RedirectUrls object  
            var redirUrls = new RedirectUrls()
            {
                cancel_url = redirectUrl + "&Cancel=true",
                return_url = redirectUrl
            };
            // Adding Tax, shipping and Subtotal details  
            var details = new Details()
            {
                tax = "1",
                shipping = "1",
                subtotal = "10"
            };
            //Final amount with details  
            var amount = new Amount()
            {
                currency = "USD",
                total = "12", // Total must be equal to sum of tax, shipping and subtotal.  
                details = details
            };
            var transactionList = new List<Transaction>();
            // Adding description about the transaction  
            transactionList.Add(new Transaction()
            {
                description = "Transaction description",
                invoice_number = "#200000", //Every Time Change
                amount = amount,
                item_list = itemList
            });
            this.payment = new Payment()
            {
                intent = "sale",
                payer = payer,
                transactions = transactionList,
                redirect_urls = redirUrls
            };
            // Create a payment using a APIContext  
            return this.payment.Create(apiContext);
        }
    }
}

Add View

@{
    ViewBag.Title = "PaymentWithPaypal";
}

<h2>PaymentWithPaypal</h2>

Add Success View

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>SuccessView</title>
</head>
<body>
    <div> 
        <h1>Success</h1>
    </div>
</body>
</html>

Add Failure View

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>FailureView</title>
</head>
<body>
    <div>
        <h1>Failure</h1>
    </div>
</body>
</html>

Submit a Comment

Your email address will not be published. Required fields are marked *

Footer Logo

Subscribe

Select Categories