correct filename haha
authorivan <ivan>
Tue, 14 Jan 2003 05:55:50 +0000 (05:55 +0000)
committerivan <ivan>
Tue, 14 Jan 2003 05:55:50 +0000 (05:55 +0000)
LinkPoint.pm [deleted file]
PayflowPro.pm [new file with mode: 0644]

diff --git a/LinkPoint.pm b/LinkPoint.pm
deleted file mode 100644 (file)
index 45d0fb8..0000000
+++ /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
-
diff --git a/PayflowPro.pm b/PayflowPro.pm
new file mode 100644 (file)
index 0000000..45d0fb8
--- /dev/null
@@ -0,0 +1,238 @@
+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
+