PCI Friendly API

From Payment Processing Software Library
Revision as of 15:23, 21 October 2010 by Admin (Talk | contribs)

Jump to: navigation, search
This article is part of the
Payment Processing Software Library

Categories

Get it...

Credit Card Software
Download

Install it...

Installation
Upgrade & Migration

Connect to it...

Point Of Sale Integration

Set it up...

Quick Start Guide
Setup
Processor Setup

Licensing

Learn to use it...

Manual & User Guide
Knowledge Base
Frequently Asked Questions
Compliance Guide
Merchant Account Rates
User Interface Guides

Fix it...

Errors & Troubleshooting
Knowledge Base
Corrupted Install Repair

Get Help...

Contact
Processor Support Contacts

More Info ...

Glossary
Articles

See also...

911 Software
Help

CreditLine Payment Processing Software PA-DSS Exempt API. This site can also be reached at http://docs.911software.com

Looking for better rates?   Get a Free Credit Card Processing Cost Comparison!

This guide is for developers using the DLL

Requirements

These API require version CreditLine version 4.1+


Inventory

To begin with, you will need the following:

  1. The interface header file CLCAPIW.h located in 911\BIN directory. This header contains the ENTIRE listing of available API.
  2. The library file CLCAPIW2.DLLlocated in 911\BIN directory.
  3. CLCUI.ini, CLCUI.exe and PIC Directory in 911\BIN directory.
    → If you use the version 4.1 Build 1101 SP7 and higher, please copy CLCUI.ini, CLCUI.exe and PIC directory to you application folder.

Language Specific Instructions

Visual Basic

  • In VB you need to declare all the parameters using the ByVal prefix instead of ByRef. This includes the strings.
  • If you would like to use an OCX instead for Visual Basic, you can use CLClient.ocx in the same directory. Another alternative is File Based Communication.

Public Declare Function clcInit Lib "CLCAPIW2.dll" (ByVal ClientName As String, ByVal ServerName As String As Integer)

C++

  • The Header file is the regular WIN32 header file. The data type LONG is 32 bit.
  • In C, the path has to be of format "C:\\911\\DATA", because back-slash is the escape char

DllImport("CLCAPIW2.dll", EntryPoint="clcInit", SetLastError=true, ExactSpelling=true, CallingConvention=CallingConvention.StdCall)

public static extern int clcInit(string ClientName, string ServerName);

.NET

  • For .NET please use clcCs.dll and CLCAPIW2.dll from \911\BIN directory.
  • Keep in mind that in C# and any .NET environment for instance, LONG is 64 bit so you have to use int or Integer not LONG ot Long in your definitions.
  • The .NET interface is the same as C, with one exception: there is no clc prefix and you have to use an object.

    Example: the call
    clcSetMerchantIndex(hObj, index)' is obj.setMerchantIndex(index).

Description

There are three ways, in which CreditLine can help your application eliminate exposure to the payment info:

  1. Our application pops up a custom UI for accepting and processing credit cards, debit cards or gift cards, so that your application does not have to.
    All aspects of the UI can be customized
  2. Recurrent credit card data is accepted, stored and processed through our custom UI, as well.
  3. Tokenization UI API is used to reference credit card data that is stored and encrypted within CreditLine, instead of your POS.

This way your application can claim that no credit card data is being stored or processed.

  • Important Notice: This program was called "PCI Exempt". We changed the name to reflect the new policies of the PCI Council. PCI Exempt used to be a convenient term that Point Of Sale developers use to refer to the practice of tokenization and external UI encapsulation. 911 Software does not have the authority to exempt any vendor from PCI requirements. Please, contact your independent PCI auditor for rules applicable to your situation.

Encapsulation UI

We added "clcUI" functions in the client dll. For example, you can use clcUISale instead of clcSale. So instead of doing this:

clcSetAccountNumber();
clcSetAmount();
clcSale();

You can do this:

clcSetAmount();
clcUISale();

A screen is going to pop up and prompt the user to swipe the card. This way, the POS application does not have to deal with the credit card data.

Customization

The following bitmaps in the 911\bin directory can be used to customize the appearance:

  • pic_Key_Common.png - buttons
  • pic_StoreCard_bg.png
  • pic_ScanCard_bg.png

