DvPayLite Deep Linking
Through Intent Mode

DvPayLite Deep Linking Integration - Intent Mode

Version History

DateVersionDetails
01/06/23 1.0.0

Initial release

19/06/23 1.0.1

Architecture diagram revised, and AndroidManifest.xml added.

28/06/23 1.0.2

Tip Adjust API added

14/07/23 1.0.3

Added Preauth and Ticket in transaction API

07/11/23 1.0.4

Updates: Device detail API, Get TPN API, Status check API, and enhancements to existing APIs.

21/11/23 1.0.5

Updates: Debugging signing configurations updated for terminal use, and Administrative Txn API added.

26/04/24 1.0.6

Updates: Added information on 3rd party app installation in P terminals.

13/09/24 1.0.7

Updates: Request tags for payment type and receipt type updated in the performTransaction API.

19/06/25 1.0.8

Updates: Tags updated for features that support optional transaction status screen and IsvId.

22/10/25 1.0.9

Added Level 3 / VISA CEDP Line Items Tags

26/11/25 1.1.0

Gift - transactions enabled

Prerequisites

For Sandbox (UAT)

Users should be onboarded on iPOSpays sandbox(UAT) environment as a merchant and have a valid TPN. DvPayLite application build should be production.

For Production (Live)

Users should be onboarded on iPOSpays production environment as a merchant and have a valid TPN. DvPayLite application build should be production.

If you do not have a TPN, contact your ISO or devsupport@dejavoo.io


Set Up the Developer Environment

  1. Android Studio IDE


Develop Android Application

  1. Create a new Android project or use an existing one.

  2. Configure the following snippets in your build.gradle and settings.gradle files.

Configure Gradle

  1. Add Dependency

Include the following dependency in your project’s build.gradle file:

com.denovo:invoke-dvpay-lite:1.2.1.3

  1. Add Permission

Include the following permission in your AndroidManifest.xml file:

<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />

To obtain the library file containing the access key and secret key required for integration, please Contact devsupport@denovosystem.com. Make sure to CC your Dejavoo representative when sending your request.


Configure settings.gradle - reach devsupport@denovosystem.com for getting access key and secret key

Add Signing Configuration

  1. Configure Signing for Debug Build

Add the following lines to your project’s build.gradle file for running the application with a signature:

signingConfigs {
      debug {
            storeFile file(“kozen.jks”)
            storePassword “kozen”
            keyAlias “xc-buildsrv”
keyPassword “kozen”
v1SigningEnabled true
v2SigningEnabled true
}
     }
buildTypes {
    debug {
        signingConfig signingConfigs.debug
        …….
        }
    }
  1. Download the kozen.jks File

To download the kozen.jks file, click on the highlighted text that reads kozen.jks


Install DvPayLite Application

Ensure the DvPayLite application is installed on the payment terminal. If it is not installed, go to DvStore to install the DvPayLite application before proceeding with the integration.

Version Control and Updates
  • Non-breaking changes:

    1. We will continue to enhance the API by adding new functionality and fixing bugs over time.
    2. These updates may include:
      • New endpoints
      • Additional attributes for existing objects
    3. Such changes will not require a new API version. Ensure your code can handle new attributes gracefully and does not rely on the order of returned records unless explicitly specified in the documentation.
  • Breaking changes:

    • We aim to maintain the current API version for the foreseeable future.
    • In the event of changes that break the current API's functionality, a new version number will be released to ensure backward compatibility with existing integrations
    • Refer to the Version History to review the version history of this document.

High-Level Flow

The following is a high-level flow to communicate with the DvPayLite Application.

DvPayimage-1.png

Initialize the Application

To invoke the DvPayLite application, developers must initialize it within the invoking app using the following set of lines.

activityResultLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) 
{ result: ActivityResult ->
 
intentApplication.handleResultCallBack(result)
 
}
 
intentApplication = IntentApplication(requireContext())

APIs

Device Register API

The Device Register API is used to download both the terminal configuration and merchant configuration data from the backend application into the DvPayLite application.

Request Parameters:

FieldDescriptionSample
tpn It’s a Unique 12-digit code. This value is unique for each merchant.123456789012
applicationType The application type is used to identify the applicationDVPAYLITE

Response Details:

  1. onTerminalAdded
