Moved products_raw()
[Business-OnlinePayment-InternetSecure.git] / InternetSecure.pm
index a6240bc..58b6efd 100755 (executable)
@@ -79,13 +79,13 @@ sub parse_expdate {
 
        my ($y, $m);
 
 
        my ($y, $m);
 
-       if (/^(\d{4})\W(\d{1,2})$/ ||           # 2004.07  or  2004-7
-                       /^(\d\d)\W(\d)$/ ||     # 04/7
-                       /^(\d\d)[.-](\d\d)$/) { # 04-07
+       if (/^(\d{4})\W(\d{1,2})$/ ||           # YYYY.MM  or  YYYY-M
+                       /^(\d\d)\W(\d)$/ ||     # YY/M  or  YY-M
+                       /^(\d\d)[.-](\d\d)$/) { # YY-MM
                ($y, $m) = ($1, $2);
                ($y, $m) = ($1, $2);
-       } elsif (/^(\d{1,2})\W(\d{4})$/ ||      # 07-2004  or  7/2004
-                       /^(\d)\W(\d\d)$/ ||     # 7/04
-                       /^(\d\d)\/(\d\d)$/) {   # 07/04
+       } elsif (/^(\d{1,2})\W(\d{4})$/ ||      # MM-YYYY  or  M/YYYY
+                       /^(\d)\W(\d\d)$/ ||     # M/YY  or  M-YY
+                       /^(\d\d)\/?(\d\d)$/) {  # MM/YY  or  MMYY
                ($y, $m) = ($2, $1);
        } else {
                croak "Unable to parse expiration date: $str";
                ($y, $m) = ($2, $1);
        } else {
                croak "Unable to parse expiration date: $str";
@@ -230,9 +230,6 @@ sub parse_response {
 
        $self->server_response($response);
        
 
        $self->server_response($response);
        
-       # (It's not quite clear whether there should be some decoding, or if
-       # the result is already utf8.)
-
        $response = xml_in($response,
                        ForceArray => [qw(product flag)],
                        GroupTags => { qw(Products product flags flag) },
        $response = xml_in($response,
                        ForceArray => [qw(product flag)],
                        GroupTags => { qw(Products product flags flag) },
@@ -394,23 +391,24 @@ Transaction type, being one of the following:
 
 =item card_number (required)
 
 
 =item card_number (required)
 
-Credit card number.  Any spaces will be removed.
+Credit card number.  Spaces are allowed, and will be automatically removed.
 
 =item exp_date (required)
 
 
 =item exp_date (required)
 
-Credit card expiration date.  Since L<Business::OnlinePayment> does not
-specify any syntax, this module is rather lax in what it will accept.  It is
-recommended to use either I<YYYY-MM> or I<MM/YYYY>, to avoid any nasty
-surprises.
+Credit card expiration date.  Since L<Business::OnlinePayment> does not specify
+any syntax, this module is rather lax regarding what it will accept.  The
+recommended syntax is I<YYYY-MM>, but forms such as I<MM/YYYY> or I<MMYY> are
+allowed as well.
 
 =item cvv2
 
 Three- or four-digit verification code printed on the card.  This can be left
 blank or undefined, in which case no check will be performed.  Whether or not a
 
 =item cvv2
 
 Three- or four-digit verification code printed on the card.  This can be left
 blank or undefined, in which case no check will be performed.  Whether or not a
-transaction will be declined in case of a mismatch depends on the merchant.
+transaction will be declined in case of a mismatch depends on the merchant
+account configuration.
 
 This number may be called Card Verification Value (CVV2), Card Validation
 
 This number may be called Card Verification Value (CVV2), Card Validation
-Code (CVC2) or Card Identification number (CID).
+Code (CVC2) or Card Identification number (CID), depending on the card issuer.
 
 =item description
 
 
 =item description
 
@@ -427,21 +425,21 @@ L<"Products list syntax">.
 =item currency
 
 Currency of all amounts for this order.  This can currently be either
 =item currency
 
 Currency of all amounts for this order.  This can currently be either
-C<CAN> (default) or C<USD>.
+C<CAD> (default) or C<USD>.
 
 =item taxes
 
 Taxes to be added automatically.  These should not be included in B<amount>;
 
 =item taxes
 
 Taxes to be added automatically.  These should not be included in B<amount>;
-they will be added by Internet Secure later on.
+they will be automatically added by Internet Secure later on.
 
 
-Available taxes are C<GST>, C<PST> and C<HST>; multiple taxes must be
-separated by spaces.
+Available taxes are C<GST>, C<PST> and C<HST>.  Taxes can be combined by
+separating them with spaces, such as C<GST HST>.
 
 =item name / company / address / city / state / zip / country / phone / email
 
 Facultative customer information.  B<state> should be either a postal
 abbreviation or a two-letter code taken from ISO 3166-2, and B<country> should
 
 =item name / company / address / city / state / zip / country / phone / email
 
 Facultative customer information.  B<state> should be either a postal
 abbreviation or a two-letter code taken from ISO 3166-2, and B<country> should
-be a two-letter code taken from in ISO 3166-1.
+be a two-letter code taken from ISO 3166-1.
 
 =back
 
 
 =back
 
@@ -486,6 +484,11 @@ following:
 Results of the AVS and CVV2 checks.  See the Internet Secure documentation for
 the list of possible values.
 
 Results of the AVS and CVV2 checks.  See the Internet Secure documentation for
 the list of possible values.
 
+=item products_raw()
+
+...
+
+
 =back
 
 
 =back
 
 
@@ -527,14 +530,17 @@ When using a products list, the B<amount> field passed to B<content()> should
 be left undefined.
 
 
 be left undefined.
 
 
-=head2 Character encodings
-
-...
+=head2 Character encoding
 
 
+Since communication to/from Internet Secure is encoded with UTF-8, all Unicode
+characters are theoretically available when submitting information via
+B<submit()>.  (Further restrictions may be imposed by Internet Secure itself.)
 
 
-=head2 products_raw
-
-...
+When using non-ASCII characters, all data provided to B<submit()> should either
+be in the current native encoding (typically latin-1, unless it was modified
+via the C<encoding> pragma), or be decoded via the C<Encode> module.
+Conversely, all data returned after calling B<submit()> will be automatically
+decoded.
 
 
 =head1 EXPORT
 
 
 =head1 EXPORT
@@ -552,7 +558,7 @@ Frederic Briere, E<lt>fbriere@fbriere.netE<gt>
 
 =head1 COPYRIGHT AND LICENSE
 
 
 =head1 COPYRIGHT AND LICENSE
 
-Copyright (C) 2004 by Frederic Briere
+Copyright (C) 2006 by Frederic Briere
 
 This library is free software; you can redistribute it and/or modify
 it under the same terms as Perl itself, either Perl version 5.8.4 or,
 
 This library is free software; you can redistribute it and/or modify
 it under the same terms as Perl itself, either Perl version 5.8.4 or,