Debit Card Processing

The following API works for both credit cards and debit cards.
For debit card transactions, use clcSetAccountType to set the next transaction as type debit, before calling clcUISale

Secure UI API

clcUIAuth 
pop up UI, get cc data and process an auth
ex.
clcSetAmount();
clcUISale();
clcUISale 
pop up UI, get cc data and process a sale
Encapsulation UI in action
clcUICredit 
pop up UI, get cc data and process a credit
clcUIAddTip 
pop up UI, get cc data and add tip
clcUIVoid 
void transaction
clcUIStoreCard 
Stores card info in #Secure Storage API. Sets a tag to be pased extracted by clcGetTag() and passed to clcLoadCard for retrieval. Leave the second parameter as "" unless you want to set a custom tag
Encapsulation UI in action

Gift Card Specific UI API

clcUIActivate 
activate gift card
clcUIDeactivate 
deactivate gift card
clcUIInquire 
gift card balance inquiry
clcUIAdjustBalance 
gift card balance inquiry

Reporting

clcGetAccountNum() 
call after transaction such as clcUISale() to get the masked account number back (e.g. 4111xxxxxxxx3567), if needed for reporting purposes
clcGetCardCode() 
call after transaction such as clcUISale() to get card code defined by the vendor in the Authorization setup of every card type. eg. VISA=VS

Other card info, such as Customer Name is available through #Secure Storage API (see Loading Info section)

Recurrent Charges

To store the card for monthly charges, call clcUIStoreCard. This function also pops up a screen for card number input. It then stores the card on 911 CreditLine Server and returns a tag (token) to the POS application.

Then this tag can be used in place of the actual card number:

clcSetTag(); 
clcSetAmount(); 
clcSale();

CreditLine offers tokenization of payment info to make your application "PCI Friendly"

Secure Storage API

These are additional storage API that can be used in your POS in conjuction with the UI module or stand-alone.

Storing Info

  • clcSetAccountNum → Sets account number for storage (call before clcStoreCard).
  • clcSetExpDate → Sets (format: MMYY). Set the expiration date for storage before calling clcStoreCard.
  • clcSesSetValue → Use with CLCKEY_CUSTOMERNAME, CLCKEY_CUSTOMERNUMBER, CLCKEY_CUSTOMERZIPCODE to set the customer info for storage before calling clcStoreCard.
  • clcStoreCard → Stores card info in storage. Sets a tag to be pased extracted by clcGetTag() and passed to clcLoadCard for retrieval. Leave the second parameter as "" unless you want to set a custom tag.
  • clcGetTag → Retrieves the tag set by clcStoreCard

Loading Info

  • clcLoadCard → Loads card info from storage. Accepts the tag returned by clcGetTag and set by clcStoreCard.
  • clcGetAccountNum → Gets account number from storage (call after clcLoadCard).
  • clcGetExpDate → (format: MMYY). Get the expiration date from storage (call after clcLoadCard).
  • clcSesGetValue → Use with CLCKEY_CUSTOMERNAME, CLCKEY_CUSTOMERNUMBER, CLCKEY_CUSTOMERZIPCODE to get customer info from storage after calling clcLoadCard.

Deleting Info

  • clcDeleteCard → Deletes card info from storage. Accepts the tag returned by clcGetTag and set by clcStoreCard.

Customization

The following API controls the UI fields:

  • clcUISetIniField ;Set a field to TRUE to enable

clcUISetIniField( "RequireCustomerName", FALSE );

Field List

The following is a sample list of fields that can be found in the \911\bin\clcui.ini file:


[Face]
;Set the color for all buttons.
;Value:YES=Set the common background color for all buttons,NO=Set custom color of each button
;Default=NO
UseCommBGForButtons=YES

;Show text on buttons.
;Value:YES=Show text on buttons, NO=Buttons will be blank
;Default=NO
DrawTextOnButtons=YES

;Show keyboard on the UI.
;Value:YES=Show, NO=Not show
UseKeyboardButtons=YES

;Set the color of labels.
LabelColor=57,153,255

;Set the background color of the disabled text box.
EditBgColor=57,153,255

;Set the color of buttons.
NormalTextColor=255,255,255