FieldDescriptionExample
message It’s a Unique 12 digit code. This value is unique for each merchant.Terminal Added Successfully
isValidTPN Indicates whether the TPN is validtrue
assignedBuildNumber Build number assigned to this transaction or request(Empty in this case)
  1. onTerminalAddFailed
FieldDescriptionExample
error_code Error code indicating the type of error15
error_message Message describing the errorTPN is not Configured

Snippet code

jsonRequest = {“tpn”:”123456789012”, “applicationType”:”DVPAYLITE”}
 
InvokeApp.intentApplication.setTerminalAddListener(object : TerminalAddListener {
 
    override fun onApplicationLaunched(addTerminal: JSONObject?) {
        // application launched success json data
    }
 
    override fun onApplicationLaunchFailed(errorResult: JSONObject) {
        // application launched failed json data
    }
 
    override fun onTerminalAdded(terminalResult: JSONObject?) {
        // Terminal added json data
    }
 
    override fun onTerminalAddFailed(errorResult: JSONObject) {
        // Terminal add failed json data
    }
 
})
 
InvokeApp.intentApplication.addTerminal(jsonRequest, InvokeApp.activityResultLauncher)

Perform Transaction API

The Perform Transaction API is used to invoke the DvPayLite application to process transactions. It supports the following transaction types: SALE, REFUND, VOID, PRE_AUTH, INC_AUTH, TICKET, ACTIVATE, INQUIRE, REDEEM, REISSUE, REFUND, VOID.

For pin-based transactions, keys must be injected into the terminal. To inject the keys, please contact the developer support team at devsupport@denovosystem.com.

Request Parameters:

FieldDescriptionSample
type Transaction type should be any one of the following [SALE, REFUND, VOID, PRE_AUTH, INC_AUTH, TICKET, ACTIVATE, INQUIRE, REDEEM, REISSUE, REFUND, VOID]SALE
paymentType Payment Type [CREDIT,DEBIT,EBT_Food,EBT_Cash, Gift, Loyalty] CREDIT
amount Transaction Amount10.00
tip Transaction Tip Amount (Applicable only for sale and ticket) 1.00
applicationType The application type is used to identify the applicationDVPAYLITE
refId Transaction reference id (Should be unique for sale, refund, and Pre_Auth and should be original sale ref id for void and pre_auth refund for ticket)1234567890
receiptType Type of receipt Possible Options - [Merchant, Customer, Both, No]Merchant
isTxnStatusScreenRequired Provides flexibility to display the transaction status screen in payment application Possible Options - [Yes, No]Yes
IsvId Unique Id that is provided to each ISV while starting the integration (should contact support team/sales rep to get this ID)432423434
showBreakupScreen Provides flexibility to display break down screen while processing the transaction (break down should be enabled state in TPN configuration for this to reflect) Possible Options - [“Yes”, “No”]Yes
showTipScreen Provides flexibility to display tip screen while processing the transaction Possible Options - [“Yes”, “No”]Yes
reconId Used for reconciliation purposes. This field is applicable only for Fiserv North transactions and it is optional. It contains an alphanumeric reference ID that links the transaction to its corresponding settlement record in Fiserv.FSRV12345A

Response Details

