use vars qw($VERSION $DEBUG @ISA);
@ISA = qw(Business::OnlinePayment::HTTPS);
-$VERSION = '0.03';
+$VERSION = '0.04';
$DEBUG = 0;
sub set_defaults {
sub submit {
my($self) = @_;
- if ( $self->{_content}{'currency'} eq 'CAD' ) {
+ 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
}
if ($self->test_transaction) {
- if ( $self->{_content}{'currency'} eq 'CAD' ) {
+ 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';
} 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 $self->{_content}{'currency'} eq 'CAD';
+ $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