0.02 fixes for postauth/refund/void
[Business-OnlinePayment-Capstone.git] / lib / Business / OnlinePayment / Capstone.pm
index ed645bb..6302592 100644 (file)
@@ -9,7 +9,7 @@ use Business::OnlinePayment::HTTPS 0.03;
 use vars qw($VERSION $DEBUG @ISA);\r
 \r
 @ISA = qw(Business::OnlinePayment::HTTPS);\r
-$VERSION = '0.01';\r
+$VERSION = '0.02';\r
 $DEBUG = 0;\r
 \r
 sub set_defaults {\r
@@ -65,14 +65,12 @@ sub submit {
         custom0             => 'description',\r
       );\r
 \r
-\r
         #                => 'order_type',\r
         #                => 'transaction_type',\r
 \r
         #authorization   => \r
 \r
         #company         =>\r
-        #country         =>\r
         #phone            => \r
         #fax             =>\r
 \r
@@ -80,45 +78,40 @@ sub submit {
         #customer_id     =>\r
         #authorization    => 'txn_number'\r
 \r
-    # XXXfix check required fields!\r
-#    if ( $action =~ /^(purchase|preauth|ind_refund)$/ ) {\r
-#\r
-#      $self->required_fields(\r
-#        qw( login password amount card_number expiration )\r
-#      );\r
-#\r
+    if ( $action =~ /^auth(postauth)?$/ ) {\r
+\r
+      $self->required_fields(qw(\r
+                                 login password action amount\r
+                                 name address city state zip\r
+                                 email\r
+                                 card_number expiration cvv2\r
+                            ));\r
+\r
       $self->{_content}{'expiration'} =~ /^(\d+)\D+\d*(\d{2})$/\r
-        or croak "unparsable expiration ". $self->{_content}{expiration};\r
+        or croak "unparsable expiration: ". $self->{_content}{expiration};\r
       my( $month, $year ) = ( $1, $2 );\r
       $month = '0'. $month if $month =~ /^\d$/;\r
       $self->{_content}{card_exp} = $month.$year;\r
 \r
       if ( $self->{_content}{'card_start'} ) {\r
         $self->{_content}{'card_start'} =~ /^(\d+)\D+\d*(\d{2})$/\r
-          or croak "unparsable expiration ". $self->{_content}{card_start};\r
+          or croak "unparsable card_start ". $self->{_content}{card_start};\r
         my( $month, $year ) = ( $1, $2 );\r
         $month = '0'. $month if $month =~ /^\d$/;\r
         $self->{_content}{start_date} = $month.$year;\r
       }\r
 \r
-#      $self->generate_order_id;\r
-#\r
 #      $self->{_content}{amount} = sprintf('%.2f', $self->{_content}{amount} );\r
-#\r
-#    } elsif ( $action eq 'completion' || $action eq 'void' ) {\r
-#\r
-#      $self->required_fields( qw( login password order_number authorization ) );\r
-#\r
-#    } elsif ( $action eq 'refund' ) {\r
-#\r
-#      $self->required_fields(\r
-#        qw( login password order_number authorization )\r
-#      );\r
-#\r
-#    }\r
-\r
-    #warn $self->get_fields('zip');\r
-    #warn $self->get_fields('postal');\r
+\r
+    } elsif ( $action =~ /^(postauth|void|return)$/ ) {\r
+\r
+      $self->required_fields(qw(\r
+                                 login password action order_number\r
+                            ));\r
+\r
+    } else {\r
+      die "unknown action $action";\r
+    }\r
 \r
     $self->{'_content'}{country} ||= 'US';\r
 \r
@@ -179,7 +172,7 @@ sub submit {
     if ( $result{'status'} eq 'good' ) {\r
       $self->is_success(1);\r
       $self->authorization( $result{'auth_code'}   );\r
-      $self->order_number(   $result{'orderid'}     );\r
+      $self->order_number(  $result{'orderid'}     );\r
     } elsif ( $result{'status'} =~ /^(bad|error|fraud)$/ ) {\r
       $self->is_success(0);\r
       $self->error_message("$1: ". $result{'status_msg'});\r