FieldDescriptionExample
authCode Authorization code received from the payment processorDSC058
LTaxAmount Local Tax Amount2.40
STaxAmount State Tax Amount1.20
extData Extended data related to the transaction (e.g., partial approval info, void status){"dueAmnt":"0.00","approvedAmnt":"","isPartialApprovalTxn":false,"voided":"false"}
L2/L3 Validation Error The reason for an L2/L3 failure is returned under the extData tag."extData":{"dueAmnt":"0.00","approvedAmnt":"","isPartialApprovalTxn":false,"voided":"false","l2l3ValidationError": {"PoNumber": "Is missing or invalid"}}
L3flag If the transaction is completed as Level 2/Level 3 (L2/L3) using a commercial card, the result will be Y, its returned under the extData tag."extData":"{"dueAmnt":"0.00","approvedAmnt":"","isPartialApprovalTxn":false,"voided":"false","L3Flag":"Y"}
cardHolderName Name of the cardholderSteve Rogers
batchNo Batch number associated with the transaction444
card_type Type of card used for the transaction (e.g., VISA, MASTER, DISCOVER)JCB
merchant Data to be printed on Merchant receipt along with the format and alignment in xml format. [ C - center, R- Right, L- Left, N- Normal, B- Bold]
customer Data to be printed on Customer receipt along with the format and alignment in xml format. [ C - center, R- Right, L- Left]
expDate Expiry date of the card12/25
emvTVR EMV Terminal Verification Results0000008000
emvTC EMV Transaction CertificateF23A1C0D45678910
emvTSI EMV Transaction Status IndicatorE800
emvAppName EMV Application Name (for chip card transactions)VISA CREDIT
emvAID EMV Application Identifier (for chip card transactions)A0000000041010
date Transaction date2024-10-01
disclaimer Statement acknowledging the cardholder’s receipt of goods and agreeing to cardholder obligationsCardholder acknowledges receipt of goods
fee Custom fee associated with the transaction0.62
iPOSToken Token generated for the transaction (used for tracking and security)FDBD45C65D2CCB28BE42BAF72D1D7F13A6894F146D70AD17
invoice_no Invoice number associated with the transaction2
last_4_digits Last 4 digits of the card number5859
mask_pan Masked Primary Account Number (PAN)3530145859
pinMode PIN mode used in the transaction. [0 = no PIN, 1 = PIN verified]0
refId Reference ID for tracking the transactionwhich received in the requestDL305734142454
respCode Response code from the payment processor [00 - Success, and remaining all failures]00
respMsg Response message from the payment processor for the transactionAPPROVAL DSC058
rrn Retrieval Reference Number (used for tracking in case of disputes)427510500684
sign Customer signature in the string format of Base64 encoding (if captured electronically)
status Status of the transactionApproved
time Time of the transaction06:28:39
tipAmount Amount of tip added to the transaction3.60
tipLine Whether the tip line was included in the receipt [0 = no, 1 = yes]0
totalAmount Total amount including base amount, tax, tip, and fees19.82
transId Transaction ID (unique identifier for the transaction)000004
transaction_id Same as transId, used interchangeably000004
transaction_title Title of the transaction (e.g., SALE, REFUND)SALE
transaction_mode Mode of the transaction [1 - Swipe, 2 - Chip, 3- Contactless, 4 - Manual]1
transaction_type Numeric type for the transaction [1 - Credit, 2 - Debit, 3 - EBT, 6 - Gift]1
amount_paid Total amount paid for the goods or services as Base Amount12.00

Snippet code

jsonRequest = {"type":"SALE", "amount":"10.00", "tip":"1.00", "applicationType":"DVPAYLITE", "refId":"1234567890","isTxnStatusScreenRequired":"Yes",}
 
InvokeApp.intentApplication.setTransactionListener(object : TransactionListener {
 
    override fun onApplicationLaunched(result: JSONObject?) {
        // application launched success json data
    }
 
    override fun onApplicationLaunchFailed(errorResult: JSONObject) {
        // application launched failed json data
    }
 
    override fun onTransactionSuccess(transactionResult: JSONObject?) {
        // Transaction Success json data
    }
 
    override fun onTransactionFailed(errorResult: JSONObject) {
        // Transaction Failed json data
    }
 
})
 
InvokeApp.intentApplication.performTransaction(jsonRequest, InvokeApp.activityResultLauncher)

Sale With Level 3 / VISA CEDP Line Items

As part of VISA’s updated CEDP (Cardholder Enhanced Data Program), Level 3 data is now required for commercial and corporate card transactions to qualify for optimized interchange rates.

To support this, please ensure you are submitting accurate, complete, and properly formatted Level 3 data in your requests. Poor data quality (e.g., missing fields, incorrect values, or placeholder data) may lead to downgraded interchange qualification or rejections.

This includes fields such as item descriptions, quantities, unit costs, tax amounts, and other line-item details. The cleaner and more complete the data, the better the chances of qualifying for enhanced rates.

Request Parameters Definitions

FieldTypeUsage ConditionDescription
L3 ( Summary Header Fields )
paymentType * String Mandatory

Payment method used (e.g., Credit, Debit, etc.)

Type: String

amount * Double Mandatory

Total transaction amount

Type: Double

refId * String Mandatory

A unique transaction reference ID used to identify the transaction

Type: String

IsvId String Conditional

Independent Software Vendor ID (if applicable)

Type: String

TaxAmount * Double Mandatory

This is a CEDP summary header field that specifies the monetary amount of any additional sales tax applied to the transaction.

It is a numeric field, up to 12 digits including decimals.

Send 0 if no additional tax applies.

Type: Double

