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
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
#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
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