add check capability
authorjeff <jeff>
Thu, 5 Apr 2007 22:59:27 +0000 (22:59 +0000)
committerjeff <jeff>
Thu, 5 Apr 2007 22:59:27 +0000 (22:59 +0000)
LinkPoint.pm
MANIFEST
t2/bad_auth.t
t2/credit_card.t
t2/echeck.t [new file with mode: 0644]
test.pem

index 43db12d..d115b37 100644 (file)
@@ -1,6 +1,6 @@
 package Business::OnlinePayment::LinkPoint;
 
-# $Id: LinkPoint.pm,v 1.23 2005-01-07 02:53:50 ivan Exp $
+# $Id: LinkPoint.pm,v 1.24 2007-04-05 22:59:27 jeff Exp $
 
 use strict;
 use vars qw($VERSION @ISA $DEBUG @EXPORT @EXPORT_OK);
@@ -13,8 +13,8 @@ require Exporter;
 @ISA = qw(Exporter AutoLoader Business::OnlinePayment);
 @EXPORT = qw();
 @EXPORT_OK = qw();
-$VERSION = '0.05';
-$DEBUG = 0;
+$VERSION = '0.06';
+$DEBUG = 1;
 
 use lpperl; #3;  #lpperl.pm from LinkPoint
 $LPPERL::VERSION =~ /^(\d+\.\d+)/
