From d177cda5d1f99f5c163ee62861613bc02290d84f Mon Sep 17 00:00:00 2001 From: ivan Date: Tue, 4 Jul 2006 01:18:33 +0000 Subject: initial import --- .../PPIPayMover/TransactionResponse.pm | 171 +++++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 lib/Business/OnlinePayment/PPIPayMover/TransactionResponse.pm (limited to 'lib/Business/OnlinePayment/PPIPayMover/TransactionResponse.pm') diff --git a/lib/Business/OnlinePayment/PPIPayMover/TransactionResponse.pm b/lib/Business/OnlinePayment/PPIPayMover/TransactionResponse.pm new file mode 100644 index 0000000..4056864 --- /dev/null +++ b/lib/Business/OnlinePayment/PPIPayMover/TransactionResponse.pm @@ -0,0 +1,171 @@ +use strict; +package Business::OnlinePayment::PPIPayMover::TransactionResponse; +use Business::OnlinePayment::PPIPayMover::constants; +1; + +sub new { + my $class = shift; + my @param = @_; + my $paramNo = @param; + my $self = {}; + bless $self, $class; + + $self->{strError} = ""; + $self->{iRetVal} = undef; + $self->{iResponseCode} = undef; + $self->{strResponseCode} = undef; + $self->{strResponseCodeText} = undef; + $self->{strTimeStamp} = undef; + $self->{bRetryRecommended} = undef; + + +# constructor for only one or two string arguement + if ($paramNo == 1 || $paramNo == 2) { + my $InString = shift; + my $prefix = ""; + + if($paramNo == 2){ + $prefix = shift; + } + + if ($$InString eq "") { + $self->{strError} .= "Empty response string"; + $self->{iRetVal} = 0; + return $self; + } + my @tmp; + @tmp = split(/\n/, $$InString); + + my $name; + my $value; + foreach (@tmp) { + + # Anything after the first = is part + # of the value (including other ='s) + ($name, $value) = split(/=/, $_, 2); + + if (index($name, "<") == 0) { + $self->{strError} .= "Server not available"; + $self->{iRetVal} = 0; + + $self->{iResponseCode} = TRANSACTION_SERVER_ERROR; + $self->{strResponseCode} = "".$self->{iResponseCode}; + $self->{strResponseCodeText} = "The Transaction Server is currently not available"; + return $self; + } + + if ($name eq $prefix."response_code") { + + if($value."" eq "0" || $value."" eq "") { + $self->{strError} .= "Invalid response code"; + $self->{iRetVal} = 0; + return $self; + } + else { + $self->{strResponseCode} = $value; + $self->{iResponseCode} = 1 * $value; + } + } + elsif ($name eq $prefix."response_code_text"){ + $self->{strResponseCodeText} = $value; + } + elsif ($name eq $prefix."time_stamp") { + $self->{strTimeStamp} = $value; + } + elsif ($name eq $prefix."retry_recommended") { + if ($value eq "true") { + $self->{bRetryRecommended} = 1; + } + elsif ($value eq "false") { + $self->{bRetryRecommended} = 0; + } + else { + $self->{strError} .= "invalid retry flag"; + return $self; + } + } + else { + $self->{strError} .= "Invalid data name: "; + } + } + } + +# constructor for 4 arguements. More arguements are ignored +# (1) ResponseCode(integer), (2) ResponseCodeText(string), (3) TimeStamp(string), +# (4) RetryRecommended(bool: 1 or 0 in the form of integer) + + elsif ($paramNo >= 4) { + my ($iResponseCode, $strResponseCodeText, $strTimeStamp, $bRetryRecommended) = @param[0..3]; + if (!defined($iResponseCode) || $iResponseCode < 1 || !defined($strResponseCodeText) || + !defined($strTimeStamp) || !defined($bRetryRecommended)) { + $self->{strError} .= "Wrong parameter"; + return $self; + } + $self->{iResponseCode} = $iResponseCode; + $self->{strResponseCode} = "".$iResponseCode; + $self->{strResponseCodeText} = $strResponseCodeText; + $self->{strTimeStamp} = $strTimeStamp; + $self->{bRetryRecommended} = $bRetryRecommended; + } + else { + $self->{strError} .= "Parameter number is only $paramNo and more are needed"; + return $self; + } + return $self; +} + + +sub GetError { + my $self = shift; + $self->{strError}; +} +sub GetResponseCode { + my $self = shift; + $self->{iResponseCode}; +} + +sub GetResponseCodeStrVal { + my $self = shift; + $self->{strResponseCode}; +} + +sub GetResponseCodeText{ + my $self = shift; + $self->{strResponseCodeText}; +} + +sub GetTimeStamp { + my $self = shift; + $self->{strTimeStamp}; +} + +sub GetRetryRecommended { + my $self = shift; + $self->{bRetryRecommended}; +} + + +sub WriteResponse { + my $self = shift; + my $outString = shift; + + $self->{strResponseCodeText} =~ tr/\n/ /; + $self->{strTimeStamp} =~ tr/\n/ /; + $$outString .= "response_code="; + $$outString .= $self->{strResponseCode}; + $$outString .= "\n"; + $$outString .= "response_code_text="; + $$outString .= $self->{strResponseCodeText}; + $$outString .= "\n"; + $$outString .= "time_stamp="; + $$outString .= $self->{strTimeStamp}; + $$outString .= "\n"; + + if ($self->{bRetryRecommended}) { + $$outString .= "retry_recommended=true\n"; + } + else { + $$outString .= "retry_recommended=false\n"; + } + return CCR_NO_ERROR; +} -- cgit v1.2.1