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 )