@@ -103,6 +103,7 @@ sub submit {
     unless ( $content{action} eq 'POSTAUTH'
              || ( $content{'action'} =~ /^(CREDIT|VOID)$/
                   && exists $content{'order_number'} )
+             || $self->transaction_type() =~ /^check$/i
            ) {
 
         if (  $self->transaction_type() =~
@@ -131,6 +132,11 @@ sub submit {
       $result ||= 'LIVE';
     }
 
+    #docs disagree with lpperl.pm here
+    $content{'voidcheck'} = 1       
+      if ($self->transaction_type() =~ /^check$/i
+          &&  $content{'action'} =~ /^VOID$/);
+
     $self->revmap_fields(
       host         => \( $self->server ),
       port         => \( $self->port ),
@@ -144,13 +150,26 @@ sub submit {
       cardexpyear  => \$year,
       chargetotal  => 'amount',
       oid          => 'order_number',
+      bankname     => 'bank_name',
+      routing      => 'routing_code',
+      account      => 'account_number',
+      accounttype  => 'account_type',
+      name         => 'account_name',
+      dl           => 'state_id',
+      dlstate      => 'state_id_state',
     );
 
     my $lperl = new LPPERL;
 
-    $self->required_fields(qw/
-      host port configfile keyfile amount cardnumber cardexpmonth cardexpyear
-    /);
+    my @required_fields = qw(host port configfile keyfile amount);
+    if ($self->transaction_type() =~ /^(cc|visa|mastercard|american express|discover)$/i) {
+      push @required_fields, qw(cardnumber cardexpmonth cardexpyear);
+    }elsif ($self->transaction_type() =~ /^check$/i) {
+      push @required_fields, qw(
+        dl dlstate routing account accounttype bankname bankstate name
+                               );
+    }
+    $self->required_fields(@required_fields);
 
     my %post_data = $self->get_fields(qw/
       host port configfile keyfile
@@ -158,6 +177,8 @@ sub submit {
       chargetotal cardnumber cardexpmonth cardexpyear
       name email phone addrnum city state zip country
       oid
+      dl dlstate routing account accounttype bankname bankstate name void
+
     /);
 
     $post_data{'ordertype'} = $content{action};
index bb14f23..4e92c39 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -7,3 +7,4 @@ t/bop.t
 t2/load.t
 t2/bad_auth.t
 t2/credit_card.t
+t2/echeck.t
index 2374eaf..689b0cc 100644 (file)
@@ -3,7 +3,7 @@ BEGIN { $| = 1; print "1..1\n"; }
 use Business::OnlinePayment;
 
 my $tx = new Business::OnlinePayment("LinkPoint",
-  'storename' => '1909100155',
+  'storename' => '1909922411',
   'keyfile'   => './test.pem',
 );
 
@@ -21,7 +21,7 @@ $tx->content(
     country        => 'US',
     email          => 'ivan-linkpoint@420.am',
     card_number    => '4007000000027',
-    expiration     => '12/2005',
+    expiration     => '12/2008',
     result         => 'DECLINE',
 );
 
index b70e9c0..0748c6a 100644 (file)
@@ -3,7 +3,7 @@ BEGIN { $| = 1; print "1..1\n"; }
 use Business::OnlinePayment;
 
 my $tx = new Business::OnlinePayment("LinkPoint",
-  'storename' => '1909100155',
+  'storename' => '1909922411',
   'keyfile'   => './test.pem',
 );
 
@@ -21,7 +21,7 @@ $tx->content(
     country        => 'US',
     email          => 'ivan-linkpoint@420.am',
     card_number    => '4007000000027',
-    expiration     => '12/2005',
+    expiration     => '12/2008',
 );
 
 $tx->test_transaction(1);
diff --git a/t2/echeck.t b/t2/echeck.t
new file mode 100644 (file)
index 0000000..b21d5d4
--- /dev/null
@@ -0,0 +1,41 @@
+BEGIN { $| = 1; print "1..1\n"; }
+
+use Business::OnlinePayment;
+
+my $tx = new Business::OnlinePayment("LinkPoint",
+  'storename' => '1909922411',
+  'keyfile'   => './test.pem',
+);
+
+$tx->content(
+    type           => 'CHECK',
+    action         => 'Normal Authorization',
+    description    => 'Business::OnlinePayment::LinkPoint visa test',
+    amount         => '0.01',
+    first_name     => 'Tofu',
+    last_name      => 'Beast',
+    address        => '123 Anystreet',
+    city           => 'Anywhere',
+    state          => 'UT',
+    zip            => '84058',
+    country        => 'US',
+    email          => 'ivan-linkpoint@420.am',
+    card_number    => '4007000000027',
+    expiration     => '12/2008',
+    bankstate      => 'UT',
+);
+
+$tx->test_transaction(1);
+
+$tx->submit();
+
+if($tx->is_success()) {
+    print "ok 1\n";
+    $auth = $tx->authorization;
+    warn "********* $auth ***********\n";
+} else {
+    print "not ok 1\n";
+    warn '***** '. $tx->error_message. " *****\n";
+    exit;
+}
+
index ddf1529..b704754 100644 (file)
--- a/test.pem
+++ b/test.pem
@@ -1,31 +1,30 @@
 -----BEGIN RSA PRIVATE KEY-----
-MIICXAIBAAKBgQDfozXvSCCHOnOR8hQvlRywnLlKJq9AZL8+gYi57t/lCjPA7N1q
-WWTBH0RdW/HOTJ9KtaH22DQ+PiAg9RfWqj/cqpR6W9iGrZ1NuL2nN8iuPYcqQ2S1
-/rRCT4I4rxJqTFFkD200Q7jPe2JMnUZiFsxXVTEW1WPXhrXvLJbTPzZtNQIDAQAB
-AoGAQvfTydCWdQgq3XRZWRpU2gpEbhEBf83reuM9Nzhx8VtJvibv8s3MHwym4zIK
-SdWmCbA0TP/XPSBLbLMYLV8T+gfsAXlTGqCfz+PGDW9g6/feOnR4s42unCxmZLiI
-R57Pl/7ytWfO1YmUpLvtZnVj78ljMF/9o5g2s43KkJj9zAECQQD5Cajhn+AThaDq
-VEGmxCrEh/otHvTLBGzakMUeP7x0HiVIGHIJ0MYBr54LtiheiE+qA7j7zCdgDj95
-nosFFacBAkEA5ePDnqkLJzP89SemOQ2nPl80b0y7tINXMrixXzbitorXlsHEh0H2
-PgRCNnv8//4l1ijRMBdLrvrp787ppYTaNQJAXWcmFBlmbWv9AmY/iVChybxGNI4b
-udkbCo6pn8K/5702tmeUveGzogY//JyBX5M4bcefpbDYQ8qUPAUelvWcAQJBAOLA
-9VxTOygRFIqv8DpIaFWSTMMXufIEtwbVvEbBeYA6lQoj2HjdrEhhpPne9J+AjMuf
-+S5pXAKdhhA/VKEp2J0CQBUSDo82paE2eLpx3kDRROIl+p1VGEWo3uyUL67KfzNr
-hcEU5ZSl7EnrGjN6Ui/8759ARTp3GJ78lW2R5Ow/+64=
------END RSA PRIVATE KEY-----  
+MIICXAIBAAKBgQDMuGGy905tleY6aAAQXp2ZaWNrQOunSowlue9LC4k/cBdtwTJ3
+cvpzMAN5680x/TcyNTOtcj9OPE4nrhxJqTqSR1Rri04XVy/f+8qZujXXesrnRmVx
+N83LxtqhP5dH7uNgs/apbXr0wfx/Aq42Odax6toKlEo8NvnJ5u86ZSNKoQIDAQAB
+AoGBAIIXUQ5XFWGR9gF7gT7lwSRx0hmf4aAnQTPgGe4IYKkNY/X85UL+r6RvCGZ7
+r6Nqk562LCa2CQCAVfHlNFiiz3Js2zOJamA37tlv6+pVc1OhZH0Xjd/vsoRvFXW6
+LNoQ62SYImVvbeetk6pI0ghHXBES1QQi18uuhK6y5Ks+EXABAkEA+6pA2x8lhIj1
+VBMnLj5JnNBKZcJmtWp5iE0vhOhoOirH2FiqZ0kGL1em/iTGpwxFGhje4paZsans
+/o3Nm2Ig4QJBANA/Hp+43K/54Y2Cci6L1sRFcanZMx6OnsozqvK9mcdNAIyYz4uj
+pUEHBnyGen6KS9/AuN4+XtojlZrFlYnbocECQE+/CGQm/3165Lpqg0zdAfiF7D1I
+l8E+5xnw03D7MCPWcJM2rXCjLCmOTeVUg/plIfR+EwqcDEHHBck36AIn2yECQGVq
+F9PZB0B8BKgRmuGoIFM9Lnl02TxMYHBAcUP9qeIxUc8mrAxpCZV9gl8qboUpfIHf
+LSiuXysEoVraVlTorQECQBYWeK4mfSRwofWimMtVv1a2YqPOf6vA57knBU2gPS2g
+rTrt7S0WmQvAwrKN5nd25XNOeVKPPbTFd2NQr5GSN3s=
+-----END RSA PRIVATE KEY-----
 -----BEGIN CERTIFICATE-----
-MIICjzCCAfgCAQAwDQYJKoZIhvcNAQEEBQAwgY8xCzAJBgNVBAgTAkNBMRYwFAYD
-VQQHEw1TYW4gRnJhbmNpc2NvMSwwKgYDVQQKEyNTaWxpY29uIEludGVyYWN0aXZl
-IFNvZnR3YXJlIERlc2lnbjEUMBIGA1UEAxMLSXZhbiBLb2hsZXIxJDAiBgkqhkiG
-9w0BCQEWFWl2YW4tbGlua3BvaW50QDQyMC5hbTAeFw0wMzA0MDEwMjUwMTNaFw0z
-MzAzMjkwMjUwMTNaMIGPMQswCQYDVQQIEwJDQTEWMBQGA1UEBxMNU2FuIEZyYW5j
-aXNjbzEsMCoGA1UEChMjU2lsaWNvbiBJbnRlcmFjdGl2ZSBTb2Z0d2FyZSBEZXNp
-Z24xFDASBgNVBAMTC0l2YW4gS29obGVyMSQwIgYJKoZIhvcNAQkBFhVpdmFuLWxp
-bmtwb2ludEA0MjAuYW0wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAN+jNe9I
-IIc6c5HyFC+VHLCcuUomr0Bkvz6BiLnu3+UKM8Ds3WpZZMEfRF1b8c5Mn0q1ofbY
-ND4+ICD1F9aqP9yqlHpb2IatnU24vac3yK49hypDZLX+tEJPgjivEmpMUWQPbTRD
-uM97YkydRmIWzFdVMRbVY9eGte8sltM/Nm01AgMBAAEwDQYJKoZIhvcNAQEEBQAD
-gYEAfKv7S2p4TRWWMzl/i/eEsKMRVJgc3rVpr7MqR4xjU0PlQVbLxa97sZKkNmMe
-4k3HyBbQcyJyogUV3T+LblQSL3XRhSEbRKtHBx7rSREbO3WHkJFA1+STQ0TY+HGq
-6XJPdXkhL6ngi0Or+9kVN981Qxox0w+LBlO/0p3lIRIbdZw=
+MIICajCCAdOgAwIBAgIBADANBgkqhkiG9w0BAQQFADB7MQswCQYDVQQGEwJVUzEL
+MAkGA1UECBMCT0gxETAPBgNVBAcTCEFsbGlhbmNlMQswCQYDVQQKEwJtZTEWMBQG
+A1UEAxMNSmVmZiBGaW51Y2FuZTEnMCUGCSqGSIb3DQEJARYYbGlua3BvaW50QHdl
+YXNlbGxpcHMuY29tMB4XDTA3MDQwMjA1MTgyMVoXDTM3MDMzMDA1MTgyMVowezEL
+MAkGA1UEBhMCVVMxCzAJBgNVBAgTAk9IMREwDwYDVQQHEwhBbGxpYW5jZTELMAkG
+A1UEChMCbWUxFjAUBgNVBAMTDUplZmYgRmludWNhbmUxJzAlBgkqhkiG9w0BCQEW
+GGxpbmtwb2ludEB3ZWFzZWxsaXBzLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAw
+gYkCgYEAzLhhsvdObZXmOmgAEF6dmWlja0Drp0qMJbnvSwuJP3AXbcEyd3L6czAD
+eevNMf03MjUzrXI/TjxOJ64cSak6kkdUa4tOF1cv3/vKmbo113rK50ZlcTfNy8ba
+oT+XR+7jYLP2qW169MH8fwKuNjnWseraCpRKPDb5yebvOmUjSqECAwEAATANBgkq
+hkiG9w0BAQQFAAOBgQBGJBpIzo/3EXco1bQO622hB0BGsww3/w0aKL9fAHwwrWbw
+//XCjQgc5HcT3Pow+H0m/Pla1lfdqbBTAugT5gyePZppLZNGqvh2nUY/8K5vLO0j
+pm4WH9iks73XyOJOD9iRNaCbe4ETNDtt+MpEOA9/9FDEnmX6U/LCbkjo3NyRhA==
 -----END CERTIFICATE-----