use vars qw($VERSION $DEBUG @ISA $me);
@ISA = qw(Business::OnlinePayment::HTTPS);
-$VERSION = '0.04';
+$VERSION = '0.07_01';
+$VERSION = eval $VERSION; # modperlstyle: convert the string into a number
+
$DEBUG = 0;
$me = 'Business::OnlinePayment::IPPay';
+sub _info {
+ {
+ 'info_version' => '0.01',
+ 'module_version' => $VERSION,
+ 'supported_types' => [ qw( CC ECHECK ) ],
+ 'supported_actions' => { 'CC' => [
+ 'Normal Authorization',
+ 'Authorization Only',
+ 'Post Authorization',
+ 'Void',
+ 'Credit',
+ 'Reverse Authorization',
+ ],
+ 'ECHECK' => [
+ 'Normal Authorization',
+ 'Void',
+ 'Credit',
+ ],
+ },
+ 'CC_void_requires_card' => 1,
+ 'ECHECK_void_requires_account' => 1,
+ };
+}
+
sub set_defaults {
my $self = shift;
my %opts = @_;
( 'normal authorization' => 'SALE',
'authorization only' => 'AUTHONLY',
'post authorization' => 'CAPT',
+ 'reverse authorization' => 'REVERSEAUTH',
'void' => 'VOID',
'credit' => 'CREDIT',
);
}elsif ( $action eq 'post authorization' && $type eq 'CC') {
push @required_fields, qw( order_number );
+ }elsif ( $action eq 'reverse authorization' && $type eq 'CC') {
+ push @required_fields, qw( order_number card_number expiration amount );
}elsif ( $action eq 'void') {
push @required_fields, qw( order_number amount );
$self->required_fields(@required_fields);
+ #quick validation because ippay dumps an error indecipherable to the end user
+ if (grep { /^routing_code$/ } @required_fields) {
+ unless( $content{routing_code} =~ /^\d{9}$/ ) {
+ $self->_error_response('Invalid routing code');
+ return;
+ }
+ }
+
if ($self->test_transaction()) {
$self->server('test1.jetpay.com');
$self->port('443');
Phone => 'phone',
);
}
+ delete $shippingaddr{Country} unless $shippingaddr{Country};
tie my %shippinginfo, 'Tie::IxHash',
$self->revmap_fields(
IndustryInfo => \%industryinfo,
ShippingInfo => \%shippinginfo,
);
+ delete $req{BillingCountry} unless $req{BillingCountry};
my $post_data;
my $writer = new XML::Writer( OUTPUT => \$post_data,
}
+sub _error_response {
+ my ($self, $error_message) = (shift, shift);
+ $self->result_code('');
+ $self->order_number('');
+ $self->authorization('');
+ $self->cvv2_response('');
+ $self->avs_code('');
+ $self->is_success( 0);
+ $self->error_message($error_message);
+}
+
sub _xmlwrite {
my ($self, $writer, $item, $value) = @_;
$writer->startTag($item);
}
1;
+
__END__
=head1 NAME
normal authorization
authorization only
+ reverse authorization
post authorization
credit
void
See http://www.ippay.com/ for more information.
-=head1 AUTHOR
+=head1 AUTHORS
+
+Original author: Jeff Finucane
+
+Current maintainer: Ivan Kohler <ivan-ippay@freeside.biz>
-Jeff Finucane, ippay@weasellips.com
+Reverse Authorization patch from dougforpres
=head1 SEE ALSO