package Business::OnlinePayment::AuthorizeNet;
-# $Id: AuthorizeNet.pm,v 1.16 2002-11-22 00:49:17 ivan Exp $
-
use strict;
use Carp;
use Business::OnlinePayment;
@ISA = qw(Exporter AutoLoader Business::OnlinePayment);
@EXPORT = qw();
@EXPORT_OK = qw();
-$VERSION = '3.12';
+$VERSION = '3.13';
sub set_defaults {
my $self = shift;
'authorization only' => 'AUTH_ONLY',
'credit' => 'CREDIT',
'post authorization' => 'PRIOR_AUTH_CAPTURE',
+ 'void' => 'VOID',
);
$content{'action'} = $actions{lc($content{'action'})} || $content{'action'};
expiration => 'x_Exp_Date',
cvv2 => 'x_Card_Code',
check_type => 'x_Echeck_Type',
- account_name => 'x_Bank_Account_Name',
+ account_name => 'x_Bank_Acct_Name',
account_number => 'x_Bank_Acct_Num',
account_type => 'x_Bank_Acct_Type',
bank_name => 'x_Bank_Name',
if ($self->{_content}->{customer_org} ne '') {
$self->required_fields(qw/type login password amount routing_code
account_number account_type bank_name
- account_name account_type check_type
+ account_name account_type
customer_org customer_ssn/);
} else {
$self->required_fields(qw/type login password amount routing_code
account_number account_type bank_name
- account_name account_type check_type
+ account_name account_type
license_num license_state license_dob/);
}
} elsif ($self->transaction_type() eq 'CC' ) {
if ( $self->{_content}->{action} eq 'PRIOR_AUTH_CAPTURE' ) {
- $self->required_fields(qw/type login password action amount
- card_number expiration/);
+ if ( $self->{_content}->{order_number}) {
+ $self->required_fields(qw/type login password action amount/);
+ } else {
+ $self->required_fields(qw/type login password action amount
+ card_number expiration/);
+ }
+ } elsif ( $self->{_content}->{action} eq 'VOID' ) {
+ $self->required_fields(qw/login password action/);
} else {
$self->required_fields(qw/type login password action amount last_name
first_name card_number expiration/);
Business::OnlinePayment::AuthorizeNet, 3.1 requires separate first_name and
last_name fields.
-Business::OnlinePayment::AuthorizeNet uses the ADC direct response method,
-and sends a username and password with every transaction. Therefore,
-Authorize.Net's referrer "security" is not necessary. In your Authorize.Net
-interface at https://secure.authorize.net/ make sure the list of allowable
-referers is blank. Alternatively, set the B<referer> field in the transaction
-content.
+Business::OnlinePayment::AuthorizeNet uses Authorize.Net's "Advanced
+Integration Method (AIM) (formerly known as ADC direct response)", sending a
+username and password with every transaction. Therefore, Authorize.Net's
+referrer "security" is not necessary. In your Authorize.Net interface at
+https://secure.authorize.net/ make sure the list of allowable referers is
+blank. Alternatively, set the B<referer> field in the transaction content.
To settle an authorization-only transaction (where you set action to
'Authorization Only'), submit the nine-digit transaction id code in
Jason Kohles, jason@mediabang.com
Ivan Kohler <ivan-authorizenet@420.am> updated it for Authorize.Net protocol
-3.0/3.1 and is the current maintainer.
+3.0/3.1 and is the current maintainer. Please send patches as unified diffs
+(diff -u).
Jason Spence <jspence@lightconsulting.com> contributed support for separate
Authorization Only and Post Authorization steps and wrote some docs.
Mike Barry <mbarry@cos.com> sent in a patch for the referer field.
+Yuri V. Mkrtumyan <yuramk@novosoft.ru> sent in a patch to add the void action.
+
+Paul Zimmer <AuthorizeNetpm@pzimmer.box.bepress.com> sent in a patch for
+card-less post authorizations.
+
=head1 SEE ALSO
perl(1). L<Business::OnlinePayment>.