Coding Cluster - using asp.net, c#, mvc 4, iphone, php, ios, javascript, in asp.net mvc 3 & more
 
Showing posts with label csharp. Show all posts
Showing posts with label csharp. Show all posts

Download: ASP.NET mvc4: Get response from authorize.net after payment (Auto redirect)

Tuesday

                 In this post we will learn how to get response from Authorize.Net credit card payment using ASP.NET MVC4

One of my client projects I need to implement Authorize.net payment gateway. So just implemented using SIM (Server Integration Method). But my client wants, if the payment getting success then shown a custom receipt page and save the transaction details in to our own database. In other case if the payment getting fail then provides repayment option.

In SIM method this is not possible (or not advisable) because we using “x_relay_response” to get response from Authorize.net. Note,this is just relay the url, not redirect to the result page. And URL always points to the https://test.authorize.net/gateway/transact.dll. And the response time also only 10 seconds. If your server not responds within 10 seconds then you get time out error like

“An error occurred while trying to report this transaction to the merchant. An email has been sent to the merchant informing them of the error. The following is a result of the attempt to charge your credit card.”

This error indicates that Authorize.Net is unable to connect to the page that you have specified as your relay response URL. To avoid this kind of errors you need to go with Authorize.net’s another one integration method AIM (Advanced Integration Method)


You can get more about AIM method from here http://www.authorize.net/support/AIM_guide.pdf

Implement  AIM :
First create a sandbox account in Authorize.Net. https://developer.authorize.net/sandbox/. After you registered you will get the API Credentials

API Login ID
Transaction Key
Secret Question

Create you view page as per your requirement. Here I'm taking from Authorize.net default payment screen



Then add that details  into your web.config file


<!-- Payment Authorize.NET - Begins --> <add key="Payment.AuthLoginID" value="XXXXXXXXXX" /> <add key="Payment.AuthTransactionKey" value="XXXXXXXXX" /> <add key="Payment.TestMode" value="true" /> <add key="Payment.URL" value="https://test.authorize.net/gateway/transact.dll" /> <!--<add key="Payment.URL" value="https://secure.authorize.net/gateway/transact.dll" />--> <!-- Payment Authorize.NET - End -->


Then call the following function into your post method