LocalTaxFlag * Integer Mandatory

This is a CEDP summary header field that indicates the type or characteristic of the local tax applied.

Send 1 if local or sales tax applies.

Send 2 if the transaction is tax-exempt.

Send 0 only if tax is not provided.

Type: Integer

NationalTaxAmount Double Conditional

This is a CEDP summary header field that specifies the total national or federal tax included in the transaction.

Send 0 if no national tax applies.

Type: Double

DestZipCode String Conditional

This is a CEDP summary header field that specifies the postal or ZIP code of the destination address for shipped goods.

Alphanumeric field, up to 12 characters.

Type: String

SummaryCommodityCode String Conditional

This is a CEDP summary header field that specifies an international commodity code representing the goods or services supplied in the transaction.

Alphanumeric field, 4 characters.

Type: String

TaxRateApplied Double Conditional

This is a CEDP summary header field that specifies the rate used to calculate tax for the transaction.

Numeric field, 4 characters, with an implied two-digit decimal.

Type: Double

TotalDiscountAmount Double Conditional

This is a CEDP summary header field that contains the total discount amount applied against the line item total.

Type: Double

PoNumber String Conditional

This is a CEDP summary header field that contains a Purchase Order Number provided by the cardholder.

Type: String

FreightAmount Double Conditional

This is a CEDP summary header field that specifies the freight or shipping portion of the total transaction amount.

Type: Double

DutyAmount Double Conditional

This is a CEDP summary header field specifying the fee amount associated with the import of purchased goods.

Type: Double

ShipfromZipCode String Conditional

This is a CEDP summary header field that specifies the postal or ZIP code from which the goods are shipped.

Type: String

DestCountryCode String Conditional

This is a CEDP summary header field containing the three-character country code of the destination.

Type: String

MerchantTaxId String Conditional

This is a CEDP summary header field containing the government-assigned tax identification number of the merchant.

Type: String

LineItemCount * Integer Mandatory

This is a CEDP summary header field that contains the total number of line item detail records associated with the transaction.

Type: Integer

AltTaxAmount Double Conditional

This is a CEDP summary header field that records the second tax amount where multiple tax types apply.

Type: Double

PurchaseIdentifier String Conditional

This is a CEDP summary header field containing a 25-character identifier assigned by the merchant.

Value must be alphanumeric and not all zeroes or spaces.

Leave blank if not used.

Type: String

PurchaseIdFormatCode * String Mandatory

This is a CEDP summary header field containing a one-character code identifying the type of Purchase Identifier.

Valid values:

Z – Not Used

0 – Reserved

1 – Direct Marketing Order Number

2 – Reserved

3 – Auto Rental Agreement Number

Type: String

OrderDate String Conditional

This is a CEDP summary header field that contains the purchase order date.

Format: YYMMDD

Type: String

AltTaxIndicator String Conditional

This is a CEDP summary header field indicating whether the Alternate Tax Amount is included.

Y – Included, N – Not included.

Type: String

Level3LineItems * Object Mandatory

An array containing line-item level details.

See Group Fields below.

Type: Object

L3 Group Fields ( Line Item Details - Each group represents a single line item in the transaction. These fields provide item-level details required for Level 3 data. )
CommodityCode String Conditional

This is a CEDP line item group field that contains an international or national standardized description code for the individual good or service being supplied.

Provide the correct commodity code for the item to maximize interchange benefits.

Type: String

Value:

Length: 12

Description * String Mandatory

This is a CEDP line item group field that contains a description of the item(s) being supplied.

Type: String

ProductCode String Optional

This is a CEDP line item group field that contains a merchant-defined description code for the item being purchased.

Maximum length: 4 characters (alphanumeric).

Type: String

Quantity * Double Mandatory

This is a CEDP line item group field that contains the quantity of the item(s) being purchased.

Type: Double

UnitOfMeasure * String Mandatory

This is a CEDP line item group field that contains the code for the unit of measurement used in international trade.

Type: String

UnitCost * Double Mandatory

This is a CEDP line item group field that contains the unit cost of the item.

The value must be provided as a number with two decimal places (e.g., 10.00, 5.75, 125.00).

Type: Double

TaxRate * Double Mandatory

This is a CEDP line item group field that contains the tax rate used to calculate the tax amount.

The value must be provided as a number with two decimal places.

Type: Double

TaxAmount * Double Mandatory

