summaryrefslogtreecommitdiff
path: root/lib/Business/OnlinePayment/PPIPayMover/CreditCardRequest.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Business/OnlinePayment/PPIPayMover/CreditCardRequest.pm')
-rw-r--r--lib/Business/OnlinePayment/PPIPayMover/CreditCardRequest.pm3182
1 files changed, 3182 insertions, 0 deletions
diff --git a/lib/Business/OnlinePayment/PPIPayMover/CreditCardRequest.pm b/lib/Business/OnlinePayment/PPIPayMover/CreditCardRequest.pm
new file mode 100644
index 0000000..8529489
--- /dev/null
+++ b/lib/Business/OnlinePayment/PPIPayMover/CreditCardRequest.pm
@@ -0,0 +1,3182 @@
+package Business::OnlinePayment::PPIPayMover::CreditCardRequest;
+
+use strict;
+use vars qw(@ISA);
+use Business::OnlinePayment::PPIPayMover::TransactionRequest;
+use Business::OnlinePayment::PPIPayMover::CreditCardResponse;
+use Business::OnlinePayment::PPIPayMover::AdditionalField;
+use Business::OnlinePayment::PPIPayMover::constants;
+use Business::OnlinePayment::PPIPayMover::CountryCodes;
+use Business::OnlinePayment::PPIPayMover::URLEncoder;
+
+@ISA = qw(Business::OnlinePayment::PPIPayMover::TransactionRequest);
+1;
+
+#default constructor
+sub new {
+ my $class = shift;
+ my $self = $class->SUPER::new();
+
+# Misc identification fields
+ $self->{strCartridgeType} = ""; # v1.5
+ $self->{strEcommerceIndicator} = ""; # v1.5
+
+# credit card fields.
+
+ $self->{strCreditCardNumber} = "";
+ $self->{strCreditCardVerificationNumber} = ""; # v1.5
+ $self->{strAVSCode} = ""; # v1.5
+ $self->{strExpireMonth} = "";
+ $self->{strExpireYear} = "";
+ $self->{strChargeType} = "";
+ $self->{strChargeTotal} = "";
+ $self->{dChargeTotal} = -1.0;
+ $self->{strCardBrand} = "";
+ $self->{strCurrency} = "";
+ $self->{strOrderId} = "";
+ $self->{strBankApprovalCode} = ""; # Required if chargetype is FORCE_AUTH or FORCE_SALE
+ $self->{strDuplicateCheck} = ""; #v1.7.1
+ $self->{strReferenceId} = ""; # Required if chargetype is CAPTURE, QUERY_CREDIT, QUERY_PAYMENT or ADJUSTMENT
+ $self->{strOrderDescription} = "";
+ $self->{strOrderUserId} = "";
+ $self->{strTaxAmount} = "";
+ $self->{dTaxAmount} = -1.0;
+ $self->{strShippingCharge} = "";
+ $self->{dShippingCharge} = -1.0;
+
+# Billing info fields ...
+
+ $self->{strBillFirstName} = "";
+ $self->{strBillLastName} = "";
+ $self->{strBillMiddleName} = "";
+ $self->{strBillCustomerTitle} = "";
+ $self->{strBillCompany} = "";
+ $self->{strBillAddressOne} = "";
+ $self->{strBillAddressTwo} = "";
+ $self->{strBillCity} = "";
+ $self->{strBillStateOrProvince} = "";
+ $self->{strBillPostalCode} = "";
+ $self->{strBillCountryCode} = "";
+ $self->{strBillEmail} = "";
+ $self->{strBillPhone} = "";
+ $self->{strBillFax} = "";
+ $self->{strBillNote} = "";
+
+# Shipping info fields default values.
+
+ $self->{strShipFirstName} = "";
+ $self->{strShipLastName} = "";
+ $self->{strShipMiddleName} = "";
+ $self->{strShipCustomerTitle} = "";
+ $self->{strShipCompany} = "";
+ $self->{strShipAddressOne} = "";
+ $self->{strShipAddressTwo} = "";
+ $self->{strShipCity} = "";
+ $self->{strShipStateOrProvince} = "";
+ $self->{strShipPostalCode} = "";
+ $self->{strShipCountryCode} = "";
+ $self->{strShipEmail} = "";
+ $self->{strShipPhone} = "";
+ $self->{strShipFax} = "";
+ $self->{strShipNote} = "";
+
+# Authentication fields
+ $self->{strAuthenticationTransactionId} = "";
+ $self->{strAuthenticationPayload} = "";
+ $self->{boolSuccessOnAuthenticationInconclusive} = "";
+
+
+# Others
+ $self->{strBuyerCode} = "";
+ $self->{strCAVV} = "";
+ $self->{strCustomerIPAddress} = "";
+ $self->{strPurchaseOrderNumber} = "";
+ $self->{dStateTax} = -1.0;
+ $self->{strTrack1} = "";
+ $self->{strTrack2} = "";
+ $self->{strXID} = "";
+ $self->{boolTaxExempt} = "";
+ $self->{strInvoiceNumber} = "";
+
+# Industry Fields
+ $self->{strIndustry} = "";
+ $self->{strFolioNumber} = "";
+
+ $self->{boolChargeTotalIncludesRestaurant} = "";
+ $self->{boolChargeTotalIncludesGiftshop} = "";
+ $self->{boolChargeTotalIncludesMinibar} = "";
+ $self->{boolChargeTotalIncludesPhone} = "";
+ $self->{boolChargeTotalIncludesLaundry} = "";
+ $self->{boolChargeTotalIncludesOther} = "";
+
+ $self->{dServiceRate} = -1.0;
+ $self->{strServiceRate} = "";
+ $self->{intServiceEndDay} = "";
+ $self->{intServiceEndMonth} = "";
+ $self->{intServiceEndYear} = "";
+ $self->{intServiceStartDay} = "";
+ $self->{intServiceStartMonth} = "";
+ $self->{intServiceStartYear} = "";
+ $self->{boolServiceNoShow} = "";
+
+ return $self;
+}
+
+
+
+#**
+# * Set the value of the cartridge type.
+# * <p>
+# */
+sub SetCartridgeType {
+ my $self = shift;
+ my $cartType = shift; # take one string arguement to get cartridgeType
+ if (!defined($cartType)) {
+ $self->{strError} = "Cartridge type is undefined.";
+ return CCR_ERROR;
+ }
+ if ($cartType eq ""){
+ $self->{strError} = "Invalid cartridge type.";
+ return CCR_ERROR;
+ }
+ $self->{strCartridgeType} = $cartType;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set the value of the Ecommerce Indicator number.
+# * <p>
+# */
+sub SetEcommerceIndicator {
+ my $self = shift;
+ my $ecommerceIndicator = shift; # take one string arguement to get EcommerceIndicator
+ if (!defined($ecommerceIndicator)) {
+ $self->{strError} = "Ecommerce indicator is undefined.";
+ return CCR_ERROR;
+ }
+ if ($ecommerceIndicator eq ""){
+ $self->{strError} = "Invalid ecommerce indicator.";
+ return CCR_ERROR;
+ }
+ $self->{strEcommerceIndicator} = $ecommerceIndicator;
+ return CCR_NO_ERROR;
+}
+
+
+
+
+#**
+# * Set the value of the credit card number.
+# * <p>
+# * @param creditCardNumber must be numeric characters
+# * @exception TransactionProtocolException thrown if creditCardNumber is non-numeric or the empty String.
+# */
+sub SetCreditCardNumber {
+ my $self = shift;
+ my $ccNo = shift; # take one string arguement to get creditcard number
+ if (!defined($ccNo)) {
+ $self->{strError} = "Credit card number is undefined.";
+ return CCR_ERROR;
+ }
+ if ($ccNo eq ""){
+ $self->{strError} = "Invalid credit card number.";
+ return CCR_ERROR;
+ }
+ if ($ccNo =~ /\D/) {
+ $self->{strError} = "Non-numeric credit card number.";
+ return CCR_ERROR;
+ }
+ if ( ( length $ccNo < 13 ) || ( length $ccNo > 19 ) ) {
+ $self->{strError} = "Invalid credit card number length.";
+ return CCR_ERROR;
+ }
+ $self->{strCreditCardNumber} = $ccNo;
+ return CCR_NO_ERROR;
+}
+
+#**
+# * Set the value of the credit card verification number.
+# * <p>
+# * @param creditCardVerificationNumber must be numeric characters
+# */
+sub SetCreditCardVerificationNumber {
+ my $self = shift;
+ my $ccVerNo = shift; # take one string arguement to get creditCardVerification number
+ if (!defined($ccVerNo)) {
+ $self->{strError} = "Credit card verification number is undefined.";
+ return CCR_ERROR;
+ }
+ if ($ccVerNo eq ""){
+ $self->{strError} = "Invalid credit card verification number.";
+ return CCR_ERROR;
+ }
+ if ($ccVerNo =~ /\D/) {
+ $self->{strError} = "Non-numeric credit card verification number.";
+ return CCR_ERROR;
+ }
+ $self->{strCreditCardVerificationNumber} = $ccVerNo;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set the value of the credit card expiration month.
+# * <p>
+# * @param expireMonth Must be an integer in ASCII characters in the range "1" to "12, inclusive.
+# * @exception TransactionProtocolException thrown if expireMonth is not >= 1 and <= 12.
+# */
+sub SetExpireMonth
+{
+ my $self = shift;
+ my $expireMonth = shift; #take one string arguement
+ if (!defined($expireMonth)) {
+ $self->{strError} = "Expire month is undefined.";
+ return CCR_ERROR;
+ }
+ if ($expireMonth eq ""){
+ $self->{strError} = "Invalid expire month.";
+ return CCR_ERROR;
+ }
+
+ if ($expireMonth =~ /\D/) {
+ $self->{strError} = "Invalid credit expire month (non-digit).";
+ return CCR_ERROR;
+ }
+
+ my $iExpireMonth = 1 * $expireMonth;
+ if ($iExpireMonth < 1 || $iExpireMonth > 12) {
+ $self->{strError} .= "Invalid expire month (not 1 through 12).";
+ return CCR_ERROR;
+ }
+ $self->{strExpireMonth} = $expireMonth;
+
+ return 1;
+}
+
+
+#**
+# * Set the value of the credit card expiration year.
+# * <p>
+# * @param expireYear Must be a four-digit integer in ASCII characters. E.g. "2001".
+# * @exception TransactionProtocolException thrown if expireYear is not a four digit year.
+#
+sub SetExpireYear
+{
+ my $self = shift;
+ my $expireYear = shift; # take a string arguement
+ if (!defined($expireYear)) {
+ $self->{strError} = "Expire year is undefined.";
+ return CCR_ERROR;
+ }
+ if (length($expireYear) != 4) {
+ $self->{strError} = "Invalid expire year, must be 4 numeric characters.";
+ return CCR_ERROR;
+ }
+ if($expireYear =~ /\D/){
+ $self->{strError} = "Invalid credit expire year (non-numeric).";
+ return CCR_ERROR;
+ }
+
+ $self->{strExpireYear} = $expireYear;
+ return CCR_NO_ERROR;
+}
+#**
+# * Set the charge type.
+# * <p>
+# * @param chargeType Must be one of the following constants: SALE, AUTH, CAPTURE, FORCE_AUTH,
+# * FORCE_SALE, VOID, QUERY_CREDIT, QUERY_PAYMENT, ADJUSTMENT or CREDIT.
+# * @exception TransactionProtocolException thrown if chargeType is not a valid charge type
+# * defined by this class.
+# */
+sub SetChargeType
+{
+ my $self = shift;
+ my $chargeType = shift; # take one string arguement
+
+ if (!defined($chargeType)) {
+ $self->{strError} = "Charge type is undefined.";
+ return CCR_ERROR;
+ }
+ if ($chargeType eq "") {
+ $self->{strError} = "Invalid charge type";
+ return CCR_ERROR;
+ }
+
+ if (!($chargeType eq SALE || $chargeType eq AUTH ||
+ $chargeType eq CAPTURE || $chargeType eq VOID ||
+ $chargeType eq FORCE_AUTH || $chargeType eq FORCE_SALE ||
+ $chargeType eq QUERY_PAYMENT || $chargeType eq QUERY_CREDIT ||
+ $chargeType eq CLOSE_ORDER || $chargeType eq CANCEL_ORDER ||
+ $chargeType eq VOID_AUTH || $chargeType eq VOID_CAPTURE ||
+ $chargeType eq VOID_CREDIT || $chargeType eq CREATE_ORDER ||
+ $chargeType eq CREDIT || $chargeType eq ADJUSTMENT)) {
+ $self->{strError} = "Invalid charge type.";
+ return CCR_ERROR;
+ }
+ $self->{strChargeType} = $chargeType;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set the transaction amount using a floating point value. Other amounts, such
+# * as tax amount or shipping charges, do not affect the charge total
+# * <p>
+# * @param chargeTotal Must be a positive floating-point number.
+# * E.g. Use <i>12.34</i> to represent $12.34.
+# * @exception TransactionProtocolException thrown if chargeTotal less than zero
+# */
+sub SetChargeTotal
+{
+ my $self = shift;
+ my $chargeTotal = shift; # take either one string or float arguement
+
+ if (!defined($chargeTotal)) {
+ $self->{strError} = "Charge total is undefined.";
+ return CCR_ERROR;
+ }
+
+ if ( $chargeTotal !~ /^(\d+\.?\d*|\.\d+)$/ ) {
+ $self->{strError} = "Non-numeric charge.";
+ return CCR_ERROR;
+ }
+
+ my $dChargeTotal = $chargeTotal * 1.0;
+ if ($dChargeTotal < 0){
+ $self->{strError} = "Charge total cannot be negative.";
+ return CCR_ERROR;
+ }
+
+ $self->{dChargeTotal} = $dChargeTotal;
+ $self->{strChargeTotal} = "".$chargeTotal;
+
+ return CCR_NO_ERROR;
+}
+
+
+
+
+#**
+# * Set the transaction credit card brand.
+# * <p>
+# * @param cardBrand Must be one of the following constants:
+# * VISA, MASTERCARD, AMERICAN_EXPRESS, DISCOVER, NOVA, AMEX, DINERS, EUROCARD,
+# * CARD_BRAND_1, CARD_BRAND_2, CARD_BRAND_3, CARD_BRAND_4, CARD_BRAND_5, or CARD_BRAND_6.
+# * @exception TransactionProtocolException thrown if cardBrand not one of the card brand constants
+# * defined by this class.
+# */
+sub SetCardBrand
+{
+ my $self = shift;
+ my $CardBrand = shift; # take a string arguement
+
+ if (!defined($CardBrand) || $CardBrand eq ""){
+ $self->{strError} = "Blank or undefined card type.";
+ return CCR_ERROR;
+ }
+
+ if ($CardBrand ne VISA &&
+ $CardBrand ne MASTERCARD &&
+ $CardBrand ne AMERICAN_EXPRESS &&
+ $CardBrand ne DISCOVER &&
+ $CardBrand ne NOVA &&
+ $CardBrand ne AMEX &&
+ $CardBrand ne DINERS &&
+ $CardBrand ne EUROCARD &&
+ $CardBrand ne CARD_BRAND_1 &&
+ $CardBrand ne CARD_BRAND_2 &&
+ $CardBrand ne CARD_BRAND_3 &&
+ $CardBrand ne CARD_BRAND_4 &&
+ $CardBrand ne CARD_BRAND_5 &&
+ $CardBrand ne CARD_BRAND_6) {
+ $self->{strError} = "Invalid card brand:$CardBrand.";
+ return CCR_ERROR;
+ }
+ $self->{strCardBrand} = $CardBrand;
+ return CCR_NO_ERROR;
+}
+
+#**
+# * Set the order ID.
+# */
+sub SetOrderId
+{
+ my $self = shift;
+ my $OrderId = shift; # take a string arguement
+ if (!defined($OrderId)) {
+ $self->{strError} = "Order id is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strOrderId} = $OrderId;
+ return CCR_NO_ERROR;
+}
+
+#**
+# * Set the capture reference ID (used in tracking captures / deposits).
+# * This field is required if chargeType is CAPTURE.
+# */
+sub SetCaptureReferenceId
+{
+ my $self = shift;
+ my $CaptureReferenceId = shift; #take a string arguement
+ if (!defined($CaptureReferenceId)){
+ $self->{strError} = "Capture reference id is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strReferenceId} = $CaptureReferenceId;
+ return CCR_NO_ERROR;
+}
+
+#
+# Set Reference Id
+# This should be used instead of SetCaptureReferenceId
+# Added in v1.6
+#
+sub SetReferenceId
+{
+ my $self = shift;
+ my $ReferenceId = shift; #take a string arguement
+ if (!defined($ReferenceId)){
+ $self->{strError} = "Reference id is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strReferenceId} = $ReferenceId;
+ return CCR_NO_ERROR;
+}
+
+#**
+# * Set a comment describing the order.
+# */
+sub SetOrderDescription
+{
+ my $self = shift;
+ my $OrderDescription = shift; #take a string arguement
+ if (!defined($OrderDescription)) {
+ $self->{strError} = "Order description is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strOrderDescription} = $OrderDescription;
+ return CCR_NO_ERROR;
+}
+
+
+#/**
+# * Set the order's user id. The order user id is an identifier
+# * for a merchant's customer. It is not required, but may provide
+# * increased searching functionality in the merchant support center.
+# */
+sub SetOrderUserId
+{
+ my $self = shift;
+ my $OrderUserId = shift; # take a string arguement
+ if (!defined($OrderUserId)) {
+ $self->{strError} = "Order user ID is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strOrderUserId} = $OrderUserId;
+ return CCR_NO_ERROR;
+}
+
+#**
+# * Set the bank approval code (used in force sale and force auth).
+# * This field is required if chargeType is FORCE_AUTH or FORCE_SALE.
+# */
+sub SetBankApprovalCode
+{
+ my $self = shift;
+ my $BankApprovalCode = shift; #take a string arguement
+ if (!defined($BankApprovalCode)){
+ $self->{strError} = "Bank Approval Code is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strBankApprovalCode} = $BankApprovalCode;
+ return CCR_NO_ERROR;
+}
+
+#**
+# * Set the duplicate check.
+# * Possible values are CHECK, OVERRIDE, NO_CHECK
+# */
+sub SetDuplicateCheck
+{
+ my $self = shift;
+ my $DuplicateCheck = shift; #take a string arguement
+ if (!defined($DuplicateCheck)){
+ $self->{strError} = "Duplicate Check is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strDuplicateCheck} = $DuplicateCheck;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set the tax amount using a floating point value.
+# * The tax amount is the amount of the chargeTotal that is tax.
+# * <p>
+# * @param taxAmount Must be a positive floating-point number.
+# * E.g. Use <i>11.55</i> to represent $11.55.
+# * @exception TransactionProtocolException thrown if taxAmount less than zero
+# */
+sub SetTaxAmount
+{
+ my $self = shift;
+ my $TaxAmount = shift; # take a string or an integer arguement
+
+ if (!defined($TaxAmount)) {
+ $self->{strError} = "Tax amount is undefined.";
+ return CCR_ERROR;
+ }
+ if ( $TaxAmount !~ /^(\d+\.?\d*|\.\d+)$/ ) {
+ $self->{strError} = "Non-numeric tax amount.";
+ return CCR_ERROR;
+ }
+
+ my $dTaxAmount = $TaxAmount * 1.0;
+ if ($dTaxAmount < 0) {
+ $self->{strError} = "Tax amount cannot be negative.";
+ return CCR_ERROR;
+ }
+
+ $self->{dTaxAmount} = $dTaxAmount;
+ $self->{strTaxAmount} = "".$TaxAmount;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set the shipping charge using a floating point value.
+# * The shipping charge is the amount of the chargeTotal that is shipping charges.
+# * <p>
+# * @param shippingCharge Must be a positive floating-point number.
+# * E.g. Use <i>11.55</i> to represent $11.55.
+# * @exception TransactionProtocolException thrown if shippingCharge less than zero
+# */
+sub SetShippingCharge
+{
+ my $self = shift;
+ my $ShippingCharge = shift; # take a string or an integer arguement
+
+ if (!defined($ShippingCharge)) {
+ $self->{strError} = "Shipping charge is undefined.";
+ return CCR_ERROR;
+ }
+ if ( $ShippingCharge !~ /^(\d+\.?\d*|\.\d+)$/ ) {
+ $self->{strError} = "Non-numeric shipping charge.";
+ return CCR_ERROR;
+ }
+
+ my $dShippingCharge = $ShippingCharge * 1.0;
+ if ($dShippingCharge < 0.00) {
+ $self->{strError} = "Shipping charge cannot be negative.";
+ return CCR_ERROR;
+ }
+
+ $self->{dShippingCharge} = $dShippingCharge;
+ $self->{strShippingCharge} = "".$ShippingCharge;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set the first name of the customer being billed.
+# */
+sub SetBillFirstName
+{
+ my $self = shift;
+ my $BillFirstName = shift; # take a string arguement
+ if (!defined($BillFirstName)) {
+ $self->{strError} = "Bill first name is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strBillFirstName} = $BillFirstName;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set the last name of the customer being billed.
+# */
+sub SetBillLastName
+{
+ my $self = shift;
+ my $BillLastName = shift; # take a string arguement
+ if (!defined($BillLastName)) {
+ $self->{strError} = "Bill last name is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strBillLastName} = $BillLastName;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set the middle name of the customer being billed.
+#
+sub SetBillMiddleName
+{
+ my $self = shift;
+ my $BillMiddleName = shift; # take a string arguement
+ if (!defined($BillMiddleName)) {
+ $self->{strError} = "Bill middle name is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strBillMiddleName} = $BillMiddleName;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set the title of the customer being billed, such as "Mr." or "Sales Manager".
+#/
+sub SetBillCustomerTitle
+{
+ my $self = shift;
+ my $BillCustomerTitle = shift; # take a string arguement
+ if (!defined($BillCustomerTitle)) {
+ $self->{strError} = "Bill customer title is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strBillCustomerTitle} = $BillCustomerTitle;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set the name of the company of the customer being billed.
+# */
+sub SetBillCompany
+{
+ my $self = shift;
+ my $BillCompany = shift; # take a string arguement
+ if (!defined($BillCompany)) {
+ $self->{strError} = "Bill company is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strBillCompany} = $BillCompany;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set the first part of the address of the customer being billed,
+# * such as "1455 Cedar Springs Drive".
+# */
+sub SetBillAddressOne
+{
+ my $self = shift;
+ my $BillAddressOne = shift; # take a string arguement
+ if (!defined($BillAddressOne)) {
+ $self->{strError} = "Bill address one is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strBillAddressOne} = $BillAddressOne;
+ return CCR_NO_ERROR;
+}
+
+
+#*
+# * Set the second part of the address of the customer being billed,
+# * such as "Suite 100".
+# */
+sub SetBillAddressTwo
+{
+ my $self = shift;
+ my $BillAddressTwo = shift; # take a string arguement
+ if (!defined($BillAddressTwo)) {
+ $self->{strError} = "Bill address two is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strBillAddressTwo} = $BillAddressTwo;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set the city of the customer being billed.
+# */
+sub SetBillCity
+{
+ my $self = shift;
+ my $BillCity = shift; # take a string arguement
+ if (!defined($BillCity)) {
+ $self->{strError} = "Bill city is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strBillCity} = $BillCity;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set the state or province of the customer being billed.
+# */
+sub SetBillStateOrProvince
+{
+ my $self = shift;
+ my $BillStateOrProvince = shift; # take a string arguement
+ if (!defined($BillStateOrProvince)) {
+ $self->{strError} = "Bill state or province is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strBillStateOrProvince} = $BillStateOrProvince;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set the postal code (or zip code) of the customer being billed.
+# */
+sub SetBillPostalCode
+{
+ my $self = shift;
+ my $BillPostalCode = shift; # take a string arguement
+ if (!defined($BillPostalCode)) {
+ $self->{strError} = "Bill postal code is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strBillPostalCode} = $BillPostalCode;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * @param billCountryCode The alphabetic country code of the billing address.
+# * Must be a valid country code from ISO-3166. E.g. "CA" or "US".
+# * <p>
+# * @see com.paygateway.CountryCodes
+# * @exception TransactionProtocolException thrown if an invalid country code is passed in
+# */
+sub SetBillCountryCode
+{
+ my $self = shift;
+ my $BillCountryCode = shift; # take a string arguement (either country code or country name)
+
+ if (!defined($BillCountryCode)) {
+ $self->{strError} = "Country code is undefined.";
+ return CCR_ERROR;
+ }
+ my $CountryCode = getCCodeFromCName($BillCountryCode);
+ if (isValidCountryCode($BillCountryCode)) {
+ $self->{strBillCountryCode} = $BillCountryCode;
+ return CCR_NO_ERROR;
+ }
+ elsif (defined($CountryCode)) {
+ $self->{strBillCountryCode} = $CountryCode;
+ return CCR_NO_ERROR;
+ }
+ else {
+ $self->{strError} = "Invalid country code for billing address.";
+ return CCR_ERROR;
+ }
+}
+
+
+#**
+# * Set the email address of the customer being billed.
+# */
+sub SetBillEmail
+{
+ my $self = shift;
+ my $BillEmail = shift;
+ if (!defined($BillEmail)) {
+ $self->{strError} = "Bill email is undefined.";
+ return CCR_ERROR;
+ }
+ if ($BillEmail !~ /.+@.+\..+/ ) {
+ $self->{strError} = "Invalid bill email format.";
+ return CCR_ERROR;
+ }
+ $self->{strBillEmail} = $BillEmail;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+#* Set the phone number
+#*/
+sub SetBillPhone
+{
+ my $self = shift;
+ my $BillPhone = shift; # take a string arguement
+ if (!defined($BillPhone)) {
+ $self->{strError} = "Bill phone is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strBillPhone} = $BillPhone;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set the facsimile number of the customer being billed.
+# */
+sub SetBillFax
+{
+ my $self = shift;
+ my $BillFax = shift;
+ if (!defined($BillFax)) {
+ $self->{strError} = "Bill fax is undefined";
+ return CCR_ERROR;
+ }
+ $self->{strBillFax} = $BillFax;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set the billing note. This a comment about the billing information.
+# */
+sub SetBillNote
+{
+ my $self = shift;
+ my $BillNote = shift; #take a string arguement
+ if (!defined($BillNote)) {
+ $self->{strError} = "Bill note is undefined";
+ return CCR_ERROR;
+ }
+ $self->{strBillNote} = $BillNote;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set the first name for the shipping information.
+# */
+sub SetShipFirstName
+{
+ my $self = shift;
+ my $ShipFirstName = shift; # take a string arguement
+ if (!defined($ShipFirstName)) {
+ $self->{strError} = "Ship first name is undefined";
+ return CCR_ERROR;
+ }
+ $self->{strShipFirstName} = $ShipFirstName;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set the last name for the shipping information.
+# */
+sub SetShipLastName
+{
+ my $self = shift;
+ my $ShipLastName = shift; # take a string arguement
+ if (!defined($ShipLastName)) {
+ $self->{strError} = "Ship last is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strShipLastName} = $ShipLastName;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set the middle name for the shipping information.
+# */
+sub SetShipMiddleName
+{
+ my $self = shift;
+ my $ShipMiddleName = shift; # take a string arguement
+
+ if (!defined($ShipMiddleName)) {
+ $self->{strError} = "Ship middle name is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strShipMiddleName} = $ShipMiddleName;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set the customer title of the customer being jstrShipped to.
+# */
+sub SetShipCustomerTitle
+{
+ my $self = shift;
+ my $ShipCustomerTitle = shift; # take a string arguement
+ if (!defined($ShipCustomerTitle)) {
+ $self->{strError} = "Ship customer title is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strShipCustomerTitle} = $ShipCustomerTitle;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set the company for the shipping information.
+# */
+sub SetShipCompany
+{
+ my $self = shift;
+ my $ShipCompany = shift; # take a string arguement
+ if (!defined($ShipCompany)) {
+ $self->{strError} = "Ship company is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strShipCompany} = $ShipCompany;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set the first part of the shipping address, such as
+# * "485 Bridestone Way".
+# */
+sub SetShipAddressOne
+{
+ my $self = shift;
+ my $ShipAddressOne = shift; # take a string arguement
+ if (!defined($ShipAddressOne)) {
+ $self->{strError} = "Ship address is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strShipAddressOne} = $ShipAddressOne;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set the second part of the shipping address, such as
+# * "Suite 234".
+
+sub SetShipAddressTwo
+{
+ my $self = shift;
+ my $ShipAddressTwo = shift; # take a string arguement
+ if (!defined($ShipAddressTwo)) {
+ $self->{strError} = "Ship address two is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strShipAddressTwo} = $ShipAddressTwo;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set the city for the shipping address.
+# */
+sub SetShipCity
+{
+ my $self = shift;
+ my $ShipCity = shift; # take a string arguement
+ if (!defined($ShipCity)) {
+ $self->{strError} = "Ship city is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strShipCity} = $ShipCity;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set the state or provicnce for the shipping address.
+# */
+sub SetShipStateOrProvince
+{
+ my $self = shift;
+ my $ShipStateOrProvince = shift; # take a string arguement
+ if (!defined($ShipStateOrProvince)) {
+ $self->{strError} = "Ship state or province is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strShipStateOrProvince} = $ShipStateOrProvince;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set the postal code (or zip code) for the shipping address.
+# */
+sub SetShipPostalCode
+{
+ my $self = shift;
+ my $ShipPostalCode = shift; # take a string arguement
+ if (!defined($ShipPostalCode)) {
+ $self->{strError} = "Ship postal code is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strShipPostalCode} = $ShipPostalCode;
+ return CCR_NO_ERROR;
+}
+
+#**
+# * Set the shipping country code.
+# * @param shipCountryCode The alphabetic country code of the billing address.
+# * Must be a valid country code from ISO-3166. E.g. "CA" or "US".
+# * <p>
+# * @see com.paygateway.CountryCodes
+# * @exception TransactionProtocolException thrown if an invalid country code is passed in
+# */
+sub SetShipCountryCode
+{
+ my $self = shift;
+ my $ShipCountryCode = shift; # take a string arguement (either country code or country name)
+
+ if (!defined($ShipCountryCode)) {
+ $self->{strError} = "Ship country code is undefined.";
+ return CCR_ERROR;
+ }
+ my $CountryCode = getCCodeFromCName($ShipCountryCode) ;
+ if (isValidCountryCode($ShipCountryCode)) {
+ $self->{strShipCountryCode} = $ShipCountryCode;
+ return CCR_NO_ERROR;
+ }
+ elsif (defined($CountryCode)) {
+ $self->{strShipCountryCode} = $CountryCode;
+ return CCR_NO_ERROR;
+ }
+ else {
+ $self->{strError} = "Invalid country code for shipping address";
+ return CCR_ERROR;
+ }
+}
+
+
+#**
+# * Set the email address of the customer being shipped to.
+# */
+sub SetShipEmail
+{
+ my $self = shift;
+ my $ShipEmail = shift; # take a string arguement
+ if (!defined($ShipEmail)) {
+ $self->{strError} = "Ship email is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strShipEmail} = $ShipEmail;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set the phone number of the customer being shipped to.
+# */
+sub SetShipPhone
+{
+ my $self = shift;
+ my $ShipPhone = shift; # take a string arguement
+ if (!defined($ShipPhone)) {
+ $self->{strError} = "Ship phone is undefined";
+ return CCR_ERROR;
+ }
+ $self->{strShipPhone} = $ShipPhone;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set the facsimile number of the customer being shipped to.
+# */
+sub SetShipFax
+{
+ my $self = shift;
+ my $ShipFax = shift; # take a string arguement
+ if (!defined($ShipFax)) {
+ $self->{strError} = "Ship fax is undefined";
+ return CCR_ERROR;
+ }
+ $self->{strShipFax} = $ShipFax;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set a note (comment) for the shipping information.
+# */
+sub SetShipNote
+{
+ my $self = shift;
+ my $ShipNote = shift;
+ if (!defined($ShipNote)) {
+ $self->{strError} = "Ship note is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strShipNote} = $ShipNote;
+ return CCR_NO_ERROR;
+}
+
+
+#/**
+# * Sets the currency
+# */
+sub SetCurrency
+{
+ my $self = shift;
+ my $Currency = shift; # take a string arguement
+ if (!defined($Currency)) {
+ $self->{strError} = "Currency is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strCurrency} = $Currency;
+ return CCR_NO_ERROR;
+}
+
+#/**
+# * Sets the buyer code
+# */
+sub SetBuyerCode
+{
+ my $self = shift;
+ my $buyerCode = shift; # take a string arguement
+ if (!defined($buyerCode)) {
+ $self->{strError} = "Buyer code is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strBuyerCode} = $buyerCode;
+ return CCR_NO_ERROR;
+}
+
+#/**
+# * Sets the CAVV (for VBV transactions)
+# */
+sub SetCAVV
+{
+ my $self = shift;
+ my $cavv = shift; # take a string arguement
+ if (!defined($cavv)) {
+ $self->{strError} = "CAVV is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strCAVV} = $cavv;
+ return CCR_NO_ERROR;
+}
+
+#/**
+# * Sets the Customer IP Address
+# */
+sub SetCustomerIPAddress
+{
+ my $self = shift;
+ my $ip = shift; # take a string arguement
+ if (!defined($ip)) {
+ $self->{strError} = "Customer IP address is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strCustomerIPAddress} = $ip;
+ return CCR_NO_ERROR;
+}
+
+#/**
+# * Sets the Order Customer ID
+# */
+sub SetOrderCustomerId
+{
+ my $self = shift;
+ my $orderCustomerID = shift; # take a string arguement
+ if (!defined($orderCustomerID)) {
+ $self->{strError} = "Order customer ID is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strOrderCustomerID} = $orderCustomerID;
+ return CCR_NO_ERROR;
+}
+
+#/**
+# * Sets the purchase order number
+# */
+sub SetPurchaseOrderNumber
+{
+ my $self = shift;
+ my $purchaseOrderNumber = shift; # take a string arguement
+ if (!defined($purchaseOrderNumber)) {
+ $self->{strError} = "Purchase order number is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strPurchaseOrderNumber} = $purchaseOrderNumber;
+ return CCR_NO_ERROR;
+}
+
+#/**
+# * Sets the state tax
+# */
+sub SetStateTax
+{
+ my $self = shift;
+ my $stateTax = shift; # take a string arguement
+ if (!defined($stateTax)) {
+ $self->{strError} = "State tax is undefined.";
+ return CCR_ERROR;
+ }
+
+ if ( $stateTax !~ /^(\d+\.?\d*|\.\d+)$/ ) {
+ $self->{strError} = "Non-numeric state tax amount.";
+ return CCR_ERROR;
+ }
+
+ $stateTax = $stateTax * 1.0;
+ if ($stateTax < 0) {
+ $self->{strError} = "State tax cannot be negative.";
+ return CCR_ERROR;
+ }
+
+ $self->{dStateTax} = $stateTax;
+ return CCR_NO_ERROR;
+}
+
+#/**
+# * Sets the track 1 data
+# */
+sub SetTrack1
+{
+ my $self = shift;
+ my $track1 = shift; # take a string arguement
+ if (!defined($track1)) {
+ $self->{strError} = "Track 1 is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strTrack1} = $track1;
+ return CCR_NO_ERROR;
+}
+
+#/**
+# * Sets the track 2 data
+# */
+sub SetTrack2
+{
+ my $self = shift;
+ my $track2 = shift; # take a string arguement
+ if (!defined($track2)) {
+ $self->{strError} = "Track 2 is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strTrack2} = $track2;
+ return CCR_NO_ERROR;
+}
+
+#/**
+# * Sets the transaction condition code
+# */
+sub SetTransactionConditionCode
+{
+ my $self = shift;
+ my $tcc = shift; # take a string arguement
+ if (!defined($tcc)) {
+ $self->{strError} = "Transaction condition code is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strTransactionConditionCode} = $tcc;
+ return CCR_NO_ERROR;
+}
+
+#/**
+# * Sets the xid
+# */
+sub SetXID
+{
+ my $self = shift;
+ my $xid = shift; # take a string arguement
+ if (!defined($xid)) {
+ $self->{strError} = "XID is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strXID} = $xid;
+ return CCR_NO_ERROR;
+}
+
+#/**
+# * Sets tax exempt flag
+# */
+sub SetTaxExempt
+{
+ my $self = shift;
+ my $taxExempt = shift; # take a string arguement
+ if (!defined($taxExempt)) {
+ $self->{strError} = "Tax exempt flag is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{boolTaxExempt} = $taxExempt;
+ return CCR_NO_ERROR;
+}
+
+#/**
+# * Sets invoice number
+# */
+sub SetInvoiceNumber
+{
+ my $self = shift;
+ my $invoiceNumber = shift; # take a string arguement
+ if (!defined($invoiceNumber)) {
+ $self->{strError} = "Invoice number is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strInvoiceNumber} = $invoiceNumber;
+ return CCR_NO_ERROR;
+}
+
+#/**
+# * Sets the Authentication Transaction ID
+# *
+# * Used in Payer Authentication transaction type
+# */
+sub SetAuthenticationTransactionId
+{
+ my $self = shift;
+ my $authenticationTransactionId = shift; # take a string arguement
+ if (!defined($authenticationTransactionId)) {
+ $self->{strError} = "Authentication Transaction ID is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strAuthenticationTransactionId} = $authenticationTransactionId;
+ return CCR_NO_ERROR;
+}
+
+#/**
+# * Sets the Authentication Payload
+# *
+# * Used in Payer Authentication transaction type
+# */
+sub SetAuthenticationPayload
+{
+ my $self = shift;
+ my $authenticationPayload = shift; # take a string arguement
+ if (!defined($authenticationPayload)) {
+ $self->{strError} = "Authentication Payload is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strAuthenticationPayload} = $authenticationPayload;
+ return CCR_NO_ERROR;
+}
+
+#/**
+# * Sets the Success On Authentication Inconclusive
+# *
+# * Used in Payer Authentication transaction type
+# */
+sub SetDoTransactionOnAuthenticationInconclusive
+{
+ my $self = shift;
+ my $successOnAuthenticationInconclusive = shift; # take a string arguement
+ if (!defined($successOnAuthenticationInconclusive)) {
+ $self->{strError} = "Success on authentication inconclusive is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{boolSuccessOnAuthenticationInconclusive} = $successOnAuthenticationInconclusive;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set the Industry type.
+# * <p>
+# * @param industry Must be one of the following constants: DIRECT_MARKETING, RETAIL, LODGING, RESTAURANT.
+# * @exception TransactionProtocolException thrown if industry is not a valid charge type
+# * defined by this class.
+# */
+sub SetIndustry
+{
+ my $self = shift;
+ my $industry = shift; # take one string arguement
+
+ if (!defined($industry)) {
+ $self->{strError} = "Industry is undefined.";
+ return CCR_ERROR;
+ }
+ if ($industry eq "") {
+ $self->{strError} = "Invalid industry";
+ return CCR_ERROR;
+ }
+
+ if (!($industry eq DIRECT_MARKETING ||
+ $industry eq RETAIL ||
+ $industry eq LODGING ||
+ $industry eq RESTAURANT )) {
+ $self->{strError} = "Invalid industry.";
+ return CCR_ERROR;
+ }
+ $self->{strIndustry} = $industry;
+ return CCR_NO_ERROR;
+}
+
+
+#/**
+# * Sets folio number
+# */
+sub SetFolioNumber
+{
+ my $self = shift;
+ my $folioNumber = shift; # take a string arguement
+ if (!defined($folioNumber)) {
+ $self->{strError} = "Folio number is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{strFolioNumber} = $folioNumber;
+ return CCR_NO_ERROR;
+}
+
+
+
+#**
+# * Set the service rate using a floating point value.
+# * <p>
+# * @param ServiceRate Must be a positive floating-point number.
+# * E.g. Use <i>11.55</i> to represent $11.55.
+# * @exception TransactionProtocolException thrown if ServiceRate less than zero
+# */
+sub SetServiceRate
+{
+ my $self = shift;
+ my $ServiceRate = shift; # take a string or an integer arguement
+
+ if (!defined($ServiceRate)) {
+ $self->{strError} = "Service rate is undefined.";
+ return CCR_ERROR;
+ }
+ if ( $ServiceRate !~ /^(\d+\.?\d*|\.\d+)$/ ) {
+ $self->{strError} = "Non-numeric Service Rate.";
+ return CCR_ERROR;
+ }
+
+ my $dServiceRate = $ServiceRate * 1.0;
+ if ($dServiceRate < 0) {
+ $self->{strError} = "Service rate cannot be negative.";
+ return CCR_ERROR;
+ }
+
+ $self->{dServiceRate} = $dServiceRate;
+ $self->{strServiceRate} = "".$ServiceRate;
+ return CCR_NO_ERROR;
+}
+
+
+#**
+# * Set the service end day
+# */
+sub SetServiceEndDay
+{
+ my $self = shift;
+ my $serviceEndDay = shift; #take one string arguement
+ if (!defined($serviceEndDay)) {
+ $self->{strError} = "Service end day is undefined.";
+ return CCR_ERROR;
+ }
+ if ($serviceEndDay eq ""){
+ $self->{strError} = "Invalid service end day.";
+ return CCR_ERROR;
+ }
+
+ if ($serviceEndDay =~ /\D/) {
+ $self->{strError} = "Invalid service end day (non-digit).";
+ return CCR_ERROR;
+ }
+
+ $serviceEndDay = 1 * $serviceEndDay;
+ if ($serviceEndDay < 1 || $serviceEndDay > 31) {
+ $self->{strError} .= "Invalid service end day (not 1 through 31).";
+ return CCR_ERROR;
+ }
+ $self->{intServiceEndDay} = $serviceEndDay;
+
+ return 1;
+}
+
+
+#**
+# * Set the service end month
+# */
+sub SetServiceEndMonth
+{
+ my $self = shift;
+ my $serviceEndMonth = shift; #take one string arguement
+ if (!defined($serviceEndMonth)) {
+ $self->{strError} = "Service end month is undefined.";
+ return CCR_ERROR;
+ }
+ if ($serviceEndMonth eq ""){
+ $self->{strError} = "Invalid service end month.";
+ return CCR_ERROR;
+ }
+
+ if ($serviceEndMonth =~ /\D/) {
+ $self->{strError} = "Invalid service end month (non-digit).";
+ return CCR_ERROR;
+ }
+
+ $serviceEndMonth = 1 * $serviceEndMonth;
+ if ($serviceEndMonth < 1 || $serviceEndMonth > 12) {
+ $self->{strError} .= "Invalid service end month (not 1 through 12).";
+ return CCR_ERROR;
+ }
+ $self->{intServiceEndMonth} = $serviceEndMonth;
+
+ return 1;
+}
+
+#**
+# * Set the service end year
+# */
+sub SetServiceEndYear
+{
+ my $self = shift;
+ my $serviceEndYear = shift; #take one string arguement
+ if (!defined($serviceEndYear)) {
+ $self->{strError} = "Service end year is undefined.";
+ return CCR_ERROR;
+ }
+ if ($serviceEndYear eq ""){
+ $self->{strError} = "Invalid service end year.";
+ return CCR_ERROR;
+ }
+
+ if ($serviceEndYear =~ /\D/) {
+ $self->{strError} = "Invalid service end year (non-digit).";
+ return CCR_ERROR;
+ }
+
+ $serviceEndYear = 1 * $serviceEndYear;
+ if ($serviceEndYear < 2005 || $serviceEndYear > 9999) {
+ $self->{strError} .= "Invalid service end year.";
+ return CCR_ERROR;
+ }
+ $self->{intServiceEndYear} = $serviceEndYear;
+
+ return 1;
+}
+
+
+#**
+# * Set the service start day
+# */
+sub SetServiceStartDay
+{
+ my $self = shift;
+ my $serviceStartDay = shift; #take one string arguement
+ if (!defined($serviceStartDay)) {
+ $self->{strError} = "Service start day is undefined.";
+ return CCR_ERROR;
+ }
+ if ($serviceStartDay eq ""){
+ $self->{strError} = "Invalid service start day.";
+ return CCR_ERROR;
+ }
+
+ if ($serviceStartDay =~ /\D/) {
+ $self->{strError} = "Invalid service start day (non-digit).";
+ return CCR_ERROR;
+ }
+
+ $serviceStartDay = 1 * $serviceStartDay;
+ if ($serviceStartDay < 1 || $serviceStartDay > 31) {
+ $self->{strError} .= "Invalid service start day (not 1 through 31).";
+ return CCR_ERROR;
+ }
+ $self->{intServiceStartDay} = $serviceStartDay;
+
+ return 1;
+}
+
+
+#**
+# * Set the service start month
+# */
+sub SetServiceStartMonth
+{
+ my $self = shift;
+ my $serviceStartMonth = shift; #take one string arguement
+ if (!defined($serviceStartMonth)) {
+ $self->{strError} = "Service start month is undefined.";
+ return CCR_ERROR;
+ }
+ if ($serviceStartMonth eq ""){
+ $self->{strError} = "Invalid service start month.";
+ return CCR_ERROR;
+ }
+
+ if ($serviceStartMonth =~ /\D/) {
+ $self->{strError} = "Invalid service start month (non-digit).";
+ return CCR_ERROR;
+ }
+
+ $serviceStartMonth = 1 * $serviceStartMonth;
+ if ($serviceStartMonth < 1 || $serviceStartMonth > 12) {
+ $self->{strError} .= "Invalid service start month (not 1 through 12).";
+ return CCR_ERROR;
+ }
+ $self->{intServiceStartMonth} = $serviceStartMonth;
+
+ return 1;
+}
+
+#**
+# * Set the service start year
+# */
+sub SetServiceStartYear
+{
+ my $self = shift;
+ my $serviceStartYear = shift; #take one string arguement
+ if (!defined($serviceStartYear)) {
+ $self->{strError} = "Service start year is undefined.";
+ return CCR_ERROR;
+ }
+ if ($serviceStartYear eq ""){
+ $self->{strError} = "Invalid service start year.";
+ return CCR_ERROR;
+ }
+
+ if ($serviceStartYear =~ /\D/) {
+ $self->{strError} = "Invalid service start year (non-digit).";
+ return CCR_ERROR;
+ }
+
+ $serviceStartYear = 1 * $serviceStartYear;
+ if ($serviceStartYear < 2005 || $serviceStartYear > 9999) {
+ $self->{strError} .= "Invalid service start year.";
+ return CCR_ERROR;
+ }
+ $self->{intServiceStartYear} = $serviceStartYear;
+
+ return 1;
+}
+
+
+
+#/**
+# * Sets the Charge Total Includes Restaurant flag
+# *
+# */
+sub SetChargeTotalIncludesRestaurant
+{
+ my $self = shift;
+ my $isChargeTotalIncludesRestaurant = shift; # take a string arguement
+ if (!defined($isChargeTotalIncludesRestaurant)) {
+ $self->{strError} = "Charge Total Includes Restaurant is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{boolChargeTotalIncludesRestaurant} = $isChargeTotalIncludesRestaurant;
+ return CCR_NO_ERROR;
+}
+
+#/**
+# * Sets the Charge Total Includes Giftshop flag
+# *
+# */
+sub SetChargeTotalIncludesGiftshop
+{
+ my $self = shift;
+ my $isChargeTotalIncludesGiftshop = shift; # take a string arguement
+ if (!defined($isChargeTotalIncludesGiftshop)) {
+ $self->{strError} = "Charge Total Includes Giftshop is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{boolChargeTotalIncludesGiftshop} = $isChargeTotalIncludesGiftshop;
+ return CCR_NO_ERROR;
+}
+
+#/**
+# * Sets the Charge Total Includes Minibar flag
+# *
+# */
+sub SetChargeTotalIncludesMinibar
+{
+ my $self = shift;
+ my $isChargeTotalIncludesMinibar = shift; # take a string arguement
+ if (!defined($isChargeTotalIncludesMinibar)) {
+ $self->{strError} = "Charge Total Includes Minibar is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{boolChargeTotalIncludesMinibar} = $isChargeTotalIncludesMinibar;
+ return CCR_NO_ERROR;
+}
+
+#/**
+# * Sets the Charge Total Includes Phone flag
+# *
+# */
+sub SetChargeTotalIncludesPhone
+{
+ my $self = shift;
+ my $isChargeTotalIncludesPhone = shift; # take a string arguement
+ if (!defined($isChargeTotalIncludesPhone)) {
+ $self->{strError} = "Charge Total Includes Phone is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{boolChargeTotalIncludesPhone} = $isChargeTotalIncludesPhone;
+ return CCR_NO_ERROR;
+}
+
+#/**
+# * Sets the Charge Total Includes Laundry flag
+# *
+# */
+sub SetChargeTotalIncludesLaundry
+{
+ my $self = shift;
+ my $isChargeTotalIncludesLaundry = shift; # take a string arguement
+ if (!defined($isChargeTotalIncludesLaundry)) {
+ $self->{strError} = "Charge Total Includes Laundry is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{boolChargeTotalIncludesLaundry} = $isChargeTotalIncludesLaundry;
+ return CCR_NO_ERROR;
+}
+
+#/**
+# * Sets the Charge Total Includes Other flag
+# *
+# */
+sub SetChargeTotalIncludesOther
+{
+ my $self = shift;
+ my $isChargeTotalIncludesOther = shift; # take a string arguement
+ if (!defined($isChargeTotalIncludesOther)) {
+ $self->{strError} = "Charge Total Includes Other is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{boolChargeTotalIncludesOther} = $isChargeTotalIncludesOther;
+ return CCR_NO_ERROR;
+}
+
+#/**
+# * Sets the Service No Show flag
+# *
+# */
+sub SetServiceNoShow
+{
+ my $self = shift;
+ my $isServiceNoShow = shift; # take a string arguement
+ if (!defined($isServiceNoShow)) {
+ $self->{strError} = "Service No Show is undefined.";
+ return CCR_ERROR;
+ }
+ $self->{boolServiceNoShow} = $isServiceNoShow;
+ return CCR_NO_ERROR;
+}
+
+
+
+#/////////////////////////////////////////////////////////////////////////////////////////////////////
+#// Get Methods.
+#
+
+#/**
+# * Get the cartridge type.
+# * @returns the type of cartridge being used
+# */
+sub GetCartridgeType
+{
+ my $self = shift;
+ $self->{strCartridgeType};
+}
+
+#/**
+# * Get the Ecommerce Indicator
+# * @returns the Ecommerce Indicator
+# */
+sub GetEcommerceIndicator
+{
+ my $self = shift;
+ $self->{strEcommerceIndicator};
+}
+
+#/**
+# * Get the value of the credit card number.
+# * @see #setCreditCardNumber(JString)
+# * @return the value of the credit card number or an empty String if the credit card number was not set
+# */
+sub GetCreditCardNumber
+{
+ my $self = shift;
+ $self->{strCreditCardNumber};
+}
+
+#/**
+# * Get the value of the credit card number.
+# * @return the value of the credit card verification number or an empty String if the credit card number was not set
+# */
+sub GetCreditCardVerificationNumber
+{
+ my $self = shift;
+ $self->{strCreditCardVerificationNumber};
+}
+
+#**
+# * Get the value of the credit card's expire year.
+# * @see #setExpireYear(JString)
+# * @return the String passed to setExpireYear or an empty String if the expire year was not set
+# */
+sub GetExpireYear
+{
+ my $self = shift;
+ $self->{strExpireYear};
+}
+
+
+#**
+# * Get the value of the credit card's expire month.
+# * @see #setExpireMonth(String)
+# * @return the String passed to setExpireMonth or an empty String if the expire month was not set
+# */
+sub GetExpireMonth
+{
+ my $self = shift;
+ $self->{strExpireMonth};
+}
+
+
+#**
+# * Get the value of the charge type. The possible values are defined
+# * by the constants of this class documented in setChargeType(String)
+# * The chage type indicates what action to take with this credit card
+# * transaction.
+# * @see #setChargeType(String)
+# * @return the String passed to setChargeType or an empty String if the charge type was not set
+#
+sub GetChargeType()
+{
+ my $self = shift;
+ $self->{strChargeType};
+}
+
+
+#**
+# * Get the value of the charge total. The charge total is the amount that
+# * will be used for this credit card transaction.
+# * @see #setChargeTotal(double)
+# * @see #setChargeTotal(String)
+# * @return the value of the charge total or -1 if the charge total was not set
+#
+sub GetChargeTotal
+{
+ my $self = shift;
+ $self->{dChargeTotal};
+}
+
+sub GetChargeTotalStr
+{
+ my $self = shift;
+ $self->{strChargeTotal};
+}
+
+#**
+# * Get the value of the card brand. The card brand identifies the type
+# * of card being used. The card brand must be one of the constants defined
+# * by this class and documented in setCardBrand(JString)
+# * @see #setCardBrand(JString)
+# * @return the value of the card brand or an empty String if the card brand was not set
+#/
+sub GetCardBrand
+{
+ my $self = shift;
+ $self->{strCardBrand};
+}
+
+#**
+# * Get the value of the order id. The order id must be a unique identifier
+# * for a paticular order.
+# * @see #setOrderId(JString)
+# * @return the value of the order id or an empty String if the order id was not set
+# */
+sub GetOrderId
+{
+ my $self = shift;
+ $self->{strOrderId};
+}
+
+
+
+#**
+# * Get the value of the capture reference id. The capture reference id is the
+# * value returned from an "AUTH" credit card transaction that must be presented
+# * when to the "CAPTURE" for that order.
+# * @see #setCaptureReferenceId(JString)
+# * @return the value of the capture reference id or an empty String if the capture reference id was not set
+#
+sub GetCaptureReferenceId
+{
+ my $self = shift;
+ $self->{strReferenceId};
+}
+
+#
+# Get Reference Id
+# This should be used instead of GetCaptureReferenceId
+# Added in v1.6
+#
+sub GetReferenceId
+{
+ my $self = shift;
+ $self->{strReferenceId};
+}
+
+#/**
+# * Get the value of the order description. The order description is a comment
+# * that describes the order.
+# * @see #setOrderDescription(JString)
+# * @return the value of the order description or an empty String if the order description was not set
+#/
+sub GetOrderDescription
+{
+ my $self = shift;
+ $self->{strOrderDescription};
+}
+
+#**
+# * Get the value of the order user id. The order user id is a unique identifier
+# * for a merchant's customer.
+# * @see #setOrderUserId(String)
+# * @return the value of the order user id of an empty String if order user id was not set
+#
+sub GetOrderUserId
+{
+ my $self = shift;
+ $self->{strOrderUserId};
+}
+
+#**
+# * Get the value of the duplicate check.
+# * Possible values are: CHECK; OVERRIDE; NO_CHECK.
+# * @see #setDuplicateCheck(String)
+# * @return the value of the duplicate check or an empty String if the dc was not set
+#
+sub GetDuplicateCheck
+{
+ my $self = shift;
+ $self->{strDuplicateCheck};
+}
+
+
+#**
+# * Get the value of the bank approval code. The bank approval code is the
+# * value required for a "FORCE_AUTH" or "FORCE_SALE" credit card transaction.
+# * It is obtained offline via a phone call to the merchant's bank 'voice auth'
+# * phone number. The card holder is not present in this type of transaction.
+# * @see #setBankApprovalCode(String)
+# * @return the value of the bank approval code or an empty String if the bac was not set
+#
+sub GetBankApprovalCode
+{
+ my $self = shift;
+ $self->{strBankApprovalCode};
+}
+
+
+#**
+# * The tax amount is the amount of the the charge total that is tax.
+# * @see #setTaxAmount
+# * @see #setChargeTotal
+# * @return value of the tax amount of -1 if the tax amount has not been set.
+#
+sub GetTaxAmount
+{
+ my $self = shift;
+ $self->{dTaxAmount};
+}
+
+sub GetTaxAmountStr
+{
+ my $self = shift;
+ $self->{strTaxAmount};
+}
+
+
+#**
+# * The shipping charge is the amount of the charge total that is shipping charges.
+# * @see #setShippingCharge
+# * @see #setChargeTotal
+# * @return value of the shipping charge or -1 if the shipping charge has not been set
+# */
+sub GetShippingCharge
+{
+ my $self = shift;
+ $self->{dShippingCharge};
+}
+
+sub GetShippingChargeStr
+{
+ my $self = shift;
+ $self->{strShippingCharge};
+}
+
+
+#/**
+# * Get the value of the first name of the customer being billed.
+# * @see #setBillFirstName(JString)
+# * @return the billing first name or an empty String if the billing first name was not set
+# */
+sub GetBillFirstName
+{
+ my $self = shift;
+ $self->{strBillFirstName};
+}
+
+
+#**
+# * Get the value of the last name of the customer being billed.
+# * @see #setBillLastName(String)
+# * return the billing last name or an empty String if the billing last name was not set
+# */
+sub GetBillLastName
+{
+ my $self = shift;
+ $self->{strBillLastName};
+}
+
+
+#**
+# * Get the value of the middle name of the customer being billed.
+# * @see #setBillMiddleName(JString)
+# * @return the billing middle name or an empty String if the billing middle name was not set
+# */
+sub GetBillMiddleName
+{
+ my $self = shift;
+ $self->{strBillMiddleName};
+}
+
+
+#**
+# * Get the value of the title of the customer being billed.
+# * @see #setBillCustomerTitle(JString)
+# * @return the billing customer title or an empty String if billing customer title was not set
+# */
+sub GetBillCustomerTitle
+{
+ my $self = shift;
+ $self->{strBillCustomerTitle};
+}
+
+#**
+# * Get the value of the company name of the customer being billed.
+# * @see #setBillCompany(JString)
+# * @return the billing company name or an empty String if the billing company name was not set
+#
+sub GetBillCompany
+{
+ my $self = shift;
+ $self->{strBillCompany};
+}
+
+
+#**
+# * Get the value of the first part of the billing address.
+# * @see #setBillAddressOne(JString)
+# * @return the first part of the billing address or an empty String if the billing address part one was not set
+# */
+sub GetBillAddressOne
+{
+ my $self = shift;
+ $self->{strBillAddressOne};
+}
+
+
+#**
+# * Get the value of the second part of the billing address.
+# * @see #setBillAddressTwo(JString)
+# * @return the second part of the billing address or an empty String if the billing address part two was not set
+# */
+sub GetBillAddressTwo
+{
+ my $self = shift;
+ $self->{strBillAddressTwo};
+}
+
+
+#**
+# * Get the value of the city for the billing address.
+# * @see #setBillCity(JString)
+# * @return the billing address city or an empty String if the billing city was not set
+# */
+sub GetBillCity
+{
+ my $self = shift;
+ $self->{strBillCity};
+}
+
+
+#**
+# * Get the value of the state or province for the billing address.
+# * @see #setBillStateOrProvince(String)
+# * @return the billing address state or province or an empty String if billing state or province was not set
+# */
+sub GetBillStateOrProvince
+{
+ my $self = shift;
+ $self->{strBillStateOrProvince};
+}
+
+
+#**
+# * Get the value of the postal code for the billing address.
+# * @see #setBillPostalCode(String)
+# * @return the billing address postal code or an empty String if billing postal code was not set
+#*/
+sub GetBillPostalCode
+{
+ my $self = shift;
+ $self->{strBillPostalCode};
+}
+
+
+#**
+# * Get the value of the country for the billing address.
+# * @see #setBillCountryCode(JString)
+# * @return the billing country or an empty String if the billing country was not set
+#
+sub GetBillCountryCode
+{
+ my $self = shift;
+ $self->{strBillCountryCode};
+}
+
+
+#**
+# * Get the value of the email address of the customer being billed.
+# * @see #setBillEmail(JString)
+# * @return the billing email address or an empty String if the billing email was not set
+#
+sub GetBillEmail
+{
+ my $self = shift;
+ $self->{strBillEmail};
+}
+
+
+#**
+# * Get the value of the phone number of the customer being billed.
+# * @see #setBillPhone(JString)
+# * @return the billing phone number or an empty String if the billing phone number was not set
+# */
+sub GetBillPhone
+{
+ my $self = shift;
+ $self->{strBillPhone};
+}
+
+
+#**
+# * Get the value of the fax number of the customer being billed.
+# * @see #setBillFax(JString)
+# * @return the billing fax number or an empty String if the billing fax number was not set
+# */
+sub GetBillFax
+{
+ my $self = shift;
+ $self->{strBillFax};
+}
+
+
+#**
+# * Get the value of the billing note. The billing note is an extra
+# * comment to the billing information.
+# * @see #setBillNote(JString)
+# * @return the billing note or an empty String if the billing not was not set
+#
+sub GetBillNote
+{
+ my $self = shift;
+ $self->{strBillNote};
+}
+
+#**
+# * Get the value of the first name of the customer being shipped to.
+# * @see #setShipFirstName(JString)
+# * @return the shipping first name or an empty String if the shipping first name was not set
+#
+sub GetShipFirstName
+{
+ my $self = shift;
+ $self->{strShipFirstName};
+}
+
+
+#**
+# * Get the value of the last name of the customer being shipped to.
+# * @see #setShipLastName(JString)
+# * @return the shipping last name or an empty String if the shipping last name was not set
+# */
+sub GetShipLastName
+{
+ my $self = shift;
+ $self->{strShipLastName};
+}
+
+
+#**
+# * Get the value of the middle name of the customer being shipped to.
+# * @see #setShipMiddleName(JString)
+# * @return the shipping middle name or an empty String if the shipping middle name was not set
+# */
+sub GetShipMiddleName
+{
+ my $self = shift;
+ $self->{strShipMiddleName};
+}
+
+
+#**
+# * Get the value of the title of the customer being shipped to.
+# * @see #setShipCustomerTitle(String)
+# * @return the shipping customer title or an empty String if the shipping customer title was not set
+#
+sub GetShipCustomerTitle
+{
+ my $self = shift;
+ $self->{strShipCustomerTitle};
+}
+
+
+#**
+# * Get the value of the company name of the customer being shipped to.
+# * @see #setShipCompany(JString)
+# * @return the shipping company name or an empty String if the shipping company name was not set
+# */
+sub GetShipCompany
+{
+ my $self = shift;
+ $self->{strShipCompany};
+}
+
+
+#**
+# * Get the value of the first part of the shipping address.
+# * @see #setShipAddressOne(JString)
+# * @return the first part of the shipping address or an empty String if the shipping address part one was not set
+# */
+sub GetShipAddressOne
+{
+ my $self = shift;
+ $self->{strShipAddressOne};
+}
+
+
+#**
+# * Get the value of the second part of the shipping address.
+# * @see #setShipAddressTwo(JString)
+# * @return the second part of the shipping address or an empty String if the shipping address part two was not set
+#
+sub GetShipAddressTwo
+{
+ my $self = shift;
+ $self->{strShipAddressTwo};
+}
+
+
+#**
+# * Get the value of the city for the shipping address.
+# * @see #setShipCity(JString)
+# * @return the shipping address city or an empty String if the shipping city was not set
+#
+sub GetShipCity
+{
+ my $self = shift;
+ $self->{strShipCity};
+}
+
+#**
+# * Get the value of the state or province for the shipping address.
+# * @see #setShipStateOrProvince(JString)
+# * @return the shipping address state or province or an empty String if the shipping state or provice was not set
+# */
+sub GetShipStateOrProvince
+{
+ my $self = shift;
+ $self->{strShipStateOrProvince};
+}
+
+
+#*
+# * Get the value of the postal code for the shipping address.
+# * @see #setShipPostalCode(JString)
+# * @return the shipping address postal code or an empty String if the shipping postal code was not set
+# */
+sub GetShipPostalCode
+{
+ my $self = shift;
+ $self->{strShipPostalCode};
+}
+
+
+#**
+# * Get the value of the country for the shipping address.
+# * @see #setShipCountryCode(JString)
+# * @return the shipping country or an empty String if the shipping country was not set
+# */
+sub GetShipCountryCode
+{
+ my $self = shift;
+ $self->{strShipCountryCode};
+}
+
+
+#**
+# * Get the value of the email address of the customer being shipped to.
+# * @see #setShipEmail(JString)
+# * @return the shipping email address or an empty String if the shipping customer email address was not set
+# */
+sub GetShipEmail
+{
+ my $self = shift;
+ $self->{strShipEmail};
+}
+
+
+#**
+# * Get the value of the phone number of the customer being shipped to.
+# * @see #setShipPhone(JString)
+# * @return the shipping phone number or an empty String if the shipping customer phone number was not set
+# */
+sub GetShipPhone
+{
+ my $self = shift;
+ $self->{strShipPhone};
+}
+
+
+#**
+# * Get the value of the fax number of the customer being shipped to.
+# * @see #setShipFax(JString)
+# * @return the shipping fax number or an empty JString if the shipping customer fax number was not set
+# */
+sub GetShipFax
+{
+ my $self = shift;
+ $self->{strShipFax};
+}
+
+
+#**
+# * Get the value of the shipping note. The shipping note is an extra
+# * comment to the shipping information.
+# * @see #setShipNote(JString)
+# * @return the shipping note or an empty String if the shipping note was not set
+# */
+sub GetShipNote
+{
+ my $self = shift;
+ $self->{strShipNote};
+}
+
+
+#**
+# * Method to get a CreditCardResponse object.
+# */
+sub GetTransResponseObject
+{
+ my $self = shift;
+ my $InString = shift;
+ return new Business::OnlinePayment::PPIPayMover::CreditCardResponse($InString);
+}
+
+
+#/**
+# * Get the value of the currency. The currency that
+# * will be used for this transaction. If the merchant
+# * does not have an account configured to process this currency, the
+# * Transaction Server will return an error.
+# * @see #setCurrency(String)
+# * @return the currency or "" if the currency was not set
+# */
+sub GetCurrency
+{
+ my $self = shift;
+ $self->{strCurrency};
+}
+
+
+#/**
+# * Gets the buyer code
+# */
+sub GetBuyerCode
+{
+ my $self = shift;
+ $self->{strBuyerCode};
+}
+
+#/**
+# * Gets the CAVV (for VBV transactions)
+# */
+sub GetCAVV
+{
+ my $self = shift;
+ $self->{strCAVV};
+}
+
+#/**
+# * Gets the Customer IP Address
+# */
+sub GetCustomerIPAddress
+{
+ my $self = shift;
+ $self->{strCustomerIPAddress};
+}
+
+#/**
+# * Gets the Order Customer ID
+# */
+sub GetOrderCustomerId
+{
+ my $self = shift;
+ $self->{strOrderCustomerID};
+}
+
+#/**
+# * Gets the purchase order number
+# */
+sub GetPurchaseOrderNumber
+{
+ my $self = shift;
+ $self->{strPurchaseOrderNumber};
+}
+
+#/**
+# * Gets the state tax
+# */
+sub GetStateTax
+{
+ my $self = shift;
+ $self->{dStateTax};
+}
+
+#/**
+# * Gets the track 1 data
+# */
+sub GetTrack1
+{
+ my $self = shift;
+ $self->{strTrack1};
+}
+
+#/**
+# * Gets the track 2 data
+# */
+sub GetTrack2
+{
+ my $self = shift;
+ $self->{strTrack2};
+}
+
+#/**
+# * Gets the transaction condition code
+# */
+sub GetTransactionConditionCode
+{
+ my $self = shift;
+ $self->{strTransactionConditionCode};
+}
+
+#/**
+# * Gets the xid
+# */
+sub GetXID
+{
+ my $self = shift;
+ $self->{strXID};
+}
+
+#/**
+# * Gets tax exempt flag
+# */
+sub GetTaxExempt
+{
+ my $self = shift;
+ $self->{boolTaxExempt};
+}
+
+#/**
+# * Gets invoice number
+# */
+sub GetInvoiceNumber
+{
+ my $self = shift;
+ $self->{strInvoiceNumber};
+}
+
+#/**
+# * Gets the Authentication Transaction ID
+# *
+# * Used in Payer Authentication transaction type
+# */
+sub GetAuthenticationTransactionId
+{
+ my $self = shift;
+ $self->{strAuthenticationTransactionId};
+}
+
+#/**
+# * Gets the Authentication Payload
+# *
+# * Used in Payer Authentication transaction type
+# */
+sub GetAuthenticationPayload
+{
+ my $self = shift;
+ $self->{strAuthenticationPayload};
+}
+
+#/**
+# * Gets the Success On Authentication Inconclusive
+# *
+# * Used in Payer Authentication transaction type
+# */
+sub GetDoTransactionOnAuthenticationInconclusive
+{
+ my $self = shift;
+ $self->{boolSuccessOnAuthenticationInconclusive};
+}
+
+
+#/**
+# * Gets the industry
+# */
+sub GetIndustry
+{
+ my $self = shift;
+ $self->{strIndustry};
+}
+
+#/**
+# * Gets the folio number
+# */
+sub GetFolioNumber
+{
+ my $self = shift;
+ $self->{strFolioNumber};
+}
+
+#/**
+# * Gets the service rate
+# */
+sub GetServiceRate
+{
+ my $self = shift;
+ $self->{dServiceRate};
+}
+
+#/**
+# * Gets the service rate as a String
+# */
+sub GetServiceRateStr
+{
+ my $self = shift;
+ $self->{strServiceRate};
+}
+
+#/**
+# * Gets the service start year
+# */
+sub GetServiceStartYear
+{
+ my $self = shift;
+ $self->{intServiceStartYear};
+}
+
+#/**
+# * Gets the service start month
+# */
+sub GetServiceStartMonth
+{
+ my $self = shift;
+ $self->{intServiceStartMonth};
+}
+
+#/**
+# * Gets the service start day
+# */
+sub GetServiceStartDay
+{
+ my $self = shift;
+ $self->{intServiceStartDay};
+}
+
+#/**
+# * Gets the service end year
+# */
+sub GetServiceEndYear
+{
+ my $self = shift;
+ $self->{intServiceEndYear};
+}
+
+#/**
+# * Gets the service end month
+# */
+sub GetServiceEndMonth
+{
+ my $self = shift;
+ $self->{intServiceEndMonth};
+}
+
+#/**
+# * Gets the service end day
+# */
+sub GetServiceEndDay
+{
+ my $self = shift;
+ $self->{intServiceEndDay};
+}
+
+#/**
+# * Gets the Charge Total Includes Restaurant flag
+# */
+sub GetChargeTotalIncludesRestaurant
+{
+ my $self = shift;
+ $self->{boolChargeTotalIncludesRestaurant};
+}
+
+#/**
+# * Gets the Charge Total Includes Giftshop flag
+# */
+sub GetChargeTotalIncludesGiftshop
+{
+ my $self = shift;
+ $self->{boolChargeTotalIncludesGiftshop};
+}
+
+#/**
+# * Gets the Charge Total Includes Minibar flag
+# */
+sub GetChargeTotalIncludesMinibar
+{
+ my $self = shift;
+ $self->{boolChargeTotalIncludesMinibar};
+}
+
+#/**
+# * Gets the Charge Total Includes Laundry flag
+# */
+sub GetChargeTotalIncludesLaundry
+{
+ my $self = shift;
+ $self->{boolChargeTotalIncludesLaundry};
+}
+
+#/**
+# * Gets the Charge Total Includes Phone flag
+# */
+sub GetChargeTotalIncludesPhone
+{
+ my $self = shift;
+ $self->{boolChargeTotalIncludesPhone};
+}
+
+#/**
+# * Gets the Charge Total Includes Other flag
+# */
+sub GetChargeTotalIncludesOther
+{
+ my $self = shift;
+ $self->{boolChargeTotalIncludesOther};
+}
+
+#/**
+# * Gets the Service No Show flag
+# */
+sub GetServiceNoShow
+{
+ my $self = shift;
+ $self->{boolServiceNoShow};
+}
+
+
+
+#**
+# * Method to create the post string.
+# */
+sub WriteRequest
+{
+ my $self = shift;
+ my $class =ref($self);
+ my $PostString = shift; # a pointer to string as arguement
+ my $temp = "";
+ $self->SUPER::WriteRequest($PostString);
+
+# Cartridge Type
+ $temp = Encode( $self->{strCartridgeType} );
+ $$PostString .= "cartridge_type=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# Ecommerce Indicator
+ $temp = Encode( $self->{strEcommerceIndicator} );
+ $$PostString .= "ecommerce_indicator=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# fixed value for transaction_type
+ $$PostString .= "transaction_type=CREDIT_CARD";
+ $$PostString .= $self->{strParamSeparator};
+
+# creditCardNumber
+ $temp = Encode( $self->{strCreditCardNumber} );
+ $$PostString .= "credit_card_number=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# creditCardVerificationNumber
+ $temp = Encode( $self->{strCreditCardVerificationNumber} );
+ $$PostString .= "credit_card_verification_number=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# expireMonth
+ $temp = Encode( $self->{strExpireMonth} );
+ $$PostString .= "expire_month=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# expireYear
+ $temp = Encode( $self->{strExpireYear} );
+ $$PostString .= "expire_year=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# chargeType
+ $temp = Encode( $self->{strChargeType} );
+ $$PostString .= "charge_type=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# chargeTotal
+ $$PostString .= "charge_total=";
+ $$PostString .= Encode( $self->{dChargeTotal} );
+ $$PostString .= $self->{strParamSeparator};
+
+# cardBrand
+# $$PostString .= "card_brand=";
+# $$PostString .= Encode( $self->{strCardBrand} );
+# $$PostString .= $self->{strParamSeparator};
+
+# orderId
+ $temp = Encode( $self->{strOrderId} );
+ $$PostString .= "order_id=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# captureReferenceId
+ $temp = Encode( $self->{strReferenceId} );
+ $$PostString .= "reference_id=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# orderDescription
+ $temp = Encode( $self->{strOrderDescription} );
+ $$PostString .= "order_description=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# orderUserId
+ $temp = Encode( $self->{strOrderUserId} );
+ $$PostString .= "order_user_id=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# BankApprovalCode
+ $temp = Encode( $self->{strBankApprovalCode} );
+ $$PostString .= "bank_approval_code=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# DuplicateCheck
+ $temp = Encode( $self->{strDuplicateCheck} );
+ $$PostString .= "duplicate_check=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# taxAmount
+ $$PostString .= "tax_amount=";
+ $$PostString .= Encode( $self->{dTaxAmount} );
+ $$PostString .= $self->{strParamSeparator};
+
+# shippingCharge
+ $$PostString .= "shipping_charge=";
+ $$PostString .= Encode( $self->{dShippingCharge} );
+ $$PostString .= $self->{strParamSeparator};
+
+# billFirstName
+ $temp = Encode( $self->{strBillFirstName} );
+ $$PostString .= "bill_first_name=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# billMiddleName
+ $temp = Encode( $self->{strBillMiddleName} );
+ $$PostString .= "bill_middle_name=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# billLastName
+ $temp = Encode( $self->{strBillLastName} );
+ $$PostString .= "bill_last_name=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# billCustomerTitle
+ $temp = Encode( $self->{strBillCustomerTitle} );
+ $$PostString .= "bill_customer_title=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# billCompany
+ $temp = Encode( $self->{strBillCompany} );
+ $$PostString .= "bill_company=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# billAddressOne
+ $temp = Encode( $self->{strBillAddressOne} );
+ $$PostString .= "bill_address_one=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# billAddressTwo
+ $temp = Encode( $self->{strBillAddressTwo} );
+ $$PostString .= "bill_address_two=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# billCity
+ $temp = Encode( $self->{strBillCity} );
+ $$PostString .= "bill_city=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# billStateOrProvince
+ $temp = Encode( $self->{strBillStateOrProvince} );
+ $$PostString .= "bill_state_or_province=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# billPostalCode
+ $temp = Encode( $self->{strBillPostalCode} );
+ $$PostString .= "bill_postal_code=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# billCountryCode
+ $temp = Encode( $self->{strBillCountryCode} );
+ $$PostString .= "bill_country_code=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# billEmail
+ $temp = Encode( $self->{strBillEmail} );
+ $$PostString .= "bill_email=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# billPhone
+ $temp = Encode( $self->{strBillPhone} );
+ $$PostString .= "bill_phone=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# billFax
+ $temp = Encode( $self->{strBillFax} );
+ $$PostString .= "bill_fax=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# billNote
+ $temp = Encode( $self->{strBillNote} );
+ $$PostString .= "bill_note=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# shipFirstName
+ $temp = Encode( $self->{strShipFirstName} );
+ $$PostString .= "ship_first_name=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# shipMiddleName
+ $temp = Encode( $self->{strShipMiddleName} );
+ $$PostString .= "ship_middle_name=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# shipLastName
+ $temp = Encode( $self->{strShipLastName} );
+ $$PostString .= "ship_last_name=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# shipCustomerTitle
+ $temp = Encode( $self->{strShipCustomerTitle} );
+ $$PostString .= "ship_customer_title=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# shipCompany
+ $temp = Encode( $self->{strShipCompany} );
+ $$PostString .= "ship_company=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# shipAddressOne
+ $temp = Encode( $self->{strShipAddressOne} );
+ $$PostString .= "ship_address_one=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# shipAddressTwo
+ $temp = Encode( $self->{strShipAddressTwo} );
+ $$PostString .= "ship_address_two=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# shipCity
+ $temp = Encode( $self->{strShipCity} );
+ $$PostString .= "ship_city=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# shipStateOrProvince
+ $temp = Encode( $self->{strShipStateOrProvince} );
+ $$PostString .= "ship_state_or_province=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# shipPostalCode
+ $temp = Encode( $self->{strShipPostalCode} );
+ $$PostString .= "ship_postal_code=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# shipCountryCode
+ $temp = Encode( $self->{strShipCountryCode} );
+ $$PostString .= "ship_country_code=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# shipEmail
+ $temp = Encode( $self->{strShipEmail} );
+ $$PostString .= "ship_email=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# shipPhone
+ $temp = Encode( $self->{strShipPhone} );
+ $$PostString .= "ship_phone=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# shipFax
+ $temp = Encode( $self->{strShipFax} );
+ $$PostString .= "ship_fax=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# shipNote
+ $temp = Encode( $self->{strShipNote} );
+ $$PostString .= "ship_note=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# Currency
+# $temp = Encode( $self->{strCurrency} );
+# $$PostString .= "currency=$temp";
+# $$PostString .= $self->{strParamSeparator};
+
+# Buyer Code
+ $temp = Encode( $self->{strBuyerCode} );
+ $$PostString .= "buyer_code=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# CAVV
+ $temp = Encode( $self->{strCAVV} );
+ $$PostString .= "cavv=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# Customer IP Address
+ $temp = Encode( $self->{strCustomerIPAddress} );
+ $$PostString .= "customer_ip_address=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# Order Customer ID
+ $temp = Encode( $self->{strOrderCustomerID} );
+ $$PostString .= "order_customer_id=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# Purchase Order Number
+ $temp = Encode( $self->{strPurchaseOrderNumber} );
+ $$PostString .= "purchase_order_number=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# State Tax
+ $temp = Encode( $self->{dStateTax} );
+ if( $temp == -1 ) {
+ $temp = "";
+ }
+ $$PostString .= "state_tax=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# Track 1
+ $temp = Encode( $self->{strTrack1} );
+ $$PostString .= "track1=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# Track 2
+ $temp = Encode( $self->{strTrack2} );
+ $$PostString .= "track2=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# Transaction condition code
+ $temp = Encode( $self->{strTransactionConditionCode} );
+ $$PostString .= "transaction_condition_code=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# XID
+ $temp = Encode( $self->{strXID} );
+ $$PostString .= "x_id=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# Invoice number
+ $temp = Encode( $self->{strInvoiceNumber} );
+ $$PostString .= "invoice_number=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# Tax Exempt
+ $temp = $self->{boolTaxExempt};
+ if ( $temp eq "" ) {
+ #not set. leave it.
+ } elsif ( $temp ) {
+ $temp = "true";
+ } elsif(! $temp) {
+ $temp = "false";
+ } else {
+ $temp = "";
+ }
+ $$PostString .= "tax_exempt=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# Authentication Transaction ID
+ $temp = Encode( $self->{strAuthenticationTransactionId} );
+ $$PostString .= "authentication_transaction_id=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# Authentication Payload
+ $temp = Encode( $self->{strAuthenticationPayload} );
+ $$PostString .= "authentication_payload=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# Success On Authentication Inconclusive
+ $temp = $self->{boolSuccessOnAuthenticationInconclusive};
+ if ( $temp eq "" ) {
+ #not set. leave it.
+ } elsif ( $temp ) {
+ $temp = "true";
+ } elsif(!$temp) {
+ $temp = "false";
+ } else {
+ $temp = "";
+ }
+ $$PostString .= "success_on_authentication_inconclusive=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# Industry
+ $temp = Encode( $self->{strIndustry} );
+ $$PostString .= "industry=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# Folio number
+ $temp = Encode( $self->{strFolioNumber} );
+ $$PostString .= "folio_number=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# Service Rate
+ $temp = Encode( $self->{dServiceRate} );
+ if( $temp == -1 ) {
+ $temp = "";
+ }
+ $$PostString .= "service_rate=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# Service Start Day
+ $temp = Encode( $self->{intServiceStartDay} );
+ $$PostString .= "service_start_day=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# Service Start Month
+ $temp = Encode( $self->{intServiceStartMonth} );
+ $$PostString .= "service_start_month=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# Service Start Year
+ $temp = Encode( $self->{intServiceStartYear} );
+ $$PostString .= "service_start_year=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# Service End Day
+ $temp = Encode( $self->{intServiceEndDay} );
+ $$PostString .= "service_end_day=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# Service End Month
+ $temp = Encode( $self->{intServiceEndMonth} );
+ $$PostString .= "service_end_month=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# Service End Year
+ $temp = Encode( $self->{intServiceEndYear} );
+ $$PostString .= "service_end_year=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# Charge Total Includes Restaurant
+ $temp = Encode( $self->{boolChargeTotalIncludesRestaurant} );
+ if ( $temp eq "" ) {
+ #not set. leave it.
+ } elsif ( $temp ) {
+ $temp = "true";
+ } elsif(!$temp) {
+ $temp = "false";
+ } else {
+ $temp = "";
+ }
+ $$PostString .= "charge_total_incl_restaurant=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# Charge Total Includes Giftshop
+ $temp = Encode( $self->{boolChargeTotalIncludesGiftshop} );
+ if ( $temp eq "" ) {
+ #not set. leave it.
+ } elsif ( $temp ) {
+ $temp = "true";
+ } elsif(!$temp) {
+ $temp = "false";
+ } else {
+ $temp = "";
+ }
+ $$PostString .= "charge_total_incl_giftshop=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# Charge Total Includes Minibar
+ $temp = Encode( $self->{boolChargeTotalIncludesMinibar} );
+ if ( $temp eq "" ) {
+ #not set. leave it.
+ } elsif ( $temp ) {
+ $temp = "true";
+ } elsif(!$temp) {
+ $temp = "false";
+ } else {
+ $temp = "";
+ }
+ $$PostString .= "charge_total_incl_minibar=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# Charge Total Includes Phone
+ $temp = Encode( $self->{boolChargeTotalIncludesPhone} );
+ if ( $temp eq "" ) {
+ #not set. leave it.
+ } elsif ( $temp ) {
+ $temp = "true";
+ } elsif(!$temp) {
+ $temp = "false";
+ } else {
+ $temp = "";
+ }
+ $$PostString .= "charge_total_incl_phone=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# Charge Total Includes Laundry
+ $temp = Encode( $self->{boolChargeTotalIncludesLaundry} );
+ if ( $temp eq "" ) {
+ #not set. leave it.
+ } elsif ( $temp ) {
+ $temp = "true";
+ } elsif(!$temp) {
+ $temp = "false";
+ } else {
+ $temp = "";
+ }
+ $$PostString .= "charge_total_incl_laundry=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# Charge Total Includes Other
+ $temp = Encode( $self->{boolChargeTotalIncludesOther} );
+ if ( $temp eq "" ) {
+ #not set. leave it.
+ } elsif ( $temp ) {
+ $temp = "true";
+ } elsif(!$temp) {
+ $temp = "false";
+ } else {
+ $temp = "";
+ }
+ $$PostString .= "charge_total_incl_other=$temp";
+ $$PostString .= $self->{strParamSeparator};
+
+# Service No Show
+ $temp = Encode( $self->{boolServiceNoShow} );
+ if ( $temp eq "" ) {
+ #not set. leave it.
+ } elsif ( $temp ) {
+ $temp = "true";
+ } elsif(!$temp) {
+ $temp = "false";
+ } else {
+ $temp = "";
+ }
+ $$PostString .= "service_no_show=$temp";
+
+# No parameter separator on last line.
+
+}
+
+sub GetErrorString
+{
+ my $self = shift;
+ return $self->{strError};
+}
+
+