File Coverage

blib/lib/Business/OnlinePayment/PPIPayMover/CreditCardRequest.pm
Criterion Covered Total %
statement 581 1285 45.2
branch 70 318 22.0
condition 9 120 7.5
subroutine 48 176 27.2
pod 0 168 0.0
total 708 2067 34.2


line stmt bran cond sub pod time code
1             package Business::OnlinePayment::PPIPayMover::CreditCardRequest;
2            
3 6     6   32 use strict;
  6         12  
  6         233  
4 6     6   30 use vars qw(@ISA);
  6         10  
  6         300  
5 6     6   34 use Business::OnlinePayment::PPIPayMover::TransactionRequest;
  6         32  
  6         154  
6 6     6   4272 use Business::OnlinePayment::PPIPayMover::CreditCardResponse;
  6         19  
  6         178  
7 6     6   47 use Business::OnlinePayment::PPIPayMover::AdditionalField;
  6         10  
  6         136  
8 6     6   29 use Business::OnlinePayment::PPIPayMover::constants;
  6         12  
  6         3690  
9 6     6   4494 use Business::OnlinePayment::PPIPayMover::CountryCodes;
  6         27  
  6         817  
10 6     6   4161 use Business::OnlinePayment::PPIPayMover::URLEncoder;
  6         19  
  6         88804  
11            
12             @ISA = qw(Business::OnlinePayment::PPIPayMover::TransactionRequest);
13             1;
14            
15             #default constructor
16             sub new {
17 4     4 0 59 my $class = shift;
18 4         54 my $self = $class->SUPER::new();
19            
20             # Misc identification fields
21 4         39 $self->{strCartridgeType} = ""; # v1.5
22 4         12 $self->{strEcommerceIndicator} = ""; # v1.5
23            
24             # credit card fields.
25            
26 4         10 $self->{strCreditCardNumber} = "";
27 4         27 $self->{strCreditCardVerificationNumber} = ""; # v1.5
28 4         12 $self->{strAVSCode} = ""; # v1.5
29 4         9 $self->{strExpireMonth} = "";
30 4         10 $self->{strExpireYear} = "";
31 4         10 $self->{strChargeType} = "";
32 4         16 $self->{strChargeTotal} = "";
33 4         9 $self->{dChargeTotal} = -1.0;
34 4         17 $self->{strCardBrand} = "";
35 4         10 $self->{strCurrency} = "";
36 4         15 $self->{strOrderId} = "";
37 4         10 $self->{strBankApprovalCode} = ""; # Required if chargetype is FORCE_AUTH or FORCE_SALE
38 4         11 $self->{strDuplicateCheck} = ""; #v1.7.1
39 4         11 $self->{strReferenceId} = ""; # Required if chargetype is CAPTURE, QUERY_CREDIT, QUERY_PAYMENT or ADJUSTMENT
40 4         6 $self->{strOrderDescription} = "";
41 4         10 $self->{strOrderUserId} = "";
42 4         7 $self->{strTaxAmount} = "";
43 4         6 $self->{dTaxAmount} = -1.0;
44 4         8 $self->{strShippingCharge} = "";
45 4         8 $self->{dShippingCharge} = -1.0;
46            
47             # Billing info fields ...
48            
49 4         9 $self->{strBillFirstName} = "";
50 4         7 $self->{strBillLastName} = "";
51 4         10 $self->{strBillMiddleName} = "";
52 4         7 $self->{strBillCustomerTitle} = "";
53 4         9 $self->{strBillCompany} = "";
54 4         23 $self->{strBillAddressOne} = "";
55 4         16 $self->{strBillAddressTwo} = "";
56 4         26 $self->{strBillCity} = "";
57 4         9 $self->{strBillStateOrProvince} = "";
58 4         9 $self->{strBillPostalCode} = "";
59 4         8 $self->{strBillCountryCode} = "";
60 4         8 $self->{strBillEmail} = "";
61 4         10 $self->{strBillPhone} = "";
62 4         7 $self->{strBillFax} = "";
63 4         8 $self->{strBillNote} = "";
64            
65             # Shipping info fields default values.
66            
67 4         6 $self->{strShipFirstName} = "";
68 4         10 $self->{strShipLastName} = "";
69 4         8 $self->{strShipMiddleName} = "";
70 4         15 $self->{strShipCustomerTitle} = "";
71 4         8 $self->{strShipCompany} = "";
72 4         6 $self->{strShipAddressOne} = "";
73 4         9 $self->{strShipAddressTwo} = "";
74 4         6 $self->{strShipCity} = "";
75 4         9 $self->{strShipStateOrProvince} = "";
76 4         8 $self->{strShipPostalCode} = "";
77 4         8 $self->{strShipCountryCode} = "";
78 4         9 $self->{strShipEmail} = "";
79 4         8 $self->{strShipPhone} = "";
80 4         10 $self->{strShipFax} = "";
81 4         6 $self->{strShipNote} = "";
82            
83             # Authentication fields
84 4         8 $self->{strAuthenticationTransactionId} = "";
85 4         14 $self->{strAuthenticationPayload} = "";
86 4         24 $self->{boolSuccessOnAuthenticationInconclusive} = "";
87            
88            
89             # Others
90 4         8 $self->{strBuyerCode} = "";
91 4         13 $self->{strCAVV} = "";
92 4         9 $self->{strCustomerIPAddress} = "";
93 4         9 $self->{strPurchaseOrderNumber} = "";
94 4         10 $self->{dStateTax} = -1.0;
95 4         26 $self->{strTrack1} = "";
96 4         11 $self->{strTrack2} = "";
97 4         10 $self->{strXID} = "";
98 4         7 $self->{boolTaxExempt} = "";
99 4         16 $self->{strInvoiceNumber} = "";
100            
101             # Industry Fields
102 4         7 $self->{strIndustry} = "";
103 4         9 $self->{strFolioNumber} = "";
104            
105 4         20 $self->{boolChargeTotalIncludesRestaurant} = "";
106 4         10 $self->{boolChargeTotalIncludesGiftshop} = "";
107 4         8 $self->{boolChargeTotalIncludesMinibar} = "";
108 4         9 $self->{boolChargeTotalIncludesPhone} = "";
109 4         6 $self->{boolChargeTotalIncludesLaundry} = "";
110 4         8 $self->{boolChargeTotalIncludesOther} = "";
111            
112 4         8 $self->{dServiceRate} = -1.0;
113 4         7 $self->{strServiceRate} = "";
114 4         8 $self->{intServiceEndDay} = "";
115 4         8 $self->{intServiceEndMonth} = "";
116 4         8 $self->{intServiceEndYear} = "";
117 4         7 $self->{intServiceStartDay} = "";
118 4         6 $self->{intServiceStartMonth} = "";
119 4         8 $self->{intServiceStartYear} = "";
120 4         9 $self->{boolServiceNoShow} = "";
121            
122 4         14 return $self;
123             }
124            
125            
126            
127             #**
128             # * Set the value of the cartridge type.
129             # *

130             # */
131             sub SetCartridgeType {
132 0     0 0 0 my $self = shift;
133 0         0 my $cartType = shift; # take one string arguement to get cartridgeType
134 0 0       0 if (!defined($cartType)) {
135 0         0 $self->{strError} = "Cartridge type is undefined.";
136 0         0 return CCR_ERROR;
137             }
138 0 0       0 if ($cartType eq ""){
139 0         0 $self->{strError} = "Invalid cartridge type.";
140 0         0 return CCR_ERROR;
141             }
142 0         0 $self->{strCartridgeType} = $cartType;
143 0         0 return CCR_NO_ERROR;
144             }
145            
146            
147             #**
148             # * Set the value of the Ecommerce Indicator number.
149             # *

150             # */
151             sub SetEcommerceIndicator {
152 0     0 0 0 my $self = shift;
153 0         0 my $ecommerceIndicator = shift; # take one string arguement to get EcommerceIndicator
154 0 0       0 if (!defined($ecommerceIndicator)) {
155 0         0 $self->{strError} = "Ecommerce indicator is undefined.";
156 0         0 return CCR_ERROR;
157             }
158 0 0       0 if ($ecommerceIndicator eq ""){
159 0         0 $self->{strError} = "Invalid ecommerce indicator.";
160 0         0 return CCR_ERROR;
161             }
162 0         0 $self->{strEcommerceIndicator} = $ecommerceIndicator;
163 0         0 return CCR_NO_ERROR;
164             }
165            
166            
167            
168            
169             #**
170             # * Set the value of the credit card number.
171             # *

172             # * @param creditCardNumber must be numeric characters
173             # * @exception TransactionProtocolException thrown if creditCardNumber is non-numeric or the empty String.
174             # */
175             sub SetCreditCardNumber {
176 4     4 0 8 my $self = shift;
177 4         10 my $ccNo = shift; # take one string arguement to get creditcard number
178 4 50       83 if (!defined($ccNo)) {
179 0         0 $self->{strError} = "Credit card number is undefined.";
180 0         0 return CCR_ERROR;
181             }
182 4 50       17 if ($ccNo eq ""){
183 0         0 $self->{strError} = "Invalid credit card number.";
184 0         0 return CCR_ERROR;
185             }
186 4 50       22 if ($ccNo =~ /\D/) {
187 0         0 $self->{strError} = "Non-numeric credit card number.";
188 0         0 return CCR_ERROR;
189             }
190 4 50 33     34 if ( ( length $ccNo < 13 ) || ( length $ccNo > 19 ) ) {
191 0         0 $self->{strError} = "Invalid credit card number length.";
192 0         0 return CCR_ERROR;
193             }
194 4         11 $self->{strCreditCardNumber} = $ccNo;
195 4         14 return CCR_NO_ERROR;
196             }
197            
198             #**
199             # * Set the value of the credit card verification number.
200             # *

201             # * @param creditCardVerificationNumber must be numeric characters
202             # */
203             sub SetCreditCardVerificationNumber {
204 4     4 0 8 my $self = shift;
205 4         9 my $ccVerNo = shift; # take one string arguement to get creditCardVerification number
206 4 100       17 if (!defined($ccVerNo)) {
207 3         8 $self->{strError} = "Credit card verification number is undefined.";
208 3         15 return CCR_ERROR;
209             }
210 1 50       4 if ($ccVerNo eq ""){
211 0         0 $self->{strError} = "Invalid credit card verification number.";
212 0         0 return CCR_ERROR;
213             }
214 1 50       4 if ($ccVerNo =~ /\D/) {
215 0         0 $self->{strError} = "Non-numeric credit card verification number.";
216 0         0 return CCR_ERROR;
217             }
218 1         3 $self->{strCreditCardVerificationNumber} = $ccVerNo;
219 1         5 return CCR_NO_ERROR;
220             }
221            
222            
223             #**
224             # * Set the value of the credit card expiration month.
225             # *

226             # * @param expireMonth Must be an integer in ASCII characters in the range "1" to "12, inclusive.
227             # * @exception TransactionProtocolException thrown if expireMonth is not >= 1 and <= 12.
228             # */
229             sub SetExpireMonth
230             {
231 4     4 0 7 my $self = shift;
232 4         9 my $expireMonth = shift; #take one string arguement
233 4 50       16 if (!defined($expireMonth)) {
234 0         0 $self->{strError} = "Expire month is undefined.";
235 0         0 return CCR_ERROR;
236             }
237 4 50       25 if ($expireMonth eq ""){
238 0         0 $self->{strError} = "Invalid expire month.";
239 0         0 return CCR_ERROR;
240             }
241            
242 4 50       21 if ($expireMonth =~ /\D/) {
243 0         0 $self->{strError} = "Invalid credit expire month (non-digit).";
244 0         0 return CCR_ERROR;
245             }
246            
247 4         17 my $iExpireMonth = 1 * $expireMonth;
248 4 50 33     47 if ($iExpireMonth < 1 || $iExpireMonth > 12) {
249 0         0 $self->{strError} .= "Invalid expire month (not 1 through 12).";
250 0         0 return CCR_ERROR;
251             }
252 4         11 $self->{strExpireMonth} = $expireMonth;
253            
254 4         21 return 1;
255             }
256            
257            
258             #**
259             # * Set the value of the credit card expiration year.
260             # *

261             # * @param expireYear Must be a four-digit integer in ASCII characters. E.g. "2001".
262             # * @exception TransactionProtocolException thrown if expireYear is not a four digit year.
263             #
264             sub SetExpireYear
265             {
266 4     4 0 8 my $self = shift;
267 4         57 my $expireYear = shift; # take a string arguement
268 4 50       17 if (!defined($expireYear)) {
269 0         0 $self->{strError} = "Expire year is undefined.";
270 0         0 return CCR_ERROR;
271             }
272 4 50       17 if (length($expireYear) != 4) {
273 0         0 $self->{strError} = "Invalid expire year, must be 4 numeric characters.";
274 0         0 return CCR_ERROR;
275             }
276 4 50       37 if($expireYear =~ /\D/){
277 0         0 $self->{strError} = "Invalid credit expire year (non-numeric).";
278 0         0 return CCR_ERROR;
279             }
280            
281 4         10 $self->{strExpireYear} = $expireYear;
282 4         15 return CCR_NO_ERROR;
283             }
284             #**
285             # * Set the charge type.
286             # *

287             # * @param chargeType Must be one of the following constants: SALE, AUTH, CAPTURE, FORCE_AUTH,
288             # * FORCE_SALE, VOID, QUERY_CREDIT, QUERY_PAYMENT, ADJUSTMENT or CREDIT.
289             # * @exception TransactionProtocolException thrown if chargeType is not a valid charge type
290             # * defined by this class.
291             # */
292             sub SetChargeType
293             {
294 4     4 0 9 my $self = shift;
295 4         8 my $chargeType = shift; # take one string arguement
296            
297 4 50       23 if (!defined($chargeType)) {
298 0         0 $self->{strError} = "Charge type is undefined.";
299 0         0 return CCR_ERROR;
300             }
301 4 50       24 if ($chargeType eq "") {
302 0         0 $self->{strError} = "Invalid charge type";
303 0         0 return CCR_ERROR;
304             }
305            
306 4 0 66     21 if (!($chargeType eq SALE || $chargeType eq AUTH ||
      33        
      33        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
307             $chargeType eq CAPTURE || $chargeType eq VOID ||
308             $chargeType eq FORCE_AUTH || $chargeType eq FORCE_SALE ||
309             $chargeType eq QUERY_PAYMENT || $chargeType eq QUERY_CREDIT ||
310             $chargeType eq CLOSE_ORDER || $chargeType eq CANCEL_ORDER ||
311             $chargeType eq VOID_AUTH || $chargeType eq VOID_CAPTURE ||
312             $chargeType eq VOID_CREDIT || $chargeType eq CREATE_ORDER ||
313             $chargeType eq CREDIT || $chargeType eq ADJUSTMENT)) {
314 0         0 $self->{strError} = "Invalid charge type.";
315 0         0 return CCR_ERROR;
316             }
317 4         10 $self->{strChargeType} = $chargeType;
318 4         18 return CCR_NO_ERROR;
319             }
320            
321            
322             #**
323             # * Set the transaction amount using a floating point value. Other amounts, such
324             # * as tax amount or shipping charges, do not affect the charge total
325             # *

