X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=InternetSecure.pm;h=c70b79f89d9c4ebcddb026e98ba438ae6d04fd34;hb=c205128a87a645f3e65be5f58ca04e124d56e9b2;hp=b90f187c90e14453b3b56e70b413a72fed507cac;hpb=db3d04bca56bb86414acdcc9b5663446a7d67f0a;p=Business-OnlinePayment-InternetSecure.git diff --git a/InternetSecure.pm b/InternetSecure.pm index b90f187..c70b79f 100755 --- a/InternetSecure.pm +++ b/InternetSecure.pm @@ -18,8 +18,9 @@ our $VERSION = '0.01'; use constant CARD_TYPES => { VI => 'Visa', MC => 'MasterCard', - AX => 'American Express', + AX => 'American Express', # FIXME: AM? NN => 'Discover', + # JB? }; @@ -37,7 +38,7 @@ sub set_defaults { $self->build_subs(qw( receipt_number sales_order_number - cardholder card_type + card_type total_amount avs_response cvv2_response )); @@ -75,10 +76,6 @@ sub get_remap_fields { $self->remap_fields(reverse %map); my %data = $self->get_fields(keys %map); - foreach (values %data) { - $_ = '' unless defined; - } - return %data; } @@ -161,7 +158,7 @@ sub to_xml { $content{taxes} = uc $content{taxes}; my %data = $self->get_remap_fields(qw( - xxxCardNumber card_number + xxxCard_Number card_number xxxName name xxxCompany company @@ -186,7 +183,8 @@ sub to_xml { $data{MerchantNumber} = $self->merchant_id; - $data{xxxCardNumber} =~ tr/ //d; + $data{xxxCard_Number} =~ tr/ //d; + $data{xxxCard_Number} =~ s/^[0-36-9]/4/ if $self->test_transaction; my ($y, $m) = $self->parse_expdate($content{exp_date}); $data{xxxCCYear} = sprintf '%.4u' => $y; @@ -219,6 +217,7 @@ sub to_xml { xml_out(\%data, NoAttr => 1, RootName => 'TranxRequest', + SuppressEmpty => undef, XMLDecl => '', ); } @@ -255,7 +254,6 @@ sub parse_response { $self->infuse($response, qw( ReceiptNumber receipt_number SalesOrderNumber sales_order_number - xxxName cardholder CardType card_type Page result_code ApprovalCode authorization @@ -265,6 +263,9 @@ sub parse_response { CVV2ResponseCode cvv2_response )); + # Completely undocumented field that sometimes override + $self->error_message($response->{Error}) if $response->{Error}; + $self->card_type(CARD_TYPES->{$self->card_type}); $self->{products_raw} = $response->{Products}; @@ -449,9 +450,8 @@ separating them with spaces, such as C. =item name / company / address / city / state / zip / country / phone / email -Facultative customer information. B should be either a postal -abbreviation or a two-letter code taken from ISO 3166-2, and B should -be a two-letter code taken from ISO 3166-1. +Customer information. B should be a two-letter code taken from ISO +3166-1. =back @@ -469,11 +469,6 @@ Receipt number and sales order number of submitted order. Total amount billed for this order, including taxes. -=item cardholder() - -Cardholder's name. This is currently a mere copy of the B field passed -to B. - =item card_type() Type of the credit card used for the submitted order, being one of the @@ -521,7 +516,7 @@ Unit price of this product. =item quantity -Ordered quantity of this product. This can be a decimal value. +Ordered quantity of this product. =item sku