The second constructor for ApiClient should call the default constructor. If you use the second constructor:
public ApiClient(MerchantConfig merchantConfig) {
this.merchantConfig = merchantConfig;
}
you then error out because things like httpClient and json aren't being initialized (NullPointerExceptions).