Business-OnlinePayment-Vanco

 view release on metacpan or  search on metacpan

Vanco.pm  view on Meta::CPAN

package Business::OnlinePayment::Vanco;

use strict;
use Carp;
use Tie::IxHash;
use XML::Simple;
use XML::Writer;
use LWP::UserAgent;
use HTTP::Request;
use HTTP::Request::Common qw (POST);
use Date::Calc qw(Add_Delta_YM Add_Delta_Days);
use Business::OnlinePayment;
#use Business::OnlinePayment::HTTPS;
use vars qw($VERSION $DEBUG @ISA $me);

@ISA = qw(Business::OnlinePayment);  # Business::OnlinePayment::HTTPS 
$VERSION = '0.02';
$DEBUG = 0;
$me = 'Business::OnlinePayment::Vanco';

sub set_defaults {
    my $self = shift;
    my %opts = @_;

    # standard B::OP methods/data
    $self->server('www.vancoservices.com') unless $self->server;
    $self->port('443') unless $self->port;
    $self->path('/cgi-bin/ws.vps') unless $self->path;

    $self->build_subs(qw( order_number avs_code cvv2_response
                          response_page response_code response_headers
                     ));

    # module specific data
    foreach (qw( ClientID ProductID )) {
      $self->build_subs($_);

      if ( $opts{$_} ) {
          $self->$_( $opts{$_} );
          delete $opts{$_};
      }
    }

}

sub map_fields {
    my($self) = @_;

    my %content = $self->content();
    my $action = lc($content{'action'});

    # ACTION MAP 
    my %actions =
      ( 'normal authorization'            => 'EFTAddCompleteTransaction',
        'recurring authorization'         => 'EFTAddCompleteTransaction',
        'cancel recurring authorization'  => 'EFTDeleteTransaction',
      );
    $content{'RequestType'} = $actions{$action} || $action;

    # TYPE MAP
    my %types = ( 'visa'               => 'CC',
                  'mastercard'         => 'CC',
                  'american express'   => 'CC',
                  'discover'           => 'CC',
                  'check'              => 'ECHECK',
                );
    $content{'type'} = $types{lc($content{'type'})} || $content{'type'};
    $self->transaction_type($content{'type'});
    
    # CHECK/TRANSACTION TYPE MAP



( run in 1.218 second using v1.01-cache-2.11-cpan-ff9377addf4 )