.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "Vend::Payment::ECHO 3pm" .TH Vend::Payment::ECHO 3pm "2016-08-31" "perl v5.22.2" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Vend::Payment::ECHO \- Interchange ECHO Support .SH "AUTHOR" .IX Header "AUTHOR" Michael Lehmkuhl . .PP Ported to Vend::Payment by Dan Browning . Code reused and inspired by Mike Heins . .SH "SPECIAL THANKS" .IX Header "SPECIAL THANKS" Jim Darden , Dan Browning .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& &charge=echo \& \& or \& \& [charge mode=echo param1=value1 param2=value2] .Ve .SH "PREREQUISITES" .IX Header "PREREQUISITES" If you have not done so already, you will need to sign up for an \s-1ECHO\s0 account. You will be provided an \s-1ID\s0 and a \s-1PIN \s0(also known as 'secret'). You may also sign up for a test account at the following \s-1URL:\s0 .PP .Vb 1 \& http://www.echo\-inc.com/echotestapp.php .Ve .PP This subroutine uses the OpenECHO module. Make sure OpenECHO.pm is in your \f(CW@INC\fR array. It is available for download, see the following URLs: .PP .Vb 2 \& http://www.openecho.com/ \& http://www.echo\-inc.com/ .Ve .PP The OpenECHO.pm module itself has some additional prerequisites: .PP .Vb 1 \& Net::SSLeay \& \& or \& \& LWP::UserAgent and Crypt::SSLeay .Ve .PP Only one of these need be present and working. Net::SSLeay is preferred as some have reported problems using LWP::UserAgent and Crypt::SSLeay. .PP .Vb 1 \& URL::Escape .Ve .PP This module is used to write some of the URLs used by the OpenECHO module. It is recommended that you read the documention for the OpenECHO module itself in addition to this document. .SH "DESCRIPTION" .IX Header "DESCRIPTION" The Vend::Payment::ECHO module implements the \fIecho()\fR routine for use with Interchange. It is compatible on a call level with the other Interchange payment modules. .PP To enable this module, place this directive in \f(CW\*(C`interchange.cfg\*(C'\fR: .PP .Vb 1 \& Require module Vend::Payment::ECHO .Ve .PP This \fImust\fR be in interchange.cfg or a file included from it. .PP \&\s-1NOTE:\s0 Make sure CreditCardAuto is off (default in Interchange demos). .PP The mode can be named anything, but the \f(CW\*(C`gateway\*(C'\fR parameter must be set to \f(CW\*(C`echo\*(C'\fR. To make it the default payment gateway for all credit card transactions in a specific catalog, you can set in \f(CW\*(C`catalog.cfg\*(C'\fR: .PP .Vb 1 \& Variable MV_PAYMENT_MODE echo .Ve .PP It uses several of the standard settings from Interchange payment. Any time we speak of a setting, it is obtained either first from the tag/call options, then from an Interchange order Route named for the mode, then finally a default global payment variable, For example, the \f(CW\*(C`id\*(C'\fR parameter would be specified by: .PP .Vb 1 \& Route echo id Your_ECHO_ID .Ve .PP or (with only \s-1ECHO\s0 as a payment provider) .PP .Vb 1 \& Variable MV_PAYMENT_ID Your_ECHO_ID .Ve .PP or .PP .Vb 1 \& Variable ECHO_PAYMENT_ID Your_ECHO_ID .Ve .PP or .PP .Vb 1 \& [charge mode=echo id=Your_ECHO_ID] .Ve .PP The active settings are: .IP "id" 4 .IX Item "id" Your account \s-1ID,\s0 supplied by \s-1ECHO\s0 when you sign up. Global parameter is \s-1MV_PAYMENT_ID\s0 or \s-1ECHO_PAYMENT_ID.\s0 .IP "secret" 4 .IX Item "secret" Your account password, selected by you or provided by \s-1ECHO\s0 when you sign up. Global parameter is \s-1MV_PAYMENT_SECRET\s0 or \s-1ECHO_PAYMENT_SECRET.\s0 .IP "others..." 4 .IX Item "others..." If planning to do \s-1AUTH_ONLY\s0 or other with special admin page Variable \s-1MV_PAYMENT_REMAP\s0 order_id=mv_order_id auth_code=mv_auth_code .Sp .Vb 10 \& Variable ECHO_PAYMENT_ORDER_TYPE S \& # S for "self\-service" orders \& # F for hosted or ISP orders \& Variable ECHO_PAYMENT_ISP_ECHO_ID 123<4567890 \& Variable ECHO_PAYMENT_ISP_PIN 12345608 \& Variable ECHO_PAYMENT_MERCHANT_EMAIL merchant@merchant.com \& Variable ECHO_PAYMENT_DEBUG F \& # C causes ECHO to return a statement of conformity \& # T or TRUE causes ECHO to return additional debug information \& # Any other value turns off ECHO debugging .Ve .SS "Example Configuration" .IX Subsection "Example Configuration" This is an example configuration that one would add to catalog.cfg: .PP .Vb 3 \& Variable MV_PAYMENT_ID Your_ECHO_ID \& Variable MV_PAYMENT_SECRET Your_ECHO_secret \& Variable MV_PAYMENT_MODE echo .Ve .SS "Troubleshooting" .IX Subsection "Troubleshooting" Try a sale with the card number \f(CW\*(C`4111 1111 1111 1111\*(C'\fR and a valid expiration date. The sale should be denied, and the reason should be in [data session payment_error]. .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::ECHO .Ve .IP "\(bu" 4 Make sure the \s-1ECHO \s0\f(CW\*(C`OpenECHO.pm\*(C'\fR module is available either in your path or in /path_to_interchange/lib. .IP "\(bu" 4 Check the error logs, both catalog and global. .IP "\(bu" 4 Make sure you set your account \s-1ID\s0 and secret properly. .IP "\(bu" 4 Try an order, then put this code in a page: .Sp .Vb 8 \& \& [calc] \& my $string = $Tag\->uneval( { ref => $Session\->{payment_result} }); \& $string =~ s/{/{\en/; \& $string =~ s/,/,\en/g; \& return $string; \& [/calc] \& .Ve .Sp That should show what happened. .IP "\(bu" 4 If all else fails, Interchange consultants are available to help with integration for a fee. .SH "SECURITY CONSIDERATIONS" .IX Header "SECURITY CONSIDERATIONS" Because this library calls an executable, you should ensure that no untrusted users have write permission on any of the system directories or Interchange software directories. .SH "NOTES" .IX Header "NOTES" There is actually nothing *in* Vend::Payment::ECHO. It changes packages to Vend::Payment and places things there.