private string AuthorizePayment(PaymentDataModel payDataModel)
        {
            
            string AuthNetVersion = "3.1"; // Contains CCV support
            string AuthNetLoginID = System.Configuration.ConfigurationManager.AppSettings["Payment.AuthLoginID"].ToString();
            string AuthNetTransKey = System.Configuration.ConfigurationManager.AppSettings["Payment.AuthTransactionKey"].ToString();
            string AuthNetMode = System.Configuration.ConfigurationManager.AppSettings["Payment.TestMode"].ToString();

            WebClient objRequest = new WebClient();
            System.Collections.Specialized.NameValueCollection objInf = new System.Collections.Specialized.NameValueCollection(30);
            System.Collections.Specialized.NameValueCollection objRetInf = new System.Collections.Specialized.NameValueCollection(30);
            byte[] objRetBytes;
            string[] objRetVals;
            string retMessage;

            objInf.Add("x_version", AuthNetVersion);
            objInf.Add("x_delim_data", "True");
            objInf.Add("x_login", AuthNetLoginID);
            // objInf.Add("x_password", AuthNetPassword);
            objInf.Add("x_tran_key", AuthNetTransKey);
            objInf.Add("x_relay_response", "False");

            // Switch this to False once you go live
            objInf.Add("x_test_request", AuthNetMode);

            objInf.Add("x_delim_char", ",");
            objInf.Add("x_encap_char", "|");

            // Billing Address
            objInf.Add("x_first_name", payDataModel.FirstName);
            objInf.Add("x_last_name", payDataModel.LastName);
            objInf.Add("x_address", payDataModel.Address);
            objInf.Add("x_city", payDataModel.City);
            objInf.Add("x_state", payDataModel.State);
            objInf.Add("x_zip", payDataModel.ZIP);
            objInf.Add("x_country", payDataModel.Country);
            objInf.Add("x_email", payDataModel.Email);
            objInf.Add("x_fax", payDataModel.Fax);
            objInf.Add("x_phone", payDataModel.Phone);

            objInf.Add("x_description", payDataModel.Description);

            // Card Details
            objInf.Add("x_card_num", payDataModel.CardNumber);
            objInf.Add("x_exp_date", payDataModel.CardExpiryDate);

            // Authorisation code of the card (CCV)
            objInf.Add("x_card_code", payDataModel.CCV);

            objInf.Add("x_method", "CC");
            objInf.Add("x_type", "AUTH_CAPTURE");
            objInf.Add("x_amount", payDataModel.Amount);

            // Currency setting. Check the guide for other supported currencies
            objInf.Add("x_currency_code", "USD");

            try
            {
                // Pure Test Server
                objRequest.BaseAddress = System.Configuration.ConfigurationManager.AppSettings["Payment.URL"].ToString().Trim();

                objRetBytes = objRequest.UploadValues(objRequest.BaseAddress, "POST", objInf);
                objRetVals = System.Text.Encoding.ASCII.GetString(objRetBytes).Split(",".ToCharArray());

                if (objRetVals[0].Trim(char.Parse("|")) == "1")
                {
                    // Returned Authorisation Code
                    ViewBag.AuthNetCode = objRetVals[4].Trim(char.Parse("|"));
                    // Returned Transaction ID
                    ViewBag.AuthNetTransID = objRetVals[6].Trim(char.Parse("|"));
                    return retMessage = "1";
                }
                else
                {
                    // Error!
                    retMessage = objRetVals[3].Trim(char.Parse("|")) + " (" + objRetVals[2].Trim(char.Parse("|")) + ")";

                    if (objRetVals[2].Trim(char.Parse("|")) == "44")
                    {
                        // CCV transaction decline
                        retMessage += "Our Card Code Verification (CCV) returned the following error: ";

                        switch (objRetVals[38].Trim(char.Parse("|")))
                        {
                            case "N":
                                retMessage += "Card Code does not match.";
                                break;
                            case "P":
                                retMessage += "Card Code was not processed.";
                                break;
                            case "S":
                                retMessage += "Card Code should be on card but was not indicated.";
                                break;
                            case "U":
                                retMessage += "Issuer was not certified for Card Code.";
                                break;
                        }
                    }

                    if (objRetVals[2].Trim(char.Parse("|")) == "45")
                    {
                        if (retMessage.Length > 1)
                            retMessage += "<br />n";

                        // AVS transaction decline
                        retMessage += "Our Address Verification System (AVS) returned the following error: ";

                        switch (objRetVals[5].Trim(char.Parse("|")))
                        {
                            case "A":
                                retMessage += " the zip code entered does not match the billing address.";
                                break;
                            case "B":
                                retMessage += " no information was provided for the AVS check.";
                                break;
                            case "E":
                                retMessage += " a general error occurred in the AVS system.";
                                break;
                            case "G":
                                retMessage += " the credit card was issued by a non-US bank.";
                                break;
                            case "N":
                                retMessage += " neither the entered street address nor zip code matches the billing address.";
                                break;
                            case "P":
                                retMessage += " AVS is not applicable for this transaction.";
                                break;
                            case "R":
                                retMessage += " please retry the transaction; the AVS system was unavailable or timed out.";
                                break;
                            case "S":
                                retMessage += " the AVS service is not supported by your credit card issuer.";
                                break;
                            case "U":
                                retMessage += " address information is unavailable for the credit card.";
                                break;
                            case "W":
                                retMessage += " the 9 digit zip code matches, but the street address does not.";
                                break;
                            case "Z":
                                retMessage += " the zip code matches, but the address does not.";
                                break;
                        }
                    }

                    // strError contains the actual error
                    ViewBag.ErrorMsg = retMessage;
                    return retMessage;
                }
            }
            catch (Exception ex)
            {
                return retMessage = ex.Message;
            }
        }
