<?php class AuthnetARBException extends Exception {} class WP_Invoice_AuthnetARB { private $login; private $transkey; private $params = array(); private $sucess = false; private $error = true; var $xml; var $response; private $resultCode; private $code; private $text; private $subscrId; public function __construct() { $this->url = stripslashes(get_option("wp_invoice_recurring_gateway_url")); $this->login = stripslashes(get_option("wp_invoice_gateway_username")); $this->transkey = stripslashes(get_option("wp_invoice_gateway_tran_key")); } private function process($retries = 3) { $count = 0; while ($count < $retries) { $ch = curl_init(); //required for GoDaddy if(get_option('wp_invoice_using_godaddy') == 'yes') { curl_setopt ($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP); curl_setopt ($ch, CURLOPT_PROXY,"http://proxy.shr.secureserver.net:3128"); curl_setopt ($ch, CURLOPT_TIMEOUT, 120); } //required for GoDaddy curl_setopt($ch, CURLOPT_URL, $this->url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_HTTPHEADER, Array("Content-Type: text/xml")); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $this->xml); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); $this->response = curl_exec($ch); $this->parseResults(); if ($this->resultCode === "Ok") { $this->success = true; $this->error = false; break; } else { $this->success = false; $this->error = true; break; } $count++; } curl_close($ch); } public function createAccount() { $this->xml = "<?xml version='1.0' encoding='utf-8'?> <ARBCreateSubscriptionRequest xmlns='AnetApi/xml/v1/schema/AnetApiSchema.xsd'> <merchantAuthentication> <name>" . $this->login . "</name> <transactionKey>" . $this->transkey . "</transactionKey> </merchantAuthentication> <refId>" . $this->params['refID'] ."</refId> <subscription> <name>". $this->params['subscrName'] ."</name> <paymentSchedule> <interval> <length>". $this->params['interval_length'] ."</length> <unit>". $this->params['interval_unit'] ."</unit> </interval> <startDate>" . $this->params['startDate'] . "</startDate> <totalOccurrences>". $this->params['totalOccurrences'] . "</totalOccurrences> <trialOccurrences>". $this->params['trialOccurrences'] . "</trialOccurrences> </paymentSchedule> <amount>". $this->params['amount'] ."</amount> <trialAmount>" . $this->params['trialAmount'] . "</trialAmount> <payment> <creditCard> <cardNumber>" . $this->params['cardNumber'] . "</cardNumber> <expirationDate>" . $this->params['expirationDate'] . "</expirationDate> </creditCard> </payment> <order> <invoiceNumber>" . $this->params['orderInvoiceNumber'] . "</invoiceNumber> <description>" . $this->params['orderDescription'] . "</description> </order> <customer> <id>" . $this->params['customerId'] . "</id> <email>" . $this->params['customerEmail'] . "</email> <phoneNumber>" . $this->params['customerPhoneNumber'] . "</phoneNumber> <faxNumber>" . $this->params['customerFaxNumber'] . "</faxNumber> </customer> <billTo> <firstName>". $this->params['firstName'] . "</firstName> <lastName>" . $this->params['lastName'] . "</lastName> <company>" . $this->params['company'] . "</company> <address>" . $this->params['address'] . "</address> <city>" . $this->params['city'] . "</city> <state>" . $this->params['state'] . "</state> <zip>" . $this->params['zip'] . "</zip> </billTo> <shipTo> <firstName>". $this->params['shipFirstName'] . "</firstName> <lastName>" . $this->params['shipLastName'] . "</lastName> <company>" . $this->params['shipCompany'] . "</company> <address>" . $this->params['shipAddress'] . "</address> <city>" . $this->params['shipCity'] . "</city> <state>" . $this->params['shipState'] . "</state> <zip>" . $this->params['shipZip'] . "</zip> </shipTo> </subscription> </ARBCreateSubscriptionRequest>"; $this->process(); } public function updateAccount() { $this->xml = "<?xml version='1.0' encoding='utf-8'?> <ARBUpdateSubscriptionRequest xmlns='AnetApi/xml/v1/schema/AnetApiSchema.xsd'> <merchantAuthentication> <name>" . $this->url . "</name> <transactionKey>" . $this->transkey . "</transactionKey> </merchantAuthentication> <refId>" . $this->params['refID'] ."</refId> <subscriptionId>" . $this->params['subscrId'] . "</subscriptionId> <subscription> <name>". $this->params['subscrName'] ."</name> <amount>". $this->params['amount'] ."</amount> <trialAmount>" . $this->params['trialAmount'] . "</trialAmount> <payment> <creditCard> <cardNumber>" . $this->params['cardNumber'] . "</cardNumber> <expirationDate>" . $this->params['expirationDate'] . "</expirationDate> </creditCard> </payment> <billTo> <firstName>". $this->params['firstName'] . "</firstName> <lastName>" . $this->params['lastName'] . "</lastName> <address>" . $this->params['address'] . "</address> <city>" . $this->params['city'] . "</city> <state>" . $this->params['state'] . "</state> <zip>" . $this->params['zip'] . "</zip> <country>" . $this->params['country'] . "</country> </billTo> </subscription> </ARBUpdateSubscriptionRequest>"; $this->process(); } public function deleteAccount() { $this->xml = "<?xml version='1.0' encoding='utf-8'?> <ARBCancelSubscriptionRequest xmlns='AnetApi/xml/v1/schema/AnetApiSchema.xsd'> <merchantAuthentication> <name>" . $this->url . "</name> <transactionKey>" . $this->transkey . "</transactionKey> </merchantAuthentication> <refId>" . $this->params['refID'] ."</refId> <subscriptionId>" . $this->params['subscrId'] . "</subscriptionId> </ARBCancelSubscriptionRequest>"; $this->process(); } private function parseResults() { $this->resultCode = $this->parseXML('<resultCode>', '</resultCode>'); $this->code = $this->parseXML('<code>', '</code>'); $this->text = $this->parseXML('<text>', '</text>'); $this->subscrId = $this->parseXML('<subscriptionId>', '</subscriptionId>'); } private function parseXML($start, $end) { return preg_replace('|^.*?'.$start.'(.*?)'.$end.'.*?$|i', '$1', substr($this->response, 334)); } public function setParameter($field = "", $value = null) { $field = (is_string($field)) ? trim($field) : $field; $value = (is_string($value)) ? trim($value) : $value; if (!is_string($field)) { throw new AuthnetARBException("setParameter() arg 1 must be a string or integer: " . gettype($field) . " given."); } if (!is_string($value) && !is_numeric($value) && !is_bool($value)) { throw new AuthnetARBException("setParameter() arg 2 must be a string, integer, or boolean value: " . gettype($value) . " given."); } if (empty($field)) { throw new AuthnetARBException("setParameter() requires a parameter field to be named."); } if ($value === "") { throw new AuthnetARBException("setParameter() requires a parameter value to be assigned: $field"); } $this->params[$field] = $value; } public function isSuccessful() { return $this->success; } public function isError() { return $this->error; } public function getResponse() { return strip_tags($this->text); } public function getResponseCode() { return $this->code; } public function getSubscriberID() { return $this->subscrId; } } ?>
Application development and sharing our knowledge to developer to developer for helping knowledge to build a effective solution for web architect.
Friday, December 21, 2012
Authorize.net ARB class Automated recurring billing class
Tuesday, December 18, 2012
php image upload class file
<?php
class Uploader
{
private $destinationPath;
private $errorMessage;
private $extensions;
private $allowAll;
private $maxSize;
private $uploadName;
private $seqnence;
public $name='Uploader';
public $useTable =false;
function setDir($path){
$this->destinationPath = $path;
$this->allowAll = false;
}
function allowAllFormats(){
$this->allowAll = true;
}
function setMaxSize($sizeMB){
$this->maxSize = $sizeMB * (1024*1024);
}
function setExtensions($options){
$this->extensions = $options;
}
function setSameFileName(){
$this->sameFileName = true;
$this->sameName = true;
}
function getExtension($string){
$ext = "";
try{
$parts = explode(".",$string);
$ext = strtolower($parts[count($parts)-1]);
}catch(Exception $c){
$ext = "";
}
return $ext;
}
function setMessage($message){
$this->errorMessage = $message;
}
function getMessage(){
return $this->errorMessage;
}
function getUploadName(){
return $this->uploadName;
}
function setSequence($seq){
$this->imageSeq = $seq;
}
function getRandom(){
return strtotime(date('Y-m-d H:i:s')).rand(1111,9999).rand(11,99).rand(111,999);
}
function sameName($true){
$this->sameName = $true;
}
function uploadFile($fileBrowse){
$result = false;
$size = $_FILES[$fileBrowse]["size"];
$name = $_FILES[$fileBrowse]["name"];
$ext = $this->getExtension($name);
if(!is_dir($this->destinationPath)){
$this->setMessage("Destination folder is not a directory ");
}else if(!is_writable($this->destinationPath)){
$this->setMessage("Destination is not writable !");
}else if(empty($name)){
$this->setMessage("File not selected ");
}else if($size>$this->maxSize){
$this->setMessage("Too large file !");
}else if($this->allowAll || (!$this->allowAll && in_array($ext,$this->extensions))){
if($this->sameName==false){
$this->uploadName = $this->imageSeq."-".substr(md5(rand(1111,9999)),0,8).$this->getRandom().rand(1111,1000).rand(99,9999).".".$ext;
}else{
$this->uploadName= $name;
}
if(move_uploaded_file($_FILES[$fileBrowse]["tmp_name"],$this->destinationPath.$this->uploadName)){
$result = true;
}else{
$this->setMessage("Upload failed , try later !");
}
}else{
$this->setMessage("Invalid file format !");
}
return $result;
}
function deleteUploaded(){
unlink($this->destinationPath.$this->uploadName);
}
}
?>
Now upload files using Uploader class. Use following code . Code block is self explanatory .
<?php
$uploader = new Uploader();
$uploader->setDir('uploads/images/');
$uploader->setExtensions(array('jpg','jpeg','png','gif')); //allowed extensions list//
$uploader->setMaxSize(.5); //set max file size to be allowed in MB//
if($uploader->uploadFile('txtFile')){ //txtFile is the filebrowse element name //
$image = $uploader->getUploadName(); //get uploaded file name, renames on upload//
}else{//upload failed
$uploader->getMessage(); //get upload error message
}
?>
class Uploader
{
private $destinationPath;
private $errorMessage;
private $extensions;
private $allowAll;
private $maxSize;
private $uploadName;
private $seqnence;
public $name='Uploader';
public $useTable =false;
function setDir($path){
$this->destinationPath = $path;
$this->allowAll = false;
}
function allowAllFormats(){
$this->allowAll = true;
}
function setMaxSize($sizeMB){
$this->maxSize = $sizeMB * (1024*1024);
}
function setExtensions($options){
$this->extensions = $options;
}
function setSameFileName(){
$this->sameFileName = true;
$this->sameName = true;
}
function getExtension($string){
$ext = "";
try{
$parts = explode(".",$string);
$ext = strtolower($parts[count($parts)-1]);
}catch(Exception $c){
$ext = "";
}
return $ext;
}
function setMessage($message){
$this->errorMessage = $message;
}
function getMessage(){
return $this->errorMessage;
}
function getUploadName(){
return $this->uploadName;
}
function setSequence($seq){
$this->imageSeq = $seq;
}
function getRandom(){
return strtotime(date('Y-m-d H:i:s')).rand(1111,9999).rand(11,99).rand(111,999);
}
function sameName($true){
$this->sameName = $true;
}
function uploadFile($fileBrowse){
$result = false;
$size = $_FILES[$fileBrowse]["size"];
$name = $_FILES[$fileBrowse]["name"];
$ext = $this->getExtension($name);
if(!is_dir($this->destinationPath)){
$this->setMessage("Destination folder is not a directory ");
}else if(!is_writable($this->destinationPath)){
$this->setMessage("Destination is not writable !");
}else if(empty($name)){
$this->setMessage("File not selected ");
}else if($size>$this->maxSize){
$this->setMessage("Too large file !");
}else if($this->allowAll || (!$this->allowAll && in_array($ext,$this->extensions))){
if($this->sameName==false){
$this->uploadName = $this->imageSeq."-".substr(md5(rand(1111,9999)),0,8).$this->getRandom().rand(1111,1000).rand(99,9999).".".$ext;
}else{
$this->uploadName= $name;
}
if(move_uploaded_file($_FILES[$fileBrowse]["tmp_name"],$this->destinationPath.$this->uploadName)){
$result = true;
}else{
$this->setMessage("Upload failed , try later !");
}
}else{
$this->setMessage("Invalid file format !");
}
return $result;
}
function deleteUploaded(){
unlink($this->destinationPath.$this->uploadName);
}
}
?>
Now upload files using Uploader class. Use following code . Code block is self explanatory .
<?php
$uploader = new Uploader();
$uploader->setDir('uploads/images/');
$uploader->setExtensions(array('jpg','jpeg','png','gif')); //allowed extensions list//
$uploader->setMaxSize(.5); //set max file size to be allowed in MB//
if($uploader->uploadFile('txtFile')){ //txtFile is the filebrowse element name //
$image = $uploader->getUploadName(); //get uploaded file name, renames on upload//
}else{//upload failed
$uploader->getMessage(); //get upload error message
}
?>
Subscribe to:
Posts (Atom)