/library/ANet/lib/shared/AuthorizeNetTypes.php
https://github.com/ocorso/NickandCampbell_bin · PHP · 323 lines · 229 code · 28 blank · 66 comment · 3 complexity · af3bf4af06cb283cc252bd36064fa10b MD5 · raw file
- <?php
- /**
- * Classes for the various AuthorizeNet data types.
- *
- * @package AuthorizeNet
- * @subpackage AuthorizeNetCIM
- */
- /**
- * A class that contains all fields for a CIM Customer Profile.
- *
- * @package AuthorizeNet
- * @subpackage AuthorizeNetCIM
- */
- class AuthorizeNetCustomer
- {
- public $merchantCustomerId;
- public $description;
- public $email;
- public $paymentProfiles = array();
- public $shipToList = array();
- public $customerProfileId;
-
- }
-
- /**
- * A class that contains all fields for a CIM Address.
- *
- * @package AuthorizeNet
- * @subpackage AuthorizeNetCIM
- */
- class AuthorizeNetAddress
- {
- public $firstName;
- public $lastName;
- public $company;
- public $address;
- public $city;
- public $state;
- public $zip;
- public $country;
- public $phoneNumber;
- public $faxNumber;
- public $customerAddressId;
- }
- /**
- * A class that contains all fields for a CIM Payment Profile.
- *
- * @package AuthorizeNet
- * @subpackage AuthorizeNetCIM
- */
- class AuthorizeNetPaymentProfile
- {
-
- public $customerType;
- public $billTo;
- public $payment;
- public $customerPaymentProfileId;
-
- public function __construct()
- {
- $this->billTo = new AuthorizeNetAddress;
- $this->payment = new AuthorizeNetPayment;
- }
- }
- /**
- * A class that contains all fields for a CIM Payment Type.
- *
- * @package AuthorizeNet
- * @subpackage AuthorizeNetCIM
- */
- class AuthorizeNetPayment
- {
- public $creditCard;
- public $bankAccount;
-
- public function __construct()
- {
- $this->creditCard = new AuthorizeNetCreditCard;
- $this->bankAccount = new AuthorizeNetBankAccount;
- }
- }
- /**
- * A class that contains all fields for a CIM Transaction.
- *
- * @package AuthorizeNet
- * @subpackage AuthorizeNetCIM
- */
- class AuthorizeNetTransaction
- {
- public $amount;
- public $tax;
- public $shipping;
- public $duty;
- public $lineItems = array();
- public $customerProfileId;
- public $customerPaymentProfileId;
- public $customerShippingAddressId;
- public $creditCardNumberMasked;
- public $bankRoutingNumberMasked;
- public $bankAccountNumberMasked;
- public $order;
- public $taxExempt;
- public $recurringBilling;
- public $cardCode;
- public $splitTenderId;
- public $approvalCode;
- public $transId;
-
- public function __construct()
- {
- $this->tax = (object)array();
- $this->tax->amount = "";
- $this->tax->name = "";
- $this->tax->description = "";
-
- $this->shipping = (object)array();
- $this->shipping->amount = "";
- $this->shipping->name = "";
- $this->shipping->description = "";
-
- $this->duty = (object)array();
- $this->duty->amount = "";
- $this->duty->name = "";
- $this->duty->description = "";
-
- // line items
-
- $this->order = (object)array();
- $this->order->invoiceNumber = "";
- $this->order->description = "";
- $this->order->purchaseOrderNumber = "";
- }
-
- }
- /**
- * A class that contains all fields for a CIM Transaction Line Item.
- *
- * @package AuthorizeNet
- * @subpackage AuthorizeNetCIM
- */
- class AuthorizeNetLineItem
- {
- public $itemId;
- public $name;
- public $description;
- public $quantity;
- public $unitPrice;
- public $taxable;
- }
- /**
- * A class that contains all fields for a CIM Credit Card.
- *
- * @package AuthorizeNet
- * @subpackage AuthorizeNetCIM
- */
- class AuthorizeNetCreditCard
- {
- public $cardNumber;
- public $expirationDate;
- public $cardCode;
- }
- /**
- * A class that contains all fields for a CIM Bank Account.
- *
- * @package AuthorizeNet
- * @subpackage AuthorizeNetCIM
- */
- class AuthorizeNetBankAccount
- {
- public $accountType;
- public $routingNumber;
- public $accountNumber;
- public $nameOnAccount;
- public $echeckType;
- public $bankName;
- }
- /**
- * A class that contains all fields for an AuthorizeNet ARB Subscription.
- *
- * @package AuthorizeNet
- * @subpackage AuthorizeNetARB
- */
- class AuthorizeNet_Subscription
- {
- public $name;
- public $intervalLength;
- public $intervalUnit;
- public $startDate;
- public $totalOccurrences;
- public $trialOccurrences;
- public $amount;
- public $trialAmount;
- public $creditCardCardNumber;
- public $creditCardExpirationDate;
- public $creditCardCardCode;
- public $bankAccountAccountType;
- public $bankAccountRoutingNumber;
- public $bankAccountAccountNumber;
- public $bankAccountNameOnAccount;
- public $bankAccountEcheckType;
- public $bankAccountBankName;
- public $orderInvoiceNumber;
- public $orderDescription;
- public $customerId;
- public $customerEmail;
- public $customerPhoneNumber;
- public $customerFaxNumber;
- public $billToFirstName;
- public $billToLastName;
- public $billToCompany;
- public $billToAddress;
- public $billToCity;
- public $billToState;
- public $billToZip;
- public $billToCountry;
- public $shipToFirstName;
- public $shipToLastName;
- public $shipToCompany;
- public $shipToAddress;
- public $shipToCity;
- public $shipToState;
- public $shipToZip;
- public $shipToCountry;
-
- public function getXml()
- {
- $xml = "<subscription>
- <name>{$this->name}</name>
- <paymentSchedule>
- <interval>
- <length>{$this->intervalLength}</length>
- <unit>{$this->intervalUnit}</unit>
- </interval>
- <startDate>{$this->startDate}</startDate>
- <totalOccurrences>{$this->totalOccurrences}</totalOccurrences>
- <trialOccurrences>{$this->trialOccurrences}</trialOccurrences>
- </paymentSchedule>
- <amount>{$this->amount}</amount>
- <trialAmount>{$this->trialAmount}</trialAmount>
- <payment>
- <creditCard>
- <cardNumber>{$this->creditCardCardNumber}</cardNumber>
- <expirationDate>{$this->creditCardExpirationDate}</expirationDate>
- <cardCode>{$this->creditCardCardCode}</cardCode>
- </creditCard>
- <bankAccount>
- <accountType>{$this->bankAccountAccountType}</accountType>
- <routingNumber>{$this->bankAccountRoutingNumber}</routingNumber>
- <accountNumber>{$this->bankAccountAccountNumber}</accountNumber>
- <nameOnAccount>{$this->bankAccountNameOnAccount}</nameOnAccount>
- <echeckType>{$this->bankAccountEcheckType}</echeckType>
- <bankName>{$this->bankAccountBankName}</bankName>
- </bankAccount>
- </payment>
- <order>
- <invoiceNumber>{$this->orderInvoiceNumber}</invoiceNumber>
- <description>{$this->orderDescription}</description>
- </order>
- <customer>
- <id>{$this->customerId}</id>
- <email>{$this->customerEmail}</email>
- <phoneNumber>{$this->customerPhoneNumber}</phoneNumber>
- <faxNumber>{$this->customerFaxNumber}</faxNumber>
- </customer>
- <billTo>
- <firstName>{$this->billToFirstName}</firstName>
- <lastName>{$this->billToLastName}</lastName>
- <company>{$this->billToCompany}</company>
- <address>{$this->billToAddress}</address>
- <city>{$this->billToCity}</city>
- <state>{$this->billToState}</state>
- <zip>{$this->billToZip}</zip>
- <country>{$this->billToCountry}</country>
- </billTo>
- <shipTo>
- <firstName>{$this->shipToFirstName}</firstName>
- <lastName>{$this->shipToLastName}</lastName>
- <company>{$this->shipToCompany}</company>
- <address>{$this->shipToAddress}</address>
- <city>{$this->shipToCity}</city>
- <state>{$this->shipToState}</state>
- <zip>{$this->shipToZip}</zip>
- <country>{$this->shipToCountry}</country>
- </shipTo>
- </subscription>";
-
- $xml_clean = "";
- // Remove any blank child elements
- foreach (preg_split("/(\r?\n)/", $xml) as $key => $line) {
- if (!preg_match('/><\//', $line)) {
- $xml_clean .= $line . "\n";
- }
- }
-
- // Remove any blank parent elements
- $element_removed = 1;
- // Recursively repeat if a change is made
- while ($element_removed) {
- $element_removed = 0;
- if (preg_match('/<[a-z]+>[\r?\n]+\s*<\/[a-z]+>/i', $xml_clean)) {
- $xml_clean = preg_replace('/<[a-z]+>[\r?\n]+\s*<\/[a-z]+>/i', '', $xml_clean);
- $element_removed = 1;
- }
- }
-
- // Remove any blank lines
- // $xml_clean = preg_replace('/\r\n[\s]+\r\n/','',$xml_clean);
- return $xml_clean;
- }
- }