;Set the color of buttons when mouse moves in.
clActiveTextColor=0,0,0

[Fields]
;Enable or disable Customer Name text box.
;Value:YES=Enable, NO=Disable
;Default=NO
EnableCustomerName=NO

;Enable or disable Customer Number text box.
;Value:YES=Enable, NO=Disable
;Default=NO
EnableCustomerNum=NO

;Enable or disable Customer Address text box.
;Value:YES=Enable, NO=Disable
;Default=NO
EnableCustomerAddr=NO

;Enable or disable Customer Zip Code text box.
;Value:YES=Enable, NO=Disable
;Default=NO
EnableCustomerZip=NO

;Enable or disable Card Number text box.
;Value:YES=Enable, NO=Disable
;Default=NO
EnableCardNum=YES

;Enable or disable Expire Date text box.
;Value:YES=Enable, NO=Disable
;Default=NO
EnableExpDate=YES

;Enable or disable CVC text box.
;Value:YES=Enable, NO=Disable
;Default=NO
EnableCVC=YES

;Enable or disable Amount text box.
;Value:YES=Enable, NO=Disable
;Default=NO
EnableAmount=YES

;Enable or disable Tip text box.
;Value:YES=Enable, NO=Disable
;Default=NO
EnableTip=YES

;Enable or disable Tax text box.
;Value:YES=Enable, NO=Disable
;Default=NO
EnableTax=YES

;Enable or disable Transaction ID text box.
;Value:YES=Enable, NO=Disable
;Default=NO
EnableTransId=YES

;Enable or disable Cash Back Amount text box.
;Value:YES=Enable, NO=Disable
;Default=NO
EnableCashBack=YES

;Enable or disable SurCharge text box.
;Value:YES=Enable, NO=Disable
;Default=NO
EnableSurCharge=YES

;Whether Customer Name is needed.
;Value:YES=Need, NO=Not need
;Default=NO
RequireCustomerName=NO

;Whether Customer Number is needed.
;Value:YES=Need, NO=Not need
;Default=NO
RequireCustomerNum=NO

;Whether Customer Address is needed.
;Value:YES=Need, NO=Not need
;Default=NO
RequireCustomerAddr=NO

;Whether Customer Zip Code is needed.
;Value:YES=Need, NO=Not need
;Default=NO
RequireCustomerZip=NO

;Whether Card Number is needed.
;Value:YES=Need, NO=Not need
;Default=NO
RequireCardNum=YES

;Whether Expire Date is needed.
;Value:YES=Need, NO=Not need
;Default=NO
RequireExpDate=YES

;Whether CVC is needed.
;Value:YES=Need, NO=Not need
;Default=NO
RequireCVC=NO

;Whether Amount is needed.
;Value:YES=Need, NO=Not need
;Default=NO
RequireAmount=YES

;Whether Tip is needed.
;Value:YES=Need, NO=Not need
;Default=NO
RequireTip=NO

;Whether Tax is needed.
;Value:YES=Need, NO=Not need
;Default=NO
RequireTax=NO

;Whether Transaction ID is needed.
;Value:YES=Need, NO=Not need
;Default=NO
RequireTransId=YES

;set value:YES to make all content be selected by single click action
;set value:NO to make all content be selected by double click action
;Default=NO
SingleClickToSelectAll =YES

[Trans]
;Indicates that after scanned card, whether to send the transaction information to the server automatically.
;Value:YES=Send the trans information automatically, NO=Don't send the trans information automatically
AutoSendAfterScanning=NO

;When CanSelectAccountType = YES, you can select AccountType on the pop-up window.
;When CanSelectAccountType = NO, selection is disabled.
;Default=NO
CanSelectAccountType=YES

;When IsSelectCCAndDCOnly = YES, CLCUI CLCSelectAccountTypeDlg only enable Credit card button and Debit Card button.
;when IsSelectCCAndDCOnly = NO, CLCUI CLCSelectAccountTypeDlg enable all buttons.
;Default=NO
;IsSelectCCAndDCOnly=YES

;When EnableScanCard = YES, enable the Scan Card function.
;when EnableScanCard = NO, disenable the Scan Card function.
;Default=YES
EnableScanCard=YES 

Samples

PCI Exempt Sample