package Business::OnlinePayment::OCV; use strict; use Carp; use Business::OnlinePayment; #use Business::CreditCard; #use Net::SSLeay qw( make_form post_https ); use Business::OCV; #qw( :transaction ); use vars qw($VERSION @ISA @EXPORT @EXPORT_OK $DEBUG); require Exporter; @ISA = qw(Exporter AutoLoader Business::OnlinePayment); @EXPORT = qw(); @EXPORT_OK = qw(); $VERSION = '0.01'; #Business::OCV exporting is broken use subs qw(TRANS_APPROVED); sub TRANS_APPROVED (){ '0' } # transaction status result - approved $DEBUG = 0; sub set_defaults { my $self = shift; # $self->server('sec.aba.net.au'); # $self->port('443'); # $self->path('/cgi-bin/service/authint'); $self->build_subs(qw( account )); } sub submit { my $self = shift; my %content = $self->content; my $action = lc($content{'action'}); if ( $action eq 'normal authorization' ) { } else { croak "$action not (yet) supported"; } $content{'expiration'} =~ /^(\d+)\D+\d{0,2}(\d{2})$/ or croak "unparsable expiration $content{expiration}"; my ($month, $year) = ( $1, $2 ); $month += 0; $month = "0$month" if $month < 10; my $exp = "$month$year"; my $ocv = new OCV ( Server => $self->server. ':'. $self->port, ClientID => $content{login}, AccountNum => $self->account, ) or die "can't create Business::OCV object: $@!"; my $m = $ocv->purchase( 'CardData' => $content{card_number}, 'CardExpiry' => $exp, 'Amount' => $content{'amount'} * 100, ); croak $@ unless $m; warn "Result: ". $m->Result, "\n"; if ( $m->Result == TRANS_APPROVED ) { $self->is_success(1); $self->result_code($m->Result); $self->authorization($m->PreAuth); #? } else { $self->is_success(0); $self->result_code($m->Result); $self->error_message($m->ResponseText); } } 1; __END__ =head1 NAME Business::OnlinePayment::OCV - OCV backend for Business::OnlinePayment =head1 SYNOPSIS use Business::OnlinePayment; my $tx = new Business::OnlinePayment("OCV"); $tx->content( type => 'CC', login => 'test', #ClientID action => 'Authorization Only', description => 'Business::OnlinePayment test', amount => '49.95', invoice_number => '100100', name => 'Tofu Beast', card_number => '4007000000027', expiration => '09/02', ); $tx->submit(); if($tx->is_success()) { print "Card processed successfully: ".$tx->authorization."\n"; } else { print "Card was rejected: ".$tx->error_message."\n"; } =head1 DESCRIPTION For detailed information see L. =head1 NOTE =head1 COMPATIBILITY This module is a wrapper around Business::OCV written by Benjamin Low . Eventually it will be self-contained. See for details. =head1 AUTHOR Ivan Kohler =head1 SEE ALSO perl(1). L, L. =cut