PHP – Authorize.net Payment Gateway with AIM Method

This sample code is designed to connect to Authorize.net using the AIM method.
For API documentation or additional sample code, please visit: http://developer.authorize.net

Code Example: Download Example

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML lang='en'>
<HEAD>
<TITLE>Sample AIM Implementation</TITLE>
</HEAD>
<BODY>
<P> This sample code is designed to generate a post using Authorize.net's
 Advanced Integration Method (AIM) and display the results of this post to
 the screen. </P>
<HR />
<?PHP

// developer accounts: https://test.authorize.net/gateway/transact.dll
// for real accounts (even in test mode), please make sure that you are
// posting to: https://secure.authorize.net/gateway/transact.dll

$post_url = "https://test.authorize.net/gateway/transact.dll";

$post_values = array(

 // the API Login ID and Transaction Key must be replaced with valid values
 "x_login"            => "API_LOGIN_ID",
 "x_tran_key"        => "TRANSACTION_KEY",

 "x_version"            => "3.1",
 "x_delim_data"        => "TRUE",
 "x_delim_char"        => "|",
 "x_relay_response"    => "FALSE",

 "x_type"            => "AUTH_CAPTURE",
 "x_method"            => "CC",
 "x_card_num"        => "4111111111111111",
 "x_exp_date"        => "0115",

 "x_amount"            => "19.99",
 "x_description"        => "Sample Transaction",

 "x_first_name"        => "John",
 "x_last_name"        => "Mac",
 "x_address"            => "1234 Street",
 "x_state"            => "CA",
 "x_zip"                => "92082"
 // Additional fields can be added here as outlined in the AIM integration
);

// This section takes the input fields and converts them to the proper format
// for an http post.  For example: "x_login=username&x_tran_key=a1B2c3D4"
$post_string = "";
foreach( $post_values as $key => $value )
 { $post_string .= "$key=" . urlencode( $value ) . "&"; }
$post_string = rtrim( $post_string, "& " );

// This sample code uses the CURL library for php to establish a connection,
// submit the post, and record the response.
// If you receive an error, you may want to ensure that you have the curl
// library enabled in your php configuration
$request = curl_init($post_url); // initiate curl object
 curl_setopt($request, CURLOPT_HEADER, 0); // set to 0 to eliminate header info from response
 curl_setopt($request, CURLOPT_RETURNTRANSFER, 1); // Returns response data instead of TRUE(1)
 curl_setopt($request, CURLOPT_POSTFIELDS, $post_string); // use HTTP POST to send form data
 curl_setopt($request, CURLOPT_SSL_VERIFYPEER, FALSE);
 $post_response = curl_exec($request); // execute curl post and store results in $post_response
 // additional options may be required depending upon your server configuration
 // you can find documentation on curl options at http://www.php.net/curl_setopt
curl_close ($request); // close curl object

// This line takes the response and breaks it into an array using the specified delimiting character
$response_array = explode($post_values["x_delim_char"],$post_response);

// The results are output to the screen in the form of an html numbered list.
echo GetTransactionApproval($response_array);
echo "<OL>\n";
foreach ($response_array as $value)
{
 echo "<LI>" . $value . "&nbsp;</LI>\n";
}
echo "</OL>\n";
// individual elements of the array could be accessed to read certain response
// fields.  For example, response_array[0] would return the Response Code,
// response_array[2] would return the Response Reason Code.
// for a list of response fields, please review the AIM Implementation Guide

function GetTransactionApproval($finalarray){
 if($finalarray[0] == 1){
 return "APPROVED";
 } else if($finalarray[0] == 2){
 return "DECLINED::".$finalarray[1]."::".$finalarray[2]."::".$finalarray[3]."::".$finalarray[5];
 } else {
 if(count($finalarray)>1){
 return "ERROR::".$finalarray[1]."::".$finalarray[2]."::".$finalarray[3]."::".$finalarray[5];
 } else {
 return "ERROR::".$response_array;
 }
 }
 }

?>

Post to Twitter Post to Digg Post to Facebook Post to Google Buzz Send Gmail

Leave a Comment

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