X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=InternetSecure.pm;h=4f0e3db0253671a69b1383155c8f5fa0240b63b3;hb=d3c665aa8eadcd5284daf8f8c9b7525ed6bbc542;hp=8590efbf70f9c8fd8a357e8048201d0d868116f8;hpb=10b8a9d3800b9fa06bd1271ab666d51a85e093c6;p=Business-OnlinePayment-InternetSecure.git diff --git a/InternetSecure.pm b/InternetSecure.pm index 8590efb..4f0e3db 100755 --- a/InternetSecure.pm +++ b/InternetSecure.pm @@ -12,17 +12,17 @@ use XML::Simple qw(xml_in xml_out); use base qw(Business::OnlinePayment Exporter); -our $VERSION = '0.01'; +our $VERSION = '0.03'; use constant SUCCESS_CODES => qw(2000 90000 900P1); use constant CARD_TYPES => { - VI => 'Visa', + AM => 'American Express', + JB => 'JCB', MC => 'MasterCard', - AX => 'American Express', # FIXME: AM? NN => 'Discover', - # JB? + VI => 'Visa', }; @@ -50,25 +50,20 @@ sub set_defaults { $self->tax_amounts( {} ); } -# OnlinePayment's get_fields now filters out undefs in 3.x. :( -# -sub get_fields { - my ($self, @fields) = @_; - - my %content = $self->content; - - my %new = map +($_ => $content{$_}), @fields; - - return %new; -} - -# Combine get_fields and remap_fields for convenience +# Combine get_fields and remap_fields for convenience. Unlike OnlinePayment's +# remap_fields, this doesn't modify content(), and can therefore be called +# more than once. Also, unlike OnlinePayment's get_fields in 3.x, this doesn't +# exclude undefs. # sub get_remap_fields { my ($self, %map) = @_; - $self->remap_fields(reverse %map); - my %data = $self->get_fields(keys %map); + my %content = $self->content(); + my %data; + + while (my ($to, $from) = each %map) { + $data{$to} = $content{$from}; + } return %data; } @@ -142,9 +137,10 @@ sub to_xml { $self->required_fields(qw(action card_number exp_date)); - croak 'Unsupported transaction type' - if $content{type} && $content{type} !~ - /^(Visa|MasterCard|American Express|Discover)$/i; + croak "Unsupported transaction type: $content{type}" + if $content{type} && + ! grep lc($content{type}) eq lc($_), + values %{+CARD_TYPES}; croak 'Unsupported action' unless $content{action} =~ /^Normal Authori[zs]ation$/i; @@ -425,6 +421,8 @@ Transaction type, being one of the following: =item - Discover +=item - JCB + =back (This is actually ignored for the moment, and can be left blank or undefined.) @@ -571,6 +569,8 @@ following: =item - Discover +=item - JCB + =back