Wednesday, 10 September 2014

Payzippy Payment Gateway Integration in ASP.NET/MVC C#

Payzippy is the newest star in the Indian payment gateway, Developed by Flipkart One of the most popular and trusted e-commerce portal of India. As flipkart is a very experienced e-commerce portal they are very well versed with each and every pain and loopholes of Indian payment gateway market and with this very lucrative launch offer it is a very viable solution for most of the websites.

Payzippy is providing the SDK for Java and PHP developer with supports for some very popular e commerce packages like Magento.
But still no SDK for ASP.NET/MVC platform. But Using Payzippy Rest API (JSON) , We can create Payment Integration in ASP.NET.

Prerequisites for Payzippy payment gateway integration in Asp.net/Asp.net MVC
First you have to register with PayZippy and get 

1. MID (merchant_id)
2. Secure key (used to determine hash)
3. Secure key id (merchant_key_id)



.CS File Code (Payzippy Asp.net payment gateway )

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Security.Cryptography;
using System.Text;

public partial class PayzippyPaymentGatewayIntegration : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected PayzippyPaymentGatewayIntegration()
        {
            this.Init += Charging_Init;
            Main();
        }
       private void Charging_Init(object sender, EventArgs e)
        {
            this.EnableViewState = false;
        }
       private static string secretKey = "KEY_KEY_KEY_KEY_KEY";
        private static string generateSHA256(String input)
        {
            SHA256Managed crypt = new SHA256Managed();
            string hash = String.Empty;
            byte[] crypto = crypt.ComputeHash(Encoding.ASCII.GetBytes(input), 0, Encoding.ASCII.GetByteCount(input));
            foreach (byte bit in crypto)
            {
                hash += bit.ToString("x2");
            }
            return hash;
        }
        static string GenHash(Dictionary<string, string> chargingParams)
        {
            // Acquire keys and sort them.
            List<string> list = new List<string>(chargingParams.Keys);
            list.Sort();
            StringBuilder stringForHash = new StringBuilder();
            // Loop through keys.
            foreach (var key in list)
            {
                stringForHash.Append(chargingParams[key] + '|');
            }
            stringForHash.Append(secretKey);
            return generateSHA256(stringForHash.ToString());
        }
        public Dictionary<string, string> chargingParams;
        private void Main()
        {
            var currentTime = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;

            this.chargingParams = new Dictionary<string, string>();
            chargingParams.Add("merchant_id", "test"); //Your MID issued by PayZippy.
            chargingParams.Add("buyer_email_address", "email@gmail.com"); // Email Address
            chargingParams.Add("merchant_transaction_id", "PAY_" + currentTime); //Your Transaction Id
            chargingParams.Add("transaction_type", "SALE"); //This is the default Value.
            chargingParams.Add("transaction_amount", "10000"); //Amount must be in paise. So, 1 Rupee= 100.
            chargingParams.Add("payment_method", "CREDIT"); // CREDIT,DEBIT,EMI,NET
            chargingParams.Add("bank_name", ""); //Bank Name required in case of EMI/NET.
            chargingParams.Add("emi_months", "0"); // Emi Months in case of EMI.
            chargingParams.Add("currency", "INR"); //INR is default.
            chargingParams.Add("ui_mode", "IFRAME"); //REDIRECT/IFRAME.
            chargingParams.Add("hash_method", "SHA256"); //MD5, SHA256
            chargingParams.Add("merchant_key_id", "payment"); //This is the default value.
            chargingParams.Add("timegmt", currentTime.ToString());
            chargingParams.Add("callback_url", "http://yoursite.com/bus/default.aspx");
            chargingParams.Add("hash", GenHash(chargingParams));

            StringBuilder builder = new StringBuilder();
            builder.Append("https://www.payzippy.com/payment/api/charging/v1?");
            foreach (var entry in chargingParams)
            {
                builder.AppendFormat("{0}={1}&", entry.Key, entry.Value);
            }
            Console.WriteLine(builder.ToString());

        }


    }




.ASPX File Code(Design code)


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PayzippyPaymentGatewayIntegration.aspx.cs" Inherits="PayzippyPaymentGatewayIntegration" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" action="https://www.payzippy.com/payment/api/charging/v1" method="post" runat="server">
    <div>
          <div>
                <%
                    var url = "https://www.payzippy.com/payment/api/charging/v1?";
                    foreach (var entry in chargingParams)
                    {
                %>
                <input type="hidden" name="<%=entry.Key %>" value="<%=entry.Value %>" />
                <%
                        url += entry.Key + "=" + entry.Value + "&";
                        // do something with entry.Value or entry.Key
                    }

                %>

                <input type="submit" />
            </div>
            <iframe width="500" height="500" src="<%=url %>"></iframe>
    </div>
    </form>
       <script>
           var x = document.getElementById("__VIEWSTATE");
           x.parentNode.removeChild(x);
    </script>
</body>
</html>

Payzippy use Rest API with support for JSON , we can use it in ASP.net to integrate it. This a very good tutorial on it. Full Source Download
In the same way you can integrate Payzippy payment gateway with Asp.net MVC also.

WHAT OTHERS ARE READING/RELATED TO THIS:

0 comments:

Post a Comment