This is a CEDP line item group field that contains the total tax applied to the line item.

The value must be provided as a number with two decimal places.

Type: Double

DiscountAmount * Double Mandatory

This is a CEDP line item group field that contains any discount applied to the line item.

The value must be provided as a number with two decimal places.

Type: Double

DiscountRate Double Conditional

This is a CEDP line item group field that contains the discount rate applicable to the line item if DiscountIndicator = Y.

The value must be provided as a number with two decimal places.

Type: Double

NationalTaxAmount Double Conditional

National tax applied to the line item.

The value must be provided as a number with two decimal places.

Type: Double

NationalTaxRate Double Conditional

State tax rate applied to the line item.

The value must be provided as a number with two decimal places.

Type: Double

DiscountIndicator * String Mandatory

This is a CEDP line item group field indicating whether a discount was applied.

Y = discounted, N = not discounted.

Type: String

NetGrossIndicator String Optional

This is a CEDP line item group field indicating whether the item amount includes tax.

N = does not include tax, Y = includes tax.

Type: String

DebitCreditIndicator String Optional

This is a CEDP line item group field indicating whether the line item amount is a Credit (C) or Debit (D).

Type: String

ExtLineAmount * Double Mandatory

This is a CEDP line item group field containing the total amount of the individual item (price × quantity).

The value must be provided as a number with two decimal places.

Type: Double

AltTaxID String Conditional

This is a CEDP line item group field containing the alternate tax ID.

4-character numeric field.

Type: String

TaxTypeApplied String Conditional

This is a CEDP line item group field defining the type of tax applied.

Type: String

TaxIndicator String Conditional

This is a CEDP line item group field.

0 – Sales Tax not provided

1 – Local or Sales Tax Amount Provided

2 – Tax Exempt

Type: String

Sample Request

Here’s the sample request for a sale transaction with Level 3 / VISA CEDP line items.

{
  "type": "SALE",
  "paymentType": "Credit",
  "amount": "270.00",
  "tip": "2.00",
  "applicationType": "DVPAYLITE",
  "refId": "DL529091167121",
  "receiptType": "No",
  "isTxnStatusScreenRequired": "Yes",
  "showBreakupScreen": "Yes",
  "showDualPriceScreen": "No",
  "showTipScreen": "Yes",
  "IsvId": "23454",
  "cardAcceptanceTime": "",
  "TaxAmount": "27.00",
  "LocalTaxFlag": "1",
  "NationalTaxAmount": "13.50",
  "DestZipCode": "00042",
  "SummaryCommodityCode": "0987",
  "TaxRateApplied": "10.00",
  "TotalDiscountAmount": "13.50",
  "PoNumber": "10123456",
  "FreightAmount": "0.00",
  "DutyAmount": "0.00",
  "ShipfromZipCode": "00090",
  "DestCountryCode": "840",
  "LineItemCount": "1",
  "AltTaxAmount": "0.00",
  "PurchaseIdentifier": "A124",
  "MerchantTaxId": "7878",
  "totalLTaxAmount": "27.00",
  "PurchaseIdFormatCode": "0",
  "AltTaxIndicator": "N",
  "OrderDate": "251021",
 
  "Level3LineItems": {
    "group": [
      {
        "CommodityCode": "0010",
        "Description": "FrozenYogurt",
        "ProductCode": "FY12",
        "Quantity": "1.00",
        "UnitOfMeasure": "ITM",
        "UnitCost": "270.00",
        "DiscountAmount": "13.50",
        "DiscountRate": "0.00",
        "NationalTaxAmount": "13.50",
        "NationalTaxRate": "5.00",
        "TaxAmount": "27.00",
        "TaxRate": "10.00",
        "ExtLineAmount": "283.50",
        "DiscountIndicator": "Y",
        "NetGrossIndicator": "N",
        "DebitCreditIndicator": "D",
        "AltTaxID": "0",
        "TaxTypeApplied": "",
        "TaxIndicator": "1"
      }
    ]
  },
}

Batch Settlement API

At the end of the business day, when a merchant is ready to close, all transactions processed during their operating hours must be submitted to the processor to ensure the funds are transferred to their bank account.

A batch is a collection of transactions that have been processed but not yet settled. When a transaction is approved, it is added to the batch. If the batch has not yet been settled, it is considered an open batch. Transactions within an open batch can still be voided or reversed if necessary.

Request Parameters:

