? 'transaction_key'
: 'password';
- if ($self->transaction_type() eq "ECHECK") {
+ my @required_fields = ( qw(type action login), $auth_type );
+
+ unless ( $self->{_content}->{action} eq 'VOID' ) {
+
+ if ($self->transaction_type() eq "ECHECK") {
+
+ push @required_fields, qw(
+ amount routing_code account_number account_type bank_name
+ account_name account_type
+ );
+
if ($self->{_content}->{customer_org} ne '') {
- $self->required_fields(qw/type login amount routing_code
- account_number account_type bank_name
- account_name account_type
- customer_org customer_ssn/, $auth_type);
+ push @required_fields, qw( customer_org customer_ssn );
} else {
- $self->required_fields(qw/type login amount routing_code
- account_number account_type bank_name
- account_name account_type
- license_num license_state license_dob/, $auth_type);
+ push @required_fields, qw(license_num license_state license_dob);
}
- } elsif ($self->transaction_type() eq 'CC' ) {
- if ( $self->{_content}->{action} eq 'PRIOR_AUTH_CAPTURE' ) {
- if ( $self->{_content}->{order_number}) {
- $self->required_fields(qw/type login action amount/, $auth_type);
+
+ } elsif ($self->transaction_type() eq 'CC' ) {
+
+ if ( $self->{_content}->{action} eq 'PRIOR_AUTH_CAPTURE' ) {
+ if ( $self->{_content}->{order_number} ) {
+ push @required_fields, qw( amount order_number );
} else {
- $self->required_fields(qw/type login action amount
- card_number expiration/, $auth_type);
+ push @required_fields, qw( amount card_number expiration );
}
- } elsif ( $self->{_content}->{action} eq 'VOID' ) {
- $self->required_fields(qw/login action/,$auth_type);
+ } else {
+ push @required_fields, qw(
+ amount last_name first_name card_number expiration
+ );
+ }
} else {
- $self->required_fields(qw/type login action amount last_name
- first_name card_number expiration/, $auth_type);
+ Carp::croak( "AuthorizeNet can't handle transaction type: ".
+ $self->transaction_type() );
}
- } else {
- Carp::croak("AuthorizeNet can't handle transaction type: ".
- $self->transaction_type());
+
}
- my %post_data = $self->get_fields(qw/x_Login x_Password x_Tran_Key x_Invoice_Num
+ $self->required_fields(@required_fields);
+
+ my %post_data = $self->get_fields(qw/
+ x_Login x_Password x_Tran_Key x_Invoice_Num
x_Description x_Amount x_Cust_ID x_Method x_Type x_Card_Num x_Exp_Date
x_Card_Code x_Auth_Code x_Echeck_Type x_Bank_Acct_Num
x_Bank_Account_Name x_Bank_ABA_Code x_Bank_Name x_Bank_Acct_Type
=head1 SUPPORTED TRANSACTION TYPES
-=head2 Visa, MasterCard, American Express, Discover
+=head2 CC, Visa, MasterCard, American Express, Discover
Content required: type, login, password|transaction_key, action, amount, first_name, last_name, card_number, expiration.
Authorization Only and Post Authorization steps and wrote some docs.
OST <services@ostel.com> paid for it.
-T.J. Mather <tjmather@maxmind.com> sent a patch for the CVV2 field.
+T.J. Mather <tjmather@maxmind.com> sent a number of CVV2 patches.
Mike Barry <mbarry@cos.com> sent in a patch for the referer field.