TSYSDetailRecord Component
Properties Methods Events Configuration Settings Errors
The TSYSDetailRecord component is a tool used to create off-line Credit or Force transactions to be settled by the TSYSSETTLE component. The TSYSDetailRecord component may also be used to modify the XML aggregates returned by the TSYSRETAIL or TSYSECOMMERCE component's GetDetailAggregate method.
Syntax
DPayments.DPaymentsSDK.Tsysdetailrecord
Remarks
Credit and Force transactions are off-line transactions. This means that there is no authorization of funds using the TSYSECommerce or TSYSRetail components. Instead, you must manually add these transactions to the settlement batch. The TSYSDetailRecord component can be used to create these transactions, which can then be added to the TSYSSettle component's DetailRecords property.
To create a Credit, first set the TransactionType to dttOffLineCredit, and then set the IndustryType. EntryDataSource, and CardholderId based on whether you have a card reader, and how your customer is authenticated. The following example shows how this should be set for Direct Marketing:
TSYSDetailRecord.TransactionType = dttOffLineCredit TSYSDetailRecord.IndustryType = itDirectMarketing TSYSDetailRecord.EntryDataSource = edsManualEntryNoCardReader 'for DirectMarketing TSYSDetailRecord.CardholderId = "N" 'AVS for direct marketing
Next, set the CardNumber, SettlementAmount, and the current TransactionDate and TransactionTime. Note that since this is an off-line transaction, the AuthorizedAmount MUST be either zero or empty string.
TSYSDetailRecord.CardNumber = "4444333322221111" 'Card to credit TSYSDetailRecord.SettlementAmount = "3476" 'Amount of the credit $34.76 TSYSDetailRecord.AuthorizedAmount = "0" 'MUST be zero for credits! TSYSDetailRecord.TransactionDate = "0605" 'Date of this credit in MMDD format TSYSDetailRecord.TransactionTime = "124555" 'Time of this credit in HHMMSS format
Since this is an off-line transaction, the TransactionNumber may be any value (except 0), and need not reflect the value from the original authorization. You may simply set this to the next sequence number used for authorizations, if you wish. However, the TransactionId must be set to "0" or empty string.
TSYSDetailRecord.TransactionNumber = "123" 'Transaction sequence number of the original authorization request TSYSDetailRecord.TransactionId = "" 'ResponseTransactionId from the original authorization responseFinally, set the TSYSSettle component's DetailRecord array property with the value returned by the GetDetailAggregate method. You've just added a Credit to the settlement.
TSYSSettle.DetailRecords.Add(new TSYSRecordType(TSYSDetailRecord.GetDetailAggregate()));
Forced transactions are similar to credits, with the exception that a Forced transaction requires a Voice
Authorization code obtained from your acquiring bank's call center. Generally, the purchase of large high-dollar
items (cars, appliances, etc) will require the merchant to call and receive a voice authorization. Once this code
is received, it should be set to the ApprovalCode property. The following example shows a Force
transaction in a Retail environment.
TSYSDetailRecord.TransactionType = dttForceCardPresent TSYSDetailRecord.IndustryType = itRetail TSYSDetailRecord.ResponseApprovalCode = "123456" ' This is obtained from a voice authorization over the phone TSYSDetailRecord.EntryDataSource = edsTrack1 TSYSDetailRecord.CardholderId = "@" 'Signature TSYSDetailRecord.CardNumber = "4444333322221111" 'Card to credit TSYSDetailRecord.SettlementAmount = "5555" 'Amount of the credit $55.55 TSYSDetailRecord.AuthorizedAmount = 0 'MUST be zero for off-line transactions! TSYSDetailRecord.TransactionDate = "0605" 'Date of this credit in MMDD format TSYSDetailRecord.TransactionTime = "124555" 'Time of this credit in HHMMSS format TSYSDetailRecord.TransactionNumber = "124" 'Transaction sequence number of the original authorization request TSYSDetailRecord.TransactionId = "" 'ResponseTransactionId from the original authorization response TSYSSettle.DetailRecords.Add(new TSYSRecordType(TSYSDetailRecord.GetDetailAggregate()));
In addition to creating Credit and Force transactions, the TSYSDetailRecord component can be used to adjust the Detail Records returned from the TSYSECommerce, TSYSRetail, TSYSDebit, and TSYSBenefit components. The most common reasons to modify these detail records are to add a Gratuity (tip) to a charge (sitResturant, sitRetail and sitGroceryStore IndustryType), to add a PurchaseIdentifier or Installment payment info (itDirectMarketing IndustryType) to the detail record, or to add Hotel or Auto Rental or Passenger Transport specific information when dealing with those IndustryTypes.
For example, to add a gratuity to a charge:
DetailRecord.ParseAggregate(TSYSRetail.GetDetailAggregate()) DetailRecord.Gratuity = "500" DetailRecord.SettlementAmount = DetailRecord.AuthorizedAmount + DetailRecord.Gratuity TSYSSettle.DetailAggregate[0] = DetailRecord.GetDetailAggregate()
To settle a transaction authorized with the ttInstallment TransactionType, you must use the TSYSDetailRecord component to add the number of this installment and the total count of all installments to be made. For instance, if the purchase was for "Three easy payments of $19.95", and this is the first payment, then the installment number will be 1, and the installment count 3. An example is included below:
TSYSECommerce.TransactionType = ttInstallment TSYSECommerce.TransactionAmount = "1995" TSYSECommerce.Authorize() DetailRecord.ParseAggregate TSYSECommerce.GetDetailAggregate() DetailRecord.InstallmentCount = 3 DetailRecord.InstallmentNumber = 1 TSYSSettle.DetailAggregate[5] = DetailRecord.GetDetailAggregate()
To settle a Passenger Transport transaction authorized with the sitPassengerTransport IndustryType, you must use the TSYSDetailRecord component to add the number of this passenger and the total count of all passengers in the authorization code. For instance, if the authorization transaction included "Three passengers", and this is the first passenger, then the passenger number will be 1, and the passenger count 3. An example is included below:
TSYSRetail.IndustryType = sitPassengerTransport TSYSRetail.Authorize() DetailRecord.ParseAggregate TSYSRetail.GetDetailAggregate() DetailRecord.PassengerCount = 3 DetailRecord.PassengerNumber = 1 DetailRecord.Config("RestrictedTicketIndicator=True") DetailRecord.Config("TicketNumber=8382152100395") DetailRecord.Config("PassengerName=John Smith") DetailRecord.Config("DepartureDate=072117") DetailRecord.Config("Origin=JFK") DetailRecord.Config("Leg1=Carrier=DL;ServiceClass=C;StopOver=X;Destination=LAX") TSYSSettle1.IndustryType = sitPassengerTransport TSYSSettle1.Config("TravelAgencyCode=12345678") 'if ticket was issued by a travel agency TSYSSettle1.Config("TravelAgencyName=Travel and Tours") 'if ticket was issued by a travel agency TSYSSettle1.DetailAggregate[5] = DetailRecord.GetDetailAggregate()
Property List
The following is the full list of the properties of the component with short descriptions. Click on the links for further details.
AuthorizedAmount | Original amount authorized before any reversals. |
CardholderId | Specifies the method used to verify the identity of the cardholder. |
CardNumber | Customer's credit card number from the original authorization request. |
DebitCashBack | Contains the ResponseCashBack amount from the original Debit or EBT transaction. |
DebitNetworkId | Contains the ResponseNetworkId returned in the original Debit or EBT response. |
DebitReimbursementAttribute | Contains the ReimbursementAttribute from the original Debit or EBT request. |
DebitRetrievalNumber | Contains the ResponseRetrievalNumber returned in original Debit or EBT response. |
DebitSettleDate | Contains the ResponseSettleDate returned in the original Debit or EBT response. |
DebitTrace | Contains the ResponseTrace returned from the original debit or EBT response. |
ECI | Electronic Commerce Indicator from the original authorization request. |
EntryDataSource | This property contains a 1-character code identifying the source of the customer data. |
GoodsIndicator | Used to identify the type of goods purchased over the Internet. |
Gratuity | Gratuity amount for settling restaurant/retail industry transactions. |
Healthcare | Indicates whether this is a healthcare transaction. |
HotelChargeType | Type of charge made at a hotel (American Express cards only). |
HotelRateAmount | The nightly rate for this hotel room (American Express cards only). |
IndustryType | Code which indicates the industry the merchant is engaged in. |
InstallmentCount | Total number of installments (installment transactions only). |
InstallmentNumber | Current installment number (installment transactions only). |
LodgingRenterName | Name of the person or business entity charged for the reservation and/or lodging stay (hotel transactions only). |
PartiallyReversed | Indicates whether this transaction has been partially reversed. |
PassengerCount | Total number of passengers (multiple passenger transport transactions only). |
PassengerNumber | Current passenger number (multiple passenger transport transactions only). |
PurchaseIdentifier | Optional purchase order number assigned by the merchant. |
RentalCheckIn | Date the cardholder checked into the hotel or first drove away a rented vehicle. |
RentalExtraCharges | List of extra charges for Hotel/Auto transactions. |
RentalNoShow | Indicates whether the cardholder is a no-show (auto rental and hotel industries only). |
RentalReturnCity | City where the rental car was returned (MasterCard only). |
RentalReturnLocation | Id of the location where the rental vehicle was returned (MasterCard only). |
RentalReturnState | State or country where the rental car was returned (MasterCard only). |
RenterName | Name of the person renting the vehicle (MasterCard only). |
RequestedACI | Authorization Characteristics Indicator from the original authorization request. |
ResponseACI | Authorization Characteristics Indicator from the original authorization response. |
ResponseApprovalCode | Response Approval Code from the original authorization response. |
ResponseAuthSource | Auth Source Code from the original authorization response. |
ResponseAVS | Address Verification Code from the original authorization response. |
ResponseCardLevel | Card Level results returned from the original authorization response. |
ResponseCode | Response code from the original authorization response. |
SettlementAmount | The amount that the customer will be charged. |
Substantiated | Used for HealthCare transactions. Identifies if the merchant verified the purchased items against an Inventory Information Approval System (IIAS). |
TotalAuthorizedAmount | Sum total of all the original authorization and all subsequent incremental authorizations. |
TransactionDate | Local Transaction Date from the original authorization response. |
TransactionId | Transaction Identifier from the original authorization response. |
TransactionNumber | Transaction Number from the original authorization request. |
TransactionTime | Local transaction time from the original authorization response. |
TransactionType | Indicates transaction type for this detail record. |
ValidationCode | Validation Code from the original authorization response. |
VoidTransaction | Indicates whether this transaction has been voided. |
Method List
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. |
GetDetailAggregate | Returns an aggregate containing details of this transaction, which is then used for settlement. |
ParseAggregate | Parses the aggregate returned from another component's GetDetailAggregate method. |
Reset | Clears all properties to their default values. |
Event List
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. |
Configuration Settings
The following is a list of configuration settings for the component with short descriptions. Click on the links for further details.
AccountDataSource | Identifies the source of the customer card data entered. |
ACHCheckingSavingsIndicator | Specifies the originating account type. |
ACHCheckNumber | The individual check number. |
ACHCheckReversalIndicator | ACH Check Reversal Indicator. |
ACHIndividualName | The individual or receiving company name. |
ACHIndividualReferenceID | Merchant and customer information. |
ACHPaymentTypeIndicator | ACH Payment Type Indicator. |
ACHPrenoteIndicator | ACH Prenote Indicator. |
ACHPresentmentInformation | ACH Presentment Information. |
ACHReturnedCheckIndicator | ACH Returned Check Indicator. |
ACHRoutingNumber | The receiving Depository Financial Institution (DFI) identification/routing number and check digit. |
ACHSECCode | The Standard Entry Class (SEC) Code is used to determine the ACH Rules that apply to the transaction. |
ACHTelephoneNumber | The merchant / business contact phone number, REVERSAL, or REDEPCHECK. |
ACHTerminalCity | The city, town, village, or township in which the merchant's terminal is located. |
ACHTerminalState | The state location for the merchant's terminal. |
DepartureDate | The passenger's departure date. |
DetailExtension | Detail Extension Optional Data Group. |
EMVAppCryptogram | The clearing cryptogram used to validate transaction processing in the event of a dispute. |
EMVAppInterchangeProfile | A series of indicators that reflect the specific functions supported by the chip card account. |
EMVAppTranCounter | The count of the transactions performed within the application. |
EMVCardSeqNum | The number assigned to a specific card when two or more cards are associated with a single account number. |
EMVCryptogramAmount | Contains the transaction amount used by the chip when calculating the last cryptogram. |
EMVCryptogramInfoData | The type of cryptogram and the actions to be performed by the terminal. |
EMVCurrencyCode | The currency code of the transaction. |
EMVCVMResults | The results of the last Cardholder Verification Method (CVM) performed. |
EMVData | The EMV Data returned from a Pin Pad after reading an EMV card. |
EMVDedicatedFileName | Identifies the name of the Dedicated File as described in ISO/IEC 7816-4. This field is required for Mastercard and Discover (including Diners, JCB, and CUP). |
EMVFormFactorID | This indicators related to the attributes of the cardholder's device and the technology used for the communication between the cardholder's device and the acquiring device. |
EMVIssuerAppData | Application data for transmission to the issuer in an online transaction. |
EMVIssuerAuthData | Data sent by the Issuer to the Chip Card for the Chip Card to validate the authenticity of the Issuer. |
EMVIssuerScriptResults | The update command that the issuer sends in the authorization response to the card during online processing. |
EMVTerminalCapabilities | Indicates the card input data, the Cardholder Verification Method (CVM), and the security capabilities that are supported by the terminal. |
EMVTranDate | The local date at the terminal on which the transaction was authorized. |
EMVTranType | The Transaction Type used by the card to calculate the cryptogram. |
EMVUnpredictableNum | The number used in the generation of the cryptogram. |
EMVVerificationResult | The indicators representing the results of offline and online processing, recorded by the terminal. |
HeartlandDeviceId | Specifies a device ID to uniquely identify each terminal (card data entry device). |
HeartlandEncryptionMode | Specifies the encryption mode to use in Heartland transactions. |
IsBillPayment | Indicates that the transaction is a bill payment transaction. |
IsQuasiCash | Specifies whether the transaction is Quasi-Cash transaction. |
Leg1 | Used by Merchants that are in the airline industry to submit Leg 1 information for Passenger Transport transactions. |
Leg2 | Used by Merchants that are in the airline industry to submit Leg 2 information for Passenger Transport transactions. |
Leg3 | Used by Merchants that are in the airline industry to submit Leg 3 information for Passenger Transport transactions. |
Leg4 | Used by Merchants that are in the airline industry to submit Leg 4 information for Passenger Transport transactions. |
LocationDetailAddress | Merchant's street address. |
LocationDetailCity | Name of the city. |
LocationDetailCountry | Country code. |
LocationDetailName | Merchant name. |
LocationDetailPostal | Postal code. |
LocationDetailRegion | Region code that corresponds to the state, province, or other country subdivision. |
MerchantDescriptor | Merchant Soft Descriptor information. |
MobileDeviceType | Identifies the type of mobile device used by the cardholder to initiate the transaction. |
Origin | First segment travel origination Airport. |
PassengerName | The passenger's name. |
PFNameSubMerchantName | The Payment Facilitator Name and Sub-Merchant name. |
PFSubMerchantCity | The Payment Facilitator Sub-Merchant City. |
PFSubMerchantCountry | The Payment Facilitator Sub-Merchant Country Code. |
PFSubMerchantPostalCode | The Payment Facilitator Sub-Merchant Postal Code. |
PFSubMerchantState | The Payment Facilitator Sub-Merchant State. |
POSDataCode | Specifies the condition of the POS device used at the time of the transaction. |
Processor | Specifies the Processor you are connecting to. |
RequesterName | Name of the requester. |
RestrictedTicketIndicator | Indicates if there are restrictions associated with this ticket. |
SpendQualifiedIndicator | Indicates whether or not the spend qualification threshold has been met. |
TicketNumber | The airline ticket number. |
Token | The token used in place of Card data. |
TotalTaxAmount | Total Tax Amount assessed at the point-of-sale. |
TsysETB | The Encryption Transmission Block TSYS uses to decrypt encrypted data. |
VisaMVV | Merchant Verification Value used for Visa healthcare transactions. |
BuildInfo | Information about the product's build. |
GUIAvailable | Tells the component whether or not a message loop is available for processing events. |
LicenseInfo | Information about the current license. |
UseInternalSecurityAPI | Tells the component whether or not to use the system security libraries or an internal implementation. |