> For the complete documentation index, see [llms.txt](https://docs.payments.thalescloud.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.payments.thalescloud.io/nfc-payment/implement-nfc-payment/make-payment/manage-payment-authentication/use-issuer-application-authentication.md).

# Use issuer application authentication

### Overview

In this model, the issuer application manages Android device authentication during payment.

Use this model when the issuer application must fully control the authentication UX.

{% hint style="warning" %}
Even if the authentication screan is managed by the issuer application, NFC Payment still relies oevice screen lock authentiction method (biomertric or device keyguard).
{% endhint %}

### Flow

Implement `ContactlessTransactionListener::onAuthenticationRequired()`.

The issuer application can use device credentials, biometric authentication, or another supported Android device authentication method.

When authentication succeeds, call `ContactlessTransactionListener::onDelegatedDeviceAuthenticationSucceeded(timeOfAuth)` as soon as possible.

Pass the authentication timestamp in milliseconds.

If the end user cancels the authentication step, call `ContactlessTransactionListener::onDelegatedDeviceAuthenticationCancelled()`.

### SDK

{% tabs %}
{% tab title="Android Java" %}

```java
ContactlessTransactionListener paymentCallback = new ContactlessTransactionListener() {
    @Override
    public void onAuthenticationRequired(@NonNull VerificationMethod method) {
        // The issuer application manages Android device authentication.

        // If authentication succeeds, provide the authentication timestamp.
        // Call this API as soon as possible so the end user still has enough
        // time to perform the second tap.
        D1PayConfigParams.getInstance()
            .getContactlessTransactionListener()
            .onDelegatedDeviceAuthenticationSucceeded(System.currentTimeMillis());

        // If the end user cancels authentication, cancel the transaction.
        D1PayConfigParams.getInstance()
            .getContactlessTransactionListener()
            .onDelegatedDeviceAuthenticationCancelled();
    }

    // ...
};

// Register the contactless transaction callback.
D1PayConfigParams configParams = D1PayConfigParams.getInstance();
configParams.setContactlessTransactionListener(paymentCallback);
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.payments.thalescloud.io/nfc-payment/implement-nfc-payment/make-payment/manage-payment-authentication/use-issuer-application-authentication.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