326             # * @param chargeTotal Must be a positive floating-point number.
327             # * E.g. Use 12.34 to represent $12.34.
328             # * @exception TransactionProtocolException thrown if chargeTotal less than zero
329             # */
330             sub SetChargeTotal
331             {
332 4     4 0 8 my $self = shift;
333 4         13 my $chargeTotal = shift; # take either one string or float arguement
334            
335 4 50       14 if (!defined($chargeTotal)) {
336 0         0 $self->{strError} = "Charge total is undefined.";
337 0         0 return CCR_ERROR;
338             }
339            
340 4 50       31 if ( $chargeTotal !~ /^(\d+\.?\d*|\.\d+)$/ ) {
341 0         0 $self->{strError} = "Non-numeric charge.";
342 0         0 return CCR_ERROR;
343             }
344            
345 4         25 my $dChargeTotal = $chargeTotal * 1.0;
346 4 50       31 if ($dChargeTotal < 0){
347 0         0 $self->{strError} = "Charge total cannot be negative.";
348 0         0 return CCR_ERROR;
349             }
350            
351 4         11 $self->{dChargeTotal} = $dChargeTotal;
352 4         12 $self->{strChargeTotal} = "".$chargeTotal;
353            
354 4         15 return CCR_NO_ERROR;
355             }
356            
357            
358            
359            
360             #**
361             # * Set the transaction credit card brand.
362             # *

363             # * @param cardBrand Must be one of the following constants:
364             # * VISA, MASTERCARD, AMERICAN_EXPRESS, DISCOVER, NOVA, AMEX, DINERS, EUROCARD,
365             # * CARD_BRAND_1, CARD_BRAND_2, CARD_BRAND_3, CARD_BRAND_4, CARD_BRAND_5, or CARD_BRAND_6.
366             # * @exception TransactionProtocolException thrown if cardBrand not one of the card brand constants
367             # * defined by this class.
368             # */
369             sub SetCardBrand
370             {
371 0     0 0 0 my $self = shift;
372 0         0 my $CardBrand = shift; # take a string arguement
373            
374 0 0 0     0 if (!defined($CardBrand) || $CardBrand eq ""){
375 0         0 $self->{strError} = "Blank or undefined card type.";
376 0         0 return CCR_ERROR;
377             }
378            
379 0 0 0     0 if ($CardBrand ne VISA &&
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
380             $CardBrand ne MASTERCARD &&
381             $CardBrand ne AMERICAN_EXPRESS &&
382             $CardBrand ne DISCOVER &&
383             $CardBrand ne NOVA &&
384             $CardBrand ne AMEX &&
385             $CardBrand ne DINERS &&
386             $CardBrand ne EUROCARD &&
387             $CardBrand ne CARD_BRAND_1 &&
388             $CardBrand ne CARD_BRAND_2 &&
389             $CardBrand ne CARD_BRAND_3 &&
390             $CardBrand ne CARD_BRAND_4 &&
391             $CardBrand ne CARD_BRAND_5 &&
392             $CardBrand ne CARD_BRAND_6) {
393 0         0 $self->{strError} = "Invalid card brand:$CardBrand.";
394 0         0 return CCR_ERROR;
395             }
396 0         0 $self->{strCardBrand} = $CardBrand;
397 0         0 return CCR_NO_ERROR;
398             }
399            
400             #**
401             # * Set the order ID.
402             # */
403             sub SetOrderId
404             {
405 4     4 0 9 my $self = shift;
406 4         8 my $OrderId = shift; # take a string arguement
407 4 50       16 if (!defined($OrderId)) {
408 4         15 $self->{strError} = "Order id is undefined.";
409 4         17 return CCR_ERROR;
410             }
411 0         0 $self->{strOrderId} = $OrderId;
412 0         0 return CCR_NO_ERROR;
413             }
414            
415             #**
416             # * Set the capture reference ID (used in tracking captures / deposits).
417             # * This field is required if chargeType is CAPTURE.
418             # */
419             sub SetCaptureReferenceId
420             {
421 0     0 0 0 my $self = shift;
422 0         0 my $CaptureReferenceId = shift; #take a string arguement
423 0 0       0 if (!defined($CaptureReferenceId)){
424 0         0 $self->{strError} = "Capture reference id is undefined.";
425 0         0 return CCR_ERROR;
426             }
427 0         0 $self->{strReferenceId} = $CaptureReferenceId;
428 0         0 return CCR_NO_ERROR;
429             }
430            
431             #
432             # Set Reference Id
433             # This should be used instead of SetCaptureReferenceId
434             # Added in v1.6
435             #
436             sub SetReferenceId
437             {
438 0     0 0 0 my $self = shift;
439 0         0 my $ReferenceId = shift; #take a string arguement
440 0 0       0 if (!defined($ReferenceId)){
441 0         0 $self->{strError} = "Reference id is undefined.";
442 0         0 return CCR_ERROR;
443             }
444 0         0 $self->{strReferenceId} = $ReferenceId;
445 0         0 return CCR_NO_ERROR;
446             }
447            
448             #**
449             # * Set a comment describing the order.
450             # */
451             sub SetOrderDescription
452             {
453 4     4 0 8 my $self = shift;
454 4         7 my $OrderDescription = shift; #take a string arguement
455 4 50       20 if (!defined($OrderDescription)) {
456 0         0 $self->{strError} = "Order description is undefined.";
457 0         0 return CCR_ERROR;
458             }
459 4         8 $self->{strOrderDescription} = $OrderDescription;
460 4         20 return CCR_NO_ERROR;
461             }
462            
463            
464             #/**
465             # * Set the order's user id. The order user id is an identifier
466             # * for a merchant's customer. It is not required, but may provide
467             # * increased searching functionality in the merchant support center.
468             # */
469             sub SetOrderUserId
470             {
471 0     0 0 0 my $self = shift;
472 0         0 my $OrderUserId = shift; # take a string arguement
473 0 0       0 if (!defined($OrderUserId)) {
474 0         0 $self->{strError} = "Order user ID is undefined.";
475 0         0 return CCR_ERROR;
476             }
477 0         0 $self->{strOrderUserId} = $OrderUserId;
478 0         0 return CCR_NO_ERROR;
479             }
480            
481             #**
482             # * Set the bank approval code (used in force sale and force auth).
483             # * This field is required if chargeType is FORCE_AUTH or FORCE_SALE.
484             # */
485             sub SetBankApprovalCode
486             {
487 0     0 0 0 my $self = shift;
488 0         0 my $BankApprovalCode = shift; #take a string arguement
489 0 0       0 if (!defined($BankApprovalCode)){
490 0         0 $self->{strError} = "Bank Approval Code is undefined.";
491 0         0 return CCR_ERROR;
492             }
493 0         0 $self->{strBankApprovalCode} = $BankApprovalCode;
494 0         0 return CCR_NO_ERROR;
495             }
496            
497             #**
498             # * Set the duplicate check.
499             # * Possible values are CHECK, OVERRIDE, NO_CHECK
500             # */
501             sub SetDuplicateCheck
502             {
503 0     0 0 0 my $self = shift;
504 0         0 my $DuplicateCheck = shift; #take a string arguement
505 0 0       0 if (!defined($DuplicateCheck)){
506 0         0 $self->{strError} = "Duplicate Check is undefined.";
507 0         0 return CCR_ERROR;
508             }
509 0         0 $self->{strDuplicateCheck} = $DuplicateCheck;
510 0         0 return CCR_NO_ERROR;
511             }
512            
513            
514             #**
515             # * Set the tax amount using a floating point value.
516             # * The tax amount is the amount of the chargeTotal that is tax.
517             # *

518             # * @param taxAmount Must be a positive floating-point number.
519             # * E.g. Use 11.55 to represent $11.55.
520             # * @exception TransactionProtocolException thrown if taxAmount less than zero
521             # */
522             sub SetTaxAmount
523             {
524 0     0 0 0 my $self = shift;
525 0         0 my $TaxAmount = shift; # take a string or an integer arguement
526            
527 0 0       0 if (!defined($TaxAmount)) {
528 0         0 $self->{strError} = "Tax amount is undefined.";
529 0         0 return CCR_ERROR;
530             }
531 0 0       0 if ( $TaxAmount !~ /^(\d+\.?\d*|\.\d+)$/ ) {
532 0         0 $self->{strError} = "Non-numeric tax amount.";
533 0         0 return CCR_ERROR;
534             }
535            
536 0         0 my $dTaxAmount = $TaxAmount * 1.0;
537 0 0       0 if ($dTaxAmount < 0) {
538 0         0 $self->{strError} = "Tax amount cannot be negative.";
539 0         0 return CCR_ERROR;
540             }
541            
542 0         0 $self->{dTaxAmount} = $dTaxAmount;
543 0         0 $self->{strTaxAmount} = "".$TaxAmount;
544 0         0 return CCR_NO_ERROR;
545             }
546            
547            
548             #**
549             # * Set the shipping charge using a floating point value.
550             # * The shipping charge is the amount of the chargeTotal that is shipping charges.
551             # *

552             # * @param shippingCharge Must be a positive floating-point number.
553             # * E.g. Use 11.55 to represent $11.55.
554             # * @exception TransactionProtocolException thrown if shippingCharge less than zero
555             # */
556             sub SetShippingCharge
557             {
558 0     0 0 0 my $self = shift;
559 0         0 my $ShippingCharge = shift; # take a string or an integer arguement
560            
561 0 0       0 if (!defined($ShippingCharge)) {
562 0         0 $self->{strError} = "Shipping charge is undefined.";
563 0         0 return CCR_ERROR;
564             }
565 0 0       0 if ( $ShippingCharge !~ /^(\d+\.?\d*|\.\d+)$/ ) {
566 0         0 $self->{strError} = "Non-numeric shipping charge.";
567 0         0 return CCR_ERROR;
568             }
569            
570 0         0 my $dShippingCharge = $ShippingCharge * 1.0;
571 0 0       0 if ($dShippingCharge < 0.00) {
572 0         0 $self->{strError} = "Shipping charge cannot be negative.";
573 0         0 return CCR_ERROR;
574             }
575            
576 0         0 $self->{dShippingCharge} = $dShippingCharge;
577 0         0 $self->{strShippingCharge} = "".$ShippingCharge;
578 0         0 return CCR_NO_ERROR;
579             }
580            
581            
582             #**
583             # * Set the first name of the customer being billed.
584             # */
585             sub SetBillFirstName
586             {
587 4     4 0 7 my $self = shift;
588 4         13 my $BillFirstName = shift; # take a string arguement
589 4 100       15 if (!defined($BillFirstName)) {
590 1         3 $self->{strError} = "Bill first name is undefined.";
591 1         5 return CCR_ERROR;
592             }
593 3         6 $self->{strBillFirstName} = $BillFirstName;
594 3         22 return CCR_NO_ERROR;
595             }
596            
597            
598             #**
599             # * Set the last name of the customer being billed.
600             # */
601             sub SetBillLastName
602             {
603 4     4 0 8 my $self = shift;
604 4         8 my $BillLastName = shift; # take a string arguement
605 4 100       13 if (!defined($BillLastName)) {
606 1         3 $self->{strError} = "Bill last name is undefined.";
607 1         3 return CCR_ERROR;
608             }
609 3         8 $self->{strBillLastName} = $BillLastName;
610 3         13 return CCR_NO_ERROR;
611             }
612            
613            
614             #**
615             # * Set the middle name of the customer being billed.
616             #
617             sub SetBillMiddleName
618             {
619 0     0 0 0 my $self = shift;
620 0         0 my $BillMiddleName = shift; # take a string arguement
621 0 0       0 if (!defined($BillMiddleName)) {
622 0         0 $self->{strError} = "Bill middle name is undefined.";
623 0         0 return CCR_ERROR;
624             }
625 0         0 $self->{strBillMiddleName} = $BillMiddleName;
626 0         0 return CCR_NO_ERROR;
627             }
628            
629            
630             #**
631             # * Set the title of the customer being billed, such as "Mr." or "Sales Manager".
632             #/
633             sub SetBillCustomerTitle
634             {
635 0     0 0 0 my $self = shift;
636 0         0 my $BillCustomerTitle = shift; # take a string arguement
637 0 0       0 if (!defined($BillCustomerTitle)) {
638 0         0 $self->{strError} = "Bill customer title is undefined.";
639 0         0 return CCR_ERROR;
640             }
641 0         0 $self->{strBillCustomerTitle} = $BillCustomerTitle;
642 0         0 return CCR_NO_ERROR;
643             }
644            
645            
646             #**
647             # * Set the name of the company of the customer being billed.
648             # */
649             sub SetBillCompany
650             {
651 4     4 0 9 my $self = shift;
652 4         13 my $BillCompany = shift; # take a string arguement
653 4 50       15 if (!defined($BillCompany)) {
654 4         8 $self->{strError} = "Bill company is undefined.";
655 4         16 return CCR_ERROR;
656             }
657 0         0 $self->{strBillCompany} = $BillCompany;
658 0         0 return CCR_NO_ERROR;
659             }
660            
661            
662             #**
663             # * Set the first part of the address of the customer being billed,
664             # * such as "1455 Cedar Springs Drive".
665             # */
666             sub SetBillAddressOne
667             {
668 4     4 0 9 my $self = shift;
669 4         8 my $BillAddressOne = shift; # take a string arguement
670 4 50       32 if (!defined($BillAddressOne)) {
671 0         0 $self->{strError} = "Bill address one is undefined.";
672 0         0 return CCR_ERROR;
673             }
674 4         17 $self->{strBillAddressOne} = $BillAddressOne;
675 4         21 return CCR_NO_ERROR;
676             }
677            
678            
679             #*
680             # * Set the second part of the address of the customer being billed,
681             # * such as "Suite 100".
682             # */
683             sub SetBillAddressTwo
684             {
685 0     0 0 0 my $self = shift;
686 0         0 my $BillAddressTwo = shift; # take a string arguement
687 0 0       0 if (!defined($BillAddressTwo)) {
688 0         0 $self->{strError} = "Bill address two is undefined.";
689 0         0 return CCR_ERROR;
690             }
691 0         0 $self->{strBillAddressTwo} = $BillAddressTwo;
692 0         0 return CCR_NO_ERROR;
693             }
694            
695            
696             #**
697             # * Set the city of the customer being billed.
698             # */
699             sub SetBillCity
700             {
701 4     4 0 9 my $self = shift;
702 4         7 my $BillCity = shift; # take a string arguement
703 4 50       16 if (!defined($BillCity)) {
704 0         0 $self->{strError} = "Bill city is undefined.";
705 0         0 return CCR_ERROR;
706             }
707 4         10 $self->{strBillCity} = $BillCity;
708 4         14 return CCR_NO_ERROR;
709             }
710            
711            
712             #**
713             # * Set the state or province of the customer being billed.
714             # */
715             sub SetBillStateOrProvince
716             {
717 4     4 0 7 my $self = shift;
718 4         9 my $BillStateOrProvince = shift; # take a string arguement
719 4 50       12 if (!defined($BillStateOrProvince)) {
720 0         0 $self->{strError} = "Bill state or province is undefined.";
721 0         0 return CCR_ERROR;
722             }
723 4         16 $self->{strBillStateOrProvince} = $BillStateOrProvince;
724 4         14 return CCR_NO_ERROR;
725             }
726            
727            
728             #**
729             # * Set the postal code (or zip code) of the customer being billed.
730             # */
731             sub SetBillPostalCode
732             {
733 4     4 0 9 my $self = shift;
734 4         8 my $BillPostalCode = shift; # take a string arguement
735 4 50       17 if (!defined($BillPostalCode)) {
736 0         0 $self->{strError} = "Bill postal code is undefined.";
737 0         0 return CCR_ERROR;
738             }
739 4         17 $self->{strBillPostalCode} = $BillPostalCode;
740 4         21 return CCR_NO_ERROR;
741             }
742            
743            
744             #**
745             # * @param billCountryCode The alphabetic country code of the billing address.
746             # * Must be a valid country code from ISO-3166. E.g. "CA" or "US".
747             # *

