The FDMSDetailRecord component is a tool used to create off-line Credit or Force transactions to be settled by the FDMSSETTLE component. The FDMSDetailRecord component may also be used to modify the XML aggregates returned by the FDMSRETAIL or FDMSECOMMERCE component's GetDetailAggregate method.
Credit and Force transactions are off-line transactions. This means that there is no authorization of funds using the FDMSECommerce, FDMSRetail components. Instead, you must manually add these transactions to the settlement batch. The FDMSDetailRecord component can be used to create these transactions, which can then be added to the FDMSSettle component's DetailRecord array property.
To create a Credit, first set the TransactionType to ttCredit, and then set the IndustryType. CardEntryDataSource, and DirectMarketingType 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:
FDMSDetailRecord.TransactionType = ttCredit FDMSDetailRecord.IndustryType = itDirectMarketing FDMSDetailRecord.CardEntryDataSource = edsManualEntryNoCardReader FDMSDetailRecord.DirectMarketingType = dmECommerce
Next, set the CardNumber, CardExpMonth, CardExpYear, SettlementAmount, and the current TransactionDate and TransactionTime. Since this example is a Direct Marketing transaction, we're also adding the PurchaseIdentifier. Note that since this is an off-line transaction, the AuthorizedAmount MUST be either zero or empty string.
FDMSDetailRecord.CardNumber = "4444333322221111" FDMSDetailRecord.CardExpMonth = 3 FDMSDetailRecord.CardExpYear = 2019 FDMSDetailRecord.AuthorizedAmount = "0" FDMSDetailRecord.SettlementAmount = "5000" '$50.00 FDMSDetailRecord.TransTime = "123456" ' Current time (12:34:56) FDMSDetailRecord.TransDate = "040506" ' Current date (MMDDYY) FDMSDetailRecord.PurchaseIdentifier = "123456"
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 ResponseApprovalCode property. The following example shows a Force transaction in a Retail environment.
FDMSDetailRecord.TransactionType = ttForce FDMSDetailRecord.IndustryType = itRetail FDMSDetailRecord.CardEntryDataSource = edsTrack1 FDMSDetailRecord.CardNumber = "4444333322221111" FDMSDetailRecord.CardExpMonth = 3 FDMSDetailRecord.CardExpYear = 2019 FDMSDetailRecord.AuthorizedAmount = "0" FDMSDetailRecord.SettlementAmount = "500000" '$5000.00 FDMSDetailRecord.TransTime = "123456" ' Current time (12:34:56) FDMSDetailRecord.TransDate = "040506" ' Current date (MMDDYY) FDMSDetailRecord.ResponseApprovalCode = "123456" FDMSSettle.DetailRecords.Add(New FDMSRecordType(FDMSDetailRecord.GetDetailAggregate()))
In addition to creating Credit and Force transactions, the FDMSDetailRecord component can be used to adjust the Detail Records returned from the FDMSECommerce and FDMSRetail components. The most common reasons to modify these detail records are to add a Gratuity (tip) to a charge (itResturant IndustryType), or to add a PurchaseIdentifier or Installment payment info (itDirectMarketing IndustryType) to the detail record.
For example, to add a gratuity to a charge:
FDMSDetailRecord.ParseAggregate(FDMSRetail.GetDetailAggregate()) FDMSDetailRecord.Gratuity = "500" FDMSDetailRecord.TransactionAmount = FDMSDetailRecord.TransactionAmount + FDMSDetailRecord.Gratuity FDMSSettle.DetailRecords.Add(New FDMSRecordType(FDMSDetailRecord.GetDetailAggregate()))
To settle a transaction authorized with the ttInstallment TransactionType, you must use the FDMSDetailRecord 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:
FDMSECommerce.TransactionType = ttInstallment FDMSECommerce.TransactionAmount = "1995" FDMSECommerce.Authorize() FDMSDetailRecord.ParseAggregate FDMSECommerce.GetDetailAggregate() FDMSDetailRecord.InstallmentCount = 3 FDMSDetailRecord.InstallmentNumber = 1 FDMSSettle.DetailRecords.Add(new FDMSRecordType(FDMSDetailRecord.GetDetailAggregate()))
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.|
|CardEntryDataSource||This property identifies the source of the customer data.|
|CardExpMonth||Expiration month of the credit card specified in CardNumber .|
|CardExpYear||Expiration year of the credit card specified in CardNumber .|
|CardLevelResults||Card Level result code returned only for Visa transactions.|
|CardNumber||Customer's credit card number from the original authorization request.|
|CashBack||Amount of cash that was returned to the customer.|
|DebitReceipt||Merchant-generated number that identifies the debit or EBT transaction.|
|DirectMarketingType||Specifies the type of transaction to process.|
|ECI||Electronic Commerce Indicator from the original authorization request.|
|Gratuity||Gratuity amount for settling restaurant industry transactions.|
|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).|
|PurchaseIdentifier||Optional purchase order number assigned by the merchant.|
|ResponseApprovalCode||Response Approval Code from the original authorization response.|
|ResponseAVSResult||Address Verification Code from the original authorization response.|
|ResponseReturnedACI||Authorization Characteristics Indicator from the original authorization response.|
|ServerId||Specifies the employee that served the customer. Used for restaurants only.|
|SettlementAmount||The amount that the customer will be charged.|
|TicketNumber||Ticket (receipt) number for this transaction.|
|TransactionDate||Local Transaction Date (in MMDDYY format) from the original authorization response.|
|TransactionId||Transaction Identifier from the original authorization response.|
|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.|
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.|
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.|
The following is a list of configuration settings for the component with short descriptions. Click on the links for further details.
|MSDI||Market Specific Data Indicator.|
|CurrencyCode||Currency Code for this transaction.|
|DCCIndicator||Status of the Dynamic Currency Conversion.|
|DCCTimeZone||The time zone of the merchant where the DCC transaction is taking place.|
|DCCConversionRate||The DCC Conversion rate.|
|DCCUSAmount||The US Dollar Amount for a DCC transaction.|
|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.|