- don't spew debugging output by default
- move load.t test from t1/ to t2/
- better error message when LinkPoint doesn't return a statusMessage
+ - update for LinkPoint API 2.6
0.01 Wed Nov 21 04:00:26 2001
- original version; created by ivan 1.0
package Business::OnlinePayment::LinkPoint;
-# $Id: LinkPoint.pm,v 1.7 2003-03-31 20:41:56 ivan Exp $
+# $Id: LinkPoint.pm,v 1.8 2003-05-13 10:25:08 ivan Exp $
use strict;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
use AutoLoader;
use Business::OnlinePayment;
-use lperl; #lperl.pm from Linkpoint.
-
require Exporter;
@ISA = qw(Exporter AutoLoader Business::OnlinePayment);
@EXPORT_OK = qw();
$VERSION = '0.02';
+use lperl; #2.6; #lperl.pm from LinkPoint
+$LPERL::VERSION =~ /^(\d+\.\d+)/
+ or die "can't parse lperl.pm version: $LPERL::VERSION";
+die "lperl.pm minimum version 2.6 required\n" unless $1 >= 2.6;
+
sub set_defaults {
my $self = shift;
#$self->server('staging.linkpt.net');
$self->server('secure.linkpt.net');
- $self->port('1139');
+ $self->port('1129');
}
sub submit {
my($self) = @_;
-
$self->map_fields();
my %content = $self->content;
$content{'address'} =~ /^(\S+)\s/;
my $addrnum = $1;
- $self->server('staging.linkpt.net') if $self->test_transaction;
+ my $result = $content{'result'};
+ if ( $self->test_transaction) {
+ $result ||= 'GOOD';
+ $self->server('staging.linkpt.net');
+ } else {
+ $result ||= 'LIVE';
+ }
$self->revmap_fields(
hostname => \( $self->server ),
storename => \( $self->storename ),
keyfile => \( $self->keyfile ),
addrnum => \$addrnum,
-
+ result => \$result,
cardNumber => 'card_number',
cardExpMonth => \$month,
cardExpYear => \$year,
);
- my $lperl = new LPERL
- $self->lbin,
- 'FILE',
- $self->can('tmp')
- ? $self->tmp
- : '/tmp';
+ my $lperl = new LPERL;
my $action = $content{action};
$self->required_fields(qw/
name email phone address city state zip country
/);
- #print "$_ => $post_data{$_}\n" foreach keys %post_data;
+ warn "$_ => $post_data{$_}\n" foreach keys %post_data;
my %response;
{
}
} else {
$self->is_success(1);
- $self->result_code($response{'AVCCode'});
+ $self->result_code($response{'AVSCode'});
$self->authorization($response{'trackingID'});
# $self->order_number($response{'neworderID'});
}
my $tx = new Business::OnlinePayment( 'LinkPoint',
'storename' => 'your_store_number',
'keyfile' => '/path/to/keyfile.pem',
- 'lbin' => '/path/to/binary/lbin',
- 'tmp' => '/secure/tmp', # a secure tmp directory
);
$tx->content(
This module implements an interface to the LinkPoint Perl Wrapper
http://www.linkpoint.com/product_solutions/internet/lperl/lperl_main.html
+Version 0.2 of this module has been updated for the LinkPoint Perl Wrapper
+version 2.6.
+
=head1 BUGS
=head1 AUTHOR
use Business::OnlinePayment;
my $tx = new Business::OnlinePayment("LinkPoint",
- 'storename' => '000000',
- 'keyfile' => '/path/to/cert.pem',
- 'lbin' => '/path/to/lbin',
- 'tmp' => '/path/to/secure/tempdir',
+ 'storename' => '1909100155',
+ 'keyfile' => './test.pem',
);
$tx->content(
use Business::OnlinePayment;
my $tx = new Business::OnlinePayment("LinkPoint",
- 'storename' => '000000',
- 'keyfile' => '/path/to/cert.pem',
- 'lbin' => '/path/to/lbin',
- 'tmp' => '/path/to/secure/tempdir',
+ 'storename' => '1909100155',
+ 'keyfile' => './test.pem',
);
$tx->content(
--- /dev/null
+-----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-----
+-----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=
+-----END CERTIFICATE-----