748             # * @see com.paygateway.CountryCodes
749             # * @exception TransactionProtocolException thrown if an invalid country code is passed in
750             # */
751             sub SetBillCountryCode
752             {
753 4     4 0 15 my $self = shift;
754 4         9 my $BillCountryCode = shift; # take a string arguement (either country code or country name)
755            
756 4 50       21 if (!defined($BillCountryCode)) {
757 4         10 $self->{strError} = "Country code is undefined.";
758 4         19 return CCR_ERROR;
759             }
760 0         0 my $CountryCode = getCCodeFromCName($BillCountryCode);
761 0 0       0 if (isValidCountryCode($BillCountryCode)) {
    0          
762 0         0 $self->{strBillCountryCode} = $BillCountryCode;
763 0         0 return CCR_NO_ERROR;
764             }
765             elsif (defined($CountryCode)) {
766 0         0 $self->{strBillCountryCode} = $CountryCode;
767 0         0 return CCR_NO_ERROR;
768             }
769             else {
770 0         0 $self->{strError} = "Invalid country code for billing address.";
771 0         0 return CCR_ERROR;
772             }
773             }
774            
775            
776             #**
777             # * Set the email address of the customer being billed.
778             # */
779             sub SetBillEmail
780             {
781 4     4 0 8 my $self = shift;
782 4         7 my $BillEmail = shift;
783 4 100       23 if (!defined($BillEmail)) {
784 3         8 $self->{strError} = "Bill email is undefined.";
785 3         11 return CCR_ERROR;
786             }
787 1 50       7 if ($BillEmail !~ /.+@.+\..+/ ) {
788 0         0 $self->{strError} = "Invalid bill email format.";
789 0         0 return CCR_ERROR;
790             }
791 1         2 $self->{strBillEmail} = $BillEmail;
792 1         4 return CCR_NO_ERROR;
793             }
794            
795            
796             #**
797             #* Set the phone number
798             #*/
799             sub SetBillPhone
800             {
801 4     4 0 8 my $self = shift;
802 4         10 my $BillPhone = shift; # take a string arguement
803 4 100       14 if (!defined($BillPhone)) {
804 1         3 $self->{strError} = "Bill phone is undefined.";
805 1         4 return CCR_ERROR;
806             }
807 3         8 $self->{strBillPhone} = $BillPhone;
808 3         10 return CCR_NO_ERROR;
809             }
810            
811            
812             #**
813             # * Set the facsimile number of the customer being billed.
814             # */
815             sub SetBillFax
816             {
817 4     4 0 8 my $self = shift;
818 4         14 my $BillFax = shift;
819 4 50       14 if (!defined($BillFax)) {
820 4         10 $self->{strError} = "Bill fax is undefined";
821 4         20 return CCR_ERROR;
822             }
823 0         0 $self->{strBillFax} = $BillFax;
824 0         0 return CCR_NO_ERROR;
825             }
826            
827            
828             #**
829             # * Set the billing note. This a comment about the billing information.
830             # */
831             sub SetBillNote
832             {
833 4     4 0 7 my $self = shift;
834 4         7 my $BillNote = shift; #take a string arguement
835 4 50       14 if (!defined($BillNote)) {
836 4         9 $self->{strError} = "Bill note is undefined";
837 4         14 return CCR_ERROR;
838             }
839 0         0 $self->{strBillNote} = $BillNote;
840 0         0 return CCR_NO_ERROR;
841             }
842            
843            
844             #**
845             # * Set the first name for the shipping information.
846             # */
847             sub SetShipFirstName
848             {
849 4     4 0 8 my $self = shift;
850 4         8 my $ShipFirstName = shift; # take a string arguement
851 4 50       25 if (!defined($ShipFirstName)) {
852 4         9 $self->{strError} = "Ship first name is undefined";
853 4         18 return CCR_ERROR;
854             }
855 0         0 $self->{strShipFirstName} = $ShipFirstName;
856 0         0 return CCR_NO_ERROR;
857             }
858            
859            
860             #**
861             # * Set the last name for the shipping information.
862             # */
863             sub SetShipLastName
864             {
865 4     4 0 8 my $self = shift;
866 4         7 my $ShipLastName = shift; # take a string arguement
867 4 50       20 if (!defined($ShipLastName)) {
868 4         14 $self->{strError} = "Ship last is undefined.";
869 4         20 return CCR_ERROR;
870             }
871 0         0 $self->{strShipLastName} = $ShipLastName;
872 0         0 return CCR_NO_ERROR;
873             }
874            
875            
876             #**
877             # * Set the middle name for the shipping information.
878             # */
879             sub SetShipMiddleName
880             {
881 0     0 0 0 my $self = shift;
882 0         0 my $ShipMiddleName = shift; # take a string arguement
883            
884 0 0       0 if (!defined($ShipMiddleName)) {
885 0         0 $self->{strError} = "Ship middle name is undefined.";
886 0         0 return CCR_ERROR;
887             }
888 0         0 $self->{strShipMiddleName} = $ShipMiddleName;
889 0         0 return CCR_NO_ERROR;
890             }
891            
892            
893             #**
894             # * Set the customer title of the customer being jstrShipped to.
895             # */
896             sub SetShipCustomerTitle
897             {
898 0     0 0 0 my $self = shift;
899 0         0 my $ShipCustomerTitle = shift; # take a string arguement
900 0 0       0 if (!defined($ShipCustomerTitle)) {
901 0         0 $self->{strError} = "Ship customer title is undefined.";
902 0         0 return CCR_ERROR;
903             }
904 0         0 $self->{strShipCustomerTitle} = $ShipCustomerTitle;
905 0         0 return CCR_NO_ERROR;
906             }
907            
908            
909             #**
910             # * Set the company for the shipping information.
911             # */
912             sub SetShipCompany
913             {
914 4     4 0 7 my $self = shift;
915 4         8 my $ShipCompany = shift; # take a string arguement
916 4 50       15 if (!defined($ShipCompany)) {
917 4         10 $self->{strError} = "Ship company is undefined.";
918 4         15 return CCR_ERROR;
919             }
920 0         0 $self->{strShipCompany} = $ShipCompany;
921 0         0 return CCR_NO_ERROR;
922             }
923            
924            
925             #**
926             # * Set the first part of the shipping address, such as
927             # * "485 Bridestone Way".
928             # */
929             sub SetShipAddressOne
930             {
931 4     4 0 8 my $self = shift;
932 4         8 my $ShipAddressOne = shift; # take a string arguement
933 4 50       20 if (!defined($ShipAddressOne)) {
934 4         11 $self->{strError} = "Ship address is undefined.";
935 4         14 return CCR_ERROR;
936             }
937 0         0 $self->{strShipAddressOne} = $ShipAddressOne;
938 0         0 return CCR_NO_ERROR;
939             }
940            
941            
942             #**
943             # * Set the second part of the shipping address, such as
944             # * "Suite 234".
945            
946             sub SetShipAddressTwo
947             {
948 0     0 0 0 my $self = shift;
949 0         0 my $ShipAddressTwo = shift; # take a string arguement
950 0 0       0 if (!defined($ShipAddressTwo)) {
951 0         0 $self->{strError} = "Ship address two is undefined.";
952 0         0 return CCR_ERROR;
953             }
954 0         0 $self->{strShipAddressTwo} = $ShipAddressTwo;
955 0         0 return CCR_NO_ERROR;
956             }
957            
958            
959             #**
960             # * Set the city for the shipping address.
961             # */
962             sub SetShipCity
963             {
964 4     4 0 8 my $self = shift;
965 4         8 my $ShipCity = shift; # take a string arguement
966 4 50       12 if (!defined($ShipCity)) {
967 4         11 $self->{strError} = "Ship city is undefined.";
968 4         15 return CCR_ERROR;
969             }
970 0         0 $self->{strShipCity} = $ShipCity;
971 0         0 return CCR_NO_ERROR;
972             }
973            
974            
975             #**
976             # * Set the state or provicnce for the shipping address.
977             # */
978             sub SetShipStateOrProvince
979             {
980 4     4 0 12 my $self = shift;
981 4         21 my $ShipStateOrProvince = shift; # take a string arguement
982 4 50       19 if (!defined($ShipStateOrProvince)) {
983 4         11 $self->{strError} = "Ship state or province is undefined.";
984 4         15 return CCR_ERROR;
985             }
986 0         0 $self->{strShipStateOrProvince} = $ShipStateOrProvince;
987 0         0 return CCR_NO_ERROR;
988             }
989            
990            
991             #**
992             # * Set the postal code (or zip code) for the shipping address.
993             # */
994             sub SetShipPostalCode
995             {
996 4     4 0 8 my $self = shift;
997 4         8 my $ShipPostalCode = shift; # take a string arguement
998 4 50       21 if (!defined($ShipPostalCode)) {
999 4         10 $self->{strError} = "Ship postal code is undefined.";
1000 4         14 return CCR_ERROR;
1001             }
1002 0         0 $self->{strShipPostalCode} = $ShipPostalCode;
1003 0         0 return CCR_NO_ERROR;
1004             }
1005            
1006             #**
1007             # * Set the shipping country code.
1008             # * @param shipCountryCode The alphabetic country code of the billing address.
1009             # * Must be a valid country code from ISO-3166. E.g. "CA" or "US".
1010             # *