That's it. You can download sample  for get response from authorize.net payment gateway using asp,net mvc project. Please share this post to social media if its is help you and also don't forgot to write some comments. 

C#:Remove Special Characters from Text box in ASP.Net

Thursday

Asp.net C# - Replace all special characters from string:        
                                                                                                 "Input string was not in correct format" more or less all the .net programmers facing this issue at least one time in his carrier. Most of the times this issue caused by special characters mingle in data base query and it may entered via input controls. For example single quotes(') in address like "Peter's Road" in that time the SQL query binding with error due to that single quotes.

                         

In this case we need to replace the  special characters from the  input values that produce this error.  In c# the "String.Replace" method used to replace the string values. Here You can replace the user input's  special characters by using the following c# method.

        public static string ReplaceSpecialCharacters(string strInput)        {
            strInput = strInput.Replace("--", "++");
            strInput = strInput.Replace('&', ',');
            strInput = strInput.Replace("%", "[%]");
            strInput = strInput.Replace('+', ',');
            strInput = strInput.Replace("_", "[_]");
            strInput = strInput.Replace("[", "[[]");
            strInput = strInput.Replace("]", "[]]");
            strInput = strInput.Replace("'", "''");
            return strInput;
         }
Just send your input control value as parameter:
string txtAddress = StringHelper.ReplaceSpecialCharacters(txtAddress.Text.Trim());

Get parameters value from .exe files using ASP.NET C#

Tuesday

                                                                                    In one of my project my clients requirements is scanning a document from local scanner and directly upload into the server through web application. But there is no direct method to access local machine from sever code in dot net, so we need some other solutions to access local .exe (to activate scanner) file from server.

Finally Google answering me "ActiveX0bject". Yes we can run .exe file from server by using ActiveX shell command. Here is the sample code to run client's side .exe file from server  by using JavaScript and ActiveX0bject.

Enable ActiveX controls in IE for run .exe files from local :
                                Before  we enable ActiveX in IE settings with the following simple steps, 
Step -1:  Open IE -->Tools --> Internet Options

Step -2:  Go to security tab choose your zone (Internet (OR) Local)  then click custom Level button

Step-3:  Just set "The Initialize and script ActiveX controls not marked as safe" as "Prompt"

          



 And the following JavaScript code is for run .exe (In my case "ImageScanner.exe")file with parameter session id, display order  and user id.

JavaScript Code 

function runScaningApp(sessId, disorder, userId){

var shell=new ActiveX0bject("WScript.shell");

var res = shell.run('"ImageScanner.exe" "'+ sessId +'" "'+ disorder+'" "'+ userId+'", '1', true);

 if (res == "0"){
   alert ("Your success message");
 }
 else{
   alert ("Sorry! Some error occurred");
 }
}

Finally the following c# code for accessing the .exe's param value. Use this code in your .exe's  .cs file 

public class scanner :system.Windows.Forms.Form, IMessageFilter{

private string sessionId;
private string disorder;
private string userId;

 public Scanner (string[args){
  sessionId = args [0];
  disorder= args [1];
  userId = args [2];
 }
}

Sample code for displaying festival names on calendar control in ASP.Net

Friday

Displaying festival names on calendar control using c# in ASP.Net:

                                          This is an article for showing festival names on a specific date on calendar control. First create a SQL table with following fields HolidayName, HolidayDate. And fulfill the festival name in "HolidayName" field and festival date in "HolidayDate" field.

Then  took one Calendar control on to the page(Calendar.aspx)

Copy and  paste the following code into your Calendar.aspx file

 <form id="form1" runat="server">
<div>

    <asp:calendar ondayrender="Calendar1_DayRender" id="Calendar1" runat="server" backcolor="#FFFFCC" bordercolor="#FFCC66" borderwidth="1px" daynameformat="Shortest" names="Verdana" size="8pt" forecolor="#663399" height="200px" showgridlines="True" width="300px">
        <selecteddaystyle backcolor="#CCCCFF" bold="True">
        <selectorstyle backcolor="#FFCC66">
        <todaydaystyle backcolor="#FFCC66" forecolor="White">
        <othermonthdaystyle forecolor="#CC9966">
        <nextprevstyle size="9pt" forecolor="#FFFFCC">
        <dayheaderstyle backcolor="#FFCC66" bold="True" height="1px">
        <titlestyle backcolor="#990000" bold="True" size="9pt" forecolor="#FFFFCC">
    </titlestyle>

</dayheaderstyle></nextprevstyle></othermonthdaystyle></todaydaystyle></selectorstyle></selecteddaystyle></asp:calendar></div>
</form>
<span style="font-weight: bold; color: rgb(51, 51, 255);font-size:130%;"></span>


Then Copy and  paste the following code into your Calendar.aspx.cs file

using System;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
SqlConnection con;
protected void Page_Load(object sender, EventArgs e)
{
 con = new SqlConnection(ConfigurationManager.ConnectionStrings["YourConnectionString"].ConnectionString);
}
protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{
 CalendarDay day = (CalendarDay)e.Day;
 SqlCommand cmd = new SqlCommand("select HolidayName,HolidayDate from Holidays", con);
 con.Open();
 SqlDataReader dr = cmd.ExecuteReader();

 while (dr.Read())
 {
     if (day.Date.ToString() == dr["HolidayDate"].ToString())
     {
         TableCell cell = (TableCell)e.Cell;
         string s1 = dr["HolidayName"].ToString();
         if (s1 != null)
         {
             cell.BackColor = System.Drawing.Color.LightGray;
             cell.Controls.Add(new LiteralControl("
" + s1));
         }

     }

 }
 con.Close();
}
}
That's all finally build and run your page you will see a calender control with festival name.

ASP.NET MVC 4: create dropdownlist from an enum (Enumeration helper)

Thursday

                                                      In one of my previous article I'm explained how to create  a dropdownlist from a controller class. And in this post I'm going to explaine how to create a dropdownlist from an enum.

First create  a helper ennum class with your dropdown items. Here I'm using three options "Daily","Quickly","Weekly".

using System.Reflection;
using System.ComponentModel;
namespace EnumHtmlHelper.Helper
{
    public static class EnumDropDown
    {
        public static string GetEnumDescription<TEnum>(TEnum value)
        {
            FieldInfo fi = value.GetType().GetField(value.ToString());
            DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.
                   GetCustomAttributes(typeof(DescriptionAttribute), false);
            if ((attributes != null) && (attributes.Length > 0))
                return attributes[0].Description;
            else
                return value.ToString();
        }
        public enum Interval
        {
            [Description("Daily")]
            D = 1,
            [Description("Quick")]
            Q = 2,
            [Description("Weekly")]
            W = 3
        } 
    }    
}

Then add the following code into your (Razor) view to get the dropdown list.

<div class="ddlSmall">
 @{
     var EnumInterval = from Helper.EnumDropDown.Interval n in Enum.GetValues(typeof(Helper.EnumDropDown.Interval))
     elect new SelectListItem
     {
          Value = n.ToString(),
          Text = EnumDropDown.GetEnumDescription(n),
     };
    }
</div>

The output of the above code look like this in page source

<select id="Interval" name="Interval">
         <option value="D">Daily</option>
         <option value="Q">Quick</option>
         <option value="W">Weekly</option>
</select>
The output of the above code look like this in web page


Please share this post with your friends. If it's useful to you. Thanks!.

Source: How to create a drop down list in asp.net mvc4

Bind data to dropdownlist in Asp.net MVC4:

           This is the basic code for creating a page with a dropdown.

The difference between clasic asp.net web forms and mvc is that mvc doesn't have those events like "selectedIndexChanged", because all the controls are pure html controls.

// in view page model


 public class DropdownViewModel
    {
        public SelectList ProductList { get; set; }
    }

// in controller action 

   public ActionResult Create()
        {
            DropdownViewModel model = new DropdownViewModel();

            List<SelectListItem> listItems = new List<SelectListItem>();
            listItems.Add(new SelectListItem()
            {
                Value = "1",
                Text = "Product 1"
            });
            listItems.Add(new SelectListItem()
            {
                Value = "2",
                Text = "Product 2"
            });
            listItems.Add(new SelectListItem()
            {
                Value = "3",
                Text = "Product 3"
            });
            listItems.Add(new SelectListItem()
            {
                Value = "4",
                Text = "Product 4"
            });
            listItems.Add(new SelectListItem()
            {
                Value = "5",
                Text = "Product 5"
            });
            model.ProductList = new SelectList(listItems, "Value", "Text");

            return View(model);
        }

//And finally this is in view page 

@model YourApplication.Models.DropdownViewModel
 @Html.DropDownList("product", Model.ProductList)

And this is the output of the above code


.NET Framework: Csharp(C#) Equivalents of SQL Server 2005 DataTypes

Tuesday

SQL Server Data Types and Their .NET Framework (c#) Equivalents:
                    The following table lists Microsoft SQL Server data types, their equivalents in the common language runtime (CLR) for SQL Server in the System.Data.SqlTypes namespace, and their native CLR equivalents in the Microsoft .NET Framework.




SQL Server data type CLR data type (SQL Server) CLR data type (.NET Framework)
varbinary SqlBytes, SqlBinary Byte[]
binary SqlBytes, SqlBinary Byte[]
varbinary(1), binary(1) SqlBytes, SqlBinary byte, Byte[]
image NoneNone
varchar NoneNone
char NoneNone
nvarchar(1), nchar(1) SqlChars, SqlString Char, String, Char[]
nvarchar SqlChars, SqlString
SQLChars is a better match for
data transfer and access,
and SQLString is a better match for
performing String operations.
String, Char[]
nchar SqlChars, SqlString String, Char[]
text NoneNone
ntext NoneNone
uniqueidentifier SqlGuid Guid
rowversion NoneByte[]
bit SqlBoolean Boolean
tinyint SqlByte Byte
smallint SqlInt16 Int16
int SqlInt32 Int32
bigint SqlInt64 Int64
smallmoney SqlMoney Decimal
money SqlMoney Decimal
numeric SqlDecimal Decimal
decimal SqlDecimal Decimal
real SqlSingle Single
float SqlDouble Double
smalldatetime SqlDateTime DateTime
datetime SqlDateTime DateTime
sql_variant NoneObject
User-defined type(UDT) NoneSame class that is bound to the
user-defined type in the same assembly
or a dependent assembly.
table NoneNone
cursor NoneNone
timestamp NoneNone
xml SqlXml None
For more details please review this link http://msdn.microsoft.com/fr-fr/library/ms131092(v=sql.90).aspx




Create a Foreign Key relationship using Code First Entity Framework and asp.net MVC4

Saturday

Entity Framework Code First: Add a Foreign Key relationship in asp.net MVC 4:

When building an single page application in MVC4 using Entity Framework Code First you might run into the following exception:

Unable to retrieve association information for association 'Models.Product_Parent'. Only models that include foreign key information are supported. See Entity Framework documentation for details on creating models that include foreign key information.

This is due to the way you've defined the relation ships in the dbContext. Lets say me have a dbContextcontaining products which can have child products, you would write the following code:

public class Product
{
    [Key]
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual Product Parent { get; set; }
}
public class ProductContext : DbContext
{
    public DbSet<product> Products { get; set; }
}


This should be enough to let EF know there is a relationship in there, but sadly it's not. We can solving this by following way:

we can create an extra property ParentId give this a ForeighKeyAttribute that links it to the Parent property.

[ForeignKey("Parent")]
public int? ParentId { get; set; }
public virtual Product Parent { get; set; }


 
 
 

RECENT POSTS

Boost

 
Blogger Widgets