Verifone Credit Card Payment Control

Verifone Credit Card Payment Control

Elements & Use
The credit card control for Verifone has 2 main parts; the control placed within the scripts and the settings for each script that is saved in the database.
It supports a number of different payment methods and various options for card types and detail checking intensity.

Payment Options (control):
Has the following options to be set on the control within the script:
  • Generate Payment Token - Does not take a payment. Simply uses the card details to generate a payment token that can be used to pay for things without card details for all subsequent payments. The token is written to script vars an reported to the screen to relay to the customer.
  • Pre Authorise Payment - pre auth payment but do not take funds. Details relayed to agent.
  • Payment - Payment made with payment details requested from agent at run time.
  • Payment with new token - Pay for goods and additionally supply a new token to use in subsequent payments.
  • Payment with existing token - Pay with previously sourced token. Reuqires token id and cv2 code (card details will previously have been sourced for the token).
  • Refund - Refund to payment details requested from agent at run time.
  • Refund with existing token - refund for desired amount using aforementioned token id.
Supported Cards (database):
If left blank or NULL all card types will be available. Can be limited to specific card types only using a comma separated list in the format of:    {"type1":"type1"}, {"type2","type2"}
  • Visa
  • Visa Debit
  • Visa Electron
  • MasterCard
  • Maestro
  • Diners
  • American Express
Card Detail Validation Options (database):
There are 3 card detail validations option categories that can be set. They are for Address, Postcode and Cv2 with each supporting the below range of options:

The entry is in the format of:    {"AVSChecking":"[AVS SETTING]", "PostcodeChecking":"[POSTCODE SETTING]","Cv2Checking":"[Cv2 SETTING]"}
Each Setting section takes the below options in a comma separated list, ie: 0,1,4
So the end string for the settings would be for example:    {"AVSChecking":"0,1,4", "PostcodeChecking":"0,1,4,8","Cv2Checking":"0,1,4,8"}

The options are for rejecting the payment if that type of response is returned with the options being added togeather:
  • 0 - not provided
  • 1 - not checked
  • 2 - matched
  • 4 - not matched
  • 8 - partial match
So to reject all but a full match the options "0,1,4,8" would be used, if you wish to allow partial matches then 4 would be removed from the rejected options list.

Merchantno (database & control):
The "merchantNo" column in the database is used to identify a configuration set to be run by the script. It allows multiple configuration sets to be configured based on varying settings within the same script and a variable to decide which one of these sets to use during script run. The default merchantNo that the payment control looks for is 1.
The variable in the script to set is "var_ccAccountt".

A common situation is for multiple currencies (GBP & Euro). In this situation there would be 2 configuration sets for the same script with different currencies configured. The GBP set would have a merchantNo of 1 in the database, with Euro having merchantNo of 2. In the script a variable would be set by agent or loaded data that identifies as wanting to pay in GBP and so sets the variable "var_ccAccount" to 1. When the payment control is then run it will use configuration set 1 and so use GBP.

Control in Script
The control to be used in scripts is called "Payment Control - Verifone" which is found under the "Imported Controls" menu.
Once added in to the script, in the control attributes the "Payment Type" needs to be selected. All other configuration is done in the database.
  • The payment control requires the variable "var_ccAmount" to be populated at page load with the amount of the payment/refund.
  • Depending on your detail checking configuration in the database the variables "var_ccAddress" & "var_ccPostcode" can also be required to be populated at page load.
  • There is the otpional variable of "var_ccAccount
There are a number of variables that are populated on control activation. These can be seen in the built-in variables list within a script and start with "var_cc.....".
An example is "var_ccTransactionId" to record the Transaction ID for possible uses of recording in to CS with a hidden field or for outputting using a Database Get for example.

Control Configuration in Database
For each script that uses the Credit Card control a set of configuration options must exist in the database. This allows for different scripts to be configured differently.
The below column settings are in the "tbl_cc_vendors" table in the CallScripter Database and this is where the entry per script will need to be added.

Configuration Items/Database Columns
  • customer_id = The ID of the customer that the script is in. This can be got from the database by using a script at the end of this section that returns the CustomerID for Script Name.
  • script_name = the exact script name of the script
  • vendor_name = verifone (enter this as the value)
  • Currency = Enter the currency used GBP/EUR/USD or any other currency.
  • Merchantno = Identifier of configuration option set per script. Set to 1 as default if only 1 options set for the script.
  • SupportedCards = If left as Null or Blank all cards will be available. Can be limited using a comma seperated list of card types.
  • Field1 = System ID
  • Field2 = System GUID
  • Field3 = System Passcode
  • Field4 = Account ID
  • Field5 = Account Passcode
  • Field6 = Url
  • Field7 = Logging on or off with the values "true" or "false".
  • Field8 = Card Detail Validation Options
  • Field9 = set Address validation (AVS) on or off with the values "true" and "false".
  • Field10 = set Postcode validation on or off with the values "true" and "false".
Get CustomerID for Script Name
Run the below script against the desired CallScripter database and enter the exact script name in replace the words SCRIPTNAME between the single quotes.
Select Customer_id from tbl_scripts where Name = 'SCRIPTNAME'

Test Details
Test details for use in testing the control. These will accept any card and card holder details and process them as if they where correct. 
  • verifone system id: 1000000357
  • verifone system guid: F86580B2-23E7-49E6-8B3C-17D4D20B9636
  • verifone system passcode: 01682615
  • verifone account id: 140010589
  • verifone account passcode: 39261419
  • verifone url:

Sample row insert SQL with the test details:
insert into tbl_cc_vendors (customer_id, script_name, Vendor_name, Currency, Merchantno, SupportedCards, Field1, Field2, Field3, Field4, Field5, Field6, Field7, Field8, Field9, Field10)
values ([CUSTOMER ID], [SCRIPT NAME], 'verifone', 'GBP', 1, NULL, '1000000357', 'F86580B2-23E7-49E6-8B3C-17D4D20B9636', '01682615', '140010589', '39261419', '', 'false', '{"AVSChecking":"0,1,4", "PostcodeChecking":"0,1,4,8","Cv2Checking":"0,1,4,8"}', 'true', 'true')

Test Payment Details to achieve specific results

Excel spreadsheet with test details for use with the Test url to return specific data checking results: test payment details for outcomes.xlsx