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);
@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+)/
unless ( $content{action} eq 'POSTAUTH'
|| ( $content{'action'} =~ /^(CREDIT|VOID)$/
&& exists $content{'order_number'} )
+ || $self->transaction_type() =~ /^check$/i
) {
if ( $self->transaction_type() =~
$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 ),
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
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};
t2/load.t
t2/bad_auth.t
t2/credit_card.t
+t2/echeck.t
use Business::OnlinePayment;
my $tx = new Business::OnlinePayment("LinkPoint",
- 'storename' => '1909100155',
+ 'storename' => '1909922411',
'keyfile' => './test.pem',
);
country => 'US',
email => 'ivan-linkpoint@420.am',
card_number => '4007000000027',
- expiration => '12/2005',
+ expiration => '12/2008',
result => 'DECLINE',
);
use Business::OnlinePayment;
my $tx = new Business::OnlinePayment("LinkPoint",
- 'storename' => '1909100155',
+ 'storename' => '1909922411',
'keyfile' => './test.pem',
);
country => 'US',
email => 'ivan-linkpoint@420.am',
card_number => '4007000000027',
- expiration => '12/2005',
+ expiration => '12/2008',
);
$tx->test_transaction(1);
--- /dev/null
+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;
+}
+
-----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-----