0.03
[Business-OnlinePayment-eSelectPlus.git] / eSelectPlus.pm
index 6223c17..677771a 100644 (file)
@@ -8,16 +8,23 @@ use Business::OnlinePayment::HTTPS 0.03;
 use vars qw($VERSION $DEBUG @ISA);
 
 @ISA = qw(Business::OnlinePayment::HTTPS);
-$VERSION = '0.02';
+$VERSION = '0.03';
 $DEBUG = 0;
 
 sub set_defaults {
     my $self = shift;
 
-    #$self->server('esqa.moneris.com');  # development
-    $self->server('www3.moneris.com');   # production
+    #USD
+    #$self->server('esplusqa.moneris.com');  # development
+    $self->server('esplus.moneris.com');   # production
+    $self->path('/gateway_us/servlet/MpgRequest');
+
+    ##CAD
+    ##$self->server('esqa.moneris.com');  # development
+    #$self->server('www3.moneris.com');   # production
+    #$self->path('/gateway2/servlet/MpgRequest');
+
     $self->port('443');
-    $self->path('/gateway2/servlet/MpgRequest');
 
     $self->build_subs(qw( order_number avs_code ));
     # avs_code order_type md5 cvv2_response cavv_response
@@ -26,10 +33,24 @@ sub set_defaults {
 sub submit {
     my($self) = @_;
 
+    if ( $self->{_content}{'currency'} eq 'CAD' ) {
+      $self->server('www3.moneris.com');
+      $self->path('/gateway2/servlet/MpgRequest');
+    } else { #sorry, default to USD
+      $self->server('esplus.moneris.com');
+      $self->path('/gateway_us/servlet/MpgRequest');
+    }
+
     if ($self->test_transaction)  {
-       $self->server('esqa.moneris.com');
-       $self->{_content}{'login'} = 'store2';   # store[123]
-       $self->{_content}{'password'} = 'yesguy';
+       if ( $self->{_content}{'currency'} eq 'CAD' ) {
+         $self->server('esqa.moneris.com');
+         $self->{_content}{'login'} = 'store2';   # store[123]
+         $self->{_content}{'password'} = 'yesguy';
+       } else { #sorry, default to USD
+         $self->server('esplusqa.moneris.com');
+         $self->{_content}{'login'} = 'monusqa002';   # monusqa00[123]
+         $self->{_content}{'password'} = 'qatoken';
+       }
     }
 
     # BOP field => eSelectPlus field
@@ -115,6 +136,8 @@ sub submit {
     # E-Commerce Indicator (see eSelectPlus docs)
     $self->{_content}{'crypt_type'} ||= 7;
 
+    $action = "us_$action" unless $self->{_content}{'currency'} eq 'CAD';
+
     #no, values aren't escaped for XML.  their "mpgClasses.pl" example doesn't
     #appear to do so, i dunno
     tie my %fields, 'Tie::IxHash', $self->get_fields( $self->fields );
@@ -272,6 +295,7 @@ Business::OnlinePayment::eSelectPlus - Moneris eSelect Plus backend module for B
       action         => 'Normal Authorization',
       description    => 'Business::OnlinePayment test',
       amount         => '49.95',
+      currency       => 'USD', #or CAD for compatibility with previous releases
       name           => 'Tofu Beast',
       address        => '123 Anystreet',
       city           => 'Anywhere',
@@ -315,7 +339,10 @@ Content required: type, login, password, action, amount, card_number, expiration
 
 For detailed information see L<Business::OnlinePayment>.
 
-=head1 NOTE
+=head1 Note for Canadian merchants upgrading to 0.03
+
+As of version 0.03, this module now defaults to the US Moneris.  Make sure to
+pass currency=>'CAD' for Canadian transactions.
 
 =head1 AUTHOR