class RemotePaymentInitiationService implements PaymentInitiationService {

    @Override
    public Response<String> getPaymentInitiationStatusAsString(PaymentService paymentService,
                                                               PaymentProduct paymentProduct,
                                                               String paymentId,
                                                               RequestHeaders requestHeaders,
                                                               RequestParams requestParams) {
        ResponseEntity<Object> responseEntity = client.getPaymentInitiationStatus(
            paymentService,
            paymentProduct,
            paymentId,
            requestParams.toMap(),
            requestHeaders.toMap());
        try {
            String responseObject = objectMapper.writeValueAsString(responseEntity.getBody());
            return new Response<>(responseEntity.getStatusCodeValue(), responseObject, responseHeadersMapper.getHeaders(responseEntity.getHeaders()));
        } catch (JsonProcessingException e) {
            log.error("Failed to convert the response body into a string", e);
        }
        return new Response<>(responseEntity.getStatusCodeValue(), "{}", responseHeadersMapper.getHeaders(responseEntity.getHeaders()));
    }

    public  RemotePaymentInitiationService(PaymentInitiationClient paymentInitiationClient);
    public  RemotePaymentInitiationService(PaymentInitiationClient paymentInitiationClient, ObjectMapper objectMapper);

}