diff --git a/src/main/java/io/craftgate/adapter/BankAccountTrackingAdapter.java b/src/main/java/io/craftgate/adapter/BankAccountTrackingAdapter.java index d62d2c44..e741f78d 100644 --- a/src/main/java/io/craftgate/adapter/BankAccountTrackingAdapter.java +++ b/src/main/java/io/craftgate/adapter/BankAccountTrackingAdapter.java @@ -16,11 +16,11 @@ public BankAccountTrackingAdapter(RequestOptions requestOptions) { public BankAccountTrackingRecordListResponse searchRecords(SearchBankAccountTrackingRecordsRequest request) { String query = RequestQueryParamsBuilder.buildQueryParam(request); String path = "/bank-account-tracking/v1/merchant-bank-account-trackings/records" + query; - return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), BankAccountTrackingRecordListResponse.class); + return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), BankAccountTrackingRecordListResponse.class); } public BankAccountTrackingRecordResponse retrieveRecord(Long id) { String path = "/bank-account-tracking/v1/merchant-bank-account-trackings/records/" + id; - return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), BankAccountTrackingRecordResponse.class); + return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), BankAccountTrackingRecordResponse.class); } } \ No newline at end of file diff --git a/src/main/java/io/craftgate/adapter/BaseAdapter.java b/src/main/java/io/craftgate/adapter/BaseAdapter.java index 7b3e1852..9f3bb89f 100644 --- a/src/main/java/io/craftgate/adapter/BaseAdapter.java +++ b/src/main/java/io/craftgate/adapter/BaseAdapter.java @@ -1,6 +1,7 @@ package io.craftgate.adapter; import io.craftgate.request.common.HashGenerator; +import io.craftgate.request.common.RequestContext; import io.craftgate.request.common.RequestOptions; import java.util.HashMap; @@ -18,6 +19,7 @@ public abstract class BaseAdapter { private static final String CLIENT_VERSION_HEADER_NAME = "x-client-version"; private static final String SIGNATURE_HEADER_NAME = "x-signature"; private static final String LANGUAGE_HEADER_NAME = "lang"; + private static final String IDEMPOTENCY_KEY = "x-idempotency-key"; protected final RequestOptions requestOptions; @@ -25,30 +27,41 @@ protected BaseAdapter(RequestOptions requestOptions) { this.requestOptions = requestOptions; } - protected Map createHeaders(Object request, String path, RequestOptions requestOptions) { - return createHttpHeaders(request, path, requestOptions); + protected Map createHeaders(Object request, String path) { + return createHttpHeaders(request, path, null); } - protected Map createHeaders(String path, RequestOptions requestOptions) { - return createHttpHeaders(null, path, requestOptions); + protected Map createHeaders(Object request, String path, RequestContext requestContext) { + return createHttpHeaders(request, path, requestContext); } - private static Map createHttpHeaders(Object request, String path, RequestOptions options) { + protected Map createHeaders(String path) { + return createHttpHeaders(null, path, null); + } + + protected Map createHeaders(String path, RequestContext requestContext) { + return createHttpHeaders(null, path, requestContext); + } + + private Map createHttpHeaders(Object request, String path, RequestContext requestContext) { Map headers = new HashMap<>(); String randomString = UUID.randomUUID().toString(); - headers.put(API_KEY_HEADER_NAME, options.getApiKey()); + headers.put(API_KEY_HEADER_NAME, requestOptions.getApiKey()); headers.put(RANDOM_HEADER_NAME, randomString); headers.put(AUTH_VERSION_HEADER_NAME, API_VERSION_HEADER_VALUE); headers.put(CLIENT_VERSION_HEADER_NAME, CLIENT_VERSION_HEADER_VALUE + ":1.0.79"); - headers.put(SIGNATURE_HEADER_NAME, prepareAuthorizationString(request, path, randomString, options)); - if (Objects.nonNull(options.getLanguage())) { - headers.put(LANGUAGE_HEADER_NAME, options.getLanguage()); + headers.put(SIGNATURE_HEADER_NAME, prepareAuthorizationString(request, path, randomString)); + if (Objects.nonNull(requestOptions.getLanguage())) { + headers.put(LANGUAGE_HEADER_NAME, requestOptions.getLanguage()); + } + if (Objects.nonNull(requestContext) && Objects.nonNull(requestContext.getIdempotencyKey())) { + headers.put(IDEMPOTENCY_KEY, requestContext.getIdempotencyKey()); } return headers; } - private static String prepareAuthorizationString(Object request, String path, String randomString, RequestOptions options) { - return HashGenerator.generateHash(options.getBaseUrl(), options.getApiKey(), options.getSecretKey(), randomString, request, path); + private String prepareAuthorizationString(Object request, String path, String randomString) { + return HashGenerator.generateHash(requestOptions.getBaseUrl(), requestOptions.getApiKey(), requestOptions.getSecretKey(), randomString, request, path); } } diff --git a/src/main/java/io/craftgate/adapter/BkmExpressPaymentAdapter.java b/src/main/java/io/craftgate/adapter/BkmExpressPaymentAdapter.java index e6cf7eb4..9c0c4e8a 100644 --- a/src/main/java/io/craftgate/adapter/BkmExpressPaymentAdapter.java +++ b/src/main/java/io/craftgate/adapter/BkmExpressPaymentAdapter.java @@ -1,9 +1,12 @@ package io.craftgate.adapter; import io.craftgate.net.HttpClient; -import io.craftgate.request.*; +import io.craftgate.request.CompleteBkmExpressRequest; +import io.craftgate.request.InitBkmExpressRequest; +import io.craftgate.request.common.RequestContext; import io.craftgate.request.common.RequestOptions; -import io.craftgate.response.*; +import io.craftgate.response.InitBkmExpressResponse; +import io.craftgate.response.PaymentResponse; public class BkmExpressPaymentAdapter extends BaseAdapter { @@ -12,24 +15,32 @@ public BkmExpressPaymentAdapter(RequestOptions requestOptions) { } public InitBkmExpressResponse init(InitBkmExpressRequest initBkmExpressRequest) { + return init(initBkmExpressRequest, null); + } + + public InitBkmExpressResponse init(InitBkmExpressRequest initBkmExpressRequest, RequestContext requestContext) { String path = "/payment/v1/bkm-express/init"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initBkmExpressRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initBkmExpressRequest, path, requestContext), initBkmExpressRequest, InitBkmExpressResponse.class); } public PaymentResponse complete(CompleteBkmExpressRequest completeRequest) { + return complete(completeRequest, null); + } + + public PaymentResponse complete(CompleteBkmExpressRequest completeRequest, RequestContext requestContext) { String path = "/payment/v1/bkm-express/complete"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(completeRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(completeRequest, path, requestContext), completeRequest, PaymentResponse.class); } public PaymentResponse retrievePayment(String ticketId) { String path = "/payment/v1/bkm-express/payments/" + ticketId; - return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), PaymentResponse.class); + return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), PaymentResponse.class); } public PaymentResponse retrievePaymentByToken(String token) { String path = "/payment/v1/bkm-express/" + token; - return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), PaymentResponse.class); + return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), PaymentResponse.class); } -} \ No newline at end of file +} diff --git a/src/main/java/io/craftgate/adapter/FileReportingAdapter.java b/src/main/java/io/craftgate/adapter/FileReportingAdapter.java index 9e000655..10321307 100644 --- a/src/main/java/io/craftgate/adapter/FileReportingAdapter.java +++ b/src/main/java/io/craftgate/adapter/FileReportingAdapter.java @@ -5,6 +5,7 @@ import io.craftgate.request.RetrieveDailyPaymentReportRequest; import io.craftgate.request.RetrieveDailyTransactionReportRequest; import io.craftgate.request.RetrieveReportRequest; +import io.craftgate.request.common.RequestContext; import io.craftgate.request.common.RequestOptions; import io.craftgate.request.common.RequestQueryParamsBuilder; import io.craftgate.response.ReportDemandResponse; @@ -23,7 +24,7 @@ public FileReportingAdapter(RequestOptions requestOptions) { public byte[] retrieveDailyTransactionReport(RetrieveDailyTransactionReportRequest retrieveDailyTransactionReportRequest) { String query = RequestQueryParamsBuilder.buildQueryParam(retrieveDailyTransactionReportRequest); String path = "/file-reporting/v1/transaction-reports" + query; - Map headers = createHeaders(path, requestOptions); + Map headers = createHeaders(path); headers.put(CONTENT_TYPE, APPLICATION_OCTET_STREAM); return HttpClient.get(requestOptions.getBaseUrl() + path, headers, byte[].class); } @@ -31,14 +32,18 @@ public byte[] retrieveDailyTransactionReport(RetrieveDailyTransactionReportReque public byte[] retrieveDailyPaymentReport(RetrieveDailyPaymentReportRequest retrieveDailyPaymentReportRequest) { String query = RequestQueryParamsBuilder.buildQueryParam(retrieveDailyPaymentReportRequest); String path = "/file-reporting/v1/payment-reports" + query; - Map headers = createHeaders(path, requestOptions); + Map headers = createHeaders(path); headers.put(CONTENT_TYPE, APPLICATION_OCTET_STREAM); return HttpClient.get(requestOptions.getBaseUrl() + path, headers, byte[].class); } public ReportDemandResponse createReport(CreateReportRequest request) { + return createReport(request, null); + } + + public ReportDemandResponse createReport(CreateReportRequest request, RequestContext requestContext) { String path = "/file-reporting/v1/report-demands"; - Map headers = createHeaders(request, path, requestOptions); + Map headers = createHeaders(request, path, requestContext); return HttpClient.post(requestOptions.getBaseUrl() + path, headers, request, @@ -48,7 +53,7 @@ public ReportDemandResponse createReport(CreateReportRequest request) { public byte[] retrieveReport(RetrieveReportRequest retrieveReportRequest, Long reportId) { String query = RequestQueryParamsBuilder.buildQueryParam(retrieveReportRequest); String path = "/file-reporting/v1/reports/" + reportId + query; - Map headers = createHeaders(path, requestOptions); + Map headers = createHeaders(path); headers.put(CONTENT_TYPE, APPLICATION_OCTET_STREAM); return HttpClient.get(requestOptions.getBaseUrl() + path, headers, byte[].class); } diff --git a/src/main/java/io/craftgate/adapter/FraudAdapter.java b/src/main/java/io/craftgate/adapter/FraudAdapter.java index 5fc61d9d..7508dce0 100644 --- a/src/main/java/io/craftgate/adapter/FraudAdapter.java +++ b/src/main/java/io/craftgate/adapter/FraudAdapter.java @@ -4,6 +4,7 @@ import io.craftgate.model.FraudValueType; import io.craftgate.net.HttpClient; import io.craftgate.request.*; +import io.craftgate.request.common.RequestContext; import io.craftgate.request.common.RequestOptions; import io.craftgate.request.common.RequestQueryParamsBuilder; import io.craftgate.response.FraudAllValueListsResponse; @@ -20,24 +21,24 @@ public FraudAdapter(RequestOptions requestOptions) { public FraudCheckListResponse searchFraudChecks(SearchFraudChecksRequest searchFraudChecksRequest) { String query = RequestQueryParamsBuilder.buildQueryParam(searchFraudChecksRequest); String path = "/fraud/v1/fraud-checks" + query; - return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), FraudCheckListResponse.class); + return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), FraudCheckListResponse.class); } public void updateFraudCheckStatus(Long id, FraudCheckStatus fraudCheckStatus) { String path = "/fraud/v1/fraud-checks/" + id + "/check-status"; UpdateFraudCheckRequest updateFraudCheckRequest = UpdateFraudCheckRequest.builder().checkStatus(fraudCheckStatus).build(); - HttpClient.put(requestOptions.getBaseUrl() + path, createHeaders(updateFraudCheckRequest, path, requestOptions), + HttpClient.put(requestOptions.getBaseUrl() + path, createHeaders(updateFraudCheckRequest, path), updateFraudCheckRequest, Void.class); } public FraudAllValueListsResponse retrieveAllValueLists() { String path = "/fraud/v1/value-lists/all"; - return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), FraudAllValueListsResponse.class); + return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), FraudAllValueListsResponse.class); } public FraudValueListResponse retrieveValueList(String listName) { String path = "/fraud/v1/value-lists/" + listName; - return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), FraudValueListResponse.class); + return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), FraudValueListResponse.class); } public void createValueList(String listName, FraudValueType type) { @@ -46,31 +47,46 @@ public void createValueList(String listName, FraudValueType type) { } public void deleteValueList(String listName) { - String path = "/fraud/v1/value-lists/" + listName; + deleteValueList(listName, null); + } - HttpClient.delete(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions)); + public void deleteValueList(String listName, RequestContext requestContext) { + String path = "/fraud/v1/value-lists/" + listName; + HttpClient.delete(requestOptions.getBaseUrl() + path, createHeaders(path, requestContext)); } public void addValueToValueList(FraudValueListRequest fraudValueListRequest) { + addValueToValueList(fraudValueListRequest, null); + } + + public void addValueToValueList(FraudValueListRequest fraudValueListRequest, RequestContext requestContext) { String path = "/fraud/v1/value-lists"; - HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(fraudValueListRequest, path, requestOptions), + HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(fraudValueListRequest, path, requestContext), fraudValueListRequest, Void.class); } public void addCardFingerprint(AddCardFingerprintFraudValueListRequest request, String listName) { - String path = "/fraud/v1/value-lists/"+ listName + "/card-fingerprints"; - HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(request, path, requestOptions), + addCardFingerprint(request, listName, null); + } + + public void addCardFingerprint(AddCardFingerprintFraudValueListRequest request, String listName, RequestContext requestContext) { + String path = "/fraud/v1/value-lists/" + listName + "/card-fingerprints"; + HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(request, path, requestContext), request, Void.class); } public void removeValueFromValueList(String listName, String valueId) { + removeValueFromValueList(listName, valueId, null); + } + + public void removeValueFromValueList(String listName, String valueId, RequestContext requestContext) { String path = "/fraud/v1/value-lists/" + listName + "/values/" + valueId; - HttpClient.delete(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions)); + HttpClient.delete(requestOptions.getBaseUrl() + path, createHeaders(path, requestContext)); } public FraudRuleListResponse searchRules(SearchFraudRuleRequest searchFraudRuleRequest) { String query = RequestQueryParamsBuilder.buildQueryParam(searchFraudRuleRequest); String path = "/fraud/v1/rules" + query; - return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), FraudRuleListResponse.class); + return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), FraudRuleListResponse.class); } } diff --git a/src/main/java/io/craftgate/adapter/InstallmentAdapter.java b/src/main/java/io/craftgate/adapter/InstallmentAdapter.java index 404d17d6..bc6e61ad 100644 --- a/src/main/java/io/craftgate/adapter/InstallmentAdapter.java +++ b/src/main/java/io/craftgate/adapter/InstallmentAdapter.java @@ -16,11 +16,11 @@ public InstallmentAdapter(RequestOptions requestOptions) { public InstallmentListResponse searchInstallments(SearchInstallmentsRequest searchInstallmentsRequest) { String query = RequestQueryParamsBuilder.buildQueryParam(searchInstallmentsRequest); String path = "/installment/v1/installments" + query; - return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), InstallmentListResponse.class); + return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), InstallmentListResponse.class); } public BinNumberResponse retrieveBinNumber(String binNumber) { String path = "/installment/v1/bins/" + binNumber; - return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), BinNumberResponse.class); + return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), BinNumberResponse.class); } } diff --git a/src/main/java/io/craftgate/adapter/JuzdanPaymentAdapter.java b/src/main/java/io/craftgate/adapter/JuzdanPaymentAdapter.java index b77e00a7..594f0564 100644 --- a/src/main/java/io/craftgate/adapter/JuzdanPaymentAdapter.java +++ b/src/main/java/io/craftgate/adapter/JuzdanPaymentAdapter.java @@ -1,9 +1,11 @@ package io.craftgate.adapter; import io.craftgate.net.HttpClient; -import io.craftgate.request.*; +import io.craftgate.request.InitJuzdanPaymentRequest; +import io.craftgate.request.common.RequestContext; import io.craftgate.request.common.RequestOptions; -import io.craftgate.response.*; +import io.craftgate.response.InitJuzdanPaymentResponse; +import io.craftgate.response.PaymentResponse; public class JuzdanPaymentAdapter extends BaseAdapter { @@ -12,14 +14,17 @@ public JuzdanPaymentAdapter(RequestOptions requestOptions) { } public InitJuzdanPaymentResponse init(InitJuzdanPaymentRequest initJuzdanPaymentRequest) { + return init(initJuzdanPaymentRequest, null); + } + + public InitJuzdanPaymentResponse init(InitJuzdanPaymentRequest initJuzdanPaymentRequest, RequestContext requestContext) { String path = "/payment/v1/juzdan-payments/init"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initJuzdanPaymentRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initJuzdanPaymentRequest, path, requestContext), initJuzdanPaymentRequest, InitJuzdanPaymentResponse.class); } public PaymentResponse retrieve(String referenceId) { String path = "/payment/v1/juzdan-payments/" + referenceId; - return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), PaymentResponse.class); + return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), PaymentResponse.class); } - -} \ No newline at end of file +} diff --git a/src/main/java/io/craftgate/adapter/MasterpassPaymentAdapter.java b/src/main/java/io/craftgate/adapter/MasterpassPaymentAdapter.java index 383743ef..2d593ac1 100644 --- a/src/main/java/io/craftgate/adapter/MasterpassPaymentAdapter.java +++ b/src/main/java/io/craftgate/adapter/MasterpassPaymentAdapter.java @@ -2,6 +2,7 @@ import io.craftgate.net.HttpClient; import io.craftgate.request.*; +import io.craftgate.request.common.RequestContext; import io.craftgate.request.common.RequestOptions; import io.craftgate.response.*; @@ -12,39 +13,62 @@ public MasterpassPaymentAdapter(RequestOptions requestOptions) { } public CheckMasterpassUserResponse checkMasterpassUser(CheckMasterpassUserRequest checkMasterpassUserRequest) { + return checkMasterpassUser(checkMasterpassUserRequest, null); + } + + public CheckMasterpassUserResponse checkMasterpassUser(CheckMasterpassUserRequest checkMasterpassUserRequest, RequestContext requestContext) { String path = "/payment/v1/masterpass-payments/check-user"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(checkMasterpassUserRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(checkMasterpassUserRequest, path, requestContext), checkMasterpassUserRequest, CheckMasterpassUserResponse.class); } public MasterpassPaymentTokenGenerateResponse generateMasterpassPaymentToken(MasterpassPaymentTokenGenerateRequest masterpassPaymentTokenGenerateRequest) { + return generateMasterpassPaymentToken(masterpassPaymentTokenGenerateRequest, null); + } + + public MasterpassPaymentTokenGenerateResponse generateMasterpassPaymentToken(MasterpassPaymentTokenGenerateRequest masterpassPaymentTokenGenerateRequest, RequestContext requestContext) { String path = "/payment/v2/masterpass-payments/generate-token"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(masterpassPaymentTokenGenerateRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(masterpassPaymentTokenGenerateRequest, path, requestContext), masterpassPaymentTokenGenerateRequest, MasterpassPaymentTokenGenerateResponse.class); } public PaymentResponse completeMasterpassPayment(MasterpassPaymentCompleteRequest masterpassPaymentCompleteRequest) { + return completeMasterpassPayment(masterpassPaymentCompleteRequest, null); + } + + public PaymentResponse completeMasterpassPayment(MasterpassPaymentCompleteRequest masterpassPaymentCompleteRequest, RequestContext requestContext) { String path = "/payment/v2/masterpass-payments/complete"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(masterpassPaymentCompleteRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(masterpassPaymentCompleteRequest, path, requestContext), masterpassPaymentCompleteRequest, PaymentResponse.class); } public MasterpassPaymentThreeDSInitResponse init3DSMasterpassPayment(MasterpassPaymentThreeDSInitRequest masterpassPaymentThreeDSInitRequest) { + return init3DSMasterpassPayment(masterpassPaymentThreeDSInitRequest, null); + } + + public MasterpassPaymentThreeDSInitResponse init3DSMasterpassPayment(MasterpassPaymentThreeDSInitRequest masterpassPaymentThreeDSInitRequest, RequestContext requestContext) { String path = "/payment/v2/masterpass-payments/3ds-init"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(masterpassPaymentThreeDSInitRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(masterpassPaymentThreeDSInitRequest, path, requestContext), masterpassPaymentThreeDSInitRequest, MasterpassPaymentThreeDSInitResponse.class); } public PaymentResponse complete3DSMasterpassPayment(MasterpassPaymentThreeDSCompleteRequest masterpassPaymentThreeDSCompleteRequest) { + return complete3DSMasterpassPayment(masterpassPaymentThreeDSCompleteRequest, null); + } + + public PaymentResponse complete3DSMasterpassPayment(MasterpassPaymentThreeDSCompleteRequest masterpassPaymentThreeDSCompleteRequest, RequestContext requestContext) { String path = "/payment/v2/masterpass-payments/3ds-complete"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(masterpassPaymentThreeDSCompleteRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(masterpassPaymentThreeDSCompleteRequest, path, requestContext), masterpassPaymentThreeDSCompleteRequest, PaymentResponse.class); } public RetrieveLoyaltiesResponse retrieveLoyalties(MasterpassRetrieveLoyaltiesRequest masterpassRetrieveLoyaltiesRequest) { + return retrieveLoyalties(masterpassRetrieveLoyaltiesRequest, null); + } + + public RetrieveLoyaltiesResponse retrieveLoyalties(MasterpassRetrieveLoyaltiesRequest masterpassRetrieveLoyaltiesRequest, RequestContext requestContext) { String path = "/payment/v2/masterpass-payments/loyalties/retrieve"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(masterpassRetrieveLoyaltiesRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(masterpassRetrieveLoyaltiesRequest, path, requestContext), masterpassRetrieveLoyaltiesRequest, RetrieveLoyaltiesResponse.class); } - -} \ No newline at end of file +} diff --git a/src/main/java/io/craftgate/adapter/MealVoucherCardTokenizationAdapter.java b/src/main/java/io/craftgate/adapter/MealVoucherCardTokenizationAdapter.java index 68325fb9..ba3e3b66 100644 --- a/src/main/java/io/craftgate/adapter/MealVoucherCardTokenizationAdapter.java +++ b/src/main/java/io/craftgate/adapter/MealVoucherCardTokenizationAdapter.java @@ -2,6 +2,7 @@ import io.craftgate.net.HttpClient; import io.craftgate.request.MealVoucherCardTokenizationInitRequest; +import io.craftgate.request.common.RequestContext; import io.craftgate.request.common.RequestOptions; import io.craftgate.response.MealVoucherCardTokenizationInitResponse; @@ -12,8 +13,12 @@ public MealVoucherCardTokenizationAdapter(RequestOptions requestOptions) { } public MealVoucherCardTokenizationInitResponse cardTokenizationInit(MealVoucherCardTokenizationInitRequest mealVoucherCardTokenizationInitRequest) { + return cardTokenizationInit(mealVoucherCardTokenizationInitRequest, null); + } + + public MealVoucherCardTokenizationInitResponse cardTokenizationInit(MealVoucherCardTokenizationInitRequest mealVoucherCardTokenizationInitRequest, RequestContext requestContext) { String path = "/payment/v1/meal-voucher/card-tokenizations/init"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(mealVoucherCardTokenizationInitRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(mealVoucherCardTokenizationInitRequest, path, requestContext), mealVoucherCardTokenizationInitRequest, MealVoucherCardTokenizationInitResponse.class); } } \ No newline at end of file diff --git a/src/main/java/io/craftgate/adapter/MerchantAdapter.java b/src/main/java/io/craftgate/adapter/MerchantAdapter.java index 90750463..bb80b124 100644 --- a/src/main/java/io/craftgate/adapter/MerchantAdapter.java +++ b/src/main/java/io/craftgate/adapter/MerchantAdapter.java @@ -6,6 +6,7 @@ import io.craftgate.request.SearchMerchantPosRequest; import io.craftgate.request.UpdateMerchantPosCommissionsRequest; import io.craftgate.request.UpdateMerchantPosRequest; +import io.craftgate.request.common.RequestContext; import io.craftgate.request.common.RequestOptions; import io.craftgate.request.common.RequestQueryParamsBuilder; import io.craftgate.response.MerchantPosCommissionListResponse; @@ -19,47 +20,60 @@ public MerchantAdapter(RequestOptions requestOptions) { } public MerchantPosResponse createMerchantPos(CreateMerchantPosRequest createMerchantPosRequest) { + return createMerchantPos(createMerchantPosRequest, null); + } + + public MerchantPosResponse createMerchantPos(CreateMerchantPosRequest createMerchantPosRequest, RequestContext requestContext) { String path = "/merchant/v1/merchant-poses"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(createMerchantPosRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(createMerchantPosRequest, path, requestContext), createMerchantPosRequest, MerchantPosResponse.class); } public MerchantPosResponse updateMerchantPos(Long merchantPosId, UpdateMerchantPosRequest updateMerchantPosRequest) { String path = "/merchant/v1/merchant-poses/" + merchantPosId; - return HttpClient.put(requestOptions.getBaseUrl() + path, createHeaders(updateMerchantPosRequest, path, requestOptions), + return HttpClient.put(requestOptions.getBaseUrl() + path, createHeaders(updateMerchantPosRequest, path), updateMerchantPosRequest, MerchantPosResponse.class); } public void updateMerchantPosStatus(Long merchantPosId, PosStatus posStatus) { String path = "/merchant/v1/merchant-poses/" + merchantPosId + "/status/" + posStatus.name(); - HttpClient.put(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), Void.class); + HttpClient.put(requestOptions.getBaseUrl() + path, createHeaders(path), Void.class); } public MerchantPosListResponse searchMerchantPos(SearchMerchantPosRequest searchMerchantPosRequest) { String query = RequestQueryParamsBuilder.buildQueryParam(searchMerchantPosRequest); String path = "/merchant/v1/merchant-poses" + query; - return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), MerchantPosListResponse.class); + return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), MerchantPosListResponse.class); } public MerchantPosResponse retrieve(Long merchantPosId) { String path = "/merchant/v1/merchant-poses/" + merchantPosId; - return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), MerchantPosResponse.class); + return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), MerchantPosResponse.class); } public void deleteMerchantPos(Long merchantPosId) { + deleteMerchantPos(merchantPosId, null); + } + + public void deleteMerchantPos(Long merchantPosId, RequestContext requestContext) { String path = "/merchant/v1/merchant-poses/" + merchantPosId; - HttpClient.delete(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions)); + HttpClient.delete(requestOptions.getBaseUrl() + path, createHeaders(path, requestContext)); } public MerchantPosCommissionListResponse retrieveMerchantPosCommissions(Long merchantPosId) { String path = "/merchant/v1/merchant-poses/" + merchantPosId + "/commissions"; - return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), MerchantPosCommissionListResponse.class); + return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), MerchantPosCommissionListResponse.class); } + /* * This endpoint using for creating and updating merchant pos commissions. The HTTP method is POST due to this requirement. * */ public MerchantPosCommissionListResponse updateMerchantPosCommissions(Long merchantPosId, UpdateMerchantPosCommissionsRequest updateMerchantPosCommissionsRequest) { + return updateMerchantPosCommissions(merchantPosId, updateMerchantPosCommissionsRequest, null); + } + + public MerchantPosCommissionListResponse updateMerchantPosCommissions(Long merchantPosId, UpdateMerchantPosCommissionsRequest updateMerchantPosCommissionsRequest, RequestContext requestContext) { String path = "/merchant/v1/merchant-poses/" + merchantPosId + "/commissions"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(updateMerchantPosCommissionsRequest, path, requestOptions), updateMerchantPosCommissionsRequest, MerchantPosCommissionListResponse.class); + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(updateMerchantPosCommissionsRequest, path, requestContext), updateMerchantPosCommissionsRequest, MerchantPosCommissionListResponse.class); } -} \ No newline at end of file +} diff --git a/src/main/java/io/craftgate/adapter/MerchantApmAdapter.java b/src/main/java/io/craftgate/adapter/MerchantApmAdapter.java index 8c549186..698639e3 100644 --- a/src/main/java/io/craftgate/adapter/MerchantApmAdapter.java +++ b/src/main/java/io/craftgate/adapter/MerchantApmAdapter.java @@ -12,7 +12,7 @@ public MerchantApmAdapter(RequestOptions requestOptions) { public MerchantApmListResponse retrieveApms() { String path = "/merchant/v1/merchant-apms"; - return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), MerchantApmListResponse.class); + return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), MerchantApmListResponse.class); } } \ No newline at end of file diff --git a/src/main/java/io/craftgate/adapter/OnboardingAdapter.java b/src/main/java/io/craftgate/adapter/OnboardingAdapter.java index 94077adb..89ed6f94 100644 --- a/src/main/java/io/craftgate/adapter/OnboardingAdapter.java +++ b/src/main/java/io/craftgate/adapter/OnboardingAdapter.java @@ -5,6 +5,7 @@ import io.craftgate.request.CreateMerchantRequest; import io.craftgate.request.SearchMembersRequest; import io.craftgate.request.UpdateMemberRequest; +import io.craftgate.request.common.RequestContext; import io.craftgate.request.common.RequestOptions; import io.craftgate.request.common.RequestQueryParamsBuilder; import io.craftgate.response.CreateMerchantResponse; @@ -18,30 +19,38 @@ public OnboardingAdapter(RequestOptions requestOptions) { } public MemberResponse createMember(CreateMemberRequest createMemberRequest) { + return createMember(createMemberRequest, null); + } + + public MemberResponse createMember(CreateMemberRequest createMemberRequest, RequestContext requestContext) { String path = "/onboarding/v1/members"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(createMemberRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(createMemberRequest, path, requestContext), createMemberRequest, MemberResponse.class); } public MemberResponse updateMember(Long id, UpdateMemberRequest updateMemberRequest) { String path = "/onboarding/v1/members/" + id; - return HttpClient.put(requestOptions.getBaseUrl() + path, createHeaders(updateMemberRequest, path, requestOptions), + return HttpClient.put(requestOptions.getBaseUrl() + path, createHeaders(updateMemberRequest, path), updateMemberRequest, MemberResponse.class); } public MemberResponse retrieveMember(Long id) { String path = "/onboarding/v1/members/" + id; - return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), MemberResponse.class); + return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), MemberResponse.class); } public MemberListResponse searchMembers(SearchMembersRequest searchMembersRequest) { String query = RequestQueryParamsBuilder.buildQueryParam(searchMembersRequest); String path = "/onboarding/v1/members" + query; - return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), MemberListResponse.class); + return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), MemberListResponse.class); } public CreateMerchantResponse createMerchant(CreateMerchantRequest createMerchantRequest) { + return createMerchant(createMerchantRequest, null); + } + + public CreateMerchantResponse createMerchant(CreateMerchantRequest createMerchantRequest, RequestContext requestContext) { String path = "/onboarding/v1/merchants"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(createMerchantRequest, path, requestOptions), createMerchantRequest, CreateMerchantResponse.class); + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(createMerchantRequest, path, requestContext), createMerchantRequest, CreateMerchantResponse.class); } } diff --git a/src/main/java/io/craftgate/adapter/PayByLinkAdapter.java b/src/main/java/io/craftgate/adapter/PayByLinkAdapter.java index e08f0729..843cfbe7 100644 --- a/src/main/java/io/craftgate/adapter/PayByLinkAdapter.java +++ b/src/main/java/io/craftgate/adapter/PayByLinkAdapter.java @@ -4,6 +4,7 @@ import io.craftgate.request.CreateProductRequest; import io.craftgate.request.SearchProductsRequest; import io.craftgate.request.UpdateProductRequest; +import io.craftgate.request.common.RequestContext; import io.craftgate.request.common.RequestOptions; import io.craftgate.request.common.RequestQueryParamsBuilder; import io.craftgate.response.ProductListResponse; @@ -16,30 +17,38 @@ public PayByLinkAdapter(RequestOptions requestOptions) { } public ProductResponse createProduct(CreateProductRequest createProductRequest) { + return createProduct(createProductRequest, null); + } + + public ProductResponse createProduct(CreateProductRequest createProductRequest, RequestContext requestContext) { String path = "/craftlink/v1/products"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(createProductRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(createProductRequest, path, requestContext), createProductRequest, ProductResponse.class); } public ProductResponse updateProduct(Long id, UpdateProductRequest updateProductRequest) { String path = "/craftlink/v1/products/" + id; - return HttpClient.put(requestOptions.getBaseUrl() + path, createHeaders(updateProductRequest, path, requestOptions), + return HttpClient.put(requestOptions.getBaseUrl() + path, createHeaders(updateProductRequest, path), updateProductRequest, ProductResponse.class); } public ProductResponse retrieveProduct(Long id) { String path = "/craftlink/v1/products/" + id; - return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), ProductResponse.class); + return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), ProductResponse.class); } public void deleteProduct(Long id) { + deleteProduct(id, null); + } + + public void deleteProduct(Long id, RequestContext requestContext) { String path = "/craftlink/v1/products/" + id; - HttpClient.delete(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions)); + HttpClient.delete(requestOptions.getBaseUrl() + path, createHeaders(path, requestContext)); } public ProductListResponse searchProducts(SearchProductsRequest searchProductsRequest) { String query = RequestQueryParamsBuilder.buildQueryParam(searchProductsRequest); String path = "/craftlink/v1/products" + query; - return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), ProductListResponse.class); + return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), ProductListResponse.class); } } diff --git a/src/main/java/io/craftgate/adapter/PaymentAdapter.java b/src/main/java/io/craftgate/adapter/PaymentAdapter.java index ca85fe14..ed274e81 100644 --- a/src/main/java/io/craftgate/adapter/PaymentAdapter.java +++ b/src/main/java/io/craftgate/adapter/PaymentAdapter.java @@ -3,6 +3,7 @@ import io.craftgate.net.HttpClient; import io.craftgate.request.*; import io.craftgate.request.common.HashGenerator; +import io.craftgate.request.common.RequestContext; import io.craftgate.request.common.RequestOptions; import io.craftgate.request.common.RequestQueryParamsBuilder; import io.craftgate.response.*; @@ -16,290 +17,451 @@ public PaymentAdapter(RequestOptions requestOptions) { } public PaymentResponse createPayment(CreatePaymentRequest createPaymentRequest) { + return createPayment(createPaymentRequest, null); + } + + public PaymentResponse createPayment(CreatePaymentRequest createPaymentRequest, RequestContext requestContext) { String path = "/payment/v1/card-payments"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(createPaymentRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(createPaymentRequest, path, requestContext), createPaymentRequest, PaymentResponse.class); } public PaymentResponse retrievePayment(Long id) { String path = "/payment/v1/card-payments/" + id; - return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), PaymentResponse.class); + return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), PaymentResponse.class); } public InitThreeDSPaymentResponse init3DSPayment(InitThreeDSPaymentRequest initThreeDSPaymentRequest) { + return init3DSPayment(initThreeDSPaymentRequest, null); + } + + public InitThreeDSPaymentResponse init3DSPayment(InitThreeDSPaymentRequest initThreeDSPaymentRequest, RequestContext requestContext) { String path = "/payment/v1/card-payments/3ds-init"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initThreeDSPaymentRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initThreeDSPaymentRequest, path, requestContext), initThreeDSPaymentRequest, InitThreeDSPaymentResponse.class); } public PaymentResponse complete3DSPayment(CompleteThreeDSPaymentRequest completeThreeDSPaymentRequest) { + return complete3DSPayment(completeThreeDSPaymentRequest, null); + } + + public PaymentResponse complete3DSPayment(CompleteThreeDSPaymentRequest completeThreeDSPaymentRequest, RequestContext requestContext) { String path = "/payment/v1/card-payments/3ds-complete"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(completeThreeDSPaymentRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(completeThreeDSPaymentRequest, path, requestContext), completeThreeDSPaymentRequest, PaymentResponse.class); } public PaymentResponse postAuthPayment(long paymentId, PostAuthPaymentRequest postAuthPaymentRequest) { + return postAuthPayment(paymentId, postAuthPaymentRequest, null); + } + + public PaymentResponse postAuthPayment(long paymentId, PostAuthPaymentRequest postAuthPaymentRequest, RequestContext requestContext) { String path = "/payment/v1/card-payments/" + paymentId + "/post-auth"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(postAuthPaymentRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(postAuthPaymentRequest, path, requestContext), postAuthPaymentRequest, PaymentResponse.class); } public InitCheckoutPaymentResponse initCheckoutPayment(InitCheckoutPaymentRequest initCheckoutPaymentRequest) { + return initCheckoutPayment(initCheckoutPaymentRequest, null); + } + + public InitCheckoutPaymentResponse initCheckoutPayment(InitCheckoutPaymentRequest initCheckoutPaymentRequest, RequestContext requestContext) { String path = "/payment/v1/checkout-payments/init"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initCheckoutPaymentRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initCheckoutPaymentRequest, path, requestContext), initCheckoutPaymentRequest, InitCheckoutPaymentResponse.class); } public InitCheckoutCardVerifyResponse initCheckoutCardVerify(InitCheckoutCardVerifyRequest initCheckoutCardVerifyRequest) { + return initCheckoutCardVerify(initCheckoutCardVerifyRequest, null); + } + + public InitCheckoutCardVerifyResponse initCheckoutCardVerify(InitCheckoutCardVerifyRequest initCheckoutCardVerifyRequest, RequestContext requestContext) { String path = "/payment/v1/checkout-card-verify/init"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initCheckoutCardVerifyRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initCheckoutCardVerifyRequest, path, requestContext), initCheckoutCardVerifyRequest, InitCheckoutCardVerifyResponse.class); } public RetrieveCheckoutCardVerifyResponse retrieveCheckoutCardVerify(String token) { String path = "/payment/v1/checkout-card-verify/" + token; - return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), RetrieveCheckoutCardVerifyResponse.class); + return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), RetrieveCheckoutCardVerifyResponse.class); } public PaymentResponse retrieveCheckoutPayment(String token) { String path = "/payment/v1/checkout-payments/" + token; - return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), PaymentResponse.class); + return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), PaymentResponse.class); } + public void expireCheckoutPayment(String token) { + expireCheckoutPayment(token, null); + } + + public void expireCheckoutPayment(String token, RequestContext requestContext) { String path = "/payment/v1/checkout-payments/" + token; - HttpClient.delete(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions)); + HttpClient.delete(requestOptions.getBaseUrl() + path, createHeaders(path, requestContext)); } public DepositPaymentResponse createDepositPayment(CreateDepositPaymentRequest createDepositPaymentRequest) { + return createDepositPayment(createDepositPaymentRequest, null); + } + + public DepositPaymentResponse createDepositPayment(CreateDepositPaymentRequest createDepositPaymentRequest, RequestContext requestContext) { String path = "/payment/v1/deposits"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(createDepositPaymentRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(createDepositPaymentRequest, path, requestContext), createDepositPaymentRequest, DepositPaymentResponse.class); } public InitThreeDSPaymentResponse init3DSDepositPayment(CreateDepositPaymentRequest createDepositPaymentRequest) { + return init3DSDepositPayment(createDepositPaymentRequest, null); + } + + public InitThreeDSPaymentResponse init3DSDepositPayment(CreateDepositPaymentRequest createDepositPaymentRequest, RequestContext requestContext) { String path = "/payment/v1/deposits/3ds-init"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(createDepositPaymentRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(createDepositPaymentRequest, path, requestContext), createDepositPaymentRequest, InitThreeDSPaymentResponse.class); } public DepositPaymentResponse complete3DSDepositPayment(CompleteThreeDSPaymentRequest completeThreeDSPaymentRequest) { + return complete3DSDepositPayment(completeThreeDSPaymentRequest, null); + } + + public DepositPaymentResponse complete3DSDepositPayment(CompleteThreeDSPaymentRequest completeThreeDSPaymentRequest, RequestContext requestContext) { String path = "/payment/v1/deposits/3ds-complete"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(completeThreeDSPaymentRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(completeThreeDSPaymentRequest, path, requestContext), completeThreeDSPaymentRequest, DepositPaymentResponse.class); } public FundTransferDepositPaymentResponse createFundTransferDepositPayment(CreateFundTransferDepositPaymentRequest createFundTransferDepositPaymentRequest) { + return createFundTransferDepositPayment(createFundTransferDepositPaymentRequest, null); + } + + public FundTransferDepositPaymentResponse createFundTransferDepositPayment(CreateFundTransferDepositPaymentRequest createFundTransferDepositPaymentRequest, RequestContext requestContext) { String path = "/payment/v1/deposits/fund-transfer"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(createFundTransferDepositPaymentRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(createFundTransferDepositPaymentRequest, path, requestContext), createFundTransferDepositPaymentRequest, FundTransferDepositPaymentResponse.class); } public ApmDepositPaymentResponse initApmDepositPayment(InitApmDepositPaymentRequest initApmDepositPaymentRequest) { + return initApmDepositPayment(initApmDepositPaymentRequest, null); + } + + public ApmDepositPaymentResponse initApmDepositPayment(InitApmDepositPaymentRequest initApmDepositPaymentRequest, RequestContext requestContext) { String path = "/payment/v1/deposits/apm-init"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initApmDepositPaymentRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initApmDepositPaymentRequest, path, requestContext), initApmDepositPaymentRequest, ApmDepositPaymentResponse.class); } public InitGarantiPayPaymentResponse initGarantiPayPayment(InitGarantiPayPaymentRequest initGarantiPayPaymentRequest) { + return initGarantiPayPayment(initGarantiPayPaymentRequest, null); + } + + public InitGarantiPayPaymentResponse initGarantiPayPayment(InitGarantiPayPaymentRequest initGarantiPayPaymentRequest, RequestContext requestContext) { String path = "/payment/v1/garanti-pay-payments"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initGarantiPayPaymentRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initGarantiPayPaymentRequest, path, requestContext), initGarantiPayPaymentRequest, InitGarantiPayPaymentResponse.class); } public ApmPaymentInitResponse initApmPayment(InitApmPaymentRequest request) { + return initApmPayment(request, null); + } + + public ApmPaymentInitResponse initApmPayment(InitApmPaymentRequest request, RequestContext requestContext) { String path = "/payment/v1/apm-payments/init"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(request, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(request, path, requestContext), request, ApmPaymentInitResponse.class); } public ApmPaymentCompleteResponse completeApmPayment(CompleteApmPaymentRequest request) { + return completeApmPayment(request, null); + } + + public ApmPaymentCompleteResponse completeApmPayment(CompleteApmPaymentRequest request, RequestContext requestContext) { String path = "/payment/v1/apm-payments/complete"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(request, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(request, path, requestContext), request, ApmPaymentCompleteResponse.class); } public PaymentResponse createApmPayment(CreateApmPaymentRequest request) { + return createApmPayment(request, null); + } + + public PaymentResponse createApmPayment(CreateApmPaymentRequest request, RequestContext requestContext) { String path = "/payment/v1/apm-payments"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(request, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(request, path, requestContext), request, PaymentResponse.class); } public InitPosApmPaymentResponse initPosApmPayment(InitPosApmPaymentRequest request) { + return initPosApmPayment(request, null); + } + + public InitPosApmPaymentResponse initPosApmPayment(InitPosApmPaymentRequest request, RequestContext requestContext) { String path = "/payment/v1/pos-apm-payments/init"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(request, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(request, path, requestContext), request, InitPosApmPaymentResponse.class); } public PaymentResponse completePosApmPayment(CompletePosApmPaymentRequest request) { + return completePosApmPayment(request, null); + } + + public PaymentResponse completePosApmPayment(CompletePosApmPaymentRequest request, RequestContext requestContext) { String path = "/payment/v1/pos-apm-payments/complete"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(request, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(request, path, requestContext), request, PaymentResponse.class); } public RetrieveLoyaltiesResponse retrieveLoyalties(RetrieveLoyaltiesRequest retrieveLoyaltiesRequest) { + return retrieveLoyalties(retrieveLoyaltiesRequest, null); + } + + public RetrieveLoyaltiesResponse retrieveLoyalties(RetrieveLoyaltiesRequest retrieveLoyaltiesRequest, RequestContext requestContext) { String path = "/payment/v1/card-loyalties/retrieve"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(retrieveLoyaltiesRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(retrieveLoyaltiesRequest, path, requestContext), retrieveLoyaltiesRequest, RetrieveLoyaltiesResponse.class); } public PaymentTransactionRefundResponse refundPaymentTransaction(RefundPaymentTransactionRequest refundPaymentTransactionRequest) { + return refundPaymentTransaction(refundPaymentTransactionRequest, null); + } + + public PaymentTransactionRefundResponse refundPaymentTransaction(RefundPaymentTransactionRequest refundPaymentTransactionRequest, RequestContext requestContext) { String path = "/payment/v1/refund-transactions"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(refundPaymentTransactionRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(refundPaymentTransactionRequest, path, requestContext), refundPaymentTransactionRequest, PaymentTransactionRefundResponse.class); } public PaymentTransactionRefundResponse retrievePaymentTransactionRefund(Long id) { String path = "/payment/v1/refund-transactions/" + id; - return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), PaymentTransactionRefundResponse.class); + return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), PaymentTransactionRefundResponse.class); } public PaymentTransactionRefundResponse refundPaymentTransactionMarkAsRefunded(RefundPaymentTransactionMarkAsRefundedRequest refundPaymentTransactionMarkAsRefundedRequest) { + return refundPaymentTransactionMarkAsRefunded(refundPaymentTransactionMarkAsRefundedRequest, null); + } + + public PaymentTransactionRefundResponse refundPaymentTransactionMarkAsRefunded(RefundPaymentTransactionMarkAsRefundedRequest refundPaymentTransactionMarkAsRefundedRequest, RequestContext requestContext) { String path = "/payment/v1/refund-transactions/mark-as-refunded"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(refundPaymentTransactionMarkAsRefundedRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(refundPaymentTransactionMarkAsRefundedRequest, path, requestContext), refundPaymentTransactionMarkAsRefundedRequest, PaymentTransactionRefundResponse.class); } public PaymentTransactionRefundListResponse refundPaymentMarkAsRefunded(RefundPaymentRequest refundPaymentRequest) { + return refundPaymentMarkAsRefunded(refundPaymentRequest, null); + } + + public PaymentTransactionRefundListResponse refundPaymentMarkAsRefunded(RefundPaymentRequest refundPaymentRequest, RequestContext requestContext) { String path = "/payment/v1/refunds/mark-as-refunded"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(refundPaymentRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(refundPaymentRequest, path, requestContext), refundPaymentRequest, PaymentTransactionRefundListResponse.class); } public PaymentRefundResponse refundPayment(RefundPaymentRequest refundPaymentRequest) { + return refundPayment(refundPaymentRequest, null); + } + + public PaymentRefundResponse refundPayment(RefundPaymentRequest refundPaymentRequest, RequestContext requestContext) { String path = "/payment/v1/refunds"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(refundPaymentRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(refundPaymentRequest, path, requestContext), refundPaymentRequest, PaymentRefundResponse.class); } public RefundWaitingPaymentResponse refundWaitingPayment(RefundWaitingPaymentRequest refundWaitingPaymentRequest) { + return refundWaitingPayment(refundWaitingPaymentRequest, null); + } + + public RefundWaitingPaymentResponse refundWaitingPayment(RefundWaitingPaymentRequest refundWaitingPaymentRequest, RequestContext requestContext) { String path = "/payment/v1/refunds/refund-waiting-payment"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(refundWaitingPaymentRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(refundWaitingPaymentRequest, path, requestContext), refundWaitingPaymentRequest, RefundWaitingPaymentResponse.class); } public PaymentRefundResponse retrievePaymentRefund(Long id) { String path = "/payment/v1/refunds/" + id; - return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), PaymentRefundResponse.class); + return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), PaymentRefundResponse.class); } public StoredCardResponse storeCard(StoreCardRequest storeCardRequest) { + return storeCard(storeCardRequest, null); + } + + public StoredCardResponse storeCard(StoreCardRequest storeCardRequest, RequestContext requestContext) { String path = "/payment/v1/cards"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(storeCardRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(storeCardRequest, path, requestContext), storeCardRequest, StoredCardResponse.class); } public StoredCardResponse updateCard(UpdateCardRequest updateCardRequest) { + return updateCard(updateCardRequest, null); + } + + public StoredCardResponse updateCard(UpdateCardRequest updateCardRequest, RequestContext requestContext) { String path = "/payment/v1/cards/update"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(updateCardRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(updateCardRequest, path, requestContext), updateCardRequest, StoredCardResponse.class); } public StoredCardResponse cloneCard(CloneCardRequest cloneCardRequest) { + return cloneCard(cloneCardRequest, null); + } + + public StoredCardResponse cloneCard(CloneCardRequest cloneCardRequest, RequestContext requestContext) { String path = "/payment/v1/cards/clone"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(cloneCardRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(cloneCardRequest, path, requestContext), cloneCardRequest, StoredCardResponse.class); } public StoredCardListResponse searchStoredCards(SearchStoredCardsRequest searchStoredCardsRequest) { String query = RequestQueryParamsBuilder.buildQueryParam(searchStoredCardsRequest); String path = "/payment/v1/cards" + query; - return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), StoredCardListResponse.class); + return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), StoredCardListResponse.class); } public void deleteStoredCard(DeleteStoredCardRequest deleteStoredCardRequest) { + deleteStoredCard(deleteStoredCardRequest, null); + } + + public void deleteStoredCard(DeleteStoredCardRequest deleteStoredCardRequest, RequestContext requestContext) { String path = "/payment/v1/cards/delete"; - HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(deleteStoredCardRequest, path, requestOptions), + HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(deleteStoredCardRequest, path, requestContext), deleteStoredCardRequest, Void.class); } public VerifyCardResponse verifyCard(VerifyCardRequest verifyCardRequest) { + return verifyCard(verifyCardRequest, null); + } + + public VerifyCardResponse verifyCard(VerifyCardRequest verifyCardRequest, RequestContext requestContext) { String path = "/payment/v1/cards/verify"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(verifyCardRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(verifyCardRequest, path, requestContext), verifyCardRequest, VerifyCardResponse.class); } public PaymentTransactionApprovalListResponse approvePaymentTransactions(ApprovePaymentTransactionsRequest approvePaymentTransactionsRequest) { + return approvePaymentTransactions(approvePaymentTransactionsRequest, null); + } + + public PaymentTransactionApprovalListResponse approvePaymentTransactions(ApprovePaymentTransactionsRequest approvePaymentTransactionsRequest, RequestContext requestContext) { String path = "/payment/v1/payment-transactions/approve"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(approvePaymentTransactionsRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(approvePaymentTransactionsRequest, path, requestContext), approvePaymentTransactionsRequest, PaymentTransactionApprovalListResponse.class); } public PaymentTransactionApprovalListResponse disapprovePaymentTransactions(DisapprovePaymentTransactionsRequest disapprovePaymentTransactionsRequest) { + return disapprovePaymentTransactions(disapprovePaymentTransactionsRequest, null); + } + + public PaymentTransactionApprovalListResponse disapprovePaymentTransactions(DisapprovePaymentTransactionsRequest disapprovePaymentTransactionsRequest, RequestContext requestContext) { String path = "/payment/v1/payment-transactions/disapprove"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(disapprovePaymentTransactionsRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(disapprovePaymentTransactionsRequest, path, requestContext), disapprovePaymentTransactionsRequest, PaymentTransactionApprovalListResponse.class); } public PaymentTransactionResponse updatePaymentTransaction(UpdatePaymentTransactionRequest updatePaymentTransactionRequest) { String path = "/payment/v1/payment-transactions/" + updatePaymentTransactionRequest.getPaymentTransactionId(); - return HttpClient.put(requestOptions.getBaseUrl() + path, createHeaders(updatePaymentTransactionRequest, path, requestOptions), + return HttpClient.put(requestOptions.getBaseUrl() + path, createHeaders(updatePaymentTransactionRequest, path), updatePaymentTransactionRequest, PaymentTransactionResponse.class); } public Object createApplePayMerchantSession(ApplePayMerchantSessionCreateRequest applePayMerchantSessionCreateRequest) { + return createApplePayMerchantSession(applePayMerchantSessionCreateRequest, null); + } + + public Object createApplePayMerchantSession(ApplePayMerchantSessionCreateRequest applePayMerchantSessionCreateRequest, RequestContext requestContext) { String path = "/payment/v1/apple-pay/merchant-sessions"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(applePayMerchantSessionCreateRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(applePayMerchantSessionCreateRequest, path, requestContext), applePayMerchantSessionCreateRequest, Object.class); } public BnplPaymentOfferResponse retrieveBnplPaymentOffers(BnplPaymentOfferRequest bnplPaymentOfferRequest) { + return retrieveBnplPaymentOffers(bnplPaymentOfferRequest, null); + } + + public BnplPaymentOfferResponse retrieveBnplPaymentOffers(BnplPaymentOfferRequest bnplPaymentOfferRequest, RequestContext requestContext) { String path = "/payment/v1/bnpl-payments/offers"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(bnplPaymentOfferRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(bnplPaymentOfferRequest, path, requestContext), bnplPaymentOfferRequest, BnplPaymentOfferResponse.class); } public InitBnplPaymentResponse initBnplPayment(InitBnplPaymentRequest initBnplPaymentRequest) { + return initBnplPayment(initBnplPaymentRequest, null); + } + + public InitBnplPaymentResponse initBnplPayment(InitBnplPaymentRequest initBnplPaymentRequest, RequestContext requestContext) { String path = "/payment/v1/bnpl-payments/init"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initBnplPaymentRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initBnplPaymentRequest, path, requestContext), initBnplPaymentRequest, InitBnplPaymentResponse.class); } public PaymentResponse approveBnplPayment(Long paymentId) { + return approveBnplPayment(paymentId, null); + } + + public PaymentResponse approveBnplPayment(Long paymentId, RequestContext requestContext) { String path = "/payment/v1/bnpl-payments/" + paymentId + "/approve"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), PaymentResponse.class); + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(path, requestContext), PaymentResponse.class); } public BnplPaymentVerifyResponse verifyBnplPayment(Long paymentId) { + return verifyBnplPayment(paymentId, null); + } + + public BnplPaymentVerifyResponse verifyBnplPayment(Long paymentId, RequestContext requestContext) { String path = "/payment/v1/bnpl-payments/" + paymentId + "/verify"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), BnplPaymentVerifyResponse.class); + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(path, requestContext), BnplPaymentVerifyResponse.class); } public BnplLimitInquiryResponse bnplLimitInquiryInit(BnplLimitInquiryRequest bnplLimitInquiryRequest) { + return bnplLimitInquiryInit(bnplLimitInquiryRequest, null); + } + + public BnplLimitInquiryResponse bnplLimitInquiryInit(BnplLimitInquiryRequest bnplLimitInquiryRequest, RequestContext requestContext) { String path = "/payment/v1/bnpl-payments/limit-inquiry/init"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(bnplLimitInquiryRequest, path, requestOptions), BnplLimitInquiryResponse.class); + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(bnplLimitInquiryRequest, path, requestContext), BnplLimitInquiryResponse.class); } public BnplLimitInquiryResponse bnplLimitInquiry(BnplLimitInquiryRequest bnplLimitInquiryRequest) { + return bnplLimitInquiry(bnplLimitInquiryRequest, null); + } + + public BnplLimitInquiryResponse bnplLimitInquiry(BnplLimitInquiryRequest bnplLimitInquiryRequest, RequestContext requestContext) { String path = "/payment/v1/bnpl-payments/limit-inquiry"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(bnplLimitInquiryRequest, path, requestOptions), BnplLimitInquiryResponse.class); + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(bnplLimitInquiryRequest, path, requestContext), BnplLimitInquiryResponse.class); } public InstantTransferBanksResponse retrieveActiveBanks() { String path = "/payment/v1/instant-transfer-banks"; - return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), + return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), InstantTransferBanksResponse.class); } public InitMultiPaymentResponse initMultiPayment(InitMultiPaymentRequest initMultiPaymentRequest) { + return initMultiPayment(initMultiPaymentRequest, null); + } + + public InitMultiPaymentResponse initMultiPayment(InitMultiPaymentRequest initMultiPaymentRequest, RequestContext requestContext) { String path = "/payment/v1/multi-payments/init"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initMultiPaymentRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initMultiPaymentRequest, path, requestContext), initMultiPaymentRequest, InitMultiPaymentResponse.class); } public MultiPaymentResponse retrieveMultiPayment(String token) { String path = "/payment/v1/multi-payments/" + token; - return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), MultiPaymentResponse.class); + return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), MultiPaymentResponse.class); } public StoredCardListResponse retrieveProviderCards(RetrieveProviderCardRequest retrieveProviderCardRequest) { String query = RequestQueryParamsBuilder.buildQueryParam(retrieveProviderCardRequest); String path = "/payment/v1/cards/provider-card-mappings" + query; - return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), StoredCardListResponse.class); + return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path), StoredCardListResponse.class); } public CreateDepositToCardPaymentResponse depositToCard(CreateDepositToCardRequest createDepositToCardRequest) { + return depositToCard(createDepositToCardRequest, null); + } + + public CreateDepositToCardPaymentResponse depositToCard(CreateDepositToCardRequest createDepositToCardRequest, RequestContext requestContext) { String path = "/payment/v1/card-payments/deposit-to-card"; - return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(createDepositToCardRequest, path, requestOptions), + return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(createDepositToCardRequest, path, requestContext), createDepositToCardRequest, CreateDepositToCardPaymentResponse.class); } @@ -322,4 +484,4 @@ public boolean is3DSecureCallbackVerified(String threeDSecureCallbackKey, Map