The GlobalCardValidator component is used to verify with Global Payments that a given card number is formatted properly, and could be a valid card number. Validating a card before actually submitting a transaction for authorization can reduce the fees that may be associated with invalid or declined transactions.
Utilization of this component catches accidentally mistyped card numbers and allows buyers to re-input their number without having the transaction declined. It can also determine the type of credit card (Visa, MasterCard, Discover, etc) so that you can easily determine if the customer is presenting a payment type which you do not support. The component can also parse swiped track data and perform these same checks on it.
There are four checks performed by the ValidateCard method on the customer's credit card information:
- The card number is checked for validity using the Luhn mod-10 algorithm.
- The type of the card (Visa, MasterCard, etc.) is computed from the card number.
- The expiration date is checked against the current system date.
- The length of the card number is checked to see if it's a valid length for the computed card type.
In addition, the IsCommercialCard method will attempt to determine if the specified CardNumber is a commercial or purchasing card, and the GetDebitNetworkInfo method will attempt to determine if the CardNumber is a debit card. This way you can pass Level 2 data (Tax amount and purchase order number) for commercial cards, or ask for a PIN for debit cards, and receive a lower interchange rate for the transaction.
This component will query the Global Transport Server to perform the above checks. The UserId and Password is only required for the GetDebitNetworkInfo method, neither IsCommercialCard or ValidateCard require authentication to use. The first three checks made by the ValidateCard method may also be performed off-line by setting the ValidationMode configuration setting to "Local" instead of "Global". In this case, the mod-10 check will be computed mathematically by the component, and the expiration date will be checked against the current system time. The CardTypeDescription will be computed using an internal set of rules, but do note that these will not be as up-to-date as the rules the Global Payments Server uses. The length check will only be performed when ValidationMode is set to "Global" mode.
The following is the full list of the properties of the component with short descriptions. Click on the links for further details.
|CardExpMonth||Expiration month of the card specified in CardNumber .|
|CardExpYear||Expiration month of the card specified in CardNumber .|
|CardNumber||Card number to be validated.|
|CardType||Indicates the results of the Luhn Digit Check algorithm.|
|CardTypeDescription||Human-readable description of the CardType .|
|DateCheckPassed||Indicates whether the card is expired or not.|
|DigitCheckPassed||Indicates the results of the Luhn Digit Check algorithm.|
|LengthCheckPassed||Indicates the results of the card number length check.|
|NetworkInfo||Contains information about the debit network the card number belongs to.|
|Password||Password for authentication with the Global Payments Server .|
|Proxy||A set of properties related to proxy access.|
|Server||Global Payments transaction server.|
|SSLAcceptServerCert||Instructs the component to unconditionally accept the server certificate that matches the supplied certificate.|
|SSLCert||The certificate to be used during SSL negotiation.|
|SSLServerCert||The server certificate for the last established connection.|
|Timeout||A timeout for the component.|
|TrackData||Magnetic stripe data read off the card.|
|TrackType||Indicates the type of the specified TrackData .|
|UserId||UserId for authentication with the Global Payments Server .|
The following is the full list of the methods of the component with short descriptions. Click on the links for further details.
|Config||Sets or retrieves a configuration setting .|
|GetDebitNetworkInfo||Determines if the card is a debit card, and which network it belongs to.|
|Interrupt||Interrupt the current method.|
|IsCommercialCard||Indicates whether or not the CardNumber is for a commercial/purchasing card.|
|Reset||Clears all properties to their default values.|
|ValidateCard||Checks the card number and expiration date for validity.|
The following is the full list of the events fired by the component with short descriptions. Click on the links for further details.
|Error||Information about errors during data delivery.|
|SSLServerAuthentication||Fired after the server presents its certificate to the client.|
|SSLStatus||Shows the progress of the secure connection.|
|Status||Shows the progress of the Global Payments connection.|
The following is a list of configuration settings for the component with short descriptions. Click on the links for further details.
|ValidationMode||Determines whether to use the Global Utility services for validation, or compute it locally.|
|RawRequest||Returns the request sent to the server for debugging purposes.|
|RawResponse||Returns the response received from the server for debugging purposes.|
|ConnectionTimeout||Sets a separate timeout value for establishing a connection.|
|FirewallAutoDetect||Tells the component whether or not to automatically detect and use firewall system settings, if available.|
|FirewallHost||Name or IP address of firewall (optional).|
|FirewallListener||If true, the component binds to a SOCKS firewall as a server (IPPort only).|
|FirewallPassword||Password to be used if authentication is to be used when connecting through the firewall.|
|FirewallPort||The TCP port for the FirewallHost;.|
|FirewallType||Determines the type of firewall to connect through.|
|FirewallUser||A user name if authentication is to be used connecting through a firewall.|
|KeepAliveTime||The inactivity time in milliseconds before a TCP keep-alive packet is sent.|
|KeepAliveInterval||The retry interval, in milliseconds, to be used when a TCP keep-alive packet is sent and no response is received.|
|Linger||When set to True, connections are terminated gracefully.|
|LingerTime||Time in seconds to have the connection linger.|
|LocalHost||The name of the local host through which connections are initiated or accepted.|
|LocalPort||The port in the local host where the component binds.|
|MaxLineLength||The maximum amount of data to accumulate when no EOL is found.|
|MaxTransferRate||The transfer rate limit in bytes per second.|
|ProxyExceptionsList||A semicolon separated list of hosts and IPs to bypass when using a proxy.|
|TCPKeepAlive||Determines whether or not the keep alive socket option is enabled.|
|UseIPv6||Whether to use IPv6.|
|UseNTLMv2||Whether to use NTLM V2.|
|CloseStreamAfterTransfer||If true, the component will close the upload or download stream after the transfer.|
|TcpNoDelay||Whether or not to delay when sending packets.|
|CACertFilePaths||The paths to CA certificate files when using Mono on Unix/Linux.|
|LogSSLPackets||Controls whether SSL packets are logged when using the internal security API.|
|ReuseSSLSession||Determines if the SSL session is reused.|
|SSLCipherStrength||The minimum cipher strength used for bulk encryption.|
|SSLEnabledProtocols||Used to enable/disable the supported security protocols.|
|SSLIncludeCertChain||Whether the entire certificate chain is included in the SSLServerAuthentication event.|
|SSLProvider||The name of the security provider to use.|
|SSLSecurityFlags||Flags that control certificate verification.|
|SSLEnabledCipherSuites||The cipher suite to be used in an SSL negotiation.|
|TLS12SignatureAlgorithms||Defines the allowed TLS 1.2 signature algorithms when UseInternalSecurityAPI is True.|
|TLS12SupportedGroups||The supported groups for ECC.|
|TLS13KeyShareGroups||The groups for which to pregenerate key shares.|
|TLS13SupportedGroups||The supported groups for (EC)DHE key exchange.|
|TLS13SignatureAlgorithms||The allowed certificate signature algorithms.|
|AbsoluteTimeout||Determines whether timeouts are inactivity timeouts or absolute timeouts.|
|FirewallData||Used to send extra data to the firewall.|
|InBufferSize||The size in bytes of the incoming queue of the socket.|
|OutBufferSize||The size in bytes of the outgoing queue of the socket.|
|GUIAvailable||Tells the component whether or not a message loop is available for processing events.|
|UseBackgroundThread||Whether threads created by the component are background threads.|
|UseInternalSecurityAPI||Tells the component whether or not to use the system security libraries or an internal implementation.|