Business-OnlinePayment-OpenECHO

 view release on metacpan or  search on metacpan

OpenECHO.pm  view on Meta::CPAN

        country          => 'billing_country',
        phone            => 'billing_phone',
        fax              => 'billing_fax',
        email            => 'billing_email',
        card_number      => 'cc_number',
        #                => 'ccexp_month',
        #                => 'ccexp_year',
        #                => 'counter',
        #                => 'debug',

        #XXX#            => 'ec_*',

        'amount'         => 'grand_total',
        #                => 'merchant_email',
        #invoice_number  =>
        customer_id      => 'merchant_trace_nbr',
        #                => 'original_amount',
        #                => 'original_trandate_mm',
        #                => 'original_trandate_dd',
        #                => 'original_trandate_yyyy',
        #                => 'original_reference',
        order_number     => 'order_number',
        #                => 'shipping_flag',

        #description       =>
        #currency          =>

        #ship_last_name    =>
        #ship_first_name   =>
        #ship_company      =>
        #ship_address      =>
        #ship_city         =>
        #ship_state        =>
        #ship_zip          =>
        #ship_country      =>

        #expiration        =>
        cvv2              => 'cnp_security',

        #check_type        =>
        #account_name      => 'ec_last_name' & 'ec_first_name',
        account_number    => 'ec_account',
        #account_type      =>
        bank_name         => 'ec_bank_name',
        routing_code      => 'ec_rt',
        #customer_org      =>
        #customer_ssn      =>
        license_num       => 'ec_id_number',
        license_state     => 'ec_id_state',
        #license_dob       =>
        #get from new() args instead# payee             => 'ec_payee',
        check_number      => 'ec_serial_number',

        #recurring_billing => 'cnp_recurring',
    );

    #XXX hosted order_type?
    $self->{_content}{order_type} = 'S';

    #XXX counter field shouldn't be just a random integer (but it does need a
    #default this way i guess...
    $self->{_content}{counter} = int(rand(2**31));

    if ( $self->transaction_type =~ /^[EA][VS]$/ ) {
      #ccexp_month & ccexp_year
      $self->{_content}{'expiration'} =~ /^(\d+)\D+\d*(\d{2})$/
        or croak "unparsable expiration ". $self->{_content}{expiration};
      my( $month, $year ) = ( $1, $2 );
      $month = '0'. $month if $month =~ /^\d$/;
      $self->{_content}{ccexp_month} = $month;
      $self->{_content}{ccexp_year} = $year;
    }

    if ( $self->transaction_type =~ /^D[DVCH]$/ ) { #echeck

      #check number kludge... "periodic bill payments" don't have check #s!
      #$self->{_content}{ec_serial_number} = 'RECURRIN'
      $self->{_content}{ec_serial_number} = '00000000'
        if ! length($self->{_content}{ec_serial_number})
        && $self->{_content}{ec_payment_type} =~ /^(PPD)?$/i;

      ( $self->{_content}{ec_payee} = $self->payee )
        or croak "'payee' option required when instantiating new ".
                 "Business::OnlinePayment::OpenECHO object\n";
    }

    $self->{_content}{cnp_recurring} = 'Y'
      if exists($self->{_content}{recurring_billing})
      && $self->{_content}{recurring_billing} =~ /^y/i;

    #XXX echeck use customer_org and account_type to generate ec_account_type

    #XXX set required fields
    # https://wwws.echo-inc.com/ISPGuide-Fields2.asp
    $self->required_fields();

    my( $page, $response, %reply_headers) =
      $self->https_post( $self->get_fields( $self->fields ) );

    warn "raw echo response: $page" if $DEBUG;

    #XXX check $response and die if not 200?

    my $echotype1 = $self->GetEchoReturn($page, 1);
    my $echotype2 = $self->GetEchoReturn($page, 2);
    my $echotype3 = $self->GetEchoReturn($page, 3);
    my $openecho  = $self->GetEchoReturn($page, 'OPEN');

    #	server_response
    #	avs_code
    #	order_number
    #	is_success
    #	result_code
    #	authorization
    #md5 cvv2_response cavv_response ...?

    # Get all the metadata.
    $self->server_response($page);
    $self->authorization( $self->GetEchoProp($echotype3, 'auth_code') );
    $self->order_number(  $self->GetEchoProp($echotype3, 'order_number') );



( run in 1.371 second using v1.01-cache-2.11-cpan-5735350b133 )