-
- if($self->transaction_type() eq "ECHECK") {
- $self->required_fields(qw/type login password action amount last_name
- first_name account_number routing_code
- bank_name/);
- } elsif($self->transaction_type() eq 'CC' ) {
- $self->required_fields(qw/type login password action amount last_name
- first_name card_number expiration/);
+ my $auth_type = $self->{_content}->{transaction_key}?'transaction_key':'password';
+
+ if ($self->transaction_type() eq "ECHECK") {
+ 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);
+ } 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);
+ }
+ } 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);
+ } else {
+ $self->required_fields(qw/type login action amount
+ card_number expiration/, $auth_type);
+ }
+ } elsif ( $self->{_content}->{action} eq 'VOID' ) {
+ $self->required_fields(qw/login action/,$auth_type);
+ } else {
+ $self->required_fields(qw/type login action amount last_name
+ first_name card_number expiration/, $auth_type);
+ }