login['username'] = $username; $this->login['password'] = $password; } function setOrder($orderid, $orderdescription, $tax, $shipping, $ponumber, $ipaddress) { $this->order['orderid'] = $orderid; $this->order['orderdescription'] = $orderdescription; $this->order['tax'] = $tax; $this->order['shipping'] = $shipping; $this->order['ponumber'] = $ponumber; $this->order['ipaddress'] = $ipaddress; } 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']) . "&"; // 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, $GLOBALS['vMsiUrl']); 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; $i < count($data); $i++) { $rdata = explode("=", $data[$i]); $this->responses[$rdata[0]] = $rdata[1]; } return $this->responses['response']; } } ?>