rename our internal VERSION sub to avoid conflict with Perl's needs (thanks to ETHER...
[Business-OnlinePayment-PPIPayMover.git] / lib / Business / OnlinePayment / PPIPayMover / TransactionClient.pm
1 use strict;\r
2 package Business::OnlinePayment::PPIPayMover::TransactionClient;\r
3 use Business::OnlinePayment::PPIPayMover::TransactionResponse;\r
4 use Business::OnlinePayment::PPIPayMover::TransactionRequest;\r
5 use Business::OnlinePayment::PPIPayMover::CreditCardRequest;\r
6 use Business::OnlinePayment::PPIPayMover::CreditCardResponse;\r
7 use Business::OnlinePayment::PPIPayMover::SecureHttp;\r
8 use Business::OnlinePayment::PPIPayMover::constants;\r
9 1;\r
10 \r
11 # default constructor\r
12 sub new  {\r
13   my $class = shift;\r
14   my $self = {};\r
15   $self->{strError} = "";\r
16   $self->{strResponse} = "";\r
17   bless $self, $class;\r
18   return $self;\r
19 }\r
20 \r
21 sub doTransaction # take three arguements\r
22 {\r
23   my $self = shift;\r
24   my $TransactionKey = shift; # the first arguement(string)\r
25   my $transReq = shift; # the second arguement(class object)\r
26   my $AccountToken = shift; # the third arguement(string)\r
27   \r
28   my $PostString = "";\r
29   my $ResponseString = "";\r
30   \r
31   # write out account_token ...\r
32   $PostString .= "account_token=$AccountToken";\r
33   $PostString .= "&";\r
34   \r
35   # write out transaction_key ...\r
36   #$PostString .= "transaction_key=$TransactionKey";\r
37   #$PostString .= "&";\r
38   \r
39   # write out version_id ...\r
40   my $temp = PPI_VERSION;\r
41   $temp =~ tr/ /+/;\r
42   $PostString .= "version_id=$temp";\r
43   $PostString .= "&";\r
44  \r
45   $transReq->WriteRequest(\$PostString); # get post information\r
46   \r
47   my $ResponseContent;\r
48   my $secureHttp = new Business::OnlinePayment::PPIPayMover::SecureHttp;\r
49   my $strServer = PAY_HOST;\r
50   my $strPath = PAY_HOST_PATH;\r
51   my $iPort = PAY_HOST_PORT;\r
52   \r
53   \r
54   if(!$secureHttp->Init) {\r
55     $self->{strError} = $secureHttp->GetErrorString;\r
56     return undef;\r
57   }\r
58   \r
59   if(!$secureHttp->Connect($strServer, $iPort)) {\r
60     $self->{strError} = $secureHttp->GetErrorString;\r
61     return undef;\r
62   }\r
63   if(!$secureHttp->DoSecurePost($strPath, $PostString, \$self->{strResponse})) {\r
64     $self->{strError} .= $secureHttp->GetErrorString;\r
65     return undef;\r
66   }\r
67   \r
68   $secureHttp->DisconnectFromServer;\r
69   $secureHttp->CleanUp;\r
70   \r
71   my $i = index($self->{strResponse}, "response_code");\r
72   if($i>=0) {\r
73     $ResponseContent = substr($self->{strResponse}, $i);\r
74     return $transReq->GetTransResponseObject(\$ResponseContent);\r
75   }\r
76   else {\r
77     return undef;\r
78   }\r
79 }\r
80 \r
81 \r
82 \r
83 sub GetErrorString\r
84 {\r
85   my $self = shift;\r
86   return $self->{strError};\r
87 }\r
88 \r
89 #JString TransactionClient::GetResponseString()\r
90 #{\r
91 #       return m_jstrResponse;\r
92 #}\r