FieldDescriptionSample
type Transaction type [SETTLE] SETTLE
applicationType The application type is used to identify the applicationDVPAYLITE

Response Details

FieldDescriptionExample
assignedBuildNumber Build number assigned to this transaction or request(Empty in this case)
TPN Terminal Profile Number (unique identifier for the terminal)132423805864
resultCode Result code indicating the outcome of the transaction0 (Success)
message Message corresponding to the resultCodeSuccess
ExtData Extended data with details about the batch settlementApp=DvPayLite, ResultCode=0, BatchNum=443, Rsp=BATCH SETTLED, Status=GB,TipAmt=39.60, TotalAmt=218.06, SHFee=6.86, NumTrans=2
Receipt Receipt information in formatted string (customer and terminal data, transaction totals, etc.)Date: 2024/10/02, Time: 06:28:39, Terminal: 132423805864, Merchant: 888000003338, Batch#: 443, Status: GB, etc.
TransReport Report summarizing transactions in the batchApp=DvPayLite, TrnsCnt=2, SaleAmt=218.06, ReturnAmt=0.0, VoidAmt=0.0, AuthAmt=0.0, TicketAmt=0.0, TotalAmt=218.06
HostResponseCode Response code from the host indicating the success of batch settlemen00
HostResponseMessage Message from the host confirming the settlement statusBATCH SETTLED
isValidTPN Indicates whether the TPN is validtrue
message Overall message or outcome of the batch processBatch settled successfully

Snippet code

settleReq = {“type”:”SETTLE”, “applicationType”:”DVPAYLITE”} InvokeApp.intentApplication.setSettlementListener(object :
 
SettlementListener {
 
override fun onSettlementFailed(p0: JSONObject) {
 
//Settlement failed json data
 
}
 
override fun onSettlementSuccess(p0: JSONObject) {
 
//Settlement success json data
 
}
 
})
 
InvokeApp.intentApplication.settleBatch(settleReq, InvokeApp.activityResultLauncher)

Tip Adjust API

Tip Adjustment allows users to modify the tip amount on a transaction before the batch is settled and sent to the processor. This API is used to perform a tip adjustment on a sale transaction.

Note: Tip adjust is allowed only for credit transactions by processors. It is not allowed for any other transactions.

Request Parameters:

FieldDescriptionSample
Type Transaction type [TIP ADJUST]TIP ADJUST
Amount Transaction Amount of original sale base transaction10.00
Tip Transaction Tip Amount1.00
Application type The application type is used to identify the application.DVPAYLITE
refId Transaction reference id of original sale transaction1234567890

Response Details:

Same as Perform Transaction API

Snippet code

jsonRequest = {“type”:”TIP ADJUST”, “amount”:”10.00”, “tip”:”1.00”, “applicationType”:”DVPAYLITE”, “refId”:”1234567890”}
 
InvokeApp.intentApplication.setTransactionListener(object : TransactionListener {
 
override fun onApplicationLaunched(result: JSONObject?) {
 
//application launched success json data
 
}
 
override fun onApplicationLaunchFailed(errorResult: JSONObject) {
 
//application launched failed json data
 
}
 
override fun onTransactionSuccess(transactionResult: JSONObject?) {
 
//Transaction Success json data
 
}
 
override fun onTransactionFailed(errorResult: JSONObject) {
 
//Transaction Failed json data
 
}
 
})
 
InvokeApp.intentApplication.performTipAdjust(jsonRequest, InvokeApp.activityResultLauncher)

Get TPN API

This API is used to retrieve a terminal’s TPN.

Request Parameters:

FieldDescriptionSample
applicationType Application type is used to identify the application.DVPAYLITE

Response Details

FieldDescriptionExample
message Application type is used to identify the application.DvPayLiteTPN
TPN Terminal Profile Number (unique identifier for the terminal)132423805864

Snippet code

jsonRequest = {“applicationType”:”DVPAYLITE”}
 
InvokeApp.intentApplication.setGetTPNListener(object : GetTPNListener {
 
override fun onApplicationLaunched(response: JSONObject?) {
 
//application launched success json data
 
}
 
override fun onApplicationLaunchFailed(response: JSONObject?) {
 
//application launched failed json data
 
}
 
override fun onGetTPN(response: JSONObject?) {
 
//Success json data
 
}
 
override fun onTPNFailed(response: JSONObject?) {
 
// Failed json data
}
})
 
