login['username'] = $username; $this->login['password'] = $password; }/*}}}*/ function setOrder($orderid, $orderdescription, $tax, $shipping, $ponumber, $ipaddress, $merchant_defined_field_1, $merchant_defined_field_2, $merchant_defined_field_3, $merchant_defined_field_4, $merchant_defined_field_5 ) {/*{{{*/ $this->order['orderid'] = $orderid; $this->order['orderdescription'] = $orderdescription; $this->order['tax'] = $tax; $this->order['shipping'] = $shipping; $this->order['ponumber'] = $ponumber; $this->order['ipaddress'] = $ipaddress; $this->order['merchant_defined_field_1'] = $merchant_defined_field_1; $this->order['merchant_defined_field_2'] = $merchant_defined_field_2; $this->order['merchant_defined_field_3'] = $merchant_defined_field_3; $this->order['merchant_defined_field_4'] = $merchant_defined_field_4; $this->order['merchant_defined_field_5'] = $merchant_defined_field_5; }/*}}}*/ function setBilling($firstname, $lastname, $company, $address1, $address2, $city, $state, $zip, $country, $phone, $fax, $email, $website) {/*{{{*/ $this->billing['firstname'] = $firstname; $this->billing['lastname'] = $lastname; $this->billing['company'] = $company; $this->billing['address1'] = $address1; $this->billing['address2'] = $address2; $this->billing['city'] = $city; $this->billing['state'] = $state; $this->billing['zip'] = $zip; $this->billing['country'] = $country; $this->billing['phone'] = $phone; $this->billing['fax'] = $fax; $this->billing['email'] = $email; $this->billing['website'] = $website; }/*}}}*/ function setShipping($firstname, $lastname, $company, $address1, $address2, $city, $state, $zip, $country, $email) {/*{{{*/ $this->shipping['firstname'] = $firstname; $this->shipping['lastname'] = $lastname; $this->shipping['company'] = $company; $this->shipping['address1'] = $address1; $this->shipping['address2'] = $address2; $this->shipping['city'] = $city; $this->shipping['state'] = $state; $this->shipping['zip'] = $zip; $this->shipping['country'] = $country; $this->shipping['email'] = $email; }/*}}}*/ // Transaction Functions function doSale($amount, $ccnumber, $ccexp, $cvv="") {/*{{{*/ $query = ""; // Login Information $query .= "username=" . urlencode($this->login['username']) . "&"; $query .= "password=" . urlencode($this->login['password']) . "&"; // Sales Information $query .= "ccnumber=" . urlencode($ccnumber) . "&"; $query .= "ccexp=" . urlencode($ccexp) . "&"; $query .= "amount=" . urlencode(number_format($amount,2,".","")) . "&"; $query .= "cvv=" . urlencode($cvv) . "&"; // Order Information $query .= "ipaddress=" . urlencode($this->order['ipaddress']) . "&"; $query .= "orderid=" . urlencode($this->order['orderid']) . "&"; $query .= "orderdescription=" . urlencode($this->order['orderdescription']) . "&"; $query .= "tax=" . urlencode(number_format($this->order['tax'],2,".","")) . "&"; $query .= "shipping=" . urlencode(number_format($this->order['shipping'],2,".","")) . "&"; $query .= "ponumber=" . urlencode($this->order['ponumber']) . "&"; $query .= "merchant_defined_field_1=" . urlencode($this->order['merchant_defined_field_1']) . "&"; $query .= "merchant_defined_field_2=" . urlencode($this->order['merchant_defined_field_2']) . "&"; $query .= "merchant_defined_field_3=" . urlencode($this->order['merchant_defined_field_3']) . "&"; $query .= "merchant_defined_field_4=" . urlencode($this->order['merchant_defined_field_4']) . "&"; $query .= "merchant_defined_field_5=" . urlencode($this->order['merchant_defined_field_5']) . "&"; // Billing Information $query .= "firstname=" . urlencode($this->billing['firstname']) . "&"; $query .= "lastname=" . urlencode($this->billing['lastname']) . "&"; $query .= "company=" . urlencode($this->billing['company']) . "&"; $query .= "address1=" . urlencode($this->billing['address1']) . "&"; $query .= "address2=" . urlencode($this->billing['address2']) . "&"; $query .= "city=" . urlencode($this->billing['city']) . "&"; $query .= "state=" . urlencode($this->billing['state']) . "&"; $query .= "zip=" . urlencode($this->billing['zip']) . "&"; $query .= "country=" . urlencode($this->billing['country']) . "&"; $query .= "phone=" . urlencode($this->billing['phone']) . "&"; $query .= "fax=" . urlencode($this->billing['fax']) . "&"; $query .= "email=" . urlencode($this->billing['email']) . "&"; $query .= "website=" . urlencode($this->billing['website']) . "&"; // Shipping Information $query .= "shipping_firstname=" . urlencode($this->shipping['firstname']) . "&"; $query .= "shipping_lastname=" . urlencode($this->shipping['lastname']) . "&"; $query .= "shipping_company=" . urlencode($this->shipping['company']) . "&"; $query .= "shipping_address1=" . urlencode($this->shipping['address1']) . "&"; $query .= "shipping_address2=" . urlencode($this->shipping['address2']) . "&"; $query .= "shipping_city=" . urlencode($this->shipping['city']) . "&"; $query .= "shipping_state=" . urlencode($this->shipping['state']) . "&"; $query .= "shipping_zip=" . urlencode($this->shipping['zip']) . "&"; $query .= "shipping_country=" . urlencode($this->shipping['country']) . "&"; $query .= "shipping_email=" . urlencode($this->shipping['email']) . "&"; $query .= "type=sale"; return $this->_doPost($query); }/*}}}*/ function doAuth($amount, $ccnumber, $ccexp, $cvv="") {/*{{{*/ $query = ""; // Login Information $query .= "username=" . urlencode($this->login['username']) . "&"; $query .= "password=" . urlencode($this->login['password']) . "&"; // Sales Information $query .= "ccnumber=" . urlencode($ccnumber) . "&"; $query .= "ccexp=" . urlencode($ccexp) . "&"; $query .= "amount=" . urlencode(number_format($amount,2,".","")) . "&"; $query .= "cvv=" . urlencode($cvv) . "&"; // Order Information $query .= "ipaddress=" . urlencode($this->order['ipaddress']) . "&"; $query .= "orderid=" . urlencode($this->order['orderid']) . "&"; $query .= "orderdescription=" . urlencode($this->order['orderdescription']) . "&"; $query .= "tax=" . urlencode(number_format($this->order['tax'],2,".","")) . "&"; $query .= "shipping=" . urlencode(number_format($this->order['shipping'],2,".","")) . "&"; $query .= "ponumber=" . urlencode($this->order['ponumber']) . "&"; // Billing Information $query .= "firstname=" . urlencode($this->billing['firstname']) . "&"; $query .= "lastname=" . urlencode($this->billing['lastname']) . "&"; $query .= "company=" . urlencode($this->billing['company']) . "&"; $query .= "address1=" . urlencode($this->billing['address1']) . "&"; $query .= "address2=" . urlencode($this->billing['address2']) . "&"; $query .= "city=" . urlencode($this->billing['city']) . "&"; $query .= "state=" . urlencode($this->billing['state']) . "&"; $query .= "zip=" . urlencode($this->billing['zip']) . "&"; $query .= "country=" . urlencode($this->billing['country']) . "&"; $query .= "phone=" . urlencode($this->billing['phone']) . "&"; $query .= "fax=" . urlencode($this->billing['fax']) . "&"; $query .= "email=" . urlencode($this->billing['email']) . "&"; $query .= "website=" . urlencode($this->billing['website']) . "&"; // Shipping Information $query .= "shipping_firstname=" . urlencode($this->shipping['firstname']) . "&"; $query .= "shipping_lastname=" . urlencode($this->shipping['lastname']) . "&"; $query .= "shipping_company=" . urlencode($this->shipping['company']) . "&"; $query .= "shipping_address1=" . urlencode($this->shipping['address1']) . "&"; $query .= "shipping_address2=" . urlencode($this->shipping['address2']) . "&"; $query .= "shipping_city=" . urlencode($this->shipping['city']) . "&"; $query .= "shipping_state=" . urlencode($this->shipping['state']) . "&"; $query .= "shipping_zip=" . urlencode($this->shipping['zip']) . "&"; $query .= "shipping_country=" . urlencode($this->shipping['country']) . "&"; $query .= "shipping_email=" . urlencode($this->shipping['email']) . "&"; $query .= "type=auth"; return $this->_doPost($query); }/*}}}*/ function doCredit($amount, $ccnumber, $ccexp) {/*{{{*/ $query = ""; // Login Information $query .= "username=" . urlencode($this->login['username']) . "&"; $query .= "password=" . urlencode($this->login['password']) . "&"; // Sales Information $query .= "ccnumber=" . urlencode($ccnumber) . "&"; $query .= "ccexp=" . urlencode($ccexp) . "&"; $query .= "amount=" . urlencode(number_format($amount,2,".","")) . "&"; // Order Information $query .= "ipaddress=" . urlencode($this->order['ipaddress']) . "&"; $query .= "orderid=" . urlencode($this->order['orderid']) . "&"; $query .= "orderdescription=" . urlencode($this->order['orderdescription']) . "&"; $query .= "tax=" . urlencode(number_format($this->order['tax'],2,".","")) . "&"; $query .= "shipping=" . urlencode(number_format($this->order['shipping'],2,".","")) . "&"; $query .= "ponumber=" . urlencode($this->order['ponumber']) . "&"; // Billing Information $query .= "firstname=" . urlencode($this->billing['firstname']) . "&"; $query .= "lastname=" . urlencode($this->billing['lastname']) . "&"; $query .= "company=" . urlencode($this->billing['company']) . "&"; $query .= "address1=" . urlencode($this->billing['address1']) . "&"; $query .= "address2=" . urlencode($this->billing['address2']) . "&"; $query .= "city=" . urlencode($this->billing['city']) . "&"; $query .= "state=" . urlencode($this->billing['state']) . "&"; $query .= "zip=" . urlencode($this->billing['zip']) . "&"; $query .= "country=" . urlencode($this->billing['country']) . "&"; $query .= "phone=" . urlencode($this->billing['phone']) . "&"; $query .= "fax=" . urlencode($this->billing['fax']) . "&"; $query .= "email=" . urlencode($this->billing['email']) . "&"; $query .= "website=" . urlencode($this->billing['website']) . "&"; $query .= "type=credit"; return $this->_doPost($query); }/*}}}*/ function doOffline($authorizationcode, $amount, $ccnumber, $ccexp) {/*{{{*/ $query = ""; // Login Information $query .= "username=" . urlencode($this->login['username']) . "&"; $query .= "password=" . urlencode($this->login['password']) . "&"; // Sales Information $query .= "ccnumber=" . urlencode($ccnumber) . "&"; $query .= "ccexp=" . urlencode($ccexp) . "&"; $query .= "amount=" . urlencode(number_format($amount,2,".","")) . "&"; $query .= "authorizationcode=" . urlencode($authorizationcode) . "&"; // Order Information $query .= "ipaddress=" . urlencode($this->order['ipaddress']) . "&"; $query .= "orderid=" . urlencode($this->order['orderid']) . "&"; $query .= "orderdescription=" . urlencode($this->order['orderdescription']) . "&"; $query .= "tax=" . urlencode(number_format($this->order['tax'],2,".","")) . "&"; $query .= "shipping=" . urlencode(number_format($this->order['shipping'],2,".","")) . "&"; $query .= "ponumber=" . urlencode($this->order['ponumber']) . "&"; // Billing Information $query .= "firstname=" . urlencode($this->billing['firstname']) . "&"; $query .= "lastname=" . urlencode($this->billing['lastname']) . "&"; $query .= "company=" . urlencode($this->billing['company']) . "&"; $query .= "address1=" . urlencode($this->billing['address1']) . "&"; $query .= "address2=" . urlencode($this->billing['address2']) . "&"; $query .= "city=" . urlencode($this->billing['city']) . "&"; $query .= "state=" . urlencode($this->billing['state']) . "&"; $query .= "zip=" . urlencode($this->billing['zip']) . "&"; $query .= "country=" . urlencode($this->billing['country']) . "&"; $query .= "phone=" . urlencode($this->billing['phone']) . "&"; $query .= "fax=" . urlencode($this->billing['fax']) . "&"; $query .= "email=" . urlencode($this->billing['email']) . "&"; $query .= "website=" . urlencode($this->billing['website']) . "&"; // Shipping Information $query .= "shipping_firstname=" . urlencode($this->shipping['firstname']) . "&"; $query .= "shipping_lastname=" . urlencode($this->shipping['lastname']) . "&"; $query .= "shipping_company=" . urlencode($this->shipping['company']) . "&"; $query .= "shipping_address1=" . urlencode($this->shipping['address1']) . "&"; $query .= "shipping_address2=" . urlencode($this->shipping['address2']) . "&"; $query .= "shipping_city=" . urlencode($this->shipping['city']) . "&"; $query .= "shipping_state=" . urlencode($this->shipping['state']) . "&"; $query .= "shipping_zip=" . urlencode($this->shipping['zip']) . "&"; $query .= "shipping_country=" . urlencode($this->shipping['country']) . "&"; $query .= "shipping_email=" . urlencode($this->shipping['email']) . "&"; $query .= "type=offline"; return $this->_doPost($query); }/*}}}*/ function doCapture($transactionid, $amount =0) {/*{{{*/ $query = ""; // Login Information $query .= "username=" . urlencode($this->login['username']) . "&"; $query .= "password=" . urlencode($this->login['password']) . "&"; // Transaction Information $query .= "transactionid=" . urlencode($transactionid) . "&"; if ($amount>0) { $query .= "amount=" . urlencode(number_format($amount,2,".","")) . "&"; } $query .= "type=capture"; return $this->_doPost($query); }/*}}}*/ function doVoid($transactionid) {/*{{{*/ $query = ""; // Login Information $query .= "username=" . urlencode($this->login['username']) . "&"; $query .= "password=" . urlencode($this->login['password']) . "&"; // Transaction Information $query .= "transactionid=" . urlencode($transactionid) . "&"; $query .= "type=void"; return $this->_doPost($query); }/*}}}*/ function doRefund($transactionid, $amount = 0) {/*{{{*/ $query = ""; // Login Information $query .= "username=" . urlencode($this->login['username']) . "&"; $query .= "password=" . urlencode($this->login['password']) . "&"; // Transaction Information $query .= "transactionid=" . urlencode($transactionid) . "&"; if ($amount>0) { $query .= "amount=" . urlencode(number_format($amount,2,".","")) . "&"; } $query .= "type=refund"; return $this->_doPost($query); }/*}}}*/ function _doPost($query) {/*{{{*/ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://secure.networkmerchants.com/api/transact.php"); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15); curl_setopt($ch, CURLOPT_TIMEOUT, 15); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($ch, CURLOPT_POSTFIELDS, $query); curl_setopt($ch, CURLOPT_POST, 1); if (!($data = curl_exec($ch))) { return ERROR; } curl_close($ch); unset($ch); //print "\n$data\n"; $data = explode("&",$data); for($i=0;$iresponses[$rdata[0]] = $rdata[1]; } return $this->responses['response']; }/*}}}*/ function getIP(){ $tmp = getenv("HTTP_CLIENT_IP"); if ( $tmp && !strcasecmp( $tmp, "unknown")) return $tmp; $tmp = getenv("HTTP_X_FORWARDED_FOR"); if( $tmp && !strcasecmp( $tmp, "unknown")) return $tmp; // no sense in testing SERVER after this. // $_SERVER[ 'REMOTE_ADDR' ] == gentenv( 'REMOTE_ADDR' ); $tmp = getenv("REMOTE_ADDR"); if($tmp && !strcasecmp($tmp, "unknown")) return $tmp; return("unknown"); } } ?>