1011             # * @see com.paygateway.CountryCodes
1012             # * @exception TransactionProtocolException thrown if an invalid country code is passed in
1013             # */
1014             sub SetShipCountryCode
1015             {
1016 4     4 0 18 my $self = shift;
1017 4         10 my $ShipCountryCode = shift; # take a string arguement (either country code or country name)
1018            
1019 4 50       19 if (!defined($ShipCountryCode)) {
1020 4         16 $self->{strError} = "Ship country code is undefined.";
1021 4         15 return CCR_ERROR;
1022             }
1023 0         0 my $CountryCode = getCCodeFromCName($ShipCountryCode) ;
1024 0 0       0 if (isValidCountryCode($ShipCountryCode)) {
    0          
1025 0         0 $self->{strShipCountryCode} = $ShipCountryCode;
1026 0         0 return CCR_NO_ERROR;
1027             }
1028             elsif (defined($CountryCode)) {
1029 0         0 $self->{strShipCountryCode} = $CountryCode;
1030 0         0 return CCR_NO_ERROR;
1031             }
1032             else {
1033 0         0 $self->{strError} = "Invalid country code for shipping address";
1034 0         0 return CCR_ERROR;
1035             }
1036             }
1037            
1038            
1039             #**
1040             # * Set the email address of the customer being shipped to.
1041             # */
1042             sub SetShipEmail
1043             {
1044 4     4 0 10 my $self = shift;
1045 4         8 my $ShipEmail = shift; # take a string arguement
1046 4 50       14 if (!defined($ShipEmail)) {
1047 4         9 $self->{strError} = "Ship email is undefined.";
1048 4         14 return CCR_ERROR;
1049             }
1050 0         0 $self->{strShipEmail} = $ShipEmail;
1051 0         0 return CCR_NO_ERROR;
1052             }
1053            
1054            
1055             #**
1056             # * Set the phone number of the customer being shipped to.
1057             # */
1058             sub SetShipPhone
1059             {
1060 4     4 0 8 my $self = shift;
1061 4         7 my $ShipPhone = shift; # take a string arguement
1062 4 50       25 if (!defined($ShipPhone)) {
1063 4         9 $self->{strError} = "Ship phone is undefined";
1064 4         14 return CCR_ERROR;
1065             }
1066 0         0 $self->{strShipPhone} = $ShipPhone;
1067 0         0 return CCR_NO_ERROR;
1068             }
1069            
1070            
1071             #**
1072             # * Set the facsimile number of the customer being shipped to.
1073             # */
1074             sub SetShipFax
1075             {
1076 4     4 0 7 my $self = shift;
1077 4         8 my $ShipFax = shift; # take a string arguement
1078 4 50       19 if (!defined($ShipFax)) {
1079 4         10 $self->{strError} = "Ship fax is undefined";
1080 4         15 return CCR_ERROR;
1081             }
1082 0         0 $self->{strShipFax} = $ShipFax;
1083 0         0 return CCR_NO_ERROR;
1084             }
1085            
1086            
1087             #**
1088             # * Set a note (comment) for the shipping information.
1089             # */
1090             sub SetShipNote
1091             {
1092 4     4 0 10 my $self = shift;
1093 4         9 my $ShipNote = shift;
1094 4 50       12 if (!defined($ShipNote)) {
1095 4         9 $self->{strError} = "Ship note is undefined.";
1096 4         50 return CCR_ERROR;
1097             }
1098 0         0 $self->{strShipNote} = $ShipNote;
1099 0         0 return CCR_NO_ERROR;
1100             }
1101            
1102            
1103             #/**
1104             # * Sets the currency
1105             # */
1106             sub SetCurrency
1107             {
1108 0     0 0 0 my $self = shift;
1109 0         0 my $Currency = shift; # take a string arguement
1110 0 0       0 if (!defined($Currency)) {
1111 0         0 $self->{strError} = "Currency is undefined.";
1112 0         0 return CCR_ERROR;
1113             }
1114 0         0 $self->{strCurrency} = $Currency;
1115 0         0 return CCR_NO_ERROR;
1116             }
1117            
1118             #/**
1119             # * Sets the buyer code
1120             # */
1121             sub SetBuyerCode
1122             {
1123 4     4 0 9 my $self = shift;
1124 4         15 my $buyerCode = shift; # take a string arguement
1125 4 50       25 if (!defined($buyerCode)) {
1126 4         13 $self->{strError} = "Buyer code is undefined.";
1127 4         14 return CCR_ERROR;
1128             }
1129 0         0 $self->{strBuyerCode} = $buyerCode;
1130 0         0 return CCR_NO_ERROR;
1131             }
1132            
1133             #/**
1134             # * Sets the CAVV (for VBV transactions)
1135             # */
1136             sub SetCAVV
1137             {
1138 0     0 0 0 my $self = shift;
1139 0         0 my $cavv = shift; # take a string arguement
1140 0 0       0 if (!defined($cavv)) {
1141 0         0 $self->{strError} = "CAVV is undefined.";
1142 0         0 return CCR_ERROR;
1143             }
1144 0         0 $self->{strCAVV} = $cavv;
1145 0         0 return CCR_NO_ERROR;
1146             }
1147            
1148             #/**
1149             # * Sets the Customer IP Address
1150             # */
1151             sub SetCustomerIPAddress
1152             {
1153 4     4 0 7 my $self = shift;
1154 4         75 my $ip = shift; # take a string arguement
1155 4 50       25 if (!defined($ip)) {
1156 4         9 $self->{strError} = "Customer IP address is undefined.";
1157 4         17 return CCR_ERROR;
1158             }
1159 0         0 $self->{strCustomerIPAddress} = $ip;
1160 0         0 return CCR_NO_ERROR;
1161             }
1162            
1163             #/**
1164             # * Sets the Order Customer ID
1165             # */
1166             sub SetOrderCustomerId
1167             {
1168 4     4 0 12 my $self = shift;
1169 4         8 my $orderCustomerID = shift; # take a string arguement
1170 4 50       20 if (!defined($orderCustomerID)) {
1171 0         0 $self->{strError} = "Order customer ID is undefined.";
1172 0         0 return CCR_ERROR;
1173             }
1174 4         10 $self->{strOrderCustomerID} = $orderCustomerID;
1175 4         14 return CCR_NO_ERROR;
1176             }
1177            
1178             #/**
1179             # * Sets the purchase order number
1180             # */
1181             sub SetPurchaseOrderNumber
1182             {
1183 0     0 0 0 my $self = shift;
1184 0         0 my $purchaseOrderNumber = shift; # take a string arguement
1185 0 0       0 if (!defined($purchaseOrderNumber)) {
1186 0         0 $self->{strError} = "Purchase order number is undefined.";
1187 0         0 return CCR_ERROR;
1188             }
1189 0         0 $self->{strPurchaseOrderNumber} = $purchaseOrderNumber;
1190 0         0 return CCR_NO_ERROR;
1191             }
1192            
1193             #/**
1194             # * Sets the state tax
1195             # */
1196             sub SetStateTax
1197             {
1198 0     0 0 0 my $self = shift;
1199 0         0 my $stateTax = shift; # take a string arguement
1200 0 0       0 if (!defined($stateTax)) {
1201 0         0 $self->{strError} = "State tax is undefined.";
1202 0         0 return CCR_ERROR;
1203             }
1204            
1205 0 0       0 if ( $stateTax !~ /^(\d+\.?\d*|\.\d+)$/ ) {
1206 0         0 $self->{strError} = "Non-numeric state tax amount.";
1207 0         0 return CCR_ERROR;
1208             }
1209            
1210 0         0 $stateTax = $stateTax * 1.0;
1211 0 0       0 if ($stateTax < 0) {
1212 0         0 $self->{strError} = "State tax cannot be negative.";
1213 0         0 return CCR_ERROR;
1214             }
1215            
1216 0         0 $self->{dStateTax} = $stateTax;
1217 0         0 return CCR_NO_ERROR;
1218             }
1219            
1220             #/**
1221             # * Sets the track 1 data
1222             # */
1223             sub SetTrack1
1224             {
1225 0     0 0 0 my $self = shift;
1226 0         0 my $track1 = shift; # take a string arguement
1227 0 0       0 if (!defined($track1)) {
1228 0         0 $self->{strError} = "Track 1 is undefined.";
1229 0         0 return CCR_ERROR;
1230             }
1231 0         0 $self->{strTrack1} = $track1;
1232 0         0 return CCR_NO_ERROR;
1233             }
1234            
1235             #/**
1236             # * Sets the track 2 data
1237             # */
1238             sub SetTrack2
1239             {
1240 0     0 0 0 my $self = shift;
1241 0         0 my $track2 = shift; # take a string arguement
1242 0 0       0 if (!defined($track2)) {
1243 0         0 $self->{strError} = "Track 2 is undefined.";
1244 0         0 return CCR_ERROR;
1245             }
1246 0         0 $self->{strTrack2} = $track2;
1247 0         0 return CCR_NO_ERROR;
1248             }
1249            
1250             #/**
1251             # * Sets the transaction condition code
1252             # */
1253             sub SetTransactionConditionCode
1254             {
1255 4     4 0 9 my $self = shift;
1256 4         10 my $tcc = shift; # take a string arguement
1257 4 50       20 if (!defined($tcc)) {
1258 0         0 $self->{strError} = "Transaction condition code is undefined.";
1259 0         0 return CCR_ERROR;
1260             }
1261 4         10 $self->{strTransactionConditionCode} = $tcc;
1262 4         15 return CCR_NO_ERROR;
1263             }
1264            
1265             #/**
1266             # * Sets the xid
1267             # */
1268             sub SetXID
1269             {
1270 0     0 0 0 my $self = shift;
1271 0         0 my $xid = shift; # take a string arguement
1272 0 0       0 if (!defined($xid)) {
1273 0         0 $self->{strError} = "XID is undefined.";
1274 0         0 return CCR_ERROR;
1275             }
1276 0         0 $self->{strXID} = $xid;
1277 0         0 return CCR_NO_ERROR;
1278             }
1279            
1280             #/**
1281             # * Sets tax exempt flag
1282             # */
1283             sub SetTaxExempt
1284             {
1285 0     0 0 0 my $self = shift;
1286 0         0 my $taxExempt = shift; # take a string arguement
1287 0 0       0 if (!defined($taxExempt)) {
1288 0         0 $self->{strError} = "Tax exempt flag is undefined.";
1289 0         0 return CCR_ERROR;
1290             }
1291 0         0 $self->{boolTaxExempt} = $taxExempt;
1292 0         0 return CCR_NO_ERROR;
1293             }
1294            
1295             #/**
1296             # * Sets invoice number
1297             # */
1298             sub SetInvoiceNumber
1299             {
1300 4     4 0 7 my $self = shift;
1301 4         9 my $invoiceNumber = shift; # take a string arguement
1302 4 100       20 if (!defined($invoiceNumber)) {
1303 1         2 $self->{strError} = "Invoice number is undefined.";
1304 1         3 return CCR_ERROR;
1305             }
1306 3         8 $self->{strInvoiceNumber} = $invoiceNumber;
1307 3         11 return CCR_NO_ERROR;
1308             }
1309            
1310             #/**
1311             # * Sets the Authentication Transaction ID
1312             # *
1313             # * Used in Payer Authentication transaction type
1314             # */
1315             sub SetAuthenticationTransactionId
1316             {
1317 0     0 0 0 my $self = shift;
1318 0         0 my $authenticationTransactionId = shift; # take a string arguement
1319 0 0       0 if (!defined($authenticationTransactionId)) {
1320 0         0 $self->{strError} = "Authentication Transaction ID is undefined.";
1321 0         0 return CCR_ERROR;
1322             }
1323 0         0 $self->{strAuthenticationTransactionId} = $authenticationTransactionId;
1324 0         0 return CCR_NO_ERROR;
1325             }
1326            
1327             #/**
1328             # * Sets the Authentication Payload
1329             # *
1330             # * Used in Payer Authentication transaction type
1331             # */
1332             sub SetAuthenticationPayload
1333             {
1334 0     0 0 0 my $self = shift;
1335 0         0 my $authenticationPayload = shift; # take a string arguement
1336 0 0       0 if (!defined($authenticationPayload)) {
1337 0         0 $self->{strError} = "Authentication Payload is undefined.";
1338 0         0 return CCR_ERROR;
1339             }
1340 0         0 $self->{strAuthenticationPayload} = $authenticationPayload;
1341 0         0 return CCR_NO_ERROR;
1342             }
1343            
1344             #/**
1345             # * Sets the Success On Authentication Inconclusive
1346             # *
1347             # * Used in Payer Authentication transaction type
1348             # */
1349             sub SetDoTransactionOnAuthenticationInconclusive
1350             {
1351 0     0 0 0 my $self = shift;
1352 0         0 my $successOnAuthenticationInconclusive = shift; # take a string arguement
1353 0 0       0 if (!defined($successOnAuthenticationInconclusive)) {
1354 0         0 $self->{strError} = "Success on authentication inconclusive is undefined.";
1355 0         0 return CCR_ERROR;
1356             }
1357 0         0 $self->{boolSuccessOnAuthenticationInconclusive} = $successOnAuthenticationInconclusive;
1358 0         0 return CCR_NO_ERROR;
1359             }
1360            
1361            
1362             #**
1363             # * Set the Industry type.
1364             # *

1365             # * @param industry Must be one of the following constants: DIRECT_MARKETING, RETAIL, LODGING, RESTAURANT.
1366             # * @exception TransactionProtocolException thrown if industry is not a valid charge type
1367             # * defined by this class.
1368             # */
1369             sub SetIndustry
1370             {
1371 4     4 0 11 my $self = shift;
1372 4         20 my $industry = shift; # take one string arguement
1373            
1374 4 50       24 if (!defined($industry)) {
1375 0         0 $self->{strError} = "Industry is undefined.";
1376 0         0 return CCR_ERROR;
1377             }
1378 4 50       22 if ($industry eq "") {
1379 0         0 $self->{strError} = "Invalid industry";
1380 0         0 return CCR_ERROR;
1381             }
1382            
1383 4 0 33     27 if (!($industry eq DIRECT_MARKETING ||
      33        
      33        
1384             $industry eq RETAIL ||
1385             $industry eq LODGING ||
1386             $industry eq RESTAURANT )) {
1387 0         0 $self->{strError} = "Invalid industry.";
1388 0         0 return CCR_ERROR;
1389             }
1390 4         18 $self->{strIndustry} = $industry;
1391 4         17 return CCR_NO_ERROR;
1392             }
1393            
1394            
1395             #/**
1396             # * Sets folio number
1397             # */
1398             sub SetFolioNumber
1399             {
1400 0     0 0 0 my $self = shift;
1401 0         0 my $folioNumber = shift; # take a string arguement
1402 0 0       0 if (!defined($folioNumber)) {
1403 0         0 $self->{strError} = "Folio number is undefined.";
1404 0         0 return CCR_ERROR;
1405             }
1406 0         0 $self->{strFolioNumber} = $folioNumber;
1407 0         0 return CCR_NO_ERROR;
1408             }
1409            
1410            
1411            
1412             #**
1413             # * Set the service rate using a floating point value.
1414             # *

1415             # * @param ServiceRate Must be a positive floating-point number.
1416             # * E.g. Use 11.55 to represent $11.55.
1417             # * @exception TransactionProtocolException thrown if ServiceRate less than zero
1418             # */
1419             sub SetServiceRate
1420             {
1421 0     0 0 0 my $self = shift;
1422 0         0 my $ServiceRate = shift; # take a string or an integer arguement
1423            
1424 0 0       0 if (!defined($ServiceRate)) {
1425 0         0 $self->{strError} = "Service rate is undefined.";
1426 0         0 return CCR_ERROR;
1427             }
1428 0 0       0 if ( $ServiceRate !~ /^(\d+\.?\d*|\.\d+)$/ ) {
1429 0         0 $self->{strError} = "Non-numeric Service Rate.";
1430 0         0 return CCR_ERROR;
1431             }
1432            
1433 0         0 my $dServiceRate = $ServiceRate * 1.0;
1434 0 0       0 if ($dServiceRate < 0) {
1435 0         0 $self->{strError} = "Service rate cannot be negative.";
1436 0         0 return CCR_ERROR;
1437             }
1438            
1439 0         0 $self->{dServiceRate} = $dServiceRate;
1440 0         0 $self->{strServiceRate} = "".$ServiceRate;
1441 0         0 return CCR_NO_ERROR;
1442             }
1443            
1444            
1445             #**
1446             # * Set the service end day
1447             # */
1448             sub SetServiceEndDay
1449             {
1450 0     0 0 0 my $self = shift;
1451 0         0 my $serviceEndDay = shift; #take one string arguement
1452 0 0       0 if (!defined($serviceEndDay)) {
1453 0         0 $self->{strError} = "Service end day is undefined.";
1454 0         0 return CCR_ERROR;
1455             }
1456 0 0       0 if ($serviceEndDay eq ""){
1457 0         0 $self->{strError} = "Invalid service end day.";
1458 0         0 return CCR_ERROR;
1459             }
1460            
1461 0 0       0 if ($serviceEndDay =~ /\D/) {
1462 0         0 $self->{strError} = "Invalid service end day (non-digit).";
1463 0         0 return CCR_ERROR;
1464             }
1465            
1466 0         0 $serviceEndDay = 1 * $serviceEndDay;
1467 0 0 0     0 if ($serviceEndDay < 1 || $serviceEndDay > 31) {
1468 0         0 $self->{strError} .= "Invalid service end day (not 1 through 31).";
1469 0         0 return CCR_ERROR;
1470             }
1471 0         0 $self->{intServiceEndDay} = $serviceEndDay;
1472            
1473 0         0 return 1;
1474             }
1475            
1476            
1477             #**
1478             # * Set the service end month
1479             # */
1480             sub SetServiceEndMonth
1481             {
1482 0     0 0 0 my $self = shift;
1483 0         0 my $serviceEndMonth = shift; #take one string arguement
1484 0 0       0 if (!defined($serviceEndMonth)) {
1485 0         0 $self->{strError} = "Service end month is undefined.";
1486 0         0 return CCR_ERROR;
1487             }
1488 0 0       0 if ($serviceEndMonth eq ""){
1489 0         0 $self->{strError} = "Invalid service end month.";
1490 0         0 return CCR_ERROR;
1491             }
1492            
1493 0 0       0 if ($serviceEndMonth =~ /\D/) {
1494 0         0 $self->{strError} = "Invalid service end month (non-digit).";
1495 0         0 return CCR_ERROR;
1496             }
1497            
1498 0         0 $serviceEndMonth = 1 * $serviceEndMonth;
1499 0 0 0     0 if ($serviceEndMonth < 1 || $serviceEndMonth > 12) {
1500 0         0 $self->{strError} .= "Invalid service end month (not 1 through 12).";
1501 0         0 return CCR_ERROR;
1502             }
1503 0         0 $self->{intServiceEndMonth} = $serviceEndMonth;
1504            
1505 0         0 return 1;
1506             }
1507            
1508             #**
1509             # * Set the service end year
1510             # */
1511             sub SetServiceEndYear
1512             {
1513 0     0 0 0 my $self = shift;
1514 0         0 my $serviceEndYear = shift; #take one string arguement
1515 0 0       0 if (!defined($serviceEndYear)) {
1516 0         0 $self->{strError} = "Service end year is undefined.";
1517 0         0 return CCR_ERROR;
1518             }
1519 0 0       0 if ($serviceEndYear eq ""){
1520 0         0 $self->{strError} = "Invalid service end year.";
1521 0         0 return CCR_ERROR;
1522             }
1523            
1524 0 0       0 if ($serviceEndYear =~ /\D/) {
1525 0         0 $self->{strError} = "Invalid service end year (non-digit).";
1526 0         0 return CCR_ERROR;
1527             }
1528            
1529 0         0 $serviceEndYear = 1 * $serviceEndYear;
1530 0 0 0     0 if ($serviceEndYear < 2005 || $serviceEndYear > 9999) {
1531 0         0 $self->{strError} .= "Invalid service end year.";
1532 0         0 return CCR_ERROR;
1533             }
1534 0         0 $self->{intServiceEndYear} = $serviceEndYear;
1535            
1536 0         0 return 1;
1537             }
1538            
1539            
1540             #**
1541             # * Set the service start day
1542             # */
1543             sub SetServiceStartDay
1544             {
1545 0     0 0 0 my $self = shift;
1546 0         0 my $serviceStartDay = shift; #take one string arguement
1547 0 0       0 if (!defined($serviceStartDay)) {
1548 0         0 $self->{strError} = "Service start day is undefined.";
1549 0         0 return CCR_ERROR;
1550             }
1551 0 0       0 if ($serviceStartDay eq ""){
1552 0         0 $self->{strError} = "Invalid service start day.";
1553 0         0 return CCR_ERROR;
1554             }
1555            
1556 0 0       0 if ($serviceStartDay =~ /\D/) {
1557 0         0 $self->{strError} = "Invalid service start day (non-digit).";
1558 0         0 return CCR_ERROR;
1559             }
1560            
1561 0         0 $serviceStartDay = 1 * $serviceStartDay;
1562 0 0 0     0 if ($serviceStartDay < 1 || $serviceStartDay > 31) {
1563 0         0 $self->{strError} .= "Invalid service start day (not 1 through 31).";
1564 0         0 return CCR_ERROR;
1565             }
1566 0         0 $self->{intServiceStartDay} = $serviceStartDay;
1567            
1568 0         0 return 1;
1569             }
1570            
1571            
1572             #**
1573             # * Set the service start month
1574             # */
1575             sub SetServiceStartMonth
1576             {
1577 0     0 0 0 my $self = shift;
1578 0         0 my $serviceStartMonth = shift; #take one string arguement
1579 0 0       0 if (!defined($serviceStartMonth)) {
1580 0         0 $self->{strError} = "Service start month is undefined.";
1581 0         0 return CCR_ERROR;
1582             }
1583 0 0       0 if ($serviceStartMonth eq ""){
1584 0         0 $self->{strError} = "Invalid service start month.";
1585 0         0 return CCR_ERROR;
1586             }
1587            
1588 0 0       0 if ($serviceStartMonth =~ /\D/) {
1589 0         0 $self->{strError} = "Invalid service start month (non-digit).";
1590 0         0 return CCR_ERROR;
1591             }
1592            
1593 0         0 $serviceStartMonth = 1 * $serviceStartMonth;
1594 0 0 0     0 if ($serviceStartMonth < 1 || $serviceStartMonth > 12) {
1595 0         0 $self->{strError} .= "Invalid service start month (not 1 through 12).";
1596 0         0 return CCR_ERROR;
1597             }
1598 0         0 $self->{intServiceStartMonth} = $serviceStartMonth;
1599            
1600 0         0 return 1;
1601             }
1602            
1603             #**
1604             # * Set the service start year
1605             # */
1606             sub SetServiceStartYear
1607             {
1608 0     0 0 0 my $self = shift;
1609 0         0 my $serviceStartYear = shift; #take one string arguement
1610 0 0       0 if (!defined($serviceStartYear)) {
1611 0         0 $self->{strError} = "Service start year is undefined.";
1612 0         0 return CCR_ERROR;
1613             }
1614 0 0       0 if ($serviceStartYear eq ""){
1615 0         0 $self->{strError} = "Invalid service start year.";
1616 0         0 return CCR_ERROR;
1617             }
1618            
1619 0 0       0 if ($serviceStartYear =~ /\D/) {
1620 0         0 $self->{strError} = "Invalid service start year (non-digit).";
1621 0         0 return CCR_ERROR;
1622             }
1623            
1624 0         0 $serviceStartYear = 1 * $serviceStartYear;
1625 0 0 0     0 if ($serviceStartYear < 2005 || $serviceStartYear > 9999) {
1626 0         0 $self->{strError} .= "Invalid service start year.";
1627 0         0 return CCR_ERROR;
1628             }
1629 0         0 $self->{intServiceStartYear} = $serviceStartYear;
1630            
1631 0         0 return 1;
1632             }
1633            
1634            
1635            
1636             #/**
1637             # * Sets the Charge Total Includes Restaurant flag
1638             # *
1639             # */
1640             sub SetChargeTotalIncludesRestaurant
1641             {
1642 0     0 0 0 my $self = shift;
1643 0         0 my $isChargeTotalIncludesRestaurant = shift; # take a string arguement
1644 0 0       0 if (!defined($isChargeTotalIncludesRestaurant)) {
1645 0         0 $self->{strError} = "Charge Total Includes Restaurant is undefined.";
1646 0         0 return CCR_ERROR;
1647             }
1648 0         0 $self->{boolChargeTotalIncludesRestaurant} = $isChargeTotalIncludesRestaurant;
1649 0         0 return CCR_NO_ERROR;
1650             }
1651            
1652             #/**
1653             # * Sets the Charge Total Includes Giftshop flag
1654             # *
1655             # */
1656             sub SetChargeTotalIncludesGiftshop
1657             {
1658 0     0 0 0 my $self = shift;
1659 0         0 my $isChargeTotalIncludesGiftshop = shift; # take a string arguement
1660 0 0       0 if (!defined($isChargeTotalIncludesGiftshop)) {
1661 0         0 $self->{strError} = "Charge Total Includes Giftshop is undefined.";
1662 0         0 return CCR_ERROR;
1663             }
1664 0         0 $self->{boolChargeTotalIncludesGiftshop} = $isChargeTotalIncludesGiftshop;
1665 0         0 return CCR_NO_ERROR;
1666             }
1667            
1668             #/**
1669             # * Sets the Charge Total Includes Minibar flag
1670             # *
1671             # */
1672             sub SetChargeTotalIncludesMinibar
1673             {
1674 0     0 0 0 my $self = shift;
1675 0         0 my $isChargeTotalIncludesMinibar = shift; # take a string arguement
1676 0 0       0 if (!defined($isChargeTotalIncludesMinibar)) {
1677 0         0 $self->{strError} = "Charge Total Includes Minibar is undefined.";
1678 0         0 return CCR_ERROR;
1679             }
1680 0         0 $self->{boolChargeTotalIncludesMinibar} = $isChargeTotalIncludesMinibar;
1681 0         0 return CCR_NO_ERROR;
1682             }
1683            
1684             #/**
1685             # * Sets the Charge Total Includes Phone flag
1686             # *
1687             # */
1688             sub SetChargeTotalIncludesPhone
1689             {
1690 0     0 0 0 my $self = shift;
1691 0         0 my $isChargeTotalIncludesPhone = shift; # take a string arguement
1692 0 0       0 if (!defined($isChargeTotalIncludesPhone)) {
1693 0         0 $self->{strError} = "Charge Total Includes Phone is undefined.";
1694 0         0 return CCR_ERROR;
1695             }
1696 0         0 $self->{boolChargeTotalIncludesPhone} = $isChargeTotalIncludesPhone;
1697 0         0 return CCR_NO_ERROR;
1698             }
1699            
1700             #/**
1701             # * Sets the Charge Total Includes Laundry flag
1702             # *
1703             # */
1704             sub SetChargeTotalIncludesLaundry
1705             {
1706 0     0 0 0 my $self = shift;
1707 0         0 my $isChargeTotalIncludesLaundry = shift; # take a string arguement
1708 0 0       0 if (!defined($isChargeTotalIncludesLaundry)) {
1709 0         0 $self->{strError} = "Charge Total Includes Laundry is undefined.";
1710 0         0 return CCR_ERROR;
1711             }
1712 0         0 $self->{boolChargeTotalIncludesLaundry} = $isChargeTotalIncludesLaundry;
1713 0         0 return CCR_NO_ERROR;
1714             }
1715            
1716             #/**
1717             # * Sets the Charge Total Includes Other flag
1718             # *
1719             # */
1720             sub SetChargeTotalIncludesOther
1721             {
1722 0     0 0 0 my $self = shift;
1723 0         0 my $isChargeTotalIncludesOther = shift; # take a string arguement
1724 0 0       0 if (!defined($isChargeTotalIncludesOther)) {
1725 0         0 $self->{strError} = "Charge Total Includes Other is undefined.";
1726 0         0 return CCR_ERROR;
1727             }
1728 0         0 $self->{boolChargeTotalIncludesOther} = $isChargeTotalIncludesOther;
1729 0         0 return CCR_NO_ERROR;
1730             }
1731            
1732             #/**
1733             # * Sets the Service No Show flag
1734             # *
1735             # */
1736             sub SetServiceNoShow
1737             {
1738 0     0 0 0 my $self = shift;
1739 0         0 my $isServiceNoShow = shift; # take a string arguement
1740 0 0       0 if (!defined($isServiceNoShow)) {
1741 0         0 $self->{strError} = "Service No Show is undefined.";
1742 0         0 return CCR_ERROR;
1743             }
1744 0         0 $self->{boolServiceNoShow} = $isServiceNoShow;
1745 0         0 return CCR_NO_ERROR;
1746             }
1747            
1748            
1749            
1750             #/////////////////////////////////////////////////////////////////////////////////////////////////////
1751             #// Get Methods.
1752             #
1753            
1754             #/**
1755             # * Get the cartridge type.
1756             # * @returns the type of cartridge being used
1757             # */
1758             sub GetCartridgeType
1759             {
1760 0     0 0 0 my $self = shift;
1761 0         0 $self->{strCartridgeType};
1762             }
1763            
1764             #/**
1765             # * Get the Ecommerce Indicator
1766             # * @returns the Ecommerce Indicator
1767             # */
1768             sub GetEcommerceIndicator
1769             {
1770 0     0 0 0 my $self = shift;
1771 0         0 $self->{strEcommerceIndicator};
1772             }
1773            
1774             #/**
1775             # * Get the value of the credit card number.
1776             # * @see #setCreditCardNumber(JString)
1777             # * @return the value of the credit card number or an empty String if the credit card number was not set
1778             # */
1779             sub GetCreditCardNumber
1780             {
1781 0     0 0 0 my $self = shift;
1782 0         0 $self->{strCreditCardNumber};
1783             }
1784            
1785             #/**
1786             # * Get the value of the credit card number.
1787             # * @return the value of the credit card verification number or an empty String if the credit card number was not set
1788             # */
1789             sub GetCreditCardVerificationNumber
1790             {
1791 0     0 0 0 my $self = shift;
1792 0         0 $self->{strCreditCardVerificationNumber};
1793             }
1794            
1795             #**
1796             # * Get the value of the credit card's expire year.
1797             # * @see #setExpireYear(JString)
1798             # * @return the String passed to setExpireYear or an empty String if the expire year was not set
1799             # */
1800             sub GetExpireYear
1801             {
1802 0     0 0 0 my $self = shift;
1803 0         0 $self->{strExpireYear};
1804             }
1805            
1806            
1807             #**
1808             # * Get the value of the credit card's expire month.
1809             # * @see #setExpireMonth(String)
1810             # * @return the String passed to setExpireMonth or an empty String if the expire month was not set
1811             # */
1812             sub GetExpireMonth
1813             {
1814 0     0 0 0 my $self = shift;
1815 0         0 $self->{strExpireMonth};
1816             }
1817            
1818            
1819             #**
1820             # * Get the value of the charge type. The possible values are defined
1821             # * by the constants of this class documented in setChargeType(String)
1822             # * The chage type indicates what action to take with this credit card
1823             # * transaction.
1824             # * @see #setChargeType(String)
1825             # * @return the String passed to setChargeType or an empty String if the charge type was not set
1826             #
1827             sub GetChargeType()
1828             {
1829 0     0 0 0 my $self = shift;
1830 0         0 $self->{strChargeType};
1831             }
1832            
1833            
1834             #**
1835             # * Get the value of the charge total. The charge total is the amount that
1836             # * will be used for this credit card transaction.
1837             # * @see #setChargeTotal(double)
1838             # * @see #setChargeTotal(String)
1839             # * @return the value of the charge total or -1 if the charge total was not set
1840             #
1841             sub GetChargeTotal
1842             {
1843 0     0 0 0 my $self = shift;
1844 0         0 $self->{dChargeTotal};
1845             }
1846            
1847             sub GetChargeTotalStr
1848             {
1849 0     0 0 0 my $self = shift;
1850 0         0 $self->{strChargeTotal};
1851             }
1852            
1853             #**
1854             # * Get the value of the card brand. The card brand identifies the type
1855             # * of card being used. The card brand must be one of the constants defined
1856             # * by this class and documented in setCardBrand(JString)
1857             # * @see #setCardBrand(JString)
1858             # * @return the value of the card brand or an empty String if the card brand was not set
1859             #/
1860             sub GetCardBrand
1861             {
1862 0     0 0 0 my $self = shift;
1863 0         0 $self->{strCardBrand};
1864             }
1865            
1866             #**
1867             # * Get the value of the order id. The order id must be a unique identifier
1868             # * for a paticular order.
1869             # * @see #setOrderId(JString)
1870             # * @return the value of the order id or an empty String if the order id was not set
1871             # */
1872             sub GetOrderId
1873             {
1874 0     0 0 0 my $self = shift;
1875 0         0 $self->{strOrderId};
1876             }
1877            
1878            
1879            
1880             #**
1881             # * Get the value of the capture reference id. The capture reference id is the
1882             # * value returned from an "AUTH" credit card transaction that must be presented
1883             # * when to the "CAPTURE" for that order.
1884             # * @see #setCaptureReferenceId(JString)
1885             # * @return the value of the capture reference id or an empty String if the capture reference id was not set
1886             #
1887             sub GetCaptureReferenceId
1888             {
1889 0     0 0 0 my $self = shift;
1890 0         0 $self->{strReferenceId};
1891             }
1892            
1893             #
1894             # Get Reference Id
1895             # This should be used instead of GetCaptureReferenceId
1896             # Added in v1.6
1897             #
1898             sub GetReferenceId
1899             {
1900 0     0 0 0 my $self = shift;
1901 0         0 $self->{strReferenceId};
1902             }
1903            
1904             #/**
1905             # * Get the value of the order description. The order description is a comment
1906             # * that describes the order.
1907             # * @see #setOrderDescription(JString)
1908             # * @return the value of the order description or an empty String if the order description was not set
1909             #/
1910             sub GetOrderDescription
1911             {
1912 0     0 0 0 my $self = shift;
1913 0         0 $self->{strOrderDescription};
1914             }
1915            
1916             #**
1917             # * Get the value of the order user id. The order user id is a unique identifier
1918             # * for a merchant's customer.
1919             # * @see #setOrderUserId(String)
1920             # * @return the value of the order user id of an empty String if order user id was not set
1921             #
1922             sub GetOrderUserId
1923             {
1924 0     0 0 0 my $self = shift;
1925 0         0 $self->{strOrderUserId};
1926             }
1927            
1928             #**
1929             # * Get the value of the duplicate check.
1930             # * Possible values are: CHECK; OVERRIDE; NO_CHECK.
1931             # * @see #setDuplicateCheck(String)
1932             # * @return the value of the duplicate check or an empty String if the dc was not set
1933             #
1934             sub GetDuplicateCheck
1935             {
1936 0     0 0 0 my $self = shift;
1937 0         0 $self->{strDuplicateCheck};
1938             }
1939            
1940            
1941             #**
1942             # * Get the value of the bank approval code. The bank approval code is the
1943             # * value required for a "FORCE_AUTH" or "FORCE_SALE" credit card transaction.
1944             # * It is obtained offline via a phone call to the merchant's bank 'voice auth'
1945             # * phone number. The card holder is not present in this type of transaction.
1946             # * @see #setBankApprovalCode(String)
1947             # * @return the value of the bank approval code or an empty String if the bac was not set
1948             #
1949             sub GetBankApprovalCode
1950             {
1951 0     0 0 0 my $self = shift;
1952 0         0 $self->{strBankApprovalCode};
1953             }
1954            
1955            
1956             #**
1957             # * The tax amount is the amount of the the charge total that is tax.
1958             # * @see #setTaxAmount
1959             # * @see #setChargeTotal
1960             # * @return value of the tax amount of -1 if the tax amount has not been set.
1961             #
1962             sub GetTaxAmount
1963             {
1964 0     0 0 0 my $self = shift;
1965 0         0 $self->{dTaxAmount};
1966             }
1967            
1968             sub GetTaxAmountStr
1969             {
1970 0     0 0 0 my $self = shift;
1971 0         0 $self->{strTaxAmount};
1972             }
1973            
1974            
1975             #**
1976             # * The shipping charge is the amount of the charge total that is shipping charges.
1977             # * @see #setShippingCharge
1978             # * @see #setChargeTotal
1979             # * @return value of the shipping charge or -1 if the shipping charge has not been set
1980             # */
1981             sub GetShippingCharge
1982             {
1983 0     0 0 0 my $self = shift;
1984 0         0 $self->{dShippingCharge};
1985             }
1986            
1987             sub GetShippingChargeStr
1988             {
1989 0     0 0 0 my $self = shift;
1990 0         0 $self->{strShippingCharge};
1991             }
1992            
1993            
1994             #/**
1995             # * Get the value of the first name of the customer being billed.
1996             # * @see #setBillFirstName(JString)
1997             # * @return the billing first name or an empty String if the billing first name was not set
1998             # */
1999             sub GetBillFirstName
2000             {
2001 0     0 0 0 my $self = shift;
2002 0         0 $self->{strBillFirstName};
2003             }
2004            
2005            
2006             #**
2007             # * Get the value of the last name of the customer being billed.
2008             # * @see #setBillLastName(String)
2009             # * return the billing last name or an empty String if the billing last name was not set
2010             # */
2011             sub GetBillLastName
2012             {
2013 0     0 0 0 my $self = shift;
2014 0         0 $self->{strBillLastName};
2015             }
2016            
2017            
2018             #**
2019             # * Get the value of the middle name of the customer being billed.
2020             # * @see #setBillMiddleName(JString)
2021             # * @return the billing middle name or an empty String if the billing middle name was not set
2022             # */
2023             sub GetBillMiddleName
2024             {
2025 0     0 0 0 my $self = shift;
2026 0         0 $self->{strBillMiddleName};
2027             }
2028            
2029            
2030             #**
2031             # * Get the value of the title of the customer being billed.
2032             # * @see #setBillCustomerTitle(JString)
2033             # * @return the billing customer title or an empty String if billing customer title was not set
2034             # */
2035             sub GetBillCustomerTitle
2036             {
2037 0     0 0 0 my $self = shift;
2038 0         0 $self->{strBillCustomerTitle};
2039             }
2040            
2041             #**
2042             # * Get the value of the company name of the customer being billed.
2043             # * @see #setBillCompany(JString)
2044             # * @return the billing company name or an empty String if the billing company name was not set
2045             #
2046             sub GetBillCompany
2047             {
2048 0     0 0 0 my $self = shift;
2049 0         0 $self->{strBillCompany};
2050             }
2051            
2052            
2053             #**
2054             # * Get the value of the first part of the billing address.
2055             # * @see #setBillAddressOne(JString)
2056             # * @return the first part of the billing address or an empty String if the billing address part one was not set
2057             # */
2058             sub GetBillAddressOne
2059             {
2060 0     0 0 0 my $self = shift;
2061 0         0 $self->{strBillAddressOne};
2062             }
2063            
2064            
2065             #**
2066             # * Get the value of the second part of the billing address.
2067             # * @see #setBillAddressTwo(JString)
2068             # * @return the second part of the billing address or an empty String if the billing address part two was not set
2069             # */
2070             sub GetBillAddressTwo
2071             {
2072 0     0 0 0 my $self = shift;
2073 0         0 $self->{strBillAddressTwo};
2074             }
2075            
2076            
2077             #**
2078             # * Get the value of the city for the billing address.
2079             # * @see #setBillCity(JString)
2080             # * @return the billing address city or an empty String if the billing city was not set
2081             # */
2082             sub GetBillCity
2083             {
2084 0     0 0 0 my $self = shift;
2085 0         0 $self->{strBillCity};
2086             }
2087            
2088            
2089             #**
2090             # * Get the value of the state or province for the billing address.
2091             # * @see #setBillStateOrProvince(String)
2092             # * @return the billing address state or province or an empty String if billing state or province was not set
2093             # */
2094             sub GetBillStateOrProvince
2095             {
2096 0     0 0 0 my $self = shift;
2097 0         0 $self->{strBillStateOrProvince};
2098             }
2099            
2100            
2101             #**
2102             # * Get the value of the postal code for the billing address.
2103             # * @see #setBillPostalCode(String)
2104             # * @return the billing address postal code or an empty String if billing postal code was not set
2105             #*/
2106             sub GetBillPostalCode
2107             {
2108 0     0 0 0 my $self = shift;
2109 0         0 $self->{strBillPostalCode};
2110             }
2111            
2112            
2113             #**
2114             # * Get the value of the country for the billing address.
2115             # * @see #setBillCountryCode(JString)
2116             # * @return the billing country or an empty String if the billing country was not set
2117             #
2118             sub GetBillCountryCode
2119             {
2120 0     0 0 0 my $self = shift;
2121 0         0 $self->{strBillCountryCode};
2122             }
2123            
2124            
2125             #**
2126             # * Get the value of the email address of the customer being billed.
2127             # * @see #setBillEmail(JString)
2128             # * @return the billing email address or an empty String if the billing email was not set
2129             #
2130             sub GetBillEmail
2131             {
2132 0     0 0 0 my $self = shift;
2133 0         0 $self->{strBillEmail};
2134             }
2135            
2136            
2137             #**
2138             # * Get the value of the phone number of the customer being billed.
2139             # * @see #setBillPhone(JString)
2140             # * @return the billing phone number or an empty String if the billing phone number was not set
2141             # */
2142             sub GetBillPhone
2143             {
2144 0     0 0 0 my $self = shift;
2145 0         0 $self->{strBillPhone};
2146             }
2147            
2148            
2149             #**
2150             # * Get the value of the fax number of the customer being billed.
2151             # * @see #setBillFax(JString)
2152             # * @return the billing fax number or an empty String if the billing fax number was not set
2153             # */
2154             sub GetBillFax
2155             {
2156 0     0 0 0 my $self = shift;
2157 0         0 $self->{strBillFax};
2158             }
2159            
2160            
2161             #**
2162             # * Get the value of the billing note. The billing note is an extra
2163             # * comment to the billing information.
2164             # * @see #setBillNote(JString)
2165             # * @return the billing note or an empty String if the billing not was not set
2166             #
2167             sub GetBillNote
2168             {
2169 0     0 0 0 my $self = shift;
2170 0         0 $self->{strBillNote};
2171             }
2172            
2173             #**
2174             # * Get the value of the first name of the customer being shipped to.
2175             # * @see #setShipFirstName(JString)
2176             # * @return the shipping first name or an empty String if the shipping first name was not set
2177             #
2178             sub GetShipFirstName
2179             {
2180 0     0 0 0 my $self = shift;
2181 0         0 $self->{strShipFirstName};
2182             }
2183            
2184            
2185             #**
2186             # * Get the value of the last name of the customer being shipped to.
2187             # * @see #setShipLastName(JString)
2188             # * @return the shipping last name or an empty String if the shipping last name was not set
2189             # */
2190             sub GetShipLastName
2191             {
2192 0     0 0 0 my $self = shift;
2193 0         0 $self->{strShipLastName};
2194             }
2195            
2196            
2197             #**
2198             # * Get the value of the middle name of the customer being shipped to.
2199             # * @see #setShipMiddleName(JString)
2200             # * @return the shipping middle name or an empty String if the shipping middle name was not set
2201             # */
2202             sub GetShipMiddleName
2203             {
2204 0     0 0 0 my $self = shift;
2205 0         0 $self->{strShipMiddleName};
2206             }
2207            
2208            
2209             #**
2210             # * Get the value of the title of the customer being shipped to.
2211             # * @see #setShipCustomerTitle(String)
2212             # * @return the shipping customer title or an empty String if the shipping customer title was not set
2213             #
2214             sub GetShipCustomerTitle
2215             {
2216 0     0 0 0 my $self = shift;
2217 0         0 $self->{strShipCustomerTitle};
2218             }
2219            
2220            
2221             #**
2222             # * Get the value of the company name of the customer being shipped to.
2223             # * @see #setShipCompany(JString)
2224             # * @return the shipping company name or an empty String if the shipping company name was not set
2225             # */
2226             sub GetShipCompany
2227             {
2228 0     0 0 0 my $self = shift;
2229 0         0 $self->{strShipCompany};
2230             }
2231            
2232            
2233             #**
2234             # * Get the value of the first part of the shipping address.
2235             # * @see #setShipAddressOne(JString)
2236             # * @return the first part of the shipping address or an empty String if the shipping address part one was not set
2237             # */
2238             sub GetShipAddressOne
2239             {
2240 0     0 0 0 my $self = shift;
2241 0         0 $self->{strShipAddressOne};
2242             }
2243            
2244            
2245             #**
2246             # * Get the value of the second part of the shipping address.
2247             # * @see #setShipAddressTwo(JString)
2248             # * @return the second part of the shipping address or an empty String if the shipping address part two was not set
2249             #
2250             sub GetShipAddressTwo
2251             {
2252 0     0 0 0 my $self = shift;
2253 0         0 $self->{strShipAddressTwo};
2254             }
2255            
2256            
2257             #**
2258             # * Get the value of the city for the shipping address.
2259             # * @see #setShipCity(JString)
2260             # * @return the shipping address city or an empty String if the shipping city was not set
2261             #
2262             sub GetShipCity
2263             {
2264 0     0 0 0 my $self = shift;
2265 0         0 $self->{strShipCity};
2266             }
2267            
2268             #**
2269             # * Get the value of the state or province for the shipping address.
2270             # * @see #setShipStateOrProvince(JString)
2271             # * @return the shipping address state or province or an empty String if the shipping state or provice was not set
2272             # */
2273             sub GetShipStateOrProvince
2274             {
2275 0     0 0 0 my $self = shift;
2276 0         0 $self->{strShipStateOrProvince};
2277             }
2278            
2279            
2280             #*
2281             # * Get the value of the postal code for the shipping address.
2282             # * @see #setShipPostalCode(JString)
2283             # * @return the shipping address postal code or an empty String if the shipping postal code was not set
2284             # */
2285             sub GetShipPostalCode
2286             {
2287 0     0 0 0 my $self = shift;
2288 0         0 $self->{strShipPostalCode};
2289             }
2290            
2291            
2292             #**
2293             # * Get the value of the country for the shipping address.
2294             # * @see #setShipCountryCode(JString)
2295             # * @return the shipping country or an empty String if the shipping country was not set
2296             # */
2297             sub GetShipCountryCode
2298             {
2299 0     0 0 0 my $self = shift;
2300 0         0 $self->{strShipCountryCode};
2301             }
2302            
2303            
2304             #**
2305             # * Get the value of the email address of the customer being shipped to.
2306             # * @see #setShipEmail(JString)
2307             # * @return the shipping email address or an empty String if the shipping customer email address was not set
2308             # */
2309             sub GetShipEmail
2310             {
2311 0     0 0 0 my $self = shift;
2312 0         0 $self->{strShipEmail};
2313             }
2314            
2315            
2316             #**
2317             # * Get the value of the phone number of the customer being shipped to.
2318             # * @see #setShipPhone(JString)
2319             # * @return the shipping phone number or an empty String if the shipping customer phone number was not set
2320             # */
2321             sub GetShipPhone
2322             {
2323 0     0 0 0 my $self = shift;
2324 0         0 $self->{strShipPhone};
2325             }
2326            
2327            
2328             #**
2329             # * Get the value of the fax number of the customer being shipped to.
2330             # * @see #setShipFax(JString)
2331             # * @return the shipping fax number or an empty JString if the shipping customer fax number was not set
2332             # */
2333             sub GetShipFax
2334             {
2335 0     0 0 0 my $self = shift;
2336 0         0 $self->{strShipFax};
2337             }
2338            
2339            
2340             #**
2341             # * Get the value of the shipping note. The shipping note is an extra
2342             # * comment to the shipping information.
2343             # * @see #setShipNote(JString)
2344             # * @return the shipping note or an empty String if the shipping note was not set
2345             # */
2346             sub GetShipNote
2347             {
2348 0     0 0 0 my $self = shift;
2349 0         0 $self->{strShipNote};
2350             }
2351            
2352            
2353             #**
2354             # * Method to get a CreditCardResponse object.
2355             # */
2356             sub GetTransResponseObject
2357             {
2358 0     0 0 0 my $self = shift;
2359 0         0 my $InString = shift;
2360 0         0 return new Business::OnlinePayment::PPIPayMover::CreditCardResponse($InString);
2361             }
2362            
2363            
2364             #/**
2365             # * Get the value of the currency. The currency that
2366             # * will be used for this transaction. If the merchant
2367             # * does not have an account configured to process this currency, the
2368             # * Transaction Server will return an error.
2369             # * @see #setCurrency(String)
2370             # * @return the currency or "" if the currency was not set
2371             # */
2372             sub GetCurrency
2373             {
2374 0     0 0 0 my $self = shift;
2375 0         0 $self->{strCurrency};
2376             }
2377            
2378            
2379             #/**
2380             # * Gets the buyer code
2381             # */
2382             sub GetBuyerCode
2383             {
2384 0     0 0 0 my $self = shift;
2385 0         0 $self->{strBuyerCode};
2386             }
2387            
2388             #/**
2389             # * Gets the CAVV (for VBV transactions)
2390             # */
2391             sub GetCAVV
2392             {
2393 0     0 0 0 my $self = shift;
2394 0         0 $self->{strCAVV};
2395             }
2396            
2397             #/**
2398             # * Gets the Customer IP Address
2399             # */
2400             sub GetCustomerIPAddress
2401             {
2402 0     0 0 0 my $self = shift;
2403 0         0 $self->{strCustomerIPAddress};
2404             }
2405            
2406             #/**
2407             # * Gets the Order Customer ID
2408             # */
2409             sub GetOrderCustomerId
2410             {
2411 0     0 0 0 my $self = shift;
2412 0         0 $self->{strOrderCustomerID};
2413             }
2414            
2415             #/**
2416             # * Gets the purchase order number
2417             # */
2418             sub GetPurchaseOrderNumber
2419             {
2420 0     0 0 0 my $self = shift;
2421 0         0 $self->{strPurchaseOrderNumber};
2422             }
2423            
2424             #/**
2425             # * Gets the state tax
2426             # */
2427             sub GetStateTax
2428             {
2429 0     0 0 0 my $self = shift;
2430 0         0 $self->{dStateTax};
2431             }
2432            
2433             #/**
2434             # * Gets the track 1 data
2435             # */
2436             sub GetTrack1
2437             {
2438 0     0 0 0 my $self = shift;
2439 0         0 $self->{strTrack1};
2440             }
2441            
2442             #/**
2443             # * Gets the track 2 data
2444             # */
2445             sub GetTrack2
2446             {
2447 0     0 0 0 my $self = shift;
2448 0         0 $self->{strTrack2};
2449             }
2450            
2451             #/**
2452             # * Gets the transaction condition code
2453             # */
2454             sub GetTransactionConditionCode
2455             {
2456 0     0 0 0 my $self = shift;
2457 0         0 $self->{strTransactionConditionCode};
2458             }
2459            
2460             #/**
2461             # * Gets the xid
2462             # */
2463             sub GetXID
2464             {
2465 0     0 0 0 my $self = shift;
2466 0         0 $self->{strXID};
2467             }
2468            
2469             #/**
2470             # * Gets tax exempt flag
2471             # */
2472             sub GetTaxExempt
2473             {
2474 0     0 0 0 my $self = shift;
2475 0         0 $self->{boolTaxExempt};
2476             }
2477            
2478             #/**
2479             # * Gets invoice number
2480             # */
2481             sub GetInvoiceNumber
2482             {
2483 0     0 0 0 my $self = shift;
2484 0         0 $self->{strInvoiceNumber};
2485             }
2486            
2487             #/**
2488             # * Gets the Authentication Transaction ID
2489             # *
2490             # * Used in Payer Authentication transaction type
2491             # */
2492             sub GetAuthenticationTransactionId
2493             {
2494 0     0 0 0 my $self = shift;
2495 0         0 $self->{strAuthenticationTransactionId};
2496             }
2497            
2498             #/**
2499             # * Gets the Authentication Payload
2500             # *
2501             # * Used in Payer Authentication transaction type
2502             # */
2503             sub GetAuthenticationPayload
2504             {
2505 0     0 0 0 my $self = shift;
2506 0         0 $self->{strAuthenticationPayload};
2507             }
2508            
2509             #/**
2510             # * Gets the Success On Authentication Inconclusive
2511             # *
2512             # * Used in Payer Authentication transaction type
2513             # */
2514             sub GetDoTransactionOnAuthenticationInconclusive
2515             {
2516 0     0 0 0 my $self = shift;
2517 0         0 $self->{boolSuccessOnAuthenticationInconclusive};
2518             }
2519            
2520            
2521             #/**
2522             # * Gets the industry
2523             # */
2524             sub GetIndustry
2525             {
2526 0     0 0 0 my $self = shift;
2527 0         0 $self->{strIndustry};
2528             }
2529            
2530             #/**
2531             # * Gets the folio number
2532             # */
2533             sub GetFolioNumber
2534             {
2535 0     0 0 0 my $self = shift;
2536 0         0 $self->{strFolioNumber};
2537             }
2538            
2539             #/**
2540             # * Gets the service rate
2541             # */
2542             sub GetServiceRate
2543             {
2544 0     0 0 0 my $self = shift;
2545 0         0 $self->{dServiceRate};
2546             }
2547            
2548             #/**
2549             # * Gets the service rate as a String
2550             # */
2551             sub GetServiceRateStr
2552             {
2553 0     0 0 0 my $self = shift;
2554 0         0 $self->{strServiceRate};
2555             }
2556            
2557             #/**
2558             # * Gets the service start year
2559             # */
2560             sub GetServiceStartYear
2561             {
2562 0     0 0 0 my $self = shift;
2563 0         0 $self->{intServiceStartYear};
2564             }
2565            
2566             #/**
2567             # * Gets the service start month
2568             # */
2569             sub GetServiceStartMonth
2570             {
2571 0     0 0 0 my $self = shift;
2572 0         0 $self->{intServiceStartMonth};
2573             }
2574            
2575             #/**
2576             # * Gets the service start day
2577             # */
2578             sub GetServiceStartDay
2579             {
2580 0     0 0 0 my $self = shift;
2581 0         0 $self->{intServiceStartDay};
2582             }
2583            
2584             #/**
2585             # * Gets the service end year
2586             # */
2587             sub GetServiceEndYear
2588             {
2589 0     0 0 0 my $self = shift;
2590 0         0 $self->{intServiceEndYear};
2591             }
2592            
2593             #/**
2594             # * Gets the service end month
2595             # */
2596             sub GetServiceEndMonth
2597             {
2598 0     0 0 0 my $self = shift;
2599 0         0 $self->{intServiceEndMonth};
2600             }
2601            
2602             #/**
2603             # * Gets the service end day
2604             # */
2605             sub GetServiceEndDay
2606             {
2607 0     0 0 0 my $self = shift;
2608 0         0 $self->{intServiceEndDay};
2609             }
2610            
2611             #/**
2612             # * Gets the Charge Total Includes Restaurant flag
2613             # */
2614             sub GetChargeTotalIncludesRestaurant
2615             {
2616 0     0 0 0 my $self = shift;
2617 0         0 $self->{boolChargeTotalIncludesRestaurant};
2618             }
2619            
2620             #/**
2621             # * Gets the Charge Total Includes Giftshop flag
2622             # */
2623             sub GetChargeTotalIncludesGiftshop
2624             {
2625 0     0 0 0 my $self = shift;
2626 0         0 $self->{boolChargeTotalIncludesGiftshop};
2627             }
2628            
2629             #/**
2630             # * Gets the Charge Total Includes Minibar flag
2631             # */
2632             sub GetChargeTotalIncludesMinibar
2633             {
2634 0     0 0 0 my $self = shift;
2635 0         0 $self->{boolChargeTotalIncludesMinibar};
2636             }
2637            
2638             #/**
2639             # * Gets the Charge Total Includes Laundry flag
2640             # */
2641             sub GetChargeTotalIncludesLaundry
2642             {
2643 0     0 0 0 my $self = shift;
2644 0         0 $self->{boolChargeTotalIncludesLaundry};
2645             }
2646            
2647             #/**
2648             # * Gets the Charge Total Includes Phone flag
2649             # */
2650             sub GetChargeTotalIncludesPhone
2651             {
2652 0     0 0 0 my $self = shift;
2653 0         0 $self->{boolChargeTotalIncludesPhone};
2654             }
2655            
2656             #/**
2657             # * Gets the Charge Total Includes Other flag
2658             # */
2659             sub GetChargeTotalIncludesOther
2660             {
2661 0     0 0 0 my $self = shift;
2662 0         0 $self->{boolChargeTotalIncludesOther};
2663             }
2664            
2665             #/**
2666             # * Gets the Service No Show flag
2667             # */
2668             sub GetServiceNoShow
2669             {
2670 0     0 0 0 my $self = shift;
2671 0         0 $self->{boolServiceNoShow};
2672             }
2673            
2674            
2675            
2676             #**
2677             # * Method to create the post string.
2678             # */
2679             sub WriteRequest
2680             {
2681 4     4 0 7 my $self = shift;
2682 4         9 my $class =ref($self);
2683 4         8 my $PostString = shift; # a pointer to string as arguement
2684 4         8 my $temp = "";
2685 4         41 $self->SUPER::WriteRequest($PostString);
2686            
2687             # Cartridge Type
2688 4         24 $temp = Encode( $self->{strCartridgeType} );
2689 4         14 $$PostString .= "cartridge_type=$temp";
2690 4         10 $$PostString .= $self->{strParamSeparator};
2691            
2692             # Ecommerce Indicator
2693 4         15 $temp = Encode( $self->{strEcommerceIndicator} );
2694 4         11 $$PostString .= "ecommerce_indicator=$temp";
2695 4         15 $$PostString .= $self->{strParamSeparator};
2696            
2697             # fixed value for transaction_type
2698 4         18 $$PostString .= "transaction_type=CREDIT_CARD";
2699 4         10 $$PostString .= $self->{strParamSeparator};
2700            
2701             # creditCardNumber
2702 4         21 $temp = Encode( $self->{strCreditCardNumber} );
2703 4         20 $$PostString .= "credit_card_number=$temp";
2704 4         11 $$PostString .= $self->{strParamSeparator};
2705            
2706             # creditCardVerificationNumber
2707 4         32 $temp = Encode( $self->{strCreditCardVerificationNumber} );
2708 4         14 $$PostString .= "credit_card_verification_number=$temp";
2709 4         19 $$PostString .= $self->{strParamSeparator};
2710            
2711             # expireMonth
2712 4         35 $temp = Encode( $self->{strExpireMonth} );
2713 4         13 $$PostString .= "expire_month=$temp";
2714 4         9 $$PostString .= $self->{strParamSeparator};
2715            
2716             # expireYear
2717 4         14 $temp = Encode( $self->{strExpireYear} );
2718 4         14 $$PostString .= "expire_year=$temp";
2719 4         8 $$PostString .= $self->{strParamSeparator};
2720            
2721             # chargeType
2722 4         23 $temp = Encode( $self->{strChargeType} );
2723 4         14 $$PostString .= "charge_type=$temp";
2724 4         9 $$PostString .= $self->{strParamSeparator};
2725            
2726             # chargeTotal
2727 4         6 $$PostString .= "charge_total=";
2728 4         14 $$PostString .= Encode( $self->{dChargeTotal} );
2729 4         13 $$PostString .= $self->{strParamSeparator};
2730            
2731             # cardBrand
2732             # $$PostString .= "card_brand=";
2733             # $$PostString .= Encode( $self->{strCardBrand} );
2734             # $$PostString .= $self->{strParamSeparator};
2735            
2736             # orderId
2737 4         16 $temp = Encode( $self->{strOrderId} );
2738 4         11 $$PostString .= "order_id=$temp";
2739 4         11 $$PostString .= $self->{strParamSeparator};
2740            
2741             # captureReferenceId
2742 4         21 $temp = Encode( $self->{strReferenceId} );
2743 4         10 $$PostString .= "reference_id=$temp";
2744 4         8 $$PostString .= $self->{strParamSeparator};
2745            
2746             # orderDescription
2747 4         21 $temp = Encode( $self->{strOrderDescription} );
2748 4         15 $$PostString .= "order_description=$temp";
2749 4         11 $$PostString .= $self->{strParamSeparator};
2750            
2751             # orderUserId
2752 4         16 $temp = Encode( $self->{strOrderUserId} );
2753 4         12 $$PostString .= "order_user_id=$temp";
2754 4         9 $$PostString .= $self->{strParamSeparator};
2755            
2756             # BankApprovalCode
2757 4         16 $temp = Encode( $self->{strBankApprovalCode} );
2758 4         13 $$PostString .= "bank_approval_code=$temp";
2759 4         27 $$PostString .= $self->{strParamSeparator};
2760            
2761             # DuplicateCheck
2762 4         13 $temp = Encode( $self->{strDuplicateCheck} );
2763 4         12 $$PostString .= "duplicate_check=$temp";
2764 4         9 $$PostString .= $self->{strParamSeparator};
2765            
2766             # taxAmount
2767 4         7 $$PostString .= "tax_amount=";
2768 4         13 $$PostString .= Encode( $self->{dTaxAmount} );
2769 4         17 $$PostString .= $self->{strParamSeparator};
2770            
2771             # shippingCharge
2772 4         8 $$PostString .= "shipping_charge=";
2773 4         12 $$PostString .= Encode( $self->{dShippingCharge} );
2774 4         11 $$PostString .= $self->{strParamSeparator};
2775            
2776             # billFirstName
2777 4         12 $temp = Encode( $self->{strBillFirstName} );
2778 4         11 $$PostString .= "bill_first_name=$temp";
2779 4         9 $$PostString .= $self->{strParamSeparator};
2780            
2781             # billMiddleName
2782 4         30 $temp = Encode( $self->{strBillMiddleName} );
2783 4         11 $$PostString .= "bill_middle_name=$temp";
2784 4         9 $$PostString .= $self->{strParamSeparator};
2785            
2786             # billLastName
2787 4         24 $temp = Encode( $self->{strBillLastName} );
2788 4         33 $$PostString .= "bill_last_name=$temp";
2789 4         15 $$PostString .= $self->{strParamSeparator};
2790            
2791             # billCustomerTitle
2792 4         22 $temp = Encode( $self->{strBillCustomerTitle} );
2793 4         20 $$PostString .= "bill_customer_title=$temp";
2794 4         8 $$PostString .= $self->{strParamSeparator};
2795            
2796             # billCompany
2797 4         17 $temp = Encode( $self->{strBillCompany} );
2798 4         10 $$PostString .= "bill_company=$temp";
2799 4         8 $$PostString .= $self->{strParamSeparator};
2800            
2801             # billAddressOne
2802 4         14 $temp = Encode( $self->{strBillAddressOne} );
2803 4         14 $$PostString .= "bill_address_one=$temp";
2804 4         7 $$PostString .= $self->{strParamSeparator};
2805            
2806             # billAddressTwo
2807 4         15 $temp = Encode( $self->{strBillAddressTwo} );
2808 4         14 $$PostString .= "bill_address_two=$temp";
2809 4         9 $$PostString .= $self->{strParamSeparator};
2810            
2811             # billCity
2812 4         13 $temp = Encode( $self->{strBillCity} );
2813 4         12 $$PostString .= "bill_city=$temp";
2814 4         10 $$PostString .= $self->{strParamSeparator};
2815            
2816             # billStateOrProvince
2817 4         21 $temp = Encode( $self->{strBillStateOrProvince} );
2818 4         14 $$PostString .= "bill_state_or_province=$temp";
2819 4         15 $$PostString .= $self->{strParamSeparator};
2820            
2821             # billPostalCode
2822 4         33 $temp = Encode( $self->{strBillPostalCode} );
2823 4         16 $$PostString .= "bill_postal_code=$temp";
2824 4         12 $$PostString .= $self->{strParamSeparator};
2825            
2826             # billCountryCode
2827 4         17 $temp = Encode( $self->{strBillCountryCode} );
2828 4         16 $$PostString .= "bill_country_code=$temp";
2829 4         11 $$PostString .= $self->{strParamSeparator};
2830            
2831             # billEmail
2832 4         17 $temp = Encode( $self->{strBillEmail} );
2833 4         13 $$PostString .= "bill_email=$temp";
2834 4         16 $$PostString .= $self->{strParamSeparator};
2835            
2836             # billPhone
2837 4         15 $temp = Encode( $self->{strBillPhone} );
2838 4         18 $$PostString .= "bill_phone=$temp";
2839 4         9 $$PostString .= $self->{strParamSeparator};
2840            
2841             # billFax
2842 4         20 $temp = Encode( $self->{strBillFax} );
2843 4         8 $$PostString .= "bill_fax=$temp";
2844 4         9 $$PostString .= $self->{strParamSeparator};
2845            
2846             # billNote
2847 4         15 $temp = Encode( $self->{strBillNote} );
2848 4         20 $$PostString .= "bill_note=$temp";
2849 4         8 $$PostString .= $self->{strParamSeparator};
2850            
2851             # shipFirstName
2852 4         13 $temp = Encode( $self->{strShipFirstName} );
2853 4         11 $$PostString .= "ship_first_name=$temp";
2854 4         9 $$PostString .= $self->{strParamSeparator};
2855            
2856             # shipMiddleName
2857 4         15 $temp = Encode( $self->{strShipMiddleName} );
2858 4         11 $$PostString .= "ship_middle_name=$temp";
2859 4         9 $$PostString .= $self->{strParamSeparator};
2860            
2861             # shipLastName
2862 4         16 $temp = Encode( $self->{strShipLastName} );
2863 4         20 $$PostString .= "ship_last_name=$temp";
2864 4         9 $$PostString .= $self->{strParamSeparator};
2865            
2866             # shipCustomerTitle
2867 4         16 $temp = Encode( $self->{strShipCustomerTitle} );
2868 4         17 $$PostString .= "ship_customer_title=$temp";
2869 4         9 $$PostString .= $self->{strParamSeparator};
2870            
2871             # shipCompany
2872 4         15 $temp = Encode( $self->{strShipCompany} );
2873 4         10 $$PostString .= "ship_company=$temp";
2874 4         9 $$PostString .= $self->{strParamSeparator};
2875            
2876             # shipAddressOne
2877 4         13 $temp = Encode( $self->{strShipAddressOne} );
2878 4         11 $$PostString .= "ship_address_one=$temp";
2879 4         10 $$PostString .= $self->{strParamSeparator};
2880            
2881             # shipAddressTwo
2882 4         15 $temp = Encode( $self->{strShipAddressTwo} );
2883 4         11 $$PostString .= "ship_address_two=$temp";
2884 4         14 $$PostString .= $self->{strParamSeparator};
2885            
2886             # shipCity
2887 4         22 $temp = Encode( $self->{strShipCity} );
2888 4         11 $$PostString .= "ship_city=$temp";
2889 4         9 $$PostString .= $self->{strParamSeparator};
2890            
2891             # shipStateOrProvince
2892 4         20 $temp = Encode( $self->{strShipStateOrProvince} );
2893 4         11 $$PostString .= "ship_state_or_province=$temp";
2894 4         19 $$PostString .= $self->{strParamSeparator};
2895            
2896             # shipPostalCode
2897 4         15 $temp = Encode( $self->{strShipPostalCode} );
2898 4         12 $$PostString .= "ship_postal_code=$temp";
2899 4         9 $$PostString .= $self->{strParamSeparator};
2900            
2901             # shipCountryCode
2902 4         15 $temp = Encode( $self->{strShipCountryCode} );
2903 4         12 $$PostString .= "ship_country_code=$temp";
2904 4         10 $$PostString .= $self->{strParamSeparator};
2905            
2906             # shipEmail
2907 4         21 $temp = Encode( $self->{strShipEmail} );
2908 4         10 $$PostString .= "ship_email=$temp";
2909 4         8 $$PostString .= $self->{strParamSeparator};
2910            
2911             # shipPhone
2912 4         19 $temp = Encode( $self->{strShipPhone} );
2913 4         11 $$PostString .= "ship_phone=$temp";
2914 4         14 $$PostString .= $self->{strParamSeparator};
2915            
2916             # shipFax
2917 4         15 $temp = Encode( $self->{strShipFax} );
2918 4         9 $$PostString .= "ship_fax=$temp";
2919 4         16 $$PostString .= $self->{strParamSeparator};
2920            
2921             # shipNote
2922 4         18 $temp = Encode( $self->{strShipNote} );
2923 4         10 $$PostString .= "ship_note=$temp";
2924 4         9 $$PostString .= $self->{strParamSeparator};
2925            
2926             # Currency
2927             # $temp = Encode( $self->{strCurrency} );
2928             # $$PostString .= "currency=$temp";
2929             # $$PostString .= $self->{strParamSeparator};
2930            
2931             # Buyer Code
2932 4         15 $temp = Encode( $self->{strBuyerCode} );
2933 4         13 $$PostString .= "buyer_code=$temp";
2934 4         10 $$PostString .= $self->{strParamSeparator};
2935            
2936             # CAVV
2937 4         12 $temp = Encode( $self->{strCAVV} );
2938 4         12 $$PostString .= "cavv=$temp";
2939 4         11 $$PostString .= $self->{strParamSeparator};
2940            
2941             # Customer IP Address
2942 4         25 $temp = Encode( $self->{strCustomerIPAddress} );
2943 4         18 $$PostString .= "customer_ip_address=$temp";
2944 4         11 $$PostString .= $self->{strParamSeparator};
2945            
2946             # Order Customer ID
2947 4         21 $temp = Encode( $self->{strOrderCustomerID} );
2948 4         21 $$PostString .= "order_customer_id=$temp";
2949 4         9 $$PostString .= $self->{strParamSeparator};
2950            
2951             # Purchase Order Number
2952 4         15 $temp = Encode( $self->{strPurchaseOrderNumber} );
2953 4         12 $$PostString .= "purchase_order_number=$temp";
2954 4         9 $$PostString .= $self->{strParamSeparator};
2955            
2956             # State Tax
2957 4         18 $temp = Encode( $self->{dStateTax} );
2958 4 50       19 if( $temp == -1 ) {
2959 4         9 $temp = "";
2960             }
2961 4         12 $$PostString .= "state_tax=$temp";
2962 4         9 $$PostString .= $self->{strParamSeparator};
2963            
2964             # Track 1
2965 4         15 $temp = Encode( $self->{strTrack1} );
2966 4         12 $$PostString .= "track1=$temp";
2967 4         8 $$PostString .= $self->{strParamSeparator};
2968            
2969             # Track 2
2970 4         15 $temp = Encode( $self->{strTrack2} );
2971 4         20 $$PostString .= "track2=$temp";
2972 4         8 $$PostString .= $self->{strParamSeparator};
2973            
2974             # Transaction condition code
2975 4         30 $temp = Encode( $self->{strTransactionConditionCode} );
2976 4         14 $$PostString .= "transaction_condition_code=$temp";
2977 4         8 $$PostString .= $self->{strParamSeparator};
2978            
2979             # XID
2980 4         17 $temp = Encode( $self->{strXID} );
2981 4         14 $$PostString .= "x_id=$temp";
2982 4         9 $$PostString .= $self->{strParamSeparator};
2983            
2984             # Invoice number
2985 4         19 $temp = Encode( $self->{strInvoiceNumber} );
2986 4         15 $$PostString .= "invoice_number=$temp";
2987 4         15 $$PostString .= $self->{strParamSeparator};
2988            
2989             # Tax Exempt
2990 4         11 $temp = $self->{boolTaxExempt};
2991 4 50       33 if ( $temp eq "" ) {
    0          
    0          
2992             #not set. leave it.
2993             } elsif ( $temp ) {
2994 0         0 $temp = "true";
2995             } elsif(! $temp) {
2996 0         0 $temp = "false";
2997             } else {
2998 0         0 $temp = "";
2999             }
3000 4         14 $$PostString .= "tax_exempt=$temp";
3001 4         16 $$PostString .= $self->{strParamSeparator};
3002            
3003             # Authentication Transaction ID
3004 4         17 $temp = Encode( $self->{strAuthenticationTransactionId} );
3005 4         20 $$PostString .= "authentication_transaction_id=$temp";
3006 4         11 $$PostString .= $self->{strParamSeparator};
3007            
3008             # Authentication Payload
3009 4         17 $temp = Encode( $self->{strAuthenticationPayload} );
3010 4         11 $$PostString .= "authentication_payload=$temp";
3011 4         9 $$PostString .= $self->{strParamSeparator};
3012            
3013             # Success On Authentication Inconclusive
3014 4         9 $temp = $self->{boolSuccessOnAuthenticationInconclusive};
3015 4 50       14 if ( $temp eq "" ) {
    0          
    0          
3016             #not set. leave it.
3017             } elsif ( $temp ) {
3018 0         0 $temp = "true";
3019             } elsif(!$temp) {
3020 0         0 $temp = "false";
3021             } else {
3022 0         0 $temp = "";
3023             }
3024 4         15 $$PostString .= "success_on_authentication_inconclusive=$temp";
3025 4         9 $$PostString .= $self->{strParamSeparator};
3026            
3027             # Industry
3028 4         41 $temp = Encode( $self->{strIndustry} );
3029 4         11 $$PostString .= "industry=$temp";
3030 4         10 $$PostString .= $self->{strParamSeparator};
3031            
3032             # Folio number
3033 4         13 $temp = Encode( $self->{strFolioNumber} );
3034 4         11 $$PostString .= "folio_number=$temp";
3035 4         15 $$PostString .= $self->{strParamSeparator};
3036            
3037             # Service Rate
3038 4         14 $temp = Encode( $self->{dServiceRate} );
3039 4 50       16 if( $temp == -1 ) {
3040 4         6 $temp = "";
3041             }
3042 4         20 $$PostString .= "service_rate=$temp";
3043 4         7 $$PostString .= $self->{strParamSeparator};
3044            
3045             # Service Start Day
3046 4         15 $temp = Encode( $self->{intServiceStartDay} );
3047 4         16 $$PostString .= "service_start_day=$temp";
3048 4         7 $$PostString .= $self->{strParamSeparator};
3049            
3050             # Service Start Month
3051 4         14 $temp = Encode( $self->{intServiceStartMonth} );
3052 4         25 $$PostString .= "service_start_month=$temp";
3053 4         10 $$PostString .= $self->{strParamSeparator};
3054            
3055             # Service Start Year
3056 4         21 $temp = Encode( $self->{intServiceStartYear} );
3057 4         13 $$PostString .= "service_start_year=$temp";
3058 4         11 $$PostString .= $self->{strParamSeparator};
3059            
3060             # Service End Day
3061 4         24 $temp = Encode( $self->{intServiceEndDay} );
3062 4         15 $$PostString .= "service_end_day=$temp";
3063 4         11 $$PostString .= $self->{strParamSeparator};
3064            
3065             # Service End Month
3066 4         18 $temp = Encode( $self->{intServiceEndMonth} );
3067 4         15 $$PostString .= "service_end_month=$temp";
3068 4         12 $$PostString .= $self->{strParamSeparator};
3069            
3070             # Service End Year
3071 4         15 $temp = Encode( $self->{intServiceEndYear} );
3072 4         14 $$PostString .= "service_end_year=$temp";
3073 4         10 $$PostString .= $self->{strParamSeparator};
3074            
3075             # Charge Total Includes Restaurant
3076 4         21 $temp = Encode( $self->{boolChargeTotalIncludesRestaurant} );
3077 4 50       22 if ( $temp eq "" ) {
    0          
    0          
3078             #not set. leave it.
3079             } elsif ( $temp ) {
3080 0         0 $temp = "true";
3081             } elsif(!$temp) {
3082 0         0 $temp = "false";
3083             } else {
3084 0         0 $temp = "";
3085             }
3086 4         14 $$PostString .= "charge_total_incl_restaurant=$temp";
3087 4         10 $$PostString .= $self->{strParamSeparator};
3088            
3089             # Charge Total Includes Giftshop
3090 4         17 $temp = Encode( $self->{boolChargeTotalIncludesGiftshop} );
3091 4 50       31 if ( $temp eq "" ) {
    0          
    0          
3092             #not set. leave it.
3093             } elsif ( $temp ) {
3094 0         0 $temp = "true";
3095             } elsif(!$temp) {
3096 0         0 $temp = "false";
3097             } else {
3098 0         0 $temp = "";
3099             }
3100 4         11 $$PostString .= "charge_total_incl_giftshop=$temp";
3101 4         11 $$PostString .= $self->{strParamSeparator};
3102            
3103             # Charge Total Includes Minibar
3104 4         19 $temp = Encode( $self->{boolChargeTotalIncludesMinibar} );
3105 4 50       24 if ( $temp eq "" ) {
    0          
    0          
3106             #not set. leave it.
3107             } elsif ( $temp ) {
3108 0         0 $temp = "true";
3109             } elsif(!$temp) {
3110 0         0 $temp = "false";
3111             } else {
3112 0         0 $temp = "";
3113             }
3114 4         12 $$PostString .= "charge_total_incl_minibar=$temp";
3115 4         8 $$PostString .= $self->{strParamSeparator};
3116            
3117             # Charge Total Includes Phone
3118 4         25 $temp = Encode( $self->{boolChargeTotalIncludesPhone} );
3119 4 50       25 if ( $temp eq "" ) {
    0          
    0          
3120             #not set. leave it.
3121             } elsif ( $temp ) {
3122 0         0 $temp = "true";
3123             } elsif(!$temp) {
3124 0         0 $temp = "false";
3125             } else {
3126 0         0 $temp = "";
3127             }
3128 4         12 $$PostString .= "charge_total_incl_phone=$temp";
3129 4         11 $$PostString .= $self->{strParamSeparator};
3130            
3131             # Charge Total Includes Laundry
3132 4         19 $temp = Encode( $self->{boolChargeTotalIncludesLaundry} );
3133 4 50       26 if ( $temp eq "" ) {
    0          
    0          
3134             #not set. leave it.
3135             } elsif ( $temp ) {
3136 0         0 $temp = "true";
3137             } elsif(!$temp) {
3138 0         0 $temp = "false";
3139             } else {
3140 0         0 $temp = "";
3141             }
3142 4         61 $$PostString .= "charge_total_incl_laundry=$temp";
3143 4         15 $$PostString .= $self->{strParamSeparator};
3144            
3145             # Charge Total Includes Other
3146 4         15 $temp = Encode( $self->{boolChargeTotalIncludesOther} );
3147 4 50       17 if ( $temp eq "" ) {
    0          
    0          
3148             #not set. leave it.
3149             } elsif ( $temp ) {
3150 0         0 $temp = "true";
3151             } elsif(!$temp) {
3152 0         0 $temp = "false";
3153             } else {
3154 0         0 $temp = "";
3155             }
3156 4         12 $$PostString .= "charge_total_incl_other=$temp";
3157 4         8 $$PostString .= $self->{strParamSeparator};
3158            
3159             # Service No Show
3160 4         15 $temp = Encode( $self->{boolServiceNoShow} );
3161 4 50       20 if ( $temp eq "" ) {
    0          
    0          
3162             #not set. leave it.
3163             } elsif ( $temp ) {
3164 0         0 $temp = "true";
3165             } elsif(!$temp) {
3166 0         0 $temp = "false";
3167             } else {
3168 0         0 $temp = "";
3169             }
3170 4         19 $$PostString .= "service_no_show=$temp";
3171            
3172             # No parameter separator on last line.
3173            
3174             }
3175            
3176             sub GetErrorString
3177             {
3178 0     0 0   my $self = shift;
3179 0           return $self->{strError};
3180             }
3181            
3182