MiniVend will directly interface with Perl libraries provided by CyberCash, Inc. This allows direct card billing at the time the order is placed. If using CyberCash 2, the module is called CCLib.pm and its version should be 1.3 or greater. If the library is found at startup, the message ``CyberCash 2 module found'' will be displayed.
MiniVend 3.11 and above support CyberCash 3; see the section below for differences when using CyberCash 3.
To use CyberCash 2, you must first have a CyberCash Secure Merchant Payment Server
(SMPS) running on your system. It must be fully enabled, and should be tested
OK with the CyberCash test suite. This capability has been tested to work with SMPS-2.1.x in
mauthcapture
and mauthonly
modes. Any modes supported by CyberCash should work.
The special mode minivend_test
will cause the transaction to complete successfully and the information
that would have been sent to the CyberCash server to be logged in the
catalog error.log
file.
The CyberCash Perl library module must be available to MiniVend -- if you cannot install it in the main Perl library then the Minivend software directory lib/ will suffice. If it is found at MiniVend startup, a message will be displayed.
MiniVend only will charge CyberCash in the final phase of the order
process, i.e. at the time the receipt and order report are generated. The
full amount as shown by the [total-cost]
tag will be billed -- if you need to do partial charges you will have to
manage multiple shopping carts.
The process of enabling CyberCash processing is something like this:
Turn off CreditCardAuto by setting the catalog directive to No. This would normally be done right in catalog.cfg, but it also can be done in a mv_click subroutine if you wish to mix transaction types:
<INPUT TYPE=checkbox NAME=mv_click VALUE=CyberCash> Use CyberCash [set CyberCash] [perl] $Config->{CreditCardAuto} = 0; $Config->{CyberCash} = 1; return ''; [/perl] mv_cyber_mode=mauthcapture [/set]
Enable the CyberCash directive in catalog.cfg (or with the technique above). Also set the catalog Variable value CYBER_SECRET to the ``secret'' for your payment server. If you are not using the default values of localhost and 8000 for your server and port, set the Variables CYBER_HOST and CYBER_PORT as well. In the catalog.cfg file it would look like:
CreditCardAuto No CyberCash Yes Variable CYBER_SECRET first-natl Variable CYBER_PORT 8000 Variable CYBER_HOST localhost
Set your final order screen to accept the user form fields
mv_credit_card_number (contains the actual card number),
mv_credit_card_exp_month and mv_credit_card_exp_year (the expiration date month and year), and the fields containing name,
address, city, state, and country. And you must define the form field mv_cyber_mode
on the submitting form to enable the processing.
The order mode must be final, either by omitting an order profile entirely or by defining an order profile that contains &final=yes.
The fields containing name and address information should be the same as on the standard MiniVend demo order pages:
b_name Billing name takes priority name Shipping name used if b_name empty b_address Billing address takes priority address Shipping address used if b_address empty b_city Billing city takes priority city Shipping city used if b_city empty b_state Billing state takes priority state Shipping state used if b_state empty b_country Billing country takes priority country Shipping country used if b_country empty
If you must use other values, they can be redefined in catalog.cfg with the Variable CYBER_REMAP like so:
Variable CYBER_REMAP name=my_name address=my_address
or like so:
Variable <<EOF CYBER_REMAP b_name my_bname name my_name address processed_address city parsed_city EOF
NOTE: As always when using the <<EOF (here document) capability, the EOF must be on a line by itself, with no leading or trailing white space. That includes carriage returns, Windows devotees. Upload in ASCII mode!
If you have defined the directive EncryptProgram to be something containing the value pgp, then the CreditCardAuto method will be used to encrypt the mv_credit_card_number value before it is wiped from memory. (Errors in that process will be silently ignored.) It will never be written to the user session, at least by MiniVend itself, so attempts to recall it on future forms will be in vain.
If the authorization fails, the special page failed will be displayed, and passed the CyberCash error message for display with
the [subject]
tag. The order will not complete, i.e. the cart will still be intact and no
receipt or order report will be generated. The error itself is always
available as [data session cybercash_error]
.
If successful, the receipt page will be displayed, the order report
emailed, and the cart will be emptied. If you wish to display the order-id
returned from CyberCash on the receipt, it is available in
[data session cybercash_id]
. If the order is successful, but is detected as a ``success-duplicate'', [data session cybercash_error]
will contain the message returned from CyberCash.