- $self->map_fields();
- $self->remap_fields(
- type => 'x_Method',
- login => 'x_Login',
- password => 'x_Password',
- transaction_key => 'x_Tran_Key',
- action => 'x_Type',
- description => 'x_Description',
- amount => 'x_Amount',
- currency => 'x_Currency_Code',
- invoice_number => 'x_Invoice_Num',
- order_number => 'x_Trans_ID',
- auth_code => 'x_Auth_Code',
- customer_id => 'x_Cust_ID',
- customer_ip => 'x_Customer_IP',
- last_name => 'x_Last_Name',
- first_name => 'x_First_Name',
- company => 'x_Company',
- address => 'x_Address',
- city => 'x_City',
- state => 'x_State',
- zip => 'x_Zip',
- country => 'x_Country',
- ship_last_name => 'x_Ship_To_Last_Name',
- ship_first_name => 'x_Ship_To_First_Name',
- ship_company => 'x_Company',
- ship_address => 'x_Ship_To_Address',
- ship_city => 'x_Ship_To_City',
- ship_state => 'x_Ship_To_State',
- ship_zip => 'x_Ship_To_Zip',
- ship_country => 'x_Ship_To_Country',
- phone => 'x_Phone',
- fax => 'x_Fax',
- email => 'x_Email',
- card_number => 'x_Card_Num',
- expiration => 'x_Exp_Date',
- cvv2 => 'x_Card_Code',
- check_type => 'x_Echeck_Type',
- account_name => 'x_Bank_Acct_Name',
- account_number => 'x_Bank_Acct_Num',
- account_type => 'x_Bank_Acct_Type',
- bank_name => 'x_Bank_Name',
- routing_code => 'x_Bank_ABA_Code',
- customer_org => 'x_Customer_Organization_Type',
- customer_ssn => 'x_Customer_Tax_ID',
- license_num => 'x_Drivers_License_Num',
- license_state => 'x_Drivers_License_State',
- license_dob => 'x_Drivers_License_DOB',
- recurring_billing => 'x_Recurring_Billing',
- );
-
- my $auth_type = $self->{_content}->{transaction_key}
- ? 'transaction_key'
- : 'password';
-
- 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 '') {
- push @required_fields, qw( customer_org customer_ssn );
- } else {
- 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} ) {
- push @required_fields, qw( amount order_number );
- } else {
- push @required_fields, qw( amount card_number expiration );
- }
- } else {
- push @required_fields, qw(
- amount last_name first_name card_number expiration
- );
- }
- } else {
- Carp::croak( "AuthorizeNet can't handle transaction type: ".
- $self->transaction_type() );
- }