use vars qw($VERSION $DEBUG @ISA);
@ISA = qw(Business::OnlinePayment::HTTPS);
-$VERSION = '0.02';
+$VERSION = '0.04';
$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
sub submit {
my($self) = @_;
+ if ( defined( $self->{_content}{'currency'} )
+ && $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 ( defined( $self->{_content}{'currency'} )
+ && $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
} elsif ( $self->{_content}{'action'} =~ /^\s*post\s*authorization\s*$/i ) {
$action = 'completion';
} elsif ( $self->{_content}{'action'} =~ /^\s*void\s*$/i ) {
- $action = 'void';
+ $action = 'purchasecorrection';
} elsif ( $self->{_content}{'action'} =~ /^\s*credit\s*$/i ) {
if ( $self->{_content}{'authorization'} ) {
$action = 'refund';
$self->{_content}{amount} = sprintf('%.2f', $self->{_content}{amount} );
- } elsif ( $action eq 'completion' || $action eq 'void' ) {
+ } elsif ( $action eq 'completion' || $action eq 'purchasecorrection' ) {
$self->required_fields( qw( login password order_number authorization ) );
# E-Commerce Indicator (see eSelectPlus docs)
$self->{_content}{'crypt_type'} ||= 7;
+ $action = "us_$action"
+ unless defined( $self->{_content}{'currency'} )
+ && $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 );
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',
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