From 21773ec5acb73387a04255979ce6148534629f84 Mon Sep 17 00:00:00 2001 From: jeff Date: Thu, 5 Apr 2007 22:59:27 +0000 Subject: [PATCH] add check capability --- LinkPoint.pm | 33 +++++++++++++++++++++++++++------ MANIFEST | 1 + t2/bad_auth.t | 4 ++-- t2/credit_card.t | 4 ++-- t2/echeck.t | 41 +++++++++++++++++++++++++++++++++++++++++ test.pem | 55 +++++++++++++++++++++++++++---------------------------- 6 files changed, 100 insertions(+), 38 deletions(-) create mode 100644 t2/echeck.t diff --git a/LinkPoint.pm b/LinkPoint.pm index 43db12d..d115b37 100644 --- a/LinkPoint.pm +++ b/LinkPoint.pm @@ -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}; diff --git a/MANIFEST b/MANIFEST index bb14f23..4e92c39 100644 --- 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 diff --git a/t2/bad_auth.t b/t2/bad_auth.t index 2374eaf..689b0cc 100644 --- a/t2/bad_auth.t +++ b/t2/bad_auth.t @@ -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', ); diff --git a/t2/credit_card.t b/t2/credit_card.t index b70e9c0..0748c6a 100644 --- a/t2/credit_card.t +++ b/t2/credit_card.t @@ -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 index 0000000..b21d5d4 --- /dev/null +++ b/t2/echeck.t @@ -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; +} + diff --git a/test.pem b/test.pem index ddf1529..b704754 100644 --- 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----- -- 2.11.0