# registerPlugin

Call the **registerPlugin** API to register SPI extension functions.

## Method Signature

```java
void registerPlugin(Class<T> clazz, T instance);
```

## Request parameters

| **Item** | **Type** | **Description** | **Required** |
| --- | --- | --- | --- |
| [clazz](#TOWNv) | Class<T> | Extension functions to inject. | Required |
| instance | T | Corresponding instance. | Required |

### Available functions for clazz injection:

| **Item** | **Description** |
| --- | --- |
| [NFCRequestProxy](nfc_request_proxy) | Proxy network requests. |
| [TransactionPermit](transaction_permit) | Transaction authentication. |
| [ConfigProxy](config_proxy) | Proxy configurations. Enables the integrating party to customize configuration delivery and modify internal SDK implementation through multiple remote configuration projects. |
| [LoggerProxy](logger_proxy) | Manages log output. Enables the integrator party to customize log printing to access internal SDK log output. |
| [NFCMonitor](nfc_monitor) | Monitors the events which are triggered inside the SDK. |
| [ThreadPoolService](thread_pool_service) | Implements and manages your own thread pool. |
| [DeviceFingerprintService](device_finger_print_service) | Enables the SDK to request device fingerprints from the MPP. |
| [EncryptionProxy](encryption_proxy) | Proxy used for encryption and decryption. |
| [StorageService](storage_service) | Service for data storage in shared preferences. |

## Response parameters

N/A

## Sample

```java
manager = ACTapManager.getInstance(this.getApplication()).isPaymentAvailable();
manager.registerPlugin(LoggerProxy.class, new CustomLogger());
```