MV_CREDIT_CARD_INFO_TEMPLATE Card type: {MV_CREDIT_CARD_TYPE}; Card no: {MV_CREDIT_CARD_NUMBER}; Expiry: {MV_CREDIT_CARD_EXP_MONTH}/{MV_CREDIT_CARD_EXP_YEAR}; Issue no: {MV_CREDIT_CARD_ISSUE_NUMBER}; StartDate: {MV_CREDIT_CARD_START_MONTH}/{MV_CREDIT_CARD_START_YEAR}
.Ve
.IP "testing" 4
.IX Item "testing"
The Protx test site is ukvpstest.protx.com, and their live site is
ukvps.protx.com. Enable one of these in \s-1MV_PAYMENT_HOST\s0 in variable.txt
(*without* any leading https://) or as 'Route protx host ukvpstest.protx.com' in
catalog.cfg.
.IP "methods" 4
.IX Item "methods"
\&\s-1NB:\s0 Protx have removed \s-1PREAUTH\s0 from their protocol and replaced it with \s-1AUTHENTICATE/AUTHORISE.\s0
.Sp
An \s-1AUTHENTICATE\s0 will validate the card and store the card details on Protx's system for up to 90 days.
Against this you may \s-1AUTHORISE\s0 for any amount up to 115% of the original value.
.Sp
A \s-1DEFERRED\s0 will place a shadow ('block') on the funds for seven days (or so, depending
on the acquiring bank). Against a \s-1DEFERRED\s0 you may do a \s-1RELEASE\s0 to settle the transaction.
.Sp
A \s-1PAYMENT\s0 will take the funds immediately. Against a \s-1PAYMENT,\s0 you may do a
\&\s-1REFUND\s0 or \s-1REPEAT.\s0
.Sp
A \s-1RELEASE\s0 is performed to settle a \s-1DEFERRED.\s0 Payment of the originally specified
amount is guaranteed if the \s-1RELEASE\s0 is performed within the seven days for which
the card-holder's funds are 'blocked'.
.Sp
A \s-1REFUND\s0 may be performed against a \s-1PAYMENT, RELEASE, AUTHORISE\s0 or \s-1REPEAT.\s0 It may be for a
partial amount or the entire amount, and may be repeated with several partial
REFUNDs so long as the total does not exceed the original amount.
.Sp
A \s-1DIRECTREFUND\s0 sends funds from your registered bank account to the nominated credit card.
This does not need to refer to any previous transaction codes, and is useful if you need to
make a refund but the customer's card has changed or the original purchase was not made by card.
.SS "Virtual Payment Terminal"
.IX Subsection "Virtual Payment Terminal"
This has now been split out from this module, and may be found as the rather pretentiously named
Payment Terminal Interchange Plug-in Module (\s-1PTIPM\s0), also on http://kiwi.zolotek.net. The \s-1PTIPM\s0
does refunds and repeats, directrefunds, and converts offline transactions to online ones. Being a
plugin to the Interchange Admin Panel it integrates these operations into your database.
.SH "TROUBLESHOOTING"
.IX Header "TROUBLESHOOTING"
Only the test card numbers given below will be successfully
authorised (all other card numbers will be declined).
.PP
.Vb 9
\& VISA 4929 0000 0000 6
\& MASTERCARD 5404 0000 0000 0001
\& DELTA 4462000000000003
\& SOLO 6334900000000005 issue 1
\& DOMESTIC MAESTRO 5641 8200 0000 0005 issue 01 (should be rejected now)
\& AMEX 3742 0000 0000 004
\& ELECTRON 4917 3000 0000 0008
\& JCB 3569 9900 0000 0009
\& DINERS 3600 0000 0000 08
.Ve
.PP
You'll also need to supply the following values for \s-1CV2,\s0 Billing Address Numbers and Billing Post Code
Numbers. These are the only values which will return as Matched on the test server. Any other values
will return a Not Matched on the test server.
.PP
.Vb 3
\& CV2 123
\& Billing Address Numbers 88
\& Billing Post Code Numbers 412
.Ve
.PP
If nothing works:
.IP "\(bu" 4
Make sure you \*(L"Require\*(R"d the module in interchange.cfg:
.Sp
.Vb 1
\& Require module Vend::Payment::Protx2
.Ve
.IP "\(bu" 4
Make sure either Net::SSLeay or Crypt::SSLeay and LWP::UserAgent are installed
and working. You can test to see whether your Perl thinks they are:
.Sp
.Vb 3
\& perl \-MNet::SSLeay \-e \*(Aqprint "It works\en"\*(Aq
\&or
\& perl \-MLWP::UserAgent \-MCrypt::SSLeay \-e \*(Aqprint "It works\en"\*(Aq
.Ve
.Sp
If either one prints \*(L"It works.\*(R" and returns to the prompt you should be \s-1OK
\&\s0(presuming they are in working order otherwise).
.IP "\(bu" 4
Check the error logs, both catalogue and global. Make sure you set your payment
parameters properly. Try an order, then put this code in a page:
.Sp
.Vb 8
\&
\& [calcn]
\& my $string = $Tag\->uneval( { ref => $Session\->{payment_result} });
\& $string =~ s/{/{\en/;
\& $string =~ s/,/,\en/g;
\& return $string;
\& [/calcn]
\&
.Ve
.Sp
That should show what happened.
.IP "\(bu" 4
If you have unexplained and unlogged errors then check you have allowed the new database fields to
be \s-1NULL.\s0 If MySQL tries to write to a field that is marked \s-1NOT NULL\s0 then it will fail silently.
.IP "\(bu" 4
If you have a \s-1PGP/GPG\s0 failure when placing an order through your catalogue
then this may cause the module to be immediately re-run. As the first run would
have been successful, meaning that both the basket and the credit card information
would have been emptied, the second run will fail. The likely error message within
the catalogue will be:
\&\*(L"Can't figure out credit card expiration\*(R". Fixing \s-1PGP/GPG\s0 will fix this error.
.Sp
If you get the same error message within the Virtual Terminal, then you haven't
set the order route as noted above.
.IP "\(bu" 4
If all else fails, Zolotek and other consultants are available to help
with integration for a fee.
.SH "RESOURCES"
.IX Header "RESOURCES"
http://kiwi.zolotek.net is the home page with the latest version. Also to be found on
Kevin Walsh's excellent Interchange site, http://interchange.rtfm.info.
.SH "AUTHORS"
.IX Header "AUTHORS"
Lyn St George , based on original code by Mike Heins
and others.
.SH "CREDITS"
.IX Header "CREDITS"
Hillary Corney (designersilversmiths.co.uk), Jamie Neil (versado.net),
Andy Mayer (andymayer.net) for testing and suggestions.
.SH "LICENSE"
.IX Header "LICENSE"
GPLv2