2 package Business::OnlinePayment::PPIPayMover::TransactionResponse;
\r
3 use Business::OnlinePayment::PPIPayMover::constants;
\r
9 my $paramNo = @param;
\r
11 bless $self, $class;
\r
13 $self->{strError} = "";
\r
14 $self->{iRetVal} = undef;
\r
15 $self->{iResponseCode} = undef;
\r
16 $self->{strResponseCode} = undef;
\r
17 $self->{strResponseCodeText} = undef;
\r
18 $self->{strTimeStamp} = undef;
\r
19 $self->{bRetryRecommended} = undef;
\r
22 # constructor for only one or two string arguement
\r
23 if ($paramNo == 1 || $paramNo == 2) {
\r
24 my $InString = shift;
\r
31 if ($$InString eq "") {
\r
32 $self->{strError} .= "Empty response string";
\r
33 $self->{iRetVal} = 0;
\r
37 @tmp = split(/\n/, $$InString);
\r
43 # Anything after the first = is part
\r
44 # of the value (including other ='s)
\r
45 ($name, $value) = split(/=/, $_, 2);
\r
47 if (index($name, "<") == 0) {
\r
48 $self->{strError} .= "Server not available";
\r
49 $self->{iRetVal} = 0;
\r
51 $self->{iResponseCode} = TRANSACTION_SERVER_ERROR;
\r
52 $self->{strResponseCode} = "".$self->{iResponseCode};
\r
53 $self->{strResponseCodeText} = "The Transaction Server is currently not available";
\r
57 if ($name eq $prefix."response_code") {
\r
59 if($value."" eq "0" || $value."" eq "") {
\r
60 $self->{strError} .= "Invalid response code";
\r
61 $self->{iRetVal} = 0;
\r
65 $self->{strResponseCode} = $value;
\r
66 $self->{iResponseCode} = 1 * $value;
\r
69 elsif ($name eq $prefix."response_code_text"){
\r
70 $self->{strResponseCodeText} = $value;
\r
72 elsif ($name eq $prefix."time_stamp") {
\r
73 $self->{strTimeStamp} = $value;
\r
75 elsif ($name eq $prefix."retry_recommended") {
\r
76 if ($value eq "true") {
\r
77 $self->{bRetryRecommended} = 1;
\r
79 elsif ($value eq "false") {
\r
80 $self->{bRetryRecommended} = 0;
\r
83 $self->{strError} .= "invalid retry flag";
\r
88 $self->{strError} .= "Invalid data name: ";
\r
93 # constructor for 4 arguements. More arguements are ignored
\r
94 # (1) ResponseCode(integer), (2) ResponseCodeText(string), (3) TimeStamp(string),
\r
95 # (4) RetryRecommended(bool: 1 or 0 in the form of integer)
\r
97 elsif ($paramNo >= 4) {
\r
98 my ($iResponseCode, $strResponseCodeText, $strTimeStamp, $bRetryRecommended) = @param[0..3];
\r
99 if (!defined($iResponseCode) || $iResponseCode < 1 || !defined($strResponseCodeText) ||
\r
100 !defined($strTimeStamp) || !defined($bRetryRecommended)) {
\r
101 $self->{strError} .= "Wrong parameter";
\r
104 $self->{iResponseCode} = $iResponseCode;
\r
105 $self->{strResponseCode} = "".$iResponseCode;
\r
106 $self->{strResponseCodeText} = $strResponseCodeText;
\r
107 $self->{strTimeStamp} = $strTimeStamp;
\r
108 $self->{bRetryRecommended} = $bRetryRecommended;
\r
111 $self->{strError} .= "Parameter number is only $paramNo and more are needed";
\r
122 sub GetResponseCode {
\r
124 $self->{iResponseCode};
\r
127 sub GetResponseCodeStrVal {
\r
129 $self->{strResponseCode};
\r
132 sub GetResponseCodeText{
\r
134 $self->{strResponseCodeText};
\r
139 $self->{strTimeStamp};
\r
142 sub GetRetryRecommended {
\r
144 $self->{bRetryRecommended};
\r
148 sub WriteResponse {
\r
150 my $outString = shift;
\r
152 $self->{strResponseCodeText} =~ tr/\n/ /;
\r
153 $self->{strTimeStamp} =~ tr/\n/ /;
\r
154 $$outString .= "response_code=";
\r
155 $$outString .= $self->{strResponseCode};
\r
156 $$outString .= "\n";
\r
157 $$outString .= "response_code_text=";
\r
158 $$outString .= $self->{strResponseCodeText};
\r
159 $$outString .= "\n";
\r
160 $$outString .= "time_stamp=";
\r
161 $$outString .= $self->{strTimeStamp};
\r
162 $$outString .= "\n";
\r
164 if ($self->{bRetryRecommended}) {
\r
165 $$outString .= "retry_recommended=true\n";
\r
168 $$outString .= "retry_recommended=false\n";
\r
170 return CCR_NO_ERROR;
\r