PHP – ECHO/Intuit Payment Gateway

The given PHP Class helps you to make a Credit Card Sale Transaction with ECHO/Intuite Payment
Gateway.

Code Example: Download Example
index.php
<?php
include ("echophp.class.php");
$echoPHP = new EchoPHP;
$echoPHP->set_EchoServer("https://nvp.echo-inc.com/nvpapi.asp");
$echoPHP->set_merchant_echo_id('merchant_id'); # use your own id here
$echoPHP->set_merchant_pin('merchant_pin');    # use your onw pin here
$echoPHP->set_transaction_type("EV");		   # "AD","AS","AV","CR","DS","ES","EV","CK","CI","CE","CB","DV","DD","DC"
$echoPHP->set_order_type("S");
$echoPHP->set_billing_ip_address('123 St John');
$echoPHP->set_billing_first_name('Bill');
$echoPHP->set_billing_last_name('M');
$echoPHP->set_billing_address1('123 St John');
$echoPHP->set_billing_city('Escodia');
$echoPHP->set_billing_state('CA');
$echoPHP->set_billing_zip('92030');
$echoPHP->set_billing_country('Us');
$echoPHP->set_billing_phone('111-111-1111');
$echoPHP->set_billing_fax('111-111-1111');
$echoPHP->set_billing_email('abc@example.com');
$echoPHP->set_debug("F");
$echoPHP->set_cc_number('4111111111111111');
$echoPHP->set_grand_total('30.55');
$echoPHP->set_ccexp_month('05');
$echoPHP->set_ccexp_year('2019');
$echoPHP->set_cnp_security('12345');
$echoPHP->set_counter($echoPHP->getRandomCounter());
$echoPHP->Submit();
if ($echoPHP->EchoSuccess){
	//Approved
}
else {
	//Declined
}
?>
echophp.class.php
<?php

    /*==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-*/
    //                                                            //
    //  Name: ECHOPHP v1.5.3  03-12-2002                          //
    //  Description: PHP Class used to interface with             //
    //               ECHO (http://www.echo-inc.com).              //
    //  Requirements: cURL - http://curl.haxx.se/                 //
    //                OpenSSL - http://www.openssl.org            //
    //  Refer to ECHO's documentation for more info               //
    //  https://wwws.echo-inc.com                                 //
    //  03-12-2002 - added ec_transaction_dt                      //
    //  01-16-2002 - fixed ec_account_type (typo)                 //
    //  01-10-2002 - Added ec_account_type and ec_payment_type    //
    //  for Alex 😉                                              //
    //  New to this version are the CyberSource return values:    //
    //	cs_factors, cs_flags, cs_host_score, cs_reference_number, //
    //  cs_response, cs_score, cs_status.                         //
    //  The ECHO gateway now support CyberSource transaction      //
    //  types: CI, CE, CB.                                        //
    //                                                            //
    /*==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-*/

	class EchoPHP {
		var $order_type;
		var $transaction_type;
		var $merchant_echo_id;
		var $merchant_pin;
		var $isp_echo_id;
		var $isp_pin;
		var $authorization;
		var $billing_ip_address;
		var $billing_prefix;
		// as of v1.5 billing_name is no longer being
		// used by ECHO use billing_first_name,
		// billing_last_name, and billing_company_name instead
		var $billing_name;
		var $billing_first_name;
		var $billing_last_name;
		var $billing_company_name;
		var $billing_address1;
		var $billing_address2;
		var $billing_city;
		var $billing_state;
		var $billing_zip;
		var $billing_country;
		var $billing_phone;
		var $billing_fax;
		var $billing_email;
		var $cc_number;
		var $ccexp_month;
		var $ccexp_year;
		var $counter;
		var $debug;
		var $ec_account;
		var $ec_account_type;
		var $ec_payment_type;
		var $ec_address1;
		var $ec_address2;
		var $ec_bank_name;
		var $ec_business_acct;
		var $ec_city;
		var $ec_email;
		var $ec_first_name;
		var $ec_id_country;
		var $ec_id_exp_mm;
		var $ec_id_exp_dd;
		var $ec_id_exp_yy;
		var $ec_id_number;
		var $ec_id_state;
		var $ec_id_type;
		var $ec_last_name;
		var $ec_merchant_ref;
		var $ec_nbds_code;
		var $ec_other_name;
		var $ec_payee;
		var $ec_rt;
		var $ec_serial_number;
		var $ec_state;
		var $ec_transaction_dt;
		var $ec_zip;
		var $grand_total;
		var $merchant_email;
		var $merchant_trace_nbr;
		var $original_amount;
		var $original_trandate_mm;
		var $original_trandate_dd;
		var $original_trandate_yyyy;
		var $original_reference;
		var $order_number;
		var $shipping_flag;
        var $status;
		var $shipping_prefix;
		var $shipping_name;
		var $shipping_address1;
		var $shipping_address2;
		var $shipping_city;
		var $shipping_state;
		var $shipping_zip;
		var $shipping_comments;
		var $shipping_country;
		var $shipping_phone;
		var $shipping_fax;
		var $shipper;
		var $shipper_tracking_nbr;
		var $track1;
		var $track2;
		var $EchoResponse;
		var $echotype1;
		var $echotype2;
		var $echotype3;
		var $openecho;
		var $avs_result;
		var $athorization;
		var $reference;
		var $EchoSuccess;
		var $cnp_recurring;
		var $cnp_security;
		var $security_result;
		var $mac;
		var $cs_factors;
		var $cs_flag;
		var $cs_host_score;
		var $cs_reference_number;
		var $cs_response;
		var $cs_score;
		var $cs_status;

		function Submit() {
			if ($this->EchoServer) {
				$URL = $this->EchoServer;
			} else {
				$URL = "https://wwws.echo-inc.com/scripts/INR200.EXE";

			}

			$this->EchoResponse = "";

			$data = $this->getURLData();
			$ch = curl_init();
			//curl_setopt ($ch, CURLOPT_VERBOSE, 0);
			curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
			curl_setopt ($ch, CURLOPT_URL, $URL);
			curl_setopt ($ch, CURLOPT_POST, 1);
			curl_setopt ($ch, CURLOPT_SSLVERSION, 3);
			curl_setopt ($ch, CURLOPT_POSTFIELDS, $data);
			$this->EchoResponse = curl_exec ($ch);
			curl_close ($ch);

			$startpos = strpos($this->EchoResponse, "<ECHOTYPE1>") + 11;
			$endpos = strpos($this->EchoResponse, "</ECHOTYPE1>");
			$this->echotype1 = substr($this->EchoResponse, $startpos, $endpos - $startpos);

			$startpos = strpos($this->EchoResponse, "<ECHOTYPE2>") + 11;
			$endpos = strpos($this->EchoResponse, "</ECHOTYPE2>");
			$this->echotype2 = substr($this->EchoResponse, $startpos, $endpos - $startpos);

			$startpos = strpos($this->EchoResponse, "<ECHOTYPE3>") + 11;
			$endpos = strpos($this->EchoResponse, "</ECHOTYPE3>");
			$this->echotype3 = substr($this->EchoResponse, $startpos, $endpos - $startpos);

			if (strpos($this->EchoResponse, "<OPENECHO>")) {
				$startpos = strpos($this->EchoResponse, "<OPENECHO>") + 10;
				$endpos = strpos($this->EchoResponse, "</OPENECHO>");
				$this->openecho = substr($this->EchoResponse, $startpos, $endpos - $startpos);
			}

			// Get all the metadata.
			$this->auth_code = $this->GetEchoProp($this->echotype3, "auth_code");
			$this->order_number = $this->GetEchoProp($this->echotype3, "order_number");
			$this->reference = $this->GetEchoProp($this->echotype3, "echo_reference");
            $this->status = $this->GetEchoProp($this->echotype3, "status");
			$this->avs_result = $this->GetEchoProp($this->echotype3, "avs_result");
			$this->security_result = $this->GetEchoProp($this->echotype3, "security_result");
			$this->mac = $this->GetEchoProp($this->echotype3, "mac");
			$this->cs_factors = $this->GetEchoProp($this->echotype3, "cs_factors");
			$this->cs_flag = $this->GetEchoProp($this->echotype3, "cs_flag");
			$this->cs_host_score = $this->GetEchoProp($this->echotype3, "cs_host_score");
			$this->cs_reference_number = $this->GetEchoProp($this->echotype3, "cs_reference_number");
			$this->cs_response = $this->GetEchoProp($this->echotype3, "cs_response");
			$this->cs_score = $this->GetEchoProp($this->echotype3, "cs_score");
			$this->cs_status = $this->GetEchoProp($this->echotype3, "cs_status");

			if ($this->transaction_type == "AD") {
				if ($this->avs_result == "X" or $this->avs_result == "Y") {
					$this->EchoSuccess = true;
				} else {
					$this->EchoSuccess = false;
				}
			} else {
				$this->EchoSuccess = !($this->status == "D");
			}

			if ($this->EchoResponse == "") {
				$this->EchoSuccess = False;
			}

			// make sure we assign an integer to EchoSuccess
			($this->EchoSuccess == true) ? ($this->EchoSuccess = true) : ($this->EchoSuccess = false);

			return $this->EchoSuccess;

		} // function submit

		function getURLData() {
			$s = "";
			$s .=
			"order_type=" 				. $this->order_type .
			"&transaction_type=" 		. $this->transaction_type .
			"&merchant_echo_id=" 		. $this->merchant_echo_id .
			"&merchant_pin=" 			. $this->merchant_pin .
			"&isp_echo_id=" 			. $this->isp_echo_id .
			"&isp_pin=" 				. $this->isp_pin .
			"&authorization=" 			. $this->authorization .
			"&billing_ip_address=" 		. $this->billing_ip_address .
			"&billing_prefix="			. $this->billing_prefix .
			"&billing_name="			. $this->billing_name .
			"&billing_first_name="		. $this->billing_first_name .
			"&billing_last_name="		. $this->billing_last_name .
			"&billing_company_name="	. $this->billing_company_name .
			"&billing_address1="		. $this->billing_address1 .
			"&billing_address2="		. $this->billing_address2 .
			"&billing_city="			. $this->billing_city .
			"&billing_state="			. $this->billing_state .
			"&billing_zip="				. $this->billing_zip .
			"&billing_country="			. $this->billing_country .
			"&billing_phone="			. $this->billing_phone .
			"&billing_fax="				. $this->billing_fax .
			"&billing_email="			. $this->billing_email .
			"&cc_number="				. $this->cc_number .
			"&ccexp_month="				. $this->ccexp_month .
			"&ccexp_year="				. $this->ccexp_year .
			"&counter="					. $this->counter .
			"&debug="					. $this->debug;
			if (($this->transaction_type == "DD") ||
				($this->transaction_type == "DC") ||
				($this->transaction_type == "DV")) {
				$s .=
				"&ec_account="				. $this->ec_account .
				"&ec_account_type="			. $this->ec_account_type .
				"&ec_payment_type="			. $this->ec_payment_type .
				"&ec_address1="				. $this->ec_address1 .
				"&ec_address2="				. $this->ec_address2 .
				"&ec_bank_name="			. $this->ec_bank_name .
				"&ec_business_acct="		. $this->ec_business_acct .
				"&ec_city="					. $this->ec_city .
				"&ec_email="				. $this->ec_email .
				"&ec_first_name="			. $this->ec_first_name .
				"&ec_id_country="			. $this->ec_id_country .
				"&ec_id_exp_mm="			. $this->ec_id_exp_mm .
				"&ec_id_exp_dd="			. $this->ec_id_exp_dd .
				"&ec_id_exp_yy="			. $this->ec_id_exp_yy .
				"&ec_id_number="			. $this->ec_id_number .
				"&ec_id_state="				. $this->ec_id_state .
				"&ec_id_type="				. $this->ec_id_type .
				"&ec_last_name="			. $this->ec_last_name .
				"&ec_merchant_ref="			. $this->ec_merchant_ref .
				"&ec_nbds_code="			. $this->ec_nbds_code .
				"&ec_other_name="			. $this->ec_other_name .
				"&ec_payee="				. $this->ec_payee .
				"&ec_rt="					. $this->ec_rt .
				"&ec_serial_number="		. $this->ec_serial_number .
				"&ec_state="				. $this->ec_state .
				"&ec_transaction_dt="		. $this->ec_transaction_dt .
				"&ec_zip="					. $this->ec_zip;
			}

			$s .=
			"&grand_total="				. $this->grand_total .
			"&merchant_email="			. $this->merchant_email .
			"&merchant_trace_nbr="		. $this->merchant_trace_nbr .
			"&original_amount="			. $this->original_amount .
			"&original_trandate_mm="	. $this->original_trandate_mm .
			"&original_trandate_dd="	. $this->original_trandate_dd .
			"&original_trandate_yyyy="	. $this->original_trandate_yyyy .
			"&original_reference="		. $this->original_reference .
			"&order_number="			. $this->order_number .
			"&shipping_flag="			. $this->shipping_flag .
			"&shipping_prefix="			. $this->shipping_prefix .
			"&shipping_name="			. $this->shipping_name .
			"&shipping_address1="		. $this->shipping_address1 .
			"&shipping_address2="		. $this->shipping_address2 .
			"&shipping_city="			. $this->shipping_city .
			"&shipping_state="			. $this->shipping_state .
			"&shipping_zip="			. $this->shipping_zip .
			"&shipping_comments="		. $this->shipping_comments .
			"&shipping_country="		. $this->shipping_country .
			"&shipping_phone="			. $this->shipping_phone .
			"&shipping_fax="			. $this->shipping_fax .
			"&shipper="					. $this->shipper .
			"&shipper_tracking_nbr="	. $this->shipper_tracking_nbr .
			"&track1="					. $this->track1 .
			"&cnp_security="			. $this->cnp_security .
			"&cnp_recurring="			. $this->cnp_recurring;

			return $s;

		} // end getURLData

		/**********************************************
		All the get/set methods for the echo properties
		***********************************************/
		function set_order_type($value) {
			$this->order_type = $value;
		}

		function get_order_type() {
			return $this->order_type;
		}

		function set_transaction_type($value) {
			$this->transaction_type = $value;
		}

		function get_transaction_type() {
			return $this->transaction_type;
		}

		function set_merchant_echo_id($value) {
			$this->merchant_echo_id = urlencode($value);
		}

		function get_merchant_echo_id() {
			return $this->merchant_echo_id;
		}

		function set_merchant_pin($value) {
			$this->merchant_pin = urlencode($value);
		}

		function get_merchant_pin() {
			return $this->merchant_pin;
		}

		function set_isp_echo_id($value) {
			$this->isp_echo_id = urlencode($value);
		}

		function get_isp_echo_id() {
			return $this->isp_echo_id;
		}

		function set_isp_pin($value) {
			$this->isp_pin = urlencode($value);
		}

		function get_isp_pin() {
			return $this->isp_pin;
		}

		function set_authorization($value) {
			$this->authorization = $value;
		}

		function get_authorization() {
			return $this->authorization;
		}

		function set_billing_ip_address($value) {
			$this->billing_ip_address = $value;
		}

		function get_billing_ip_address() {
			return $this->billing_ip_address;
		}

		function set_billing_prefix($value) {
			$this->billing_prefix = urlencode($value);
		}

		function get_billing_prefix() {
			return $this->billing_prefix;
		}

		function set_billing_name($value) {
			$this->billing_name = urlencode($value);
		}

		function get_billing_name() {
			return $this->billing_name;
		}

		function set_billing_first_name($value) {
			$this->billing_first_name = urlencode($value);
		}

		function get_billing_first_name() {
			return $this->billing_first_name;
		}

		function set_billing_last_name($value) {
			$this->billing_last_name = urlencode($value);
		}

		function get_billing_last_name() {
			return $this->billing_last_name;
		}

		function set_billing_company_name($value) {
			$this->billing_company_name = urlencode($value);
		}

		function get_billing_company_name() {
			return $this->billing_company_name;
		}

		function set_billing_address1($value) {
			$this->billing_address1 = urlencode($value);
		}

		function get_billing_address1() {
			return $this->billing_address1;
		}

		function set_billing_address2($value) {
			$this->billing_address2 = urlencode($value);
		}

		function get_billing_address2() {
			return $this->billing_address2;
		}

		function set_billing_city($value) {
			$this->billing_city = urlencode($value);
		}

		function get_billing_city() {
			return $this->billing_city;
		}

		function set_billing_state($value) {
			$this->billing_state = urlencode($value);
		}

		function get_billing_state() {
			return $this->billing_state;
		}

		function set_billing_zip($value) {
			$this->billing_zip = urlencode($value);
		}

		function get_billing_zip() {
			return $this->billing_zip;
		}

		function set_billing_country($value) {
			$this->billing_country = urlencode($value);
		}

		function get_billing_country() {
			return $this->billing_country;
		}

		function set_billing_phone($value) {
			$this->billing_phone = urlencode($value);
		}

		function get_billing_phone() {
			return $this->billing_phone;
		}

		function set_billing_fax($value) {
			$this->billing_fax = urlencode($value);
		}

		function get_billing_fax() {
			return $this->billing_fax;
		}

		function set_billing_email($value) {
			$this->billing_email = urlencode($value);
		}

		function get_billing_email() {
			return $this->billing_email;
		}

		function set_cc_number($value) {
			$this->cc_number = urlencode($value);
		}

		function get_cc_number() {
			return $this->cc_number;
		}

		function set_ccexp_month($value) {
			$this->ccexp_month = $value;
		}

		function get_ccexp_month() {
			return $this->ccexp_month;
		}

		function set_ccexp_year($value) {
			$this->ccexp_year = $value;
		}

		function get_ccexp_year() {
			return $this->ccexp_year;
		}

		function set_counter($value) {
			$this->counter = $value;
		}

		function get_counter() {
			return $this->counter;
		}

		function set_debug($value) {
			$this->debug = $value;
		}

		function get_debug() {
			return $this->debug;
		}

		function set_ec_account($value) {
			$this->ec_account = urlencode($value);
		}

		function get_ec_account() {
			return $this->ec_account;
		}

		function set_ec_account_type($value) {
			$this->ec_account_type = urlencode($value);
		}

		function get_ec_account_type() {
			return $this->ec_account_type;
		}

		function set_ec_payment_type($value) {
			$this->ec_payment_type = urlencode($value);
		}

		function get_ec_payment_type() {
			return $this->ec_payment_type;
		}

		function set_ec_address1($value) {
			$this->ec_address1 = urlencode($value);
		}

		function get_ec_address1() {
			return $this->ec_address1;
		}

		function set_ec_address2($value) {
			$this->ec_address2 = urlencode($value);
		}

		function get_ec_address2() {
			return $this->ec_address2;
		}

		function set_ec_bank_name($value) {
			$this->ec_bank_name = urlencode($value);
		}

		function get_ec_bank_name() {
			return $this->ec_bank_name;
		}

		function set_ec_business_acct($value) {
			$this->ec_business_acct = urlencode($value);
		}

		function get_ec_business_acct() {
			return $this->ec_business_acct;
		}

		function set_ec_city($value) {
			$this->ec_city = $value;
		}

		function get_ec_city() {
			return $this->ec_city;
		}

		function set_ec_email($value) {
			$this->ec_email = urlencode($value);
		}

		function get_ec_email() {
			return $this->ec_email;
		}

		function set_ec_first_name($value) {
			$this->ec_first_name = urlencode($value);
		}

		function get_ec_first_name() {
			return $this->ec_first_name;
		}

		function set_ec_id_country($value) {
			$this->ec_id_country = urlencode($value);
		}

		function get_ec_id_country() {
			return $this->ec_id_country;
		}

		function set_ec_id_exp_mm($value) {
			$this->ec_id_exp_mm = $value;
		}

		function get_ec_id_exp_mm() {
			return $this->ec_id_exp_mm;
		}

		function set_ec_id_exp_dd($value) {
			$this->ec_id_exp_dd = $value;
		}

		function get_ec_id_exp_dd() {
			return $this->ec_id_exp_dd;
		}

		function set_ec_id_exp_yy($value) {
			$this->ec_id_exp_yy = $value;
		}

		function get_ec_id_exp_yy() {
			return $this->ec_id_exp_yy;
		}

		function set_ec_id_number($value) {
			$this->ec_id_number = urlencode($value);
		}

		function get_ec_id_number() {
			return $this->ec_id_number;
		}

		function set_ec_id_state($value) {
			$this->ec_id_state = urlencode($value);
		}

		function get_ec_id_state() {
			return $this->ec_id_state;
		}

		function set_ec_id_type($value) {
			$this->ec_id_type = $value;
		}

		function get_ec_id_type() {
			return $this->ec_id_type;
		}

		function set_ec_last_name($value) {
			$this->ec_last_name = urlencode($value);
		}

		function get_ec_last_name() {
			return $this->ec_last_name;
		}

		function set_ec_merchant_ref($value) {
			$this->ec_merchant_ref = $value;
		}

		function get_ec_merchant_ref() {
			return $this->ec_merchant_ref;
		}

		function set_ec_nbds_code($value) {
			$this->ec_nbds_code = $value;
		}

		function get_ec_nbds_code() {
			return $this->ec_nbds_code;
		}

		function set_ec_other_name($value) {
			$this->ec_other_name = urlencode($value);
		}

		function get_ec_other_name() {
			return $this->ec_other_name;
		}

		function set_ec_payee($value) {
			$this->ec_payee = urlencode($value);
		}

		function get_ec_payee() {
			return $this->ec_payee;
		}

		function set_ec_rt($value) {
			$this->ec_rt = urlencode($value);
		}

		function get_ec_rt() {
			return $this->ec_rt;
		}

		function set_ec_serial_number($value) {
			$this->ec_serial_number = urlencode($value);
		}

		function get_ec_serial_number() {
			return $this->ec_serial_number;
		}

		function set_ec_state($value) {
			$this->ec_state = urlencode($value);
		}

		function get_ec_state() {
			return $this->ec_state;
		}

		function set_ec_transaction_dt($value) {
			$this->ec_transaction_dt = urlencode($value);
		}

		function get_ec_transaction_dt() {
			return $this->ec_transaction_dt;
		}

		function set_ec_zip($value) {
			$this->ec_zip = urlencode($value);
		}

		function get_ec_zip() {
			return $this->ec_zip;
		}

		function set_grand_total($value) {
			$this->grand_total = sprintf("%01.2f", $value);
		}

		function get_grand_total() {
			return $this->grand_total;
		}

		function set_merchant_email($value) {
			$this->merchant_email = urlencode($value);
		}

		function get_merchant_email() {
			return $this->merchant_email;
		}

		function set_merchant_trace_nbr($value) {
			$this->merchant_trace_nbr = $value;
		}

		function get_merchant_trace_nbr() {
			return $this->merchant_trace_nbr;
		}

		function set_original_amount($value) {
			$this->original_amount = sprintf("%01.2f", $value);
		}

		function get_original_amount() {
			return $this->original_amount;
		}

		function set_original_trandate_mm($value) {
			$this->original_trandate_mm = $value;
		}

		function get_original_trandate_mm() {
			return $this->original_trandate_mm;
		}

		function set_original_trandate_dd($value) {
			$this->original_trandate_dd = $value;
		}

		function get_original_trandate_dd() {
			return $this->original_trandate_dd;
		}

		function set_original_trandate_yyyy($value) {
			$this->original_trandate_yyyy = $value;
		}

		function get_original_trandate_yyyy() {
			return $this->original_trandate_yyyy;
		}

		function set_original_reference($value) {
			$this->original_reference = $value;
		}

		function get_original_reference() {
			return $this->original_reference;
		}

		function set_order_number($value) {
			$this->order_number = $value;
		}

		function get_order_number() {
			return $this->order_number;
		}

		function set_shipping_flag($value) {
			$this->shipping_flag = $value;
		}

		function get_shipping_flag() {
			return $this->shipping_flag;
		}

		function set_shipping_prefix($value) {
			$this->shipping_prefix = urlencode($value);
		}

		function get_shipping_prefix() {
			return $this->shipping_prefix;
		}

		function set_shipping_name($value) {
			$this->shipping_name = urlencode($value);
		}

		function get_shipping_name() {
			return $this->shipping_name;
		}

		function set_shipping_address1($value) {
			$this->shipping_address1 = urlencode($value);
		}

		function get_shipping_address1() {
			return $this->shipping_address1;
		}

		function set_shipping_address2($value) {
			$this->shipping_address2 = urlencode($value);
		}

		function get_shipping_address2() {
			return $this->shipping_address2;
		}

		function set_shipping_city($value) {
			$this->shipping_city = urlencode($value);
		}

		function get_shipping_city() {
			return $this->shipping_city;
		}

		function set_shipping_state($value) {
			$this->shipping_state = urlencode($value);
		}

		function get_shipping_state() {
			return $this->shipping_state;
		}

		function set_shipping_zip($value) {
			$this->shipping_zip = urlencode($value);
		}

		function get_shipping_zip() {
			return $this->shipping_zip;
		}

		function set_shipping_comments($value) {
			$this->shipping_comments = urlencode($value);
		}

		function get_shipping_comments() {
			return $this->shipping_comments;
		}

		function set_shipping_country($value) {
			$this->shipping_country = urlencode($value);
		}

		function get_shipping_country() {
			return $this->shipping_country;
		}

		function set_shipping_phone($value) {
			$this->shipping_phone = urlencode($value);
		}

		function get_shipping_phone() {
			return $this->shipping_phone;
		}

		function set_shipping_fax($value) {
			$this->shipping_fax = urlencode($value);
		}

		function get_shipping_fax() {
			return $this->shipping_fax;
		}

		function set_shipper($value) {
			$this->shipper = urlencode($value);
		}

		function get_shipper() {
			return $this->shipper;
		}

		function set_shipper_tracking_nbr($value) {
			$this->shipper_tracking_nbr = $value;
		}

		function get_shipper_tracking_nbr() {
			return $this->shipper_tracking_nbr;
		}

		function set_track1($value) {
			$this->track1 = urlencode($value);
		}

		function get_track1() {
			return $this->track1;
		}

		function set_track2($value) {
			$this->track2 = urlencode($value);
		}

		function get_track2() {
			return $this->track2;
		}

		function set_cnp_recurring($value) {
			$this->cnp_recurring = $value;
		}

		function set_cnp_security($value) {
			$this->cnp_security = $value;
		}

		/************************************************
						Helper functions
		************************************************/

		function get_version() {
			return "ECHOPHP 1.5.3 03/12/2002";
		}

		function getRandomCounter() {
			mt_srand ((double) microtime() * 1000000);
			return mt_rand();
		}

		function get_EchoResponse() {
			return $this->EchoResponse;
		}

		function get_echotype1() {
			return $this->echotype1;
		}

		function get_echotype2() {
			return $this->echotype2;
		}

		function get_echotype3() {
			return $this->echotype3;
		}

		function get_openecho() {
			return $this->openecho;
		}

		function set_EchoServer($value) {
			$this->EchoServer = $value;
		}

		function get_avs_result() {
			return $this->avs_result;
		}

		function get_reference() {
			return $this->reference;
		}

		function get_EchoSuccess() {
			return $this->EchoSuccess;
		}

		function get_status() {
			return $this->status;
		}

		function get_security_result() {
			return $this->GetEchoProp($this->echotype3, "security_result");
		}

		function get_mac() {
			return $this->GetEchoProp($this->echotype3, "mac");
		}

		function GetEchoProp($haystack, $prop) {
			// prepend garbage in case the property
			// starts at position 0 .. I know, there's a better way
			// to do this, right?
			$haystack = "garbage" . $haystack;

			if  ($start_pos = strpos(strtolower($haystack), "<$prop>")) {
				$start_pos = strpos(strtolower($haystack), "<$prop>") + strlen("<$prop>");
				$end_pos = strpos(strtolower($haystack), "</$prop");
				return substr($haystack, $start_pos, $end_pos - $start_pos);
			} else {
				return "";
			}
		}

	} // end of class
?>

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 *