diff options
author | jeff <jeff> | 2009-03-02 23:50:16 +0000 |
---|---|---|
committer | jeff <jeff> | 2009-03-02 23:50:16 +0000 |
commit | b526887fd57cb8da5d3d666a25d6517357d40188 (patch) | |
tree | 88475baca676a3d05da4c16bc07f437522b4ec98 /Dummy.pm |
Diffstat (limited to 'Dummy.pm')
-rw-r--r-- | Dummy.pm | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/Dummy.pm b/Dummy.pm new file mode 100644 index 0000000..92d1f24 --- /dev/null +++ b/Dummy.pm @@ -0,0 +1,107 @@ +package Business::OnlineThirdPartyPayment::Dummy; + +use strict; +use Carp; +use Business::OnlineThirdPartyPayment 3; +use Business::CreditCard; +use vars qw($VERSION @ISA $DEBUG); + +@ISA = qw(Business::OnlineThirdPartyPayment); +$VERSION = '0.01'; + +$DEBUG = 0; + +sub get_fields { + my($self,@fields) = @_; + + my %content = $self->content(); + my %new = (); + foreach( grep defined $content{$_}, @fields) { $new{$_} = $content{$_}; } + return %new; +} + +sub reference { + my ($self, $data) = @_; + $data->{reference} || ''; +} + +sub submit { + my($self) = @_; + my %content = $self->content; + + my $action = lc($content{'action'}); + die 'Dummy only supports "Authorization Only" and "Post Authorization" transactions' + unless $action eq 'authorization only' || $action eq 'post authorization'; + + my @required = qw( login amount ); + push @required, qw( reference ) if $action eq 'post authorization'; + if ($self->transaction_type() eq 'CC' ) { + push @required, qw( name ) unless $action eq 'post authorization'; + }elsif ($self->transaction_type() eq 'ECHECK' ) { + push @required, qw( account_name ) unless $action eq 'post authorization'; + } else { + croak("Dummy can't handle transaction type: ". + $self->transaction_type()); + } + $self->required_fields(@required); + + $self->popup_url( "http://127.0.0.1/webpay/collect.cgi?". + join('&', map { "$_=". $content{$_} } + qw( reference amount redirecturl ) + ) + ); + + $self->is_success(1); + $self->authorization('Authorized'); +} + +1; +__END__ + +=head1 NAME + +Business::OnlineThirdPartyPayment::Dummy - dummy backend for Business::OnlineThirdPartyPayment + +=head1 SYNOPSIS + + use Business::OnlineThirdPartyPayment; + + my $tx = new Business::OnlineThirdPartyPayment("Dummy"); + $tx->content( + login => '87654321', + action => 'Normal Authorization', + description => 'Business::OnlinePayment test', + amount => '49.95', + invoice_number => '100100', + name => 'Tofu Beast', + card_number => '46464646464646', + expiration => '11/08', + ); + $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<Business::OnlineThirdPartyPayment>. + +=head1 NOTE + +=head1 COMPATIBILITY + +This module implements a dummy payment gateway. + +=head1 AUTHOR + +Jeff Finucane <jeff@cmh.net> + +=head1 SEE ALSO + +perl(1). L<Business::OnlinePayment>. + +=cut + |