diff options
author | ivan <ivan> | 2003-01-14 05:55:50 +0000 |
---|---|---|
committer | ivan <ivan> | 2003-01-14 05:55:50 +0000 |
commit | b1085869cd350b0df23fcca35dc659e0d0cc46fa (patch) | |
tree | d4f8897d8c33a7e1d8686b4e419987ec7cbfdc8b /LinkPoint.pm | |
parent | 2bdce7b0c9d7468d676ee4bfa824b1fb0cbba207 (diff) |
correct filename haha
Diffstat (limited to 'LinkPoint.pm')
-rw-r--r-- | LinkPoint.pm | 238 |
1 files changed, 0 insertions, 238 deletions
diff --git a/LinkPoint.pm b/LinkPoint.pm deleted file mode 100644 index 45d0fb8..0000000 --- a/LinkPoint.pm +++ /dev/null @@ -1,238 +0,0 @@ -package Business::OnlinePayment::PayflowPro; - -use strict; -use vars qw($VERSION @ISA @EXPORT @EXPORT_OK); -use Carp qw(croak); -use AutoLoader; -use Business::OnlinePayment; - -use PFProAPI; #Payflow PRO SDK from Verisign - -require Exporter; - -@ISA = qw(Exporter AutoLoader Business::OnlinePayment); -@EXPORT = qw(); -@EXPORT_OK = qw(); -$VERSION = '0.02'; - -sub set_defaults { - my $self = shift; - - #$self->server('staging.linkpt.net'); - $self->server('secure.linkpt.net'); - $self->port('1139'); - -} - -sub map_fields { - my($self) = @_; - - my %content = $self->content(); - - #ACTION MAP - my %actions = ('normal authorization' => 'ApproveSale', - 'authorization only' => 'CapturePayment', - 'credit' => 'ReturnOrder', - 'post authorization' => 'BillOrders', - ); - $content{'action'} = $actions{lc($content{'action'})} || $content{'action'}; - - # stuff it back into %content - $self->content(%content); -} - -sub build_subs { - my $self = shift; - foreach(@_) { - #no warnings; #not 5.005 - local($^W)=0; - eval "sub $_ { my \$self = shift; if(\@_) { \$self->{$_} = shift; } return \$self->{$_}; }"; - } -} - -sub remap_fields { - my($self,%map) = @_; - - my %content = $self->content(); - foreach(keys %map) { - $content{$map{$_}} = $content{$_}; - } - $self->content(%content); -} - -sub revmap_fields { - my($self, %map) = @_; - my %content = $self->content(); - foreach(keys %map) { -# warn "$_ = ". ( ref($map{$_}) -# ? ${ $map{$_} } -# : $content{$map{$_}} ). "\n"; - $content{$_} = ref($map{$_}) - ? ${ $map{$_} } - : $content{$map{$_}}; - } - $self->content(%content); -} - -sub get_fields { - my($self,@fields) = @_; - - my %content = $self->content(); - my %new = (); - foreach( grep defined $content{$_}, @fields) { $new{$_} = $content{$_}; } - return %new; -} - -sub submit { - my($self) = @_; - - - $self->map_fields(); - - my %content = $self->content; - - my($month, $year); - unless ( $content{action} eq 'BillOrders' ) { - - if ( $self->transaction_type() =~ - /^(cc|visa|mastercard|american express|discover)$/i - ) { - } else { - Carp::croak("PayflowPro can't handle transaction type: ". - $self->transaction_type()); - } - - $content{'expiration'} =~ /^(\d+)\D+\d*(\d{2})$/ - or croak "unparsable expiration $content{expiration}"; - - ( $month, $year ) = ( $1, $2 ); - $month = '0'. $month if $month =~ /^\d$/; - $year += 2000 if $year < 2000; #not y4k safe, oh shit - } - - $content{'address'} =~ /^(\S+)\s/; - my $addrnum = $1; - - $self->server('staging.linkpt.net') if $self->test_transaction; - - $self->revmap_fields( - hostname => \( $self->server ), - port => \( $self->port ), - storename => \( $self->storename ), - keyfile => \( $self->keyfile ), - addrnum => \$addrnum, - - cardNumber => 'card_number', - cardExpMonth => \$month, - cardExpYear => \$year, - ); - - my $lperl = new LPERL - $self->lbin, - 'FILE', - $self->can('tmp') - ? $self->tmp - : '/tmp'; - my $action = $content{action}; - - $self->required_fields(qw/ - hostname port storename keyfile amount cardNumber cardExpMonth cardExpYear - /); - - my %post_data = $self->get_fields(qw/ - hostname port storename keyfile - result - amount cardNumber cardExpMonth cardExpYear - name email phone address city state zip country - /); - - #print "$_ => $post_data{$_}\n" foreach keys %post_data; - - my %response; - { - local($^W)=0; - %response = $lperl->$action(\%post_data); - } - - if ( $response{'statusCode'} == 0 ) { - $self->is_success(0); - $self->result_code(''); - $self->error_message($response{'statusMessage'}); - } else { - $self->is_success(1); - $self->result_code($response{'AVCCode'}); - $self->authorization($response{'trackingID'}); -# $self->order_number($response{'neworderID'}); - } - -} - -1; -__END__ - -=head1 NAME - -Business::OnlinePayment::PayflowPro - Verisign PayflowPro backend for Business::OnlinePayment - -=head1 SYNOPSIS - - use Business::OnlinePayment; - - my $tx = new Business::OnlinePayment( 'PayflowPro', - 'storename' => 'your_store_number', - 'keyfile' => '/path/to/keyfile.pem', - 'lbin' => '/path/to/binary/lbin', - 'tmp' => '/secure/tmp', # a secure tmp directory - ); - - $tx->content( - type => 'VISA', - action => 'Normal Authorization', - description => 'Business::OnlinePayment test', - amount => '49.95', - invoice_number => '100100', - customer_id => 'jsk', - name => 'Jason Kohles', - address => '123 Anystreet', - city => 'Anywhere', - state => 'UT', - zip => '84058', - email => 'ivan-payflowpro@420.am', - card_number => '4007000000027', - expiration => '09/99', - ); - $tx->submit(); - - if($tx->is_success()) { - print "Card processed successfully: ".$tx->authorization."\n"; - } else { - print "Card was rejected: ".$tx->error_message."\n"; - } - -=head1 SUPPORTED TRANSACTION TYPES - -=head2 Visa, MasterCard, American Express, JCB, Discover/Novus, Carte blanche/Diners Club - -=head1 DESCRIPTION - -For detailed information see L<Business::OnlinePayment>. - -=head1 COMPATIBILITY - -This module implements an interface to the PayflowPro Perl API, which can -be downloaded at https://manager.verisign.com/ with a valid login. - -=head1 BUGS - -=head1 AUTHOR - -Ivan Kohler <ivan-payflowpro@420.am> - -Based on Busienss::OnlinePayment::AuthorizeNet written by Jason Kohles. - -=head1 SEE ALSO - -perl(1), L<Business::OnlinePayment>. - -=cut - |