InvokeApp.intentApplication.getTPN(jsonRequest, activityResultLauncher)

Device detail API

This API is used to obtain details of the device.

Request Parameters:

FieldDescriptionSample
applicationType Application type is used to identify the application.DVPAYLITE

Response Details

FieldDescriptionExample
model Model of the deviceP3
manufacture Manufacturer of the deviceKozen
sNo Serial number of the deviceB1791E1XL8080062
TPN Terminal Profile Number (unique identifier for the terminal)132423805864
respCode Response code indicating the outcome of the request00
respMessage Message corresponding to the response codeSuccess

Snippet code

jsonRequest = {“applicationType”:”DVPAYLITE”}
 
InvokeApp.intentApplication.setGetDeviceListener(object : GetDeviceListener {
 
override fun onApplicationLaunched(response: JSONObject?) {
 
//application launched success json data
 
}
 
override fun onApplicationLaunchFailed(response: JSONObject?) {
 
//application launched failed json data
 
}
 
override fun onGetDevice(p0: JSONObject?) {
 
// Success json data
 
}
 
override fun onGetDeviceFailed(p0: JSONObject?) {
 
// Failure json data
 
}
 
})
 
InvokeApp.intentApplication.getDevice(jsonRequest, activityResultLauncher)

Status Check API

This API is used to get the current transaction status.

Request Parameters:

FieldDescriptionSample
refId Transaction reference id of original sale transaction1234567890
type Type of the transaction [STATUS]STATUS
applicationType Application type is used to identify the application.DVPAYLITE

Response Details

Same as Perform Transaction API

Snippet code

jsonRequest = {“type”:” STATUS”, “applicationType”:”DVPAYLITE”,“refId”:”1234567890”}
 
InvokeApp.intentApplication.setTransactionListener(object :TransactionListener {
 
override fun onApplicationLaunched(result: JSONObject?) {
 
//application launched success json data
 
}
 
override fun onApplicationLaunchFailed(errorResult: JSONObject) {
 
//application launched failed json data
 
}
 
override fun onTransactionSuccess(transactionResult: JSONObject?) {
 
//Transaction Success json data
 
}
 
override fun onTransactionFailed(errorResult: JSONObject) {
 
//Transaction Failed json data
 
}
 
})
 
InvokeApp.intentApplication.performTransaction (jsonRequest, activityResultLauncher)

Administrative Txn API

The Administrative Txn API allows you to retrieve card numbers.

For this to work, administrative transaction type must be enabled from S.T.E.A.MEdit Parameters-> Under Transaction tab

For this to work, administrative transaction type to be enabled in STEAM ->edit parameters -> Under transaction tab

Request Parameters:

FieldDescriptionSample
type Type of the transaction [ADMINISTRATIVE_TXN]ADMINISTRATIVE_TXN
applicationType The application type is used to identify the applicationDVPAYLITE

Snippet code

jsonRequest = {“type”:” ADMINISTRATIVE_TXN”, “applicationType”:”DVPAYLITE”}
 
InvokeApp.intentApplication.setTransactionListener(object :TransactionListener {
 
 
            override fun onApplicationLaunched(result: JSONObject?) {
                //application launched success json data  
            }
 
            override fun onApplicationLaunchFailed(errorResult: JSONObject) {
                //application launched failed json data
            }
 
            override fun onTransactionSuccess(transactionResult: JSONObject?) {
                //Transaction Success json data           
            }
 
            override fun onTransactionFailed(errorResult: JSONObject) {
                //Transaction Failed json data             
            }
        })
 
     InvokeApp.intentApplication.performTransaction (jsonRequest, activityResultLauncher)

Sample Source Code


Go Live Requirements

Following are the Go Live Activities:

  • Set up production terminal with DvPayLite app
  • Replace Production environment SDK versions in the application build gradle.

3rd party app installation in terminals

  • All the 3rd party apps integrating with DvPayLite deep-linking will be hosted in our market application which will come as default app in the firmware provided in the production terminal. To host the application in the market app, we require the below details.
  1. APK that should be hosted.
  2. Package name of application
  3. App name to display
  4. App icon to display
  • Once the application is hosted in a market app, the app can be downloaded from there in terminals and also can be updated by hosting newer applications. This can be tested on test environments and can be uploaded for production environments.

Help

Email us directly at devsupport@denovosystem.com with any questions or suggestions.