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. # *

# */ 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. # *

# */ 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. # *

# * @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. # *

# * @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. # *

# * @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. # *

# * @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. # *

# * @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 # *

# * @param chargeTotal Must be a positive floating-point number. # * E.g. Use 12.34 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. # *

# * @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. # *

# * @param taxAmount Must be a positive floating-point number. # * E.g. Use 11.55 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. # *

# * @param shippingCharge Must be a positive floating-point number. # * E.g. Use 11.55 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". # *

# * @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". # *

# * @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. # *

# * @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. # *

# * @param ServiceRate Must be a positive floating-point number. # * E.g. Use 11.55 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}; }