X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=InternetSecure.pm;h=e8c4c69107d17a5327204426f10c7bdbc5e60af2;hb=d1d72433a1a3a65b680dbfee76b80579f51b3d91;hp=c41e3cecd9990a53749bd48982c3e6ffb3a9378b;hpb=980d429a92740e97ca84e1fa9fb951284160c820;p=Business-OnlinePayment-InternetSecure.git diff --git a/InternetSecure.pm b/InternetSecure.pm index c41e3ce..e8c4c69 100755 --- a/InternetSecure.pm +++ b/InternetSecure.pm @@ -12,7 +12,7 @@ use XML::Simple qw(xml_in xml_out); use base qw(Business::OnlinePayment Exporter); -our $VERSION = '0.03'; +our $VERSION = '0.04'; use constant SUCCESS_CODES => qw(2000 90000 900P1); @@ -39,17 +39,22 @@ sub set_defaults { $self->path('/process.cgi'); $self->build_subs(qw( - receipt_number sales_number uuid guid + receipt_number order_number uuid guid date card_type cardholder total_amount tax_amounts - avs_response cvv2_response + avs_code cvv2_response )); # Just in case someone tries to call tax_amounts() *before* submit() $self->tax_amounts( {} ); } +# Backwards-compatible support for renamed fields +sub avs_response { shift()->avs_code(@_) } +sub sales_number { shift()->order_number(@_) } + + # 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 @@ -135,12 +140,18 @@ sub to_xml { my %content = $self->content; + # Backwards-compatible support for exp_date + if (exists $content{exp_date} && ! exists $content{expiration}) { + $content{expiration} = delete $content{exp_date}; + $self->content(%content); + } + $self->required_fields(qw(action card_number expiration)); croak "Unsupported transaction type: $content{type}" if $content{type} && ! grep lc($content{type}) eq lc($_), - values %{+CARD_TYPES}; + values %{+CARD_TYPES}, 'CC'; croak 'Unsupported action' unless $content{action} =~ /^Normal Authori[zs]ation$/i; @@ -269,11 +280,11 @@ sub parse_response { result_code => 'Page', error_message => 'Verbiage', authorization => 'ApprovalCode', - avs_response => 'AVSResponseCode', + avs_code => 'AVSResponseCode', cvv2_response => 'CVV2ResponseCode', receipt_number => 'ReceiptNumber', - sales_number => 'SalesOrderNumber', + order_number => 'SalesOrderNumber', uuid => 'GUID', guid => 'GUID', @@ -423,6 +434,8 @@ Transaction type, being one of the following: =item - JCB +=item - CC + =back (This is actually ignored for the moment, and can be left blank or undefined.) @@ -512,7 +525,7 @@ B() instead.) Receipt number (a string, actually) of this transaction, unique to all InternetSecure transactions. -=item sales_number() +=item order_number() Sales order number of this transaction. This is a number, unique to each merchant, which is incremented by 1 each time. @@ -530,7 +543,7 @@ B() is provided as an alias to this method. Authorization code for this transaction. -=item avs_response() / cvv2_response() +=item avs_code() / cvv2_response() Results of the AVS and CVV2 checks. See the InternetSecure documentation for the list of possible values.