The GetCardCaptureData GCD) operation receives a card swipe (along with other parameters to authenticate and authorize the transaction), decodes it according to the manufacturer-specific definition of their swipe format, decrypts the track data using the DUKPT algorithm for data-decryption, and either tokenizes or returns the PAN (based on SAKA configuration parameters; by default, only a token is returned). It uses a previously stored BDK identified by the manufacturer ID. The web service operation requires six parameters:
DID |
The unique encryption domain identifier. |
username |
The username (service-credential) within the encryption domain with the authorization to call this web service. The credential requires the Encryption privilege at a minimum, but may also require Decryption privileges within the encryption-domain if a plaintext PAN is to be returned. |
password |
The password of the username to authenticate the credential of the requester. |
ccd |
The hex-encoded data containing the captured data. Note that all CCS web services operate on hex-encoded data. |
mfr |
The numerical identifier of the manufacturer of the device that captured the card data. |
dsn |
The device serial number (DSN) of the device that captured the card data. This value is required, but only currently used for logging purposes. |
When SAKA receives the request, it verifies the credentials presented in the web service operation against its internal database, or an optional LDAP directory server, and then determines their authorization to request the GetCardCaptureData service by determining if they are a member of the EncryptionAuthorized group. Note that if using LDAP, this group and its members must be created in the LDAP directory as a distinct task of the installation process of SAKA; when using the SAKA internal database, this group is created automatically.
If the requester is authorized, SAKA starts by decoding the ccd
parameter based on the manufacturer-specific format. The manufacturer can be provided with the mfr
parameter, or optionally set automatically via the SAKA configuration property strongkeylite.cfg.property.defaultmanufacturer
. If the swipe is properly formatted and can be successfully decoded, the encrypted track data is decrypted using the BDK loaded for this manufacturer. The track data is then parsed to extract details such as Expiration Date, IssuerID, Cardholder Name, etc.
By default, the PAN will be encrypted by the appliance and a token will be returned in the response. If tokenization is not desired, the SAKA configuration property strongkeylite.cfg.property.ccsautodelete
must be set to true. Alternatively or in addition to returning a token, the PAN can be returned in a plaintext format if the SAKA configuration property strongkeylite.cfg.property.ccsplaintextpan
is set to true. When strongkeylite.cfg.property.ccsplaintextpan
is true, the service credential requesting the PAN must also be a member of the DecryptionAuthorized group in addition to being a member of the EncryptionAuthorized group.
On success, the following will be returned, either as a JSON or XML string; in the case of SOAP, the JSON or XML string is embedded in the objectContent
attribute of the CCReturnObject
object:
DID |
Unique encryption domain identifier for the domain that serviced this request. |
SRID |
Unique request identifier for this transaction. |
Token |
(Optional) If |
PAN |
(Optional) If |
ExpiryDate |
Four digits to represent the expiration month and expiration year of the card. |
ExpiryMonth |
Two digits to represent the expiration month of the card. |
ExpiryYear |
Two digits to represent the expiration year of the card. |
MaskedPAN |
Masked PAN as received in any available masked data provided in the swipe. |
Digest |
Always null. Reserved for future use. |
Valid |
True if this PAN conforms to the Luhn Algorithm. |
Exists |
(Optional) If |
AssociationID |
The Card Association ID recovered from the track data. |
IssuerID |
The Card Issuer ID recovered from the track data. |
CardholderName |
The full name of the cardholder. |
Firstname |
The first name of the cardholder. |
Lastname |
The last name of the cardholder. |
Track2 |
(Optional)
|
Notes |
Always null. Reserved for future use. |