2 package Business::OnlinePayment::PPIPayMover::TransactionRequest;
\r
3 use Business::OnlinePayment::PPIPayMover::constants;
\r
4 use Business::OnlinePayment::PPIPayMover::AdditionalField;
\r
5 use Business::OnlinePayment::PPIPayMover::TransactionResponse;
\r
11 $self->{AdditionalFields} = [];
\r
12 $self->{strError} = "";
\r
13 $self->{strParamSeparator} = "&";
\r
15 bless $self, $class;
\r
21 # * A method to add a single additional field to the TransactionRequest or TransactionRequest subclass
\r
22 # * (such as CreditCardRequest).
\r
24 # * @param additionalField An AdditionalField object containing a name and a value. The name must be
\r
25 # * unique. That is, one TransactionRequest object can contain only one additional field with a given name.
\r
27 # * @see AdditionalField
\r
29 sub SetAdditionalField {
\r
31 my $additionalField = shift; # take only one AdditionalField object arguement
\r
32 foreach (@{$self->{AdditionalFields}}) {
\r
33 if ($additionalField->equals($_)) {
\r
34 $self->{strError} .= "TransactionRequest.setAddtionalField: name already used";
\r
38 ${$self->{AdditionalFields}}[$#{$self->{AdditionalFields}} + 1] = $additionalField;
\r
39 return CCR_NO_ERROR;
\r
44 # * A method to add multiple additional fields to the TransactionRequest or TransactionRequest subclass
\r
45 # * (such as CreditCardRequest).
\r
47 # * @param additionalFields An Vector of AdditionalField objects, each containing a name and a value.
\r
48 # * The parameter cannot be NULL and the Vector must be non-empty.
\r
50 # * @see AdditionalField
\r
52 sub SetAdditionalFields {
\r
54 my $additionalFields = shift; # take one AdditionalField array arguement
\r
55 my $size = @$additionalFields;
\r
57 $self->{strError} .= "TransactionRequest.setAdditionalFields passed empty vector";
\r
61 foreach (@$additionalFields) {
\r
62 if (defined($_)) {$self->SetAdditionalField($_)}
\r
65 return CCR_NO_ERROR;
\r
69 # * A method to retrieve an additional field
\r
70 # * @return Returns an AdditionalField object or NULL if name is unkown
\r
72 sub GetAdditionalField {
\r
74 my $name = shift; # use name as arguement to get additional field arguememt
\r
75 foreach (@{$self->{AdditionalFields}}) {
\r
76 if ($name = $_->getName) { return $_ }
\r
83 # * A method to retrieve a Vector of AdditionalField objects
\r
84 # * @return Returns a Vector of AdditionalField objects or NULL
\r
86 sub GetAdditionalFields{
\r
88 return @{$self->{AdditionalFields}};
\r
93 # * A method for Transaction Server developers that is not used by merchant developers.
\r
95 # * This method should be overwritten by subclasses, but the subclasses
\r
96 # * version of this method MUST CALL super.writeRequest(out).
\r
100 my $PostString = shift; #arguement as a pointer to string
\r
101 my $size = @{$self->{AdditionalFields}};
\r
106 foreach (@{$self->{AdditionalFields}}) {
\r
108 $_->write($PostString);
\r
111 return CCR_NO_ERROR;
\r
114 sub GetTransResponseObject {
\r
116 my $InString = shift; # use one string arguement
\r
117 return new Business::OnlinePayment::PPIPayMover::TransactionResponse($InString);
\r