├── .gitattributes ├── .github └── workflows │ ├── craftgate-build.yml │ └── craftgate-release.yml ├── .gitignore ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── build.gradle ├── craftgate.gpg.enc ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── settings.gradle └── src ├── main └── java │ └── io │ └── craftgate │ ├── Craftgate.java │ ├── adapter │ ├── BankAccountTrackingAdapter.java │ ├── BaseAdapter.java │ ├── BkmExpressPaymentAdapter.java │ ├── FileReportingAdapter.java │ ├── FraudAdapter.java │ ├── HookAdapter.java │ ├── InstallmentAdapter.java │ ├── JuzdanPaymentAdapter.java │ ├── MasterpassPaymentAdapter.java │ ├── MerchantAdapter.java │ ├── OnboardingAdapter.java │ ├── PayByLinkAdapter.java │ ├── PaymentAdapter.java │ ├── PaymentReportingAdapter.java │ ├── PaymentTokenAdapter.java │ ├── SettlementAdapter.java │ ├── SettlementReportingAdapter.java │ └── WalletAdapter.java │ ├── exception │ └── CraftgateException.java │ ├── model │ ├── AccountOwner.java │ ├── AdditionalAction.java │ ├── ApmAdditionalAction.java │ ├── ApmType.java │ ├── ApprovalStatus.java │ ├── AutopilotState.java │ ├── BankAccountTrackingSource.java │ ├── BnplCartItemType.java │ ├── BounceStatus.java │ ├── CardAssociation.java │ ├── CardBrand.java │ ├── CardExpiryStatus.java │ ├── CardProvider.java │ ├── CardType.java │ ├── Currency.java │ ├── FileStatus.java │ ├── FraudAction.java │ ├── FraudCheckStatus.java │ ├── FraudValue.java │ ├── FraudValueType.java │ ├── Loyalty.java │ ├── LoyaltyData.java │ ├── LoyaltyParams.java │ ├── LoyaltyType.java │ ├── MasterpassValidationType.java │ ├── MemberType.java │ ├── MerchantType.java │ ├── MultiPaymentStatus.java │ ├── PaymentAuthenticationType.java │ ├── PaymentGroup.java │ ├── PaymentMethod.java │ ├── PaymentPhase.java │ ├── PaymentProvider.java │ ├── PaymentRefundStatus.java │ ├── PaymentSource.java │ ├── PaymentStatus.java │ ├── PaymentType.java │ ├── PayoutAccountType.java │ ├── PosApmPaymentProvider.java │ ├── PosIntegrator.java │ ├── PosOperationType.java │ ├── PosStatus.java │ ├── PosUserType.java │ ├── RecordType.java │ ├── RefundDestinationType.java │ ├── RefundStatus.java │ ├── RefundType.java │ ├── RemittanceReasonType.java │ ├── RemittanceType.java │ ├── ReportFileType.java │ ├── Reward.java │ ├── SettlementEarningsDestination.java │ ├── SettlementResultStatus.java │ ├── SettlementSource.java │ ├── SettlementType.java │ ├── Status.java │ ├── TokenizedCardType.java │ ├── TransactionPayoutStatus.java │ ├── TransactionStatus.java │ ├── WalletTransactionRefundCardTransactionType.java │ ├── WalletTransactionType.java │ ├── WebhookData.java │ ├── WebhookEventType.java │ └── WebhookStatus.java │ ├── net │ ├── HttpClient.java │ └── HttpMethod.java │ ├── request │ ├── ApplePayMerchantSessionCreateRequest.java │ ├── ApprovePaymentTransactionsRequest.java │ ├── BnplPaymentOfferRequest.java │ ├── CheckMasterpassUserRequest.java │ ├── CloneCardRequest.java │ ├── CompleteApmPaymentRequest.java │ ├── CompleteBkmExpressRequest.java │ ├── CompletePosApmPaymentRequest.java │ ├── CompleteThreeDSPaymentRequest.java │ ├── CreateApmPaymentRequest.java │ ├── CreateDepositPaymentRequest.java │ ├── CreateFundTransferDepositPaymentRequest.java │ ├── CreateInstantWalletSettlementRequest.java │ ├── CreateMemberRequest.java │ ├── CreateMerchantPosRequest.java │ ├── CreateMerchantRequest.java │ ├── CreatePaymentRequest.java │ ├── CreatePaymentTokenRequest.java │ ├── CreatePayoutAccountRequest.java │ ├── CreateProductRequest.java │ ├── CreateRemittanceRequest.java │ ├── CreateWalletRequest.java │ ├── CreateWithdrawRequest.java │ ├── DeleteStoredCardRequest.java │ ├── DisapprovePaymentTransactionsRequest.java │ ├── FraudValueListRequest.java │ ├── InitApmDepositPaymentRequest.java │ ├── InitApmPaymentRequest.java │ ├── InitBkmExpressRequest.java │ ├── InitBnplPaymentRequest.java │ ├── InitCheckoutPaymentRequest.java │ ├── InitGarantiPayPaymentRequest.java │ ├── InitJuzdanPaymentRequest.java │ ├── InitPosApmPaymentRequest.java │ ├── InitThreeDSPaymentRequest.java │ ├── MasterpassPaymentCompleteRequest.java │ ├── MasterpassPaymentThreeDSCompleteRequest.java │ ├── MasterpassPaymentThreeDSInitRequest.java │ ├── MasterpassPaymentTokenGenerateRequest.java │ ├── MasterpassRetrieveLoyaltiesRequest.java │ ├── PostAuthPaymentRequest.java │ ├── RefundPaymentRequest.java │ ├── RefundPaymentTransactionMarkAsRefundedRequest.java │ ├── RefundPaymentTransactionRequest.java │ ├── RefundWalletTransactionToCardRequest.java │ ├── ResetMerchantMemberWalletBalanceRequest.java │ ├── RetrieveDailyPaymentReportRequest.java │ ├── RetrieveDailyTransactionReportRequest.java │ ├── RetrieveLoyaltiesRequest.java │ ├── RetrieveProviderCardRequest.java │ ├── SearchBankAccountTrackingRecordsRequest.java │ ├── SearchFraudChecksRequest.java │ ├── SearchInstallmentsRequest.java │ ├── SearchMembersRequest.java │ ├── SearchMerchantPosRequest.java │ ├── SearchPaymentRefundsRequest.java │ ├── SearchPaymentTransactionRefundsRequest.java │ ├── SearchPaymentsRequest.java │ ├── SearchPayoutAccountRequest.java │ ├── SearchPayoutBouncedTransactionsRequest.java │ ├── SearchPayoutCompletedTransactionsRequest.java │ ├── SearchPayoutRowsRequest.java │ ├── SearchProductsRequest.java │ ├── SearchStoredCardsRequest.java │ ├── SearchWalletTransactionsRequest.java │ ├── SearchWithdrawsRequest.java │ ├── StoreCardRequest.java │ ├── UpdateCardRequest.java │ ├── UpdateFraudCheckRequest.java │ ├── UpdateMemberRequest.java │ ├── UpdateMerchantPosCommissionsRequest.java │ ├── UpdateMerchantPosRequest.java │ ├── UpdatePaymentTransactionRequest.java │ ├── UpdatePayoutAccountRequest.java │ ├── UpdateProductRequest.java │ ├── UpdateWalletRequest.java │ ├── common │ │ ├── HashGenerator.java │ │ ├── RequestOptions.java │ │ └── RequestQueryParamsBuilder.java │ └── dto │ │ ├── BnplPaymentCartItem.java │ │ ├── Card.java │ │ ├── CreateMerchantPosUser.java │ │ ├── CustomInstallment.java │ │ ├── FraudCheckParameters.java │ │ ├── FraudPaymentData.java │ │ ├── GarantiPayInstallment.java │ │ ├── MasterpassCreatePayment.java │ │ ├── PaymentItem.java │ │ ├── PosApmInstallment.java │ │ ├── TokenizedCard.java │ │ ├── UpdateMerchantPosCommission.java │ │ └── UpdateMerchantPosUser.java │ └── response │ ├── ApmDepositPaymentResponse.java │ ├── ApmPaymentCompleteResponse.java │ ├── ApmPaymentInitResponse.java │ ├── BankAccountTrackingRecordListResponse.java │ ├── BankAccountTrackingRecordResponse.java │ ├── BinNumberResponse.java │ ├── BnplPaymentOfferResponse.java │ ├── BnplPaymentVerifyResponse.java │ ├── CheckMasterpassUserResponse.java │ ├── CreateMerchantResponse.java │ ├── DepositPaymentResponse.java │ ├── FraudAllValueListsResponse.java │ ├── FraudCheckListResponse.java │ ├── FraudValueListResponse.java │ ├── FundTransferDepositPaymentResponse.java │ ├── InitBkmExpressResponse.java │ ├── InitBnplPaymentResponse.java │ ├── InitCheckoutPaymentResponse.java │ ├── InitGarantiPayPaymentResponse.java │ ├── InitJuzdanPaymentResponse.java │ ├── InitPosApmPaymentResponse.java │ ├── InitThreeDSPaymentResponse.java │ ├── InstallmentListResponse.java │ ├── InstantTransferBank.java │ ├── InstantTransferBanksResponse.java │ ├── MasterpassPaymentThreeDSInitResponse.java │ ├── MasterpassPaymentTokenGenerateResponse.java │ ├── MemberListResponse.java │ ├── MemberResponse.java │ ├── MerchantPosCommissionListResponse.java │ ├── MerchantPosCommissionResponse.java │ ├── MerchantPosListResponse.java │ ├── MerchantPosResponse.java │ ├── MultiPaymentResponse.java │ ├── PaymentRefundResponse.java │ ├── PaymentResponse.java │ ├── PaymentTokenResponse.java │ ├── PaymentTransactionApprovalListResponse.java │ ├── PaymentTransactionRefundListResponse.java │ ├── PaymentTransactionRefundResponse.java │ ├── PaymentTransactionResponse.java │ ├── PayoutAccountListResponse.java │ ├── PayoutAccountResponse.java │ ├── PayoutBouncedTransactionListResponse.java │ ├── PayoutCompletedTransactionListResponse.java │ ├── PayoutDetailResponse.java │ ├── PayoutRowListResponse.java │ ├── ProductListResponse.java │ ├── ProductResponse.java │ ├── RefundWalletTransactionListResponse.java │ ├── RefundWalletTransactionResponse.java │ ├── RemittanceResponse.java │ ├── ReportingPaymentListResponse.java │ ├── ReportingPaymentRefundListResponse.java │ ├── ReportingPaymentRefundResponse.java │ ├── ReportingPaymentResponse.java │ ├── ReportingPaymentTransactionListResponse.java │ ├── ReportingPaymentTransactionRefundListResponse.java │ ├── ReportingPaymentTransactionRefundResponse.java │ ├── RetrieveLoyaltiesResponse.java │ ├── SettlementResponse.java │ ├── StoredCardListResponse.java │ ├── StoredCardResponse.java │ ├── WalletResponse.java │ ├── WalletTransactionListResponse.java │ ├── WalletTransactionRefundableAmountResponse.java │ ├── WalletTransactionResponse.java │ ├── WithdrawListResponse.java │ ├── WithdrawResponse.java │ ├── common │ ├── BasePaymentRefundResponse.java │ ├── BasePaymentResponse.java │ ├── BasePaymentTransactionRefundResponse.java │ ├── ErrorResponse.java │ ├── ListResponse.java │ └── Response.java │ └── dto │ ├── BkmExpressToken.java │ ├── BnplBankOffer.java │ ├── BnplBankOfferTerm.java │ ├── FraudCheck.java │ ├── Installment.java │ ├── InstallmentPrice.java │ ├── MerchantApiCredential.java │ ├── MerchantPos.java │ ├── MerchantPosUser.java │ ├── PaymentError.java │ ├── PaymentTransaction.java │ ├── PaymentTransactionApproval.java │ ├── Payout.java │ ├── PayoutBouncedTransaction.java │ ├── PayoutCompletedTransaction.java │ ├── PayoutDetailTransaction.java │ ├── PayoutRow.java │ ├── PayoutStatus.java │ ├── ReportingPaymentTransaction.java │ └── WalletTransaction.java └── test └── java └── io └── craftgate ├── sample ├── BankAccountTrackingSample.java ├── BkmExpressSample.java ├── BnplPaymentSample.java ├── FileReportingSample.java ├── FraudSample.java ├── HookSample.java ├── InstallmentSample.java ├── InstantTransferPaymentSample.java ├── JuzdanSample.java ├── MasterpassSample.java ├── MerchantSample.java ├── OnboardingSample.java ├── PayByLinkSample.java ├── PaymentReportingSample.java ├── PaymentSample.java ├── PaymentTokenSample.java ├── SettlementReportingSample.java ├── SettlementSample.java └── WalletSample.java └── unit └── HashGeneratorTest.java /.gitattributes: -------------------------------------------------------------------------------- 1 | # 2 | # https://help.github.com/articles/dealing-with-line-endings/ 3 | # 4 | # These are explicitly windows files and should use crlf 5 | *.bat text eol=crlf 6 | 7 | -------------------------------------------------------------------------------- /.github/workflows/craftgate-build.yml: -------------------------------------------------------------------------------- 1 | name: Craftgate Java CI 2 | 3 | on: [ push, pull_request ] 4 | 5 | jobs: 6 | build: 7 | runs-on: ubuntu-latest 8 | 9 | steps: 10 | - uses: actions/checkout@v2 11 | 12 | - name: Set up JDK 1.8 13 | uses: actions/setup-java@v1 14 | with: 15 | java-version: 1.8 16 | 17 | - name: Cache Gradle packages 18 | uses: actions/cache@v3 19 | with: 20 | path: ~/.gradle/caches 21 | key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} 22 | restore-keys: ${{ runner.os }}-gradle 23 | 24 | - name: Build with Gradle 25 | run: ./gradlew build test 26 | -------------------------------------------------------------------------------- /.github/workflows/craftgate-release.yml: -------------------------------------------------------------------------------- 1 | name: Craftgate Java CI 2 | 3 | on: 4 | release: 5 | types: [ published ] 6 | 7 | jobs: 8 | build-artifact: 9 | name: Publish Library 10 | runs-on: ubuntu-latest 11 | 12 | steps: 13 | - uses: actions/checkout@v2 14 | 15 | - name: Set up JDK 1.8 16 | uses: actions/setup-java@v1 17 | with: 18 | java-version: 1.8 19 | 20 | - name: Cache Gradle packages 21 | uses: actions/cache@v3 22 | with: 23 | path: ~/.gradle/caches 24 | key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }} 25 | restore-keys: ${{ runner.os }}-gradle 26 | 27 | - name: Build and Publish with Gradle 28 | run: openssl enc -aes-256-cbc -md sha256 -pass pass:${{secrets.ENC_KEY}} -d -A -in craftgate.gpg.enc -out craftgate.gpg && 29 | ./gradlew clean && 30 | ./gradlew publish -Dorg.gradle.internal.http.socketTimeout=120000 -Dorg.gradle.internal.http.connectionTimeout=120000 -Pversion=${{github.event.release.tag_name}} -PrepoUser=${{secrets.NEXUS_USER}} -PrepoPassword=${{secrets.NEXUS_PASSWORD}} -Psigning.keyId=${{secrets.SIGNING_KEY_ID}} -Psigning.password=${{secrets.SIGNING_PASSWORD}} 31 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Ignore Gradle project-specific cache directory 2 | .gradle 3 | 4 | # Ignore Gradle build output directory 5 | build 6 | 7 | .idea 8 | out/ 9 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | 2 | # Contributing to Craftgate Java Client 3 | As an open-source project, anyone can contribute to the development of `craftgate-java-client`. If you decide to do so, please be aware of the guidelines outlined below. 4 | 5 | `craftgate-java-client` is written in Java, in order to contribute to the project, some familiarity with Java knowledge is required. 6 | 7 | ## Prerequisites 8 | This project uses [junit](https://junit.org/junit5/) as its test runner. [Gson](https://github.com/google/gson) for serialization-deserialization operations, [Lombok](https://projectlombok.org/) as annotation processor. Required minimum java version is 1.8 and current build tool is gradle. 9 | 10 | ## Package Structure 11 | The project has a straightforward package structure; the source files are located under the [src/](src), sample integrations are located under [io/craftgate/sample](src/test/java/io/craftgate/sample), and tests are located under [io/craftgate/unit](src/test/java/io/craftgate/unit). Any build or test/coverage artifacts are placed under untracked folder such as: 12 | 13 | - `build` and `out`: Build artifacts 14 | 15 | As outlined in the [README](./README.md), the bulk of the project is split into the following categories: 16 | 17 | - Adapters: Located under the [io/craftgate/adapter](src/main/java/io/craftgate/adapter) package, these are classes that are responsible for managing a certain domain 18 | - HttpClient: Located under [io/craftgate/net](src/main/java/io/craftgate/net), these are utility functions to handle the traffic between backend and client. 19 | - Enumerations and Domain Objects: Located under [io/craftgate/model](src/main/java/io/craftgate/model), these are enumerations, constants and domain object models that can be used by request and response classes 20 | - Requests: Located under [io/craftgate/request](src/main/java/io/craftgate/request), these are objects to be used as requests. 21 | - Response: Located under [io/craftgate/response](src/main/java/io/craftgate/response), these are objects to be used as responses. 22 | 23 | ## Tests and Coverage 24 | As a payment systems client, it's important to have tests covering critical parts. In addition to tests that test crucial parts of the libraries and utilities, all samples are provided as Junit tests. 25 | It is strongly advised for all contributors to run all samples/tests against the changes introduced in the pull request. If there are no corresponding tests against the changes introduced, owner of the pull request is responsible for adding any relevant tests or samples. 26 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Craftgate 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | plugins { 2 | id 'java-library' 3 | id 'maven-publish' 4 | id 'signing' 5 | } 6 | 7 | repositories { 8 | jcenter() 9 | } 10 | 11 | dependencies { 12 | implementation 'com.google.code.gson:gson:2.8.9' 13 | implementation 'commons-codec:commons-codec:1.15' 14 | 15 | compileOnly "org.projectlombok:lombok:1.18.4" 16 | annotationProcessor("org.projectlombok:lombok:1.18.4") 17 | 18 | testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.2' 19 | testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.6.2' 20 | } 21 | 22 | test { 23 | useJUnitPlatform() 24 | exclude 'io/craftgate/sample/**' 25 | } 26 | 27 | java { 28 | withJavadocJar() 29 | withSourcesJar() 30 | } 31 | 32 | group = 'io.craftgate' 33 | sourceCompatibility = '1.8' 34 | 35 | publishing { 36 | publications { 37 | mavenJava(MavenPublication) { 38 | from components.java 39 | pom { 40 | name = 'Craftgate' 41 | description = 'Craftgate Java API Client' 42 | url = 'https://github.com/craftgate/craftgate-java-client' 43 | licenses { 44 | license { 45 | name = 'The Apache License, Version 2.0' 46 | url = 'http://www.apache.org/licenses/LICENSE-2.0.txt' 47 | } 48 | } 49 | 50 | developers { 51 | developer { 52 | id = 'Craftgate' 53 | name = 'Craftgate' 54 | email = 'info@craftgate.io' 55 | } 56 | } 57 | scm { 58 | connection = 'scm:git:git://github.com/craftgate/craftgate-java-client' 59 | developerConnection = 'scm:git:git@github.com:craftgate/craftgate-java-client' 60 | url = 'https://github.com/craftgate/craftgate-java-client' 61 | } 62 | } 63 | } 64 | } 65 | repositories { 66 | maven { 67 | name 'nexus' 68 | url "https://oss.sonatype.org/service/local/staging/deploy/maven2" 69 | credentials { 70 | username project.repoUser 71 | password project.repoPassword 72 | } 73 | } 74 | } 75 | } 76 | 77 | signing { 78 | sign publishing.publications.mavenJava 79 | } 80 | -------------------------------------------------------------------------------- /craftgate.gpg.enc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/craftgate/craftgate-java-client/d6735ed31d605404886116576b2be70cbe555a09/craftgate.gpg.enc -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | version=0.0.1 2 | repoUser=[Nexus Repo User] 3 | repoPassword=[Nexus Repo Password] 4 | signing.keyId=[Signing Key ID] 5 | signing.password=[Signing Password] 6 | signing.secretKeyRingFile=./craftgate.gpg 7 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/craftgate/craftgate-java-client/d6735ed31d605404886116576b2be70cbe555a09/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | /* 2 | * This file was generated by the Gradle 'init' task. 3 | * 4 | * The settings file is used to specify which projects to include in your build. 5 | * 6 | * Detailed information about configuring a multi-project build in Gradle can be found 7 | * in the user manual at https://docs.gradle.org/6.5/userguide/multi_project_builds.html 8 | */ 9 | 10 | rootProject.name = 'craftgate' 11 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/adapter/BankAccountTrackingAdapter.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.adapter; 2 | 3 | import io.craftgate.net.HttpClient; 4 | import io.craftgate.request.SearchBankAccountTrackingRecordsRequest; 5 | import io.craftgate.request.common.RequestOptions; 6 | import io.craftgate.request.common.RequestQueryParamsBuilder; 7 | import io.craftgate.response.BankAccountTrackingRecordListResponse; 8 | import io.craftgate.response.BankAccountTrackingRecordResponse; 9 | 10 | public class BankAccountTrackingAdapter extends BaseAdapter { 11 | 12 | public BankAccountTrackingAdapter(RequestOptions requestOptions) { 13 | super(requestOptions); 14 | } 15 | 16 | public BankAccountTrackingRecordListResponse searchRecords(SearchBankAccountTrackingRecordsRequest request) { 17 | String query = RequestQueryParamsBuilder.buildQueryParam(request); 18 | String path = "/bank-account-tracking/v1/merchant-bank-account-trackings/records" + query; 19 | return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), BankAccountTrackingRecordListResponse.class); 20 | } 21 | 22 | public BankAccountTrackingRecordResponse retrieveRecord(Long id) { 23 | String path = "/bank-account-tracking/v1/merchant-bank-account-trackings/records/" + id; 24 | return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), BankAccountTrackingRecordResponse.class); 25 | } 26 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/adapter/BaseAdapter.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.adapter; 2 | 3 | import io.craftgate.request.common.HashGenerator; 4 | import io.craftgate.request.common.RequestOptions; 5 | 6 | import java.util.HashMap; 7 | import java.util.Map; 8 | import java.util.Objects; 9 | import java.util.UUID; 10 | 11 | public abstract class BaseAdapter { 12 | 13 | private static final String API_VERSION_HEADER_VALUE = "v1"; 14 | private static final String CLIENT_VERSION_HEADER_VALUE = "craftgate-java-client"; 15 | private static final String API_KEY_HEADER_NAME = "x-api-key"; 16 | private static final String RANDOM_HEADER_NAME = "x-rnd-key"; 17 | private static final String AUTH_VERSION_HEADER_NAME = "x-auth-version"; 18 | private static final String CLIENT_VERSION_HEADER_NAME = "x-client-version"; 19 | private static final String SIGNATURE_HEADER_NAME = "x-signature"; 20 | private static final String LANGUAGE_HEADER_NAME = "lang"; 21 | 22 | protected final RequestOptions requestOptions; 23 | 24 | protected BaseAdapter(RequestOptions requestOptions) { 25 | this.requestOptions = requestOptions; 26 | } 27 | 28 | protected Map createHeaders(Object request, String path, RequestOptions requestOptions) { 29 | return createHttpHeaders(request, path, requestOptions); 30 | } 31 | 32 | protected Map createHeaders(String path, RequestOptions requestOptions) { 33 | return createHttpHeaders(null, path, requestOptions); 34 | } 35 | 36 | private static Map createHttpHeaders(Object request, String path, RequestOptions options) { 37 | Map headers = new HashMap<>(); 38 | 39 | String randomString = UUID.randomUUID().toString(); 40 | headers.put(API_KEY_HEADER_NAME, options.getApiKey()); 41 | headers.put(RANDOM_HEADER_NAME, randomString); 42 | headers.put(AUTH_VERSION_HEADER_NAME, API_VERSION_HEADER_VALUE); 43 | headers.put(CLIENT_VERSION_HEADER_NAME, CLIENT_VERSION_HEADER_VALUE + ":1.0.69"); 44 | headers.put(SIGNATURE_HEADER_NAME, prepareAuthorizationString(request, path, randomString, options)); 45 | if (Objects.nonNull(options.getLanguage())) { 46 | headers.put(LANGUAGE_HEADER_NAME, options.getLanguage()); 47 | } 48 | return headers; 49 | } 50 | 51 | private static String prepareAuthorizationString(Object request, String path, String randomString, RequestOptions options) { 52 | return HashGenerator.generateHash(options.getBaseUrl(), options.getApiKey(), options.getSecretKey(), randomString, request, path); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/adapter/BkmExpressPaymentAdapter.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.adapter; 2 | 3 | import io.craftgate.net.HttpClient; 4 | import io.craftgate.request.*; 5 | import io.craftgate.request.common.RequestOptions; 6 | import io.craftgate.response.*; 7 | 8 | public class BkmExpressPaymentAdapter extends BaseAdapter { 9 | 10 | public BkmExpressPaymentAdapter(RequestOptions requestOptions) { 11 | super(requestOptions); 12 | } 13 | 14 | public InitBkmExpressResponse init(InitBkmExpressRequest initBkmExpressRequest) { 15 | String path = "/payment/v1/bkm-express/init"; 16 | return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initBkmExpressRequest, path, requestOptions), 17 | initBkmExpressRequest, InitBkmExpressResponse.class); 18 | } 19 | 20 | public PaymentResponse complete(CompleteBkmExpressRequest completeRequest) { 21 | String path = "/payment/v1/bkm-express/complete"; 22 | return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(completeRequest, path, requestOptions), 23 | completeRequest, PaymentResponse.class); 24 | } 25 | 26 | public PaymentResponse retrievePayment(String ticketId) { 27 | String path = "/payment/v1/bkm-express/payments/" + ticketId; 28 | return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), PaymentResponse.class); 29 | } 30 | 31 | public PaymentResponse retrievePaymentByToken(String token) { 32 | String path = "/payment/v1/bkm-express/" + token; 33 | return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), PaymentResponse.class); 34 | } 35 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/adapter/FileReportingAdapter.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.adapter; 2 | 3 | import io.craftgate.net.HttpClient; 4 | import io.craftgate.request.RetrieveDailyPaymentReportRequest; 5 | import io.craftgate.request.RetrieveDailyTransactionReportRequest; 6 | import io.craftgate.request.common.RequestOptions; 7 | import io.craftgate.request.common.RequestQueryParamsBuilder; 8 | 9 | import java.util.Map; 10 | 11 | public class FileReportingAdapter extends BaseAdapter { 12 | 13 | private static final String CONTENT_TYPE = "Content-Type"; 14 | private static final String APPLICATION_OCTET_STREAM = "application/octet-stream"; 15 | 16 | public FileReportingAdapter(RequestOptions requestOptions) { 17 | super(requestOptions); 18 | } 19 | 20 | public byte[] retrieveDailyTransactionReport(RetrieveDailyTransactionReportRequest retrieveDailyTransactionReportRequest) { 21 | String query = RequestQueryParamsBuilder.buildQueryParam(retrieveDailyTransactionReportRequest); 22 | String path = "/file-reporting/v1/transaction-reports" + query; 23 | Map headers = createHeaders(path, requestOptions); 24 | headers.put(CONTENT_TYPE, APPLICATION_OCTET_STREAM); 25 | return HttpClient.get(requestOptions.getBaseUrl() + path, headers, byte[].class); 26 | } 27 | 28 | public byte[] retrieveDailyPaymentReport(RetrieveDailyPaymentReportRequest retrieveDailyPaymentReportRequest) { 29 | String query = RequestQueryParamsBuilder.buildQueryParam(retrieveDailyPaymentReportRequest); 30 | String path = "/file-reporting/v1/payment-reports" + query; 31 | Map headers = createHeaders(path, requestOptions); 32 | headers.put(CONTENT_TYPE, APPLICATION_OCTET_STREAM); 33 | return HttpClient.get(requestOptions.getBaseUrl() + path, headers, byte[].class); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/adapter/FraudAdapter.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.adapter; 2 | 3 | import io.craftgate.model.FraudCheckStatus; 4 | import io.craftgate.model.FraudValueType; 5 | import io.craftgate.net.HttpClient; 6 | import io.craftgate.request.FraudValueListRequest; 7 | import io.craftgate.request.SearchFraudChecksRequest; 8 | import io.craftgate.request.UpdateFraudCheckRequest; 9 | import io.craftgate.request.common.RequestOptions; 10 | import io.craftgate.request.common.RequestQueryParamsBuilder; 11 | import io.craftgate.response.FraudAllValueListsResponse; 12 | import io.craftgate.response.FraudCheckListResponse; 13 | import io.craftgate.response.FraudValueListResponse; 14 | 15 | public class FraudAdapter extends BaseAdapter { 16 | 17 | public FraudAdapter(RequestOptions requestOptions) { 18 | super(requestOptions); 19 | } 20 | 21 | public FraudCheckListResponse searchFraudChecks(SearchFraudChecksRequest searchFraudChecksRequest) { 22 | String query = RequestQueryParamsBuilder.buildQueryParam(searchFraudChecksRequest); 23 | String path = "/fraud/v1/fraud-checks" + query; 24 | return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), FraudCheckListResponse.class); 25 | } 26 | 27 | public void updateFraudCheckStatus(Long id, FraudCheckStatus fraudCheckStatus) { 28 | String path = "/fraud/v1/fraud-checks/" + id + "/check-status"; 29 | UpdateFraudCheckRequest updateFraudCheckRequest = UpdateFraudCheckRequest.builder().checkStatus(fraudCheckStatus).build(); 30 | HttpClient.put(requestOptions.getBaseUrl() + path, createHeaders(updateFraudCheckRequest, path, requestOptions), 31 | updateFraudCheckRequest, Void.class); 32 | } 33 | 34 | public FraudAllValueListsResponse retrieveAllValueLists() { 35 | String path = "/fraud/v1/value-lists/all"; 36 | return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), FraudAllValueListsResponse.class); 37 | } 38 | 39 | public FraudValueListResponse retrieveValueList(String listName) { 40 | String path = "/fraud/v1/value-lists/" + listName; 41 | return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), FraudValueListResponse.class); 42 | } 43 | 44 | public void createValueList(String listName, FraudValueType type) { 45 | FraudValueListRequest createRequest = FraudValueListRequest.builder().type(type).listName(listName).value(null).durationInSeconds(null).build(); 46 | addValueToValueList(createRequest); 47 | } 48 | 49 | public void deleteValueList(String listName) { 50 | String path = "/fraud/v1/value-lists/" + listName; 51 | 52 | HttpClient.delete(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions)); 53 | } 54 | 55 | public void addValueToValueList(FraudValueListRequest fraudValueListRequest) { 56 | String path = "/fraud/v1/value-lists"; 57 | HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(fraudValueListRequest, path, requestOptions), 58 | fraudValueListRequest, Void.class); 59 | } 60 | 61 | public void removeValueFromValueList(String listName, String valueId) { 62 | String path = "/fraud/v1/value-lists/" + listName + "/values/" + valueId; 63 | HttpClient.delete(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions)); 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/adapter/HookAdapter.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.adapter; 2 | 3 | import io.craftgate.model.WebhookData; 4 | import io.craftgate.request.common.RequestOptions; 5 | import org.apache.commons.codec.binary.Base64; 6 | 7 | import javax.crypto.Mac; 8 | import javax.crypto.spec.SecretKeySpec; 9 | import java.nio.charset.StandardCharsets; 10 | import java.util.Objects; 11 | 12 | public class HookAdapter extends BaseAdapter { 13 | 14 | public HookAdapter(RequestOptions requestOptions) { 15 | super(requestOptions); 16 | } 17 | 18 | public boolean isWebhookVerified(String merchantHookKey, String incomingSignature, WebhookData webhookData) { 19 | if (Objects.isNull(merchantHookKey) || Objects.isNull(incomingSignature) || Objects.isNull(webhookData)) { 20 | return false; 21 | } 22 | 23 | String data = webhookData.getEventType() + webhookData.getEventTimestamp().toString() + webhookData.getStatus() + webhookData.getPayloadId(); 24 | String signature = generateHash(merchantHookKey, data); 25 | return incomingSignature.equals(signature); 26 | } 27 | 28 | private String generateHash(String merchantHookKey, String data) { 29 | try { 30 | Mac hmacSHA256 = Mac.getInstance("HmacSHA256"); 31 | SecretKeySpec secretKey = new SecretKeySpec(merchantHookKey.getBytes(StandardCharsets.UTF_8), "HmacSHA256"); 32 | hmacSHA256.init(secretKey); 33 | byte[] sha256 = hmacSHA256.doFinal(data.getBytes(StandardCharsets.UTF_8)); 34 | return Base64.encodeBase64String(sha256); 35 | } catch (Exception e) { 36 | return null; 37 | } 38 | } 39 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/adapter/InstallmentAdapter.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.adapter; 2 | 3 | import io.craftgate.net.HttpClient; 4 | import io.craftgate.request.SearchInstallmentsRequest; 5 | import io.craftgate.request.common.RequestOptions; 6 | import io.craftgate.request.common.RequestQueryParamsBuilder; 7 | import io.craftgate.response.BinNumberResponse; 8 | import io.craftgate.response.InstallmentListResponse; 9 | 10 | public class InstallmentAdapter extends BaseAdapter { 11 | 12 | public InstallmentAdapter(RequestOptions requestOptions) { 13 | super(requestOptions); 14 | } 15 | 16 | public InstallmentListResponse searchInstallments(SearchInstallmentsRequest searchInstallmentsRequest) { 17 | String query = RequestQueryParamsBuilder.buildQueryParam(searchInstallmentsRequest); 18 | String path = "/installment/v1/installments" + query; 19 | return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), InstallmentListResponse.class); 20 | } 21 | 22 | public BinNumberResponse retrieveBinNumber(String binNumber) { 23 | String path = "/installment/v1/bins/" + binNumber; 24 | return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), BinNumberResponse.class); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/adapter/JuzdanPaymentAdapter.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.adapter; 2 | 3 | import io.craftgate.net.HttpClient; 4 | import io.craftgate.request.*; 5 | import io.craftgate.request.common.RequestOptions; 6 | import io.craftgate.response.*; 7 | 8 | public class JuzdanPaymentAdapter extends BaseAdapter { 9 | 10 | public JuzdanPaymentAdapter(RequestOptions requestOptions) { 11 | super(requestOptions); 12 | } 13 | 14 | public InitJuzdanPaymentResponse init(InitJuzdanPaymentRequest initJuzdanPaymentRequest) { 15 | String path = "/payment/v1/juzdan-payments/init"; 16 | return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(initJuzdanPaymentRequest, path, requestOptions), 17 | initJuzdanPaymentRequest, InitJuzdanPaymentResponse.class); 18 | } 19 | 20 | public PaymentResponse retrieve(String referenceId) { 21 | String path = "/payment/v1/juzdan-payments/" + referenceId; 22 | return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), PaymentResponse.class); 23 | } 24 | 25 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/adapter/MasterpassPaymentAdapter.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.adapter; 2 | 3 | import io.craftgate.net.HttpClient; 4 | import io.craftgate.request.*; 5 | import io.craftgate.request.common.RequestOptions; 6 | import io.craftgate.response.*; 7 | 8 | public class MasterpassPaymentAdapter extends BaseAdapter { 9 | 10 | public MasterpassPaymentAdapter(RequestOptions requestOptions) { 11 | super(requestOptions); 12 | } 13 | 14 | public CheckMasterpassUserResponse checkMasterpassUser(CheckMasterpassUserRequest checkMasterpassUserRequest) { 15 | String path = "/payment/v1/masterpass-payments/check-user"; 16 | return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(checkMasterpassUserRequest, path, requestOptions), 17 | checkMasterpassUserRequest, CheckMasterpassUserResponse.class); 18 | } 19 | 20 | public MasterpassPaymentTokenGenerateResponse generateMasterpassPaymentToken(MasterpassPaymentTokenGenerateRequest masterpassPaymentTokenGenerateRequest) { 21 | String path = "/payment/v2/masterpass-payments/generate-token"; 22 | return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(masterpassPaymentTokenGenerateRequest, path, requestOptions), 23 | masterpassPaymentTokenGenerateRequest, MasterpassPaymentTokenGenerateResponse.class); 24 | } 25 | 26 | public PaymentResponse completeMasterpassPayment(MasterpassPaymentCompleteRequest masterpassPaymentCompleteRequest) { 27 | String path = "/payment/v2/masterpass-payments/complete"; 28 | return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(masterpassPaymentCompleteRequest, path, requestOptions), 29 | masterpassPaymentCompleteRequest, PaymentResponse.class); 30 | } 31 | 32 | public MasterpassPaymentThreeDSInitResponse init3DSMasterpassPayment(MasterpassPaymentThreeDSInitRequest masterpassPaymentThreeDSInitRequest) { 33 | String path = "/payment/v2/masterpass-payments/3ds-init"; 34 | return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(masterpassPaymentThreeDSInitRequest, path, requestOptions), 35 | masterpassPaymentThreeDSInitRequest, MasterpassPaymentThreeDSInitResponse.class); 36 | } 37 | 38 | public PaymentResponse complete3DSMasterpassPayment(MasterpassPaymentThreeDSCompleteRequest masterpassPaymentThreeDSCompleteRequest) { 39 | String path = "/payment/v2/masterpass-payments/3ds-complete"; 40 | return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(masterpassPaymentThreeDSCompleteRequest, path, requestOptions), 41 | masterpassPaymentThreeDSCompleteRequest, PaymentResponse.class); 42 | } 43 | 44 | public RetrieveLoyaltiesResponse retrieveLoyalties(MasterpassRetrieveLoyaltiesRequest masterpassRetrieveLoyaltiesRequest) { 45 | String path = "/payment/v2/masterpass-payments/loyalties/retrieve"; 46 | return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(masterpassRetrieveLoyaltiesRequest, path, requestOptions), 47 | masterpassRetrieveLoyaltiesRequest, RetrieveLoyaltiesResponse.class); 48 | } 49 | 50 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/adapter/OnboardingAdapter.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.adapter; 2 | 3 | import io.craftgate.net.HttpClient; 4 | import io.craftgate.request.CreateMemberRequest; 5 | import io.craftgate.request.CreateMerchantRequest; 6 | import io.craftgate.request.SearchMembersRequest; 7 | import io.craftgate.request.UpdateMemberRequest; 8 | import io.craftgate.request.common.RequestOptions; 9 | import io.craftgate.request.common.RequestQueryParamsBuilder; 10 | import io.craftgate.response.CreateMerchantResponse; 11 | import io.craftgate.response.MemberListResponse; 12 | import io.craftgate.response.MemberResponse; 13 | 14 | public class OnboardingAdapter extends BaseAdapter { 15 | 16 | public OnboardingAdapter(RequestOptions requestOptions) { 17 | super(requestOptions); 18 | } 19 | 20 | public MemberResponse createMember(CreateMemberRequest createMemberRequest) { 21 | String path = "/onboarding/v1/members"; 22 | return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(createMemberRequest, path, requestOptions), 23 | createMemberRequest, MemberResponse.class); 24 | } 25 | 26 | public MemberResponse updateMember(Long id, UpdateMemberRequest updateMemberRequest) { 27 | String path = "/onboarding/v1/members/" + id; 28 | return HttpClient.put(requestOptions.getBaseUrl() + path, createHeaders(updateMemberRequest, path, requestOptions), 29 | updateMemberRequest, MemberResponse.class); 30 | } 31 | 32 | public MemberResponse retrieveMember(Long id) { 33 | String path = "/onboarding/v1/members/" + id; 34 | return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), MemberResponse.class); 35 | } 36 | 37 | public MemberListResponse searchMembers(SearchMembersRequest searchMembersRequest) { 38 | String query = RequestQueryParamsBuilder.buildQueryParam(searchMembersRequest); 39 | String path = "/onboarding/v1/members" + query; 40 | return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), MemberListResponse.class); 41 | } 42 | 43 | public CreateMerchantResponse createMerchant(CreateMerchantRequest createMerchantRequest) { 44 | String path = "/onboarding/v1/merchants"; 45 | return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(createMerchantRequest, path, requestOptions), createMerchantRequest, CreateMerchantResponse.class); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/adapter/PayByLinkAdapter.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.adapter; 2 | 3 | import io.craftgate.net.HttpClient; 4 | import io.craftgate.request.CreateProductRequest; 5 | import io.craftgate.request.SearchProductsRequest; 6 | import io.craftgate.request.UpdateProductRequest; 7 | import io.craftgate.request.common.RequestOptions; 8 | import io.craftgate.request.common.RequestQueryParamsBuilder; 9 | import io.craftgate.response.ProductListResponse; 10 | import io.craftgate.response.ProductResponse; 11 | 12 | public class PayByLinkAdapter extends BaseAdapter { 13 | 14 | public PayByLinkAdapter(RequestOptions requestOptions) { 15 | super(requestOptions); 16 | } 17 | 18 | public ProductResponse createProduct(CreateProductRequest createProductRequest) { 19 | String path = "/craftlink/v1/products"; 20 | return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(createProductRequest, path, requestOptions), 21 | createProductRequest, ProductResponse.class); 22 | } 23 | 24 | public ProductResponse updateProduct(Long id, UpdateProductRequest updateProductRequest) { 25 | String path = "/craftlink/v1/products/" + id; 26 | return HttpClient.put(requestOptions.getBaseUrl() + path, createHeaders(updateProductRequest, path, requestOptions), 27 | updateProductRequest, ProductResponse.class); 28 | } 29 | 30 | public ProductResponse retrieveProduct(Long id) { 31 | String path = "/craftlink/v1/products/" + id; 32 | return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), ProductResponse.class); 33 | } 34 | 35 | public void deleteProduct(Long id) { 36 | String path = "/craftlink/v1/products/" + id; 37 | HttpClient.delete(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions)); 38 | } 39 | 40 | public ProductListResponse searchProducts(SearchProductsRequest searchProductsRequest) { 41 | String query = RequestQueryParamsBuilder.buildQueryParam(searchProductsRequest); 42 | String path = "/craftlink/v1/products" + query; 43 | return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), ProductListResponse.class); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/adapter/PaymentTokenAdapter.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.adapter; 2 | 3 | import io.craftgate.net.HttpClient; 4 | import io.craftgate.request.CreatePaymentTokenRequest; 5 | import io.craftgate.request.common.RequestOptions; 6 | import io.craftgate.response.PaymentTokenResponse; 7 | 8 | public class PaymentTokenAdapter extends BaseAdapter { 9 | 10 | public PaymentTokenAdapter(RequestOptions requestOptions) { 11 | super(requestOptions); 12 | } 13 | 14 | public PaymentTokenResponse createPaymentToken(CreatePaymentTokenRequest createPaymentTokenRequest) { 15 | String path = "/payment/v1/payment-tokens"; 16 | return HttpClient.post(requestOptions.getBaseUrl() + path, 17 | createHeaders(createPaymentTokenRequest, path, requestOptions), 18 | createPaymentTokenRequest, 19 | PaymentTokenResponse.class); 20 | } 21 | 22 | public void deletePaymentToken(String token) { 23 | String path = "/payment/v1/payment-tokens/" + token; 24 | HttpClient.delete(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions)); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/adapter/SettlementAdapter.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.adapter; 2 | 3 | import io.craftgate.net.HttpClient; 4 | import io.craftgate.request.CreateInstantWalletSettlementRequest; 5 | import io.craftgate.request.CreatePayoutAccountRequest; 6 | import io.craftgate.request.SearchPayoutAccountRequest; 7 | import io.craftgate.request.UpdatePayoutAccountRequest; 8 | import io.craftgate.request.common.RequestOptions; 9 | import io.craftgate.request.common.RequestQueryParamsBuilder; 10 | import io.craftgate.response.PayoutAccountListResponse; 11 | import io.craftgate.response.PayoutAccountResponse; 12 | import io.craftgate.response.SettlementResponse; 13 | 14 | public class SettlementAdapter extends BaseAdapter { 15 | 16 | public SettlementAdapter(RequestOptions requestOptions) { 17 | super(requestOptions); 18 | } 19 | 20 | public SettlementResponse createInstantWalletSettlement(CreateInstantWalletSettlementRequest request) { 21 | String path = "/settlement/v1/instant-wallet-settlements"; 22 | return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(request, path, requestOptions), request, SettlementResponse.class); 23 | } 24 | 25 | public PayoutAccountResponse createPayoutAccount(CreatePayoutAccountRequest request) { 26 | String path = "/settlement/v1/payout-accounts"; 27 | return HttpClient.post(requestOptions.getBaseUrl() + path, createHeaders(request, path, requestOptions), request, PayoutAccountResponse.class); 28 | } 29 | 30 | public void updatePayoutAccount(Long id, UpdatePayoutAccountRequest request) { 31 | String path = "/settlement/v1/payout-accounts/" + id; 32 | HttpClient.put(requestOptions.getBaseUrl() + path, createHeaders(request, path, requestOptions), 33 | request, Void.class); 34 | } 35 | 36 | public void deletePayoutAccount(Long id) { 37 | String path = "/settlement/v1/payout-accounts/" + id; 38 | HttpClient.delete(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions)); 39 | } 40 | 41 | public PayoutAccountListResponse searchPayoutAccount(SearchPayoutAccountRequest request) { 42 | String query = RequestQueryParamsBuilder.buildQueryParam(request); 43 | String path = "/settlement/v1/payout-accounts" + query; 44 | return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), PayoutAccountListResponse.class); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/adapter/SettlementReportingAdapter.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.adapter; 2 | 3 | import io.craftgate.net.HttpClient; 4 | import io.craftgate.request.SearchPayoutBouncedTransactionsRequest; 5 | import io.craftgate.request.SearchPayoutCompletedTransactionsRequest; 6 | import io.craftgate.request.SearchPayoutRowsRequest; 7 | import io.craftgate.request.common.RequestOptions; 8 | import io.craftgate.request.common.RequestQueryParamsBuilder; 9 | import io.craftgate.response.PayoutBouncedTransactionListResponse; 10 | import io.craftgate.response.PayoutCompletedTransactionListResponse; 11 | import io.craftgate.response.PayoutDetailResponse; 12 | import io.craftgate.response.PayoutRowListResponse; 13 | 14 | public class SettlementReportingAdapter extends BaseAdapter { 15 | 16 | public SettlementReportingAdapter(RequestOptions requestOptions) { 17 | super(requestOptions); 18 | } 19 | 20 | public PayoutCompletedTransactionListResponse searchPayoutCompletedTransactions(SearchPayoutCompletedTransactionsRequest searchPayoutCompletedTransactionsRequest) { 21 | String query = RequestQueryParamsBuilder.buildQueryParam(searchPayoutCompletedTransactionsRequest); 22 | String path = "/settlement-reporting/v2/settlement-file/payout-completed-transactions" + query; 23 | return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), PayoutCompletedTransactionListResponse.class); 24 | } 25 | 26 | public PayoutBouncedTransactionListResponse searchBouncedPayoutTransactions(SearchPayoutBouncedTransactionsRequest searchPayoutBouncedTransactionsRequest) { 27 | String query = RequestQueryParamsBuilder.buildQueryParam(searchPayoutBouncedTransactionsRequest); 28 | String path = "/settlement-reporting/v1/settlement-file/bounced-sub-merchant-rows" + query; 29 | return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), PayoutBouncedTransactionListResponse.class); 30 | } 31 | 32 | public PayoutDetailResponse retrievePayoutDetails(Long id) { 33 | String path = "/settlement-reporting/v1/settlement-file/payout-details/" + id; 34 | return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), PayoutDetailResponse.class); 35 | } 36 | 37 | public PayoutRowListResponse searchPayoutRows(SearchPayoutRowsRequest request) { 38 | String queryParam = RequestQueryParamsBuilder.buildQueryParam(request); 39 | String path = "/settlement-reporting/v1/settlement-file-rows" + queryParam; 40 | return HttpClient.get(requestOptions.getBaseUrl() + path, createHeaders(path, requestOptions), PayoutRowListResponse.class); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/exception/CraftgateException.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.exception; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | 6 | @Data 7 | @EqualsAndHashCode(callSuper = true) 8 | public class CraftgateException extends RuntimeException { 9 | 10 | private static final String GENERAL_ERROR_CODE = "0"; 11 | private static final String GENERAL_ERROR_DESCRIPTION = "An error occurred."; 12 | private static final String GENERAL_ERROR_GROUP = "Unknown"; 13 | 14 | private final String errorCode; 15 | private final String errorDescription; 16 | private final String errorGroup; 17 | 18 | public CraftgateException() { 19 | super(GENERAL_ERROR_DESCRIPTION); 20 | this.errorCode = GENERAL_ERROR_CODE; 21 | this.errorDescription = GENERAL_ERROR_DESCRIPTION; 22 | this.errorGroup = GENERAL_ERROR_GROUP; 23 | } 24 | 25 | public CraftgateException(String errorCode, String errorDescription, String errorGroup) { 26 | super(errorDescription); 27 | this.errorCode = errorCode; 28 | this.errorDescription = errorDescription; 29 | this.errorGroup = errorGroup; 30 | } 31 | 32 | public CraftgateException(Throwable cause) { 33 | super(cause.getMessage(), cause); 34 | this.errorCode = GENERAL_ERROR_CODE; 35 | this.errorDescription = GENERAL_ERROR_DESCRIPTION; 36 | this.errorGroup = GENERAL_ERROR_GROUP; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/AccountOwner.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum AccountOwner { 4 | MERCHANT, SUB_MERCHANT_MEMBER; 5 | 6 | } 7 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/AdditionalAction.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum AdditionalAction { 4 | 5 | REDIRECT_TO_URL, 6 | CONTINUE_IN_CLIENT, 7 | SHOW_HTML_CONTENT, 8 | NONE 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/ApmAdditionalAction.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum ApmAdditionalAction { 4 | REDIRECT_TO_URL, 5 | 6 | OTP_REQUIRED, 7 | SHOW_HTML_CONTENT, 8 | WAIT_FOR_WEBHOOK, 9 | APPROVAL_REQUIRED, 10 | NONE 11 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/ApmType.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum ApmType { 4 | PAPARA, 5 | PAYONEER, 6 | SODEXO, 7 | EDENRED, 8 | EDENRED_GIFT, 9 | PAYPAL, 10 | KLARNA, 11 | AFTERPAY, 12 | KASPI, 13 | INSTANT_TRANSFER, 14 | STRIPE, 15 | TOMPAY, 16 | TOM_FINANCE, 17 | MASLAK, 18 | ALFABANK, 19 | PAYCELL, 20 | HASO, 21 | METROPOL, 22 | MULTINET, 23 | MULTINET_GIFT, 24 | MULTINET_NEO_GIFT, 25 | ISPAY, 26 | ZIP, 27 | VODAFONE_DCB, 28 | CHIPPIN, 29 | PAYMOB, 30 | BIZUM, 31 | PAYLANDS_MB_WAY, 32 | PAYCELL_DCB, 33 | IWALLET, 34 | FUND_TRANSFER, 35 | SETCARD, 36 | CASH_ON_DELIVERY 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/ApprovalStatus.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum ApprovalStatus { 4 | 5 | SUCCESS, 6 | FAILURE 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/AutopilotState.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class AutopilotState { 7 | private Boolean isThreeDsUp; 8 | private Boolean isNonThreeDsUp; 9 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/BankAccountTrackingSource.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum BankAccountTrackingSource { 4 | YKB, 5 | GARANTI 6 | } 7 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/BnplCartItemType.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum BnplCartItemType { 4 | 5 | MOBILE_PHONE_PRICE_ABOVE_REGULATION_LIMIT, 6 | MOBILE_PHONE_PRICE_BELOW_REGULATION_LIMIT, 7 | TABLET, 8 | COMPUTER, 9 | CONSTRUCTION_MARKET, 10 | GOLD, 11 | DIGITAL_PRODUCTS, 12 | SUPERMARKET, 13 | WHITE_GOODS, 14 | WEARABLE_TECHNOLOGY, 15 | SMALL_HOME_APPLIANCES, 16 | TV, 17 | GAMES_CONSOLES, 18 | AIR_CONDITIONER_AND_HEATER, 19 | ELECTRONICS, 20 | ACCESSORIES, 21 | MOM_AND_BABY_AND_KIDS, 22 | SHOES, 23 | CLOTHING, 24 | COSMETICS_AND_PERSONAL_CARE, 25 | FURNITURE, 26 | HOME_LIVING, 27 | AUTOMOBILE_MOTORCYCLE, 28 | OTHER 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/BounceStatus.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum BounceStatus { 4 | 5 | NOT_BOUNCED, 6 | BOUNCED, 7 | UPDATED, 8 | PAYOUT_STARTED, 9 | PAYOUT_COMPLETED; 10 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/CardAssociation.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum CardAssociation { 4 | 5 | VISA, 6 | MASTER_CARD, 7 | AMEX, 8 | TROY, 9 | JCB, 10 | UNION_PAY, 11 | MAESTRO, 12 | DISCOVER, 13 | DINERS_CLUB 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/CardBrand.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum CardBrand { 4 | BONUS("Bonus"), 5 | AXESS("Axess"), 6 | MAXIMUM("Maximum"), 7 | WORLD("World"), 8 | PARAF("Paraf"), 9 | CARD_FINANS("CardFinans"), 10 | BANKKART_COMBO("Bankkart Combo"), 11 | ADVANTAGE("Advantage"), 12 | SAGLAM_KART("Sağlam Kart"); 13 | 14 | private final String cardBrandName; 15 | 16 | CardBrand(String cardBrandName) { 17 | this.cardBrandName = cardBrandName; 18 | } 19 | 20 | public String toName() { 21 | return this.cardBrandName; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/CardExpiryStatus.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum CardExpiryStatus { 4 | EXPIRED, 5 | WILL_EXPIRE_NEXT_MONTH, 6 | NOT_EXPIRED; 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/CardProvider.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum CardProvider { 4 | IYZICO, 5 | IPARA, 6 | BIRLESIK_ODEME, 7 | MEX 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/CardType.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum CardType { 4 | 5 | CREDIT_CARD, 6 | DEBIT_CARD, 7 | PREPAID_CARD 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/Currency.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum Currency { 4 | 5 | TRY, 6 | USD, 7 | EUR, 8 | GBP, 9 | ARS, 10 | BRL, 11 | CNY, 12 | AED, 13 | IQD, 14 | AZN, 15 | KZT, 16 | KWD, 17 | SAR, 18 | BHD, 19 | RUB, 20 | JPY, 21 | EGP, 22 | MXN 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/FileStatus.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum FileStatus { 4 | 5 | CREATED, 6 | UPLOADED, 7 | APPROVED 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/FraudAction.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum FraudAction { 4 | BLOCK, 5 | REVIEW 6 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/FraudCheckStatus.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum FraudCheckStatus { 4 | 5 | WAITING, 6 | NOT_FRAUD, 7 | FRAUD 8 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/FraudValue.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | @Data 9 | @NoArgsConstructor 10 | @AllArgsConstructor 11 | @Builder 12 | public class FraudValue { 13 | private String id; 14 | private String label; 15 | private String value; 16 | private Integer expireInSeconds; 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/FraudValueType.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum FraudValueType { 4 | CARD, 5 | IP, 6 | PHONE_NUMBER, 7 | EMAIL, 8 | OTHER 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/Loyalty.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | @Data 7 | @Builder 8 | public class Loyalty { 9 | private LoyaltyType type; 10 | private Reward reward; 11 | private String message; 12 | private LoyaltyParams loyaltyParams; 13 | private LoyaltyData loyaltyData; 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/LoyaltyData.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | @Data 7 | @Builder 8 | public class LoyaltyData { 9 | private Integer maxPostponingPaymentCount; 10 | private String unitType; 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/LoyaltyParams.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | @Data 7 | @Builder 8 | public class LoyaltyParams { 9 | private Integer postponingPaymentCount; 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/LoyaltyType.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum LoyaltyType { 4 | REWARD_MONEY, 5 | ADDITIONAL_INSTALLMENT, 6 | POSTPONING_INSTALLMENT, 7 | EXTRA_POINTS, 8 | GAINING_MINUTES, 9 | POSTPONING_STATEMENT, 10 | POSTPONING_PAYMENT 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/MasterpassValidationType.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum MasterpassValidationType { 4 | NONE, 5 | OTP, 6 | THREE_DS 7 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/MemberType.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum MemberType { 4 | 5 | PERSONAL, 6 | PRIVATE_COMPANY, 7 | LIMITED_OR_JOINT_STOCK_COMPANY; 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/MerchantType.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum MerchantType { 4 | MERCHANT, 5 | SUB_MERCHANT_MEMBER 6 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/MultiPaymentStatus.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum MultiPaymentStatus { 4 | COMPLETED, CREATED 5 | } 6 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/PaymentAuthenticationType.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum PaymentAuthenticationType { 4 | 5 | THREE_DS, 6 | NON_THREE_DS, 7 | BKM_EXPRESS 8 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/PaymentGroup.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum PaymentGroup { 4 | 5 | PRODUCT, 6 | LISTING_OR_SUBSCRIPTION 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/PaymentMethod.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum PaymentMethod { 4 | 5 | CARD, 6 | MASTERPASS, 7 | PAPARA, 8 | PAYONEER, 9 | SODEXO, 10 | EDENRED, 11 | EDENRED_GIFT, 12 | ALIPAY, 13 | PAYPAL, 14 | KLARNA, 15 | AFTERPAY, 16 | INSTANT_TRANSFER, 17 | STRIPE, 18 | MULTINET, 19 | MULTINET_GIFT, 20 | MULTINET_NEO_GIFT, 21 | BIZUM, 22 | PAYCELL_DCB 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/PaymentPhase.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum PaymentPhase { 4 | 5 | AUTH, 6 | PRE_AUTH, 7 | POST_AUTH 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/PaymentProvider.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum PaymentProvider { 4 | 5 | BANK, 6 | CG_WALLET, 7 | MASTERPASS, 8 | GARANTI_PAY, 9 | YKB_WORLD_PAY, 10 | PAPARA, 11 | PAYONEER, 12 | SODEXO, 13 | EDENRED, 14 | INSTANT_TRANSFER, 15 | ALIPAY, 16 | PAYPAL, 17 | KLARNA, 18 | AFTERPAY, 19 | APPLEPAY, 20 | GOOGLEPAY, 21 | HEPSIPAY, 22 | STRIPE, 23 | KASPI, 24 | MASLAK, 25 | TOMPAY, 26 | TOM_FINANCE, 27 | ALFABANK, 28 | PAYCELL, 29 | HASO, 30 | METROPOL, 31 | MULTINET, 32 | ISPAY, 33 | ZIP, 34 | VODAFONE, 35 | CHIPPIN, 36 | PAYMOB, 37 | BIZUM, 38 | PAYLANDS_MB_WAY, 39 | PAYCELL_DCB, 40 | IWALLET, 41 | SETCARD, 42 | OFFLINE, 43 | } 44 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/PaymentRefundStatus.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum PaymentRefundStatus { 4 | 5 | NO_REFUND, 6 | NOT_REFUNDED, 7 | PARTIAL_REFUNDED, 8 | FULLY_REFUNDED 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/PaymentSource.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum PaymentSource { 4 | 5 | API, 6 | CHECKOUT_FORM, 7 | PAY_BY_LINK, 8 | JUZDAN 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/PaymentStatus.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum PaymentStatus { 4 | 5 | FAILURE, 6 | SUCCESS, 7 | INIT_THREEDS, 8 | CALLBACK_THREEDS, 9 | WAITING 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/PaymentType.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum PaymentType { 4 | 5 | CARD_PAYMENT, 6 | WALLET_PAYMENT, 7 | CARD_AND_WALLET_PAYMENT, 8 | DEPOSIT_PAYMENT, 9 | HEPSIPAY_DEPOSIT_PAYMENT, 10 | APM 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/PayoutAccountType.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum PayoutAccountType { 4 | WISE 5 | } 6 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/PosApmPaymentProvider.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum PosApmPaymentProvider { 4 | 5 | YKB_WORLD_PAY, 6 | YKB_WORLD_PAY_SHOPPING_LOAN, 7 | GOOGLEPAY, 8 | GARANTI_PAY, 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/PosIntegrator.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum PosIntegrator { 4 | 5 | YKB, 6 | GARANTI, 7 | ISBANK, 8 | AKBANK, 9 | ZIRAATBANK, 10 | ZIRAATBANK_INNOVA, 11 | ZIRAATKATILIM, 12 | KUVEYTTURK, 13 | HALKBANK, 14 | DENIZBANK, 15 | VAKIFBANK, 16 | VAKIFKATILIM, 17 | FINANSBANK, 18 | FIBABANK, 19 | FIBABANK_ASSECO, 20 | ANADOLUBANK, 21 | PARAM_POS, 22 | IYZICO, 23 | SIPAY, 24 | PAYNET, 25 | PAYTR, 26 | BIRLESIK_ODEME, 27 | MOKA, 28 | STRIPE, 29 | TEB, 30 | IPARA, 31 | OZAN, 32 | BRAINTREE, 33 | NKOLAY, 34 | PAYTABS, 35 | PAYBULL, 36 | ELEKSE, 37 | ALGORITMA, 38 | PAYCELL, 39 | TAMI, 40 | QNB_PAY, 41 | AKBANK_VPOS, 42 | TAP, 43 | RUBIK, 44 | } 45 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/PosOperationType.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum PosOperationType { 4 | 5 | STANDARD, 6 | PROVAUT, 7 | PROVRFN, 8 | PAYMENT, 9 | REFUND, 10 | INQUIRY 11 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/PosStatus.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum PosStatus { 4 | 5 | DELETED, 6 | PASSIVE, 7 | ACTIVE, 8 | REFUND_ONLY, 9 | AUTOPILOT; 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/PosUserType.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum PosUserType { 4 | API 5 | } 6 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/RecordType.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum RecordType { 4 | 5 | SEND, 6 | RECEIVE 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/RefundDestinationType.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum RefundDestinationType { 4 | 5 | /** 6 | * @deprecated use @{@link RefundDestinationType#PROVIDER} instead. 7 | */ 8 | @Deprecated CARD, 9 | PROVIDER, 10 | WALLET 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/RefundStatus.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum RefundStatus { 4 | 5 | SUCCESS, 6 | FAILURE 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/RefundType.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum RefundType { 4 | 5 | CANCEL, 6 | REFUND 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/RemittanceReasonType.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum RemittanceReasonType { 4 | 5 | SUBMERCHANT_SEND_RECEIVE, 6 | REDEEM_ONLY_LOYALTY 7 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/RemittanceType.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum RemittanceType { 4 | 5 | SEND, 6 | RECEIVE 7 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/ReportFileType.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum ReportFileType { 4 | 5 | CSV, XLSX 6 | } 7 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/Reward.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | import java.math.BigDecimal; 7 | 8 | @Data 9 | @Builder 10 | public class Reward { 11 | private BigDecimal cardRewardMoney; 12 | private BigDecimal firmRewardMoney; 13 | private BigDecimal totalRewardMoney; 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/SettlementEarningsDestination.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum SettlementEarningsDestination { 4 | 5 | IBAN, 6 | WALLET, 7 | CROSS_BORDER, 8 | NONE 9 | } 10 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/SettlementResultStatus.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum SettlementResultStatus { 4 | SUCCESS, FAILURE, NO_RECORD_FOUND 5 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/SettlementSource.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum SettlementSource { 4 | 5 | COLLECTION, 6 | WITHDRAW, 7 | BOUNCED 8 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/SettlementType.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum SettlementType { 4 | 5 | SETTLEMENT, 6 | BOUNCED_SETTLEMENT, 7 | WITHDRAW 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/Status.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum Status { 4 | 5 | PASSIVE, 6 | ACTIVE 7 | } 8 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/TokenizedCardType.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum TokenizedCardType { 4 | APPLE_PAY, 5 | } 6 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/TransactionPayoutStatus.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum TransactionPayoutStatus { 4 | 5 | CANCELLED, 6 | NO_PAYOUT, 7 | WAITING_FOR_PAYOUT, 8 | PAYOUT_STARTED, 9 | PAYOUT_COMPLETED 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/TransactionStatus.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum TransactionStatus { 4 | 5 | WAITING_FOR_APPROVAL, 6 | APPROVED, 7 | PAYOUT_STARTED 8 | } 9 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/WalletTransactionRefundCardTransactionType.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum WalletTransactionRefundCardTransactionType { 4 | 5 | PAYMENT, 6 | PAYMENT_TX, 7 | WALLET_TX 8 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/WalletTransactionType.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum WalletTransactionType { 4 | 5 | PAYMENT_REDEEM, 6 | REFUND_DEPOSIT, 7 | REFUND_TX_DEPOSIT, 8 | WITHDRAW, 9 | CANCEL_REFUND_WALLET_TO_CARD, 10 | REFUND_WALLET_TX_TO_CARD, 11 | REFUND_WALLET_TX_FUND_TRANSFER, 12 | CANCEL_REFUND_TO_WALLET, 13 | REFUND_TX_TO_WALLET, 14 | MANUAL_REFUND_TX_TO_WALLET, 15 | SETTLEMENT_EARNINGS, 16 | DEPOSIT_FROM_CARD, 17 | DEPOSIT_FROM_APM, 18 | DEPOSIT_FROM_FUND_TRANSFER, 19 | REMITTANCE, 20 | LOYALTY, 21 | WITHDRAW_CANCEL, 22 | MERCHANT_BALANCE_RESET 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/WebhookData.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | import java.time.LocalDateTime; 9 | 10 | @Data 11 | @Builder 12 | @NoArgsConstructor 13 | @AllArgsConstructor 14 | public class WebhookData { 15 | 16 | private WebhookEventType eventType; 17 | private LocalDateTime eventTime; 18 | private Long eventTimestamp; 19 | private WebhookStatus status; 20 | private String payloadId; 21 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/WebhookEventType.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum WebhookEventType { 4 | 5 | API_AUTH, 6 | API_VERIFY_AND_AUTH, 7 | CHECKOUTFORM_AUTH, 8 | THREEDS_VERIFY, 9 | REFUND, 10 | REFUND_TX, 11 | PAYOUT_COMPLETED, 12 | AUTOPILOT, 13 | WALLET_CREATED, 14 | WALLET_TX_CREATED, 15 | BNPL_NOTIFICATION, 16 | BANK_ACCOUNT_TRACKING_RECORD, 17 | BKM_EXPRESS_PAYMENT_NOTIFICATION 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/model/WebhookStatus.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.model; 2 | 3 | public enum WebhookStatus { 4 | SUCCESS, 5 | FAILURE 6 | } 7 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/net/HttpMethod.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.net; 2 | 3 | public enum HttpMethod { 4 | 5 | GET, 6 | POST, 7 | DELETE, 8 | PUT; 9 | 10 | public static boolean hasBody(HttpMethod httpMethod) { 11 | return !GET.equals(httpMethod); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/ApplePayMerchantSessionCreateRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | @Data 7 | @Builder 8 | public class ApplePayMerchantSessionCreateRequest { 9 | 10 | private String merchantIdentifier; 11 | private String displayName; 12 | private String initiative; 13 | private String initiativeContext; 14 | private String validationUrl; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/ApprovePaymentTransactionsRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | import java.util.Set; 7 | 8 | @Data 9 | @Builder 10 | public class ApprovePaymentTransactionsRequest { 11 | 12 | private Set paymentTransactionIds; 13 | 14 | @Builder.Default 15 | private Boolean isTransactional = false; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/BnplPaymentOfferRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.ApmType; 4 | import io.craftgate.model.Currency; 5 | import io.craftgate.request.dto.BnplPaymentCartItem; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | 9 | import java.math.BigDecimal; 10 | import java.util.List; 11 | import java.util.Map; 12 | 13 | @Data 14 | @Builder 15 | public class BnplPaymentOfferRequest { 16 | 17 | private ApmType apmType; 18 | private Long merchantApmId; 19 | private BigDecimal price; 20 | private Currency currency; 21 | private Map additionalParams; 22 | private List items; 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/CheckMasterpassUserRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | @Data 7 | @Builder 8 | public class CheckMasterpassUserRequest { 9 | 10 | private String masterpassGsmNumber; 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/CloneCardRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | @Data 7 | @Builder 8 | public class CloneCardRequest { 9 | 10 | private String sourceCardUserKey; 11 | private String sourceCardToken; 12 | private String targetCardUserKey; 13 | private Long targetMerchantId; 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/CompleteApmPaymentRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | import java.util.Map; 7 | 8 | @Data 9 | @Builder 10 | public class CompleteApmPaymentRequest { 11 | 12 | private Long paymentId; 13 | private Map additionalParams; 14 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/CompleteBkmExpressRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import lombok.*; 4 | 5 | @Data 6 | @Builder 7 | public class CompleteBkmExpressRequest { 8 | 9 | private boolean status; 10 | private String message; 11 | private String ticketId; 12 | private String bkmExpressPaymentToken; 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/CompletePosApmPaymentRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | import java.util.Map; 7 | 8 | @Data 9 | @Builder 10 | public class CompletePosApmPaymentRequest { 11 | 12 | private Long paymentId; 13 | private Map additionalParams; 14 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/CompleteThreeDSPaymentRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | @Data 7 | @Builder 8 | public class CompleteThreeDSPaymentRequest { 9 | 10 | private Long paymentId; 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/CreateApmPaymentRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.ApmType; 4 | import io.craftgate.model.Currency; 5 | import io.craftgate.model.PaymentGroup; 6 | import io.craftgate.request.dto.PaymentItem; 7 | import lombok.Builder; 8 | import lombok.Data; 9 | 10 | import java.math.BigDecimal; 11 | import java.util.List; 12 | 13 | @Data 14 | @Builder 15 | public class CreateApmPaymentRequest { 16 | 17 | private ApmType apmType; 18 | private BigDecimal price; 19 | private BigDecimal paidPrice; 20 | private Currency currency; 21 | private PaymentGroup paymentGroup; 22 | private String paymentChannel; 23 | private String conversationId; 24 | private String externalId; 25 | private Long buyerMemberId; 26 | private String apmOrderId; 27 | private String clientIp; 28 | private List items; 29 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/CreateDepositPaymentRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.Currency; 4 | import io.craftgate.request.dto.Card; 5 | import lombok.Builder; 6 | import lombok.Data; 7 | 8 | import java.math.BigDecimal; 9 | 10 | @Data 11 | @Builder 12 | public class CreateDepositPaymentRequest { 13 | 14 | private Long buyerMemberId; 15 | private BigDecimal price; 16 | private Currency currency; 17 | private String conversationId; 18 | private String callbackUrl; 19 | private String posAlias; 20 | private String clientIp; 21 | private Card card; 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/CreateFundTransferDepositPaymentRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | import java.math.BigDecimal; 7 | 8 | @Data 9 | @Builder 10 | public class CreateFundTransferDepositPaymentRequest { 11 | 12 | private BigDecimal price; 13 | private Long buyerMemberId; 14 | private String conversationId; 15 | private String clientIp; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/CreateInstantWalletSettlementRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | import java.util.Set; 7 | 8 | @Data 9 | @Builder 10 | public class CreateInstantWalletSettlementRequest { 11 | 12 | private Set excludedSubMerchantMemberIds; 13 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/CreateMemberRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.MemberType; 4 | import io.craftgate.model.SettlementEarningsDestination; 5 | import lombok.Builder; 6 | import lombok.Data; 7 | 8 | import java.math.BigDecimal; 9 | 10 | @Data 11 | @Builder 12 | public class CreateMemberRequest { 13 | 14 | private String memberExternalId; 15 | private String name; 16 | private String address; 17 | private String email; 18 | private String phoneNumber; 19 | private String contactName; 20 | private String contactSurname; 21 | private MemberType memberType; 22 | private String legalCompanyTitle; 23 | private String taxOffice; 24 | private String taxNumber; 25 | private String iban; 26 | private SettlementEarningsDestination settlementEarningsDestination; 27 | /** 28 | * @deprecated use @{@link CreateWalletRequest#setNegativeAmountLimit(BigDecimal)} instead. 29 | */ 30 | @Deprecated 31 | private BigDecimal negativeWalletAmountLimit; 32 | 33 | private BigDecimal subMerchantMaximumAllowedNegativeBalance; 34 | private Boolean isBuyer; 35 | private Boolean isSubMerchant; 36 | private Integer settlementDelayCount; 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/CreateMerchantPosRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.Currency; 4 | import io.craftgate.model.PaymentAuthenticationType; 5 | import io.craftgate.model.PosIntegrator; 6 | import io.craftgate.model.PosStatus; 7 | import io.craftgate.request.dto.CreateMerchantPosUser; 8 | import lombok.Builder; 9 | import lombok.Data; 10 | 11 | import java.util.List; 12 | 13 | @Data 14 | @Builder 15 | public class CreateMerchantPosRequest { 16 | 17 | @Builder.Default 18 | private PosStatus status = PosStatus.AUTOPILOT; 19 | private String name; 20 | private String clientId; 21 | private Currency currency; 22 | private String posnetId; 23 | private String terminalId; 24 | private String threedsPosnetId; 25 | private String threedsTerminalId; 26 | private String threedsKey; 27 | private Boolean enableForeignCard; 28 | private Boolean enableInstallment; 29 | private Boolean enablePaymentWithoutCvc; 30 | private Boolean enableLoyalty; 31 | private Boolean newIntegration; 32 | private Integer orderNumber; 33 | private PosIntegrator posIntegrator; 34 | private List enabledPaymentAuthenticationTypes; 35 | private List merchantPosUsers; 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/CreateMerchantRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import lombok.Data; 4 | import lombok.experimental.SuperBuilder; 5 | 6 | @Data 7 | @SuperBuilder 8 | public class CreateMerchantRequest { 9 | 10 | private String name; 11 | private String legalCompanyTitle; 12 | private String email; 13 | private String secretWord; 14 | private String website; 15 | private String phoneNumber; 16 | private String contactName; 17 | private String contactSurname; 18 | private String contactPhoneNumber; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/CreatePaymentRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.Currency; 4 | import io.craftgate.model.PaymentGroup; 5 | import io.craftgate.model.PaymentPhase; 6 | import io.craftgate.request.dto.Card; 7 | import io.craftgate.request.dto.FraudCheckParameters; 8 | import io.craftgate.request.dto.PaymentItem; 9 | import lombok.Builder; 10 | import lombok.Data; 11 | import lombok.experimental.SuperBuilder; 12 | 13 | import java.math.BigDecimal; 14 | import java.util.List; 15 | import java.util.Map; 16 | 17 | @Data 18 | @SuperBuilder 19 | public class CreatePaymentRequest { 20 | 21 | protected BigDecimal price; 22 | protected BigDecimal paidPrice; 23 | 24 | @Builder.Default 25 | protected BigDecimal walletPrice = BigDecimal.ZERO; 26 | 27 | protected String posAlias; 28 | protected Integer installment; 29 | protected Currency currency; 30 | protected PaymentGroup paymentGroup; 31 | protected String conversationId; 32 | protected String externalId; 33 | protected String clientIp; 34 | 35 | @Builder.Default 36 | protected PaymentPhase paymentPhase = PaymentPhase.AUTH; 37 | 38 | protected String paymentChannel; 39 | protected Long buyerMemberId; 40 | protected String bankOrderId; 41 | protected Card card; 42 | protected FraudCheckParameters fraudParams; 43 | protected List items; 44 | protected Map additionalParams; 45 | 46 | @Builder.Default 47 | protected boolean retry = true; 48 | } 49 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/CreatePaymentTokenRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | @Data 7 | @Builder 8 | public class CreatePaymentTokenRequest { 9 | 10 | private String value; 11 | private String issuer; 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/CreatePayoutAccountRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.AccountOwner; 4 | import io.craftgate.model.Currency; 5 | import io.craftgate.model.PayoutAccountType; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | 9 | @Data 10 | @Builder 11 | public class CreatePayoutAccountRequest { 12 | 13 | private PayoutAccountType type; 14 | private String externalAccountId; 15 | private Currency currency; 16 | private AccountOwner accountOwner; 17 | private Long subMerchantMemberId; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/CreateProductRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.Currency; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | 7 | import java.math.BigDecimal; 8 | import java.util.Set; 9 | 10 | @Data 11 | @Builder 12 | public class CreateProductRequest { 13 | 14 | private String name; 15 | private String channel; 16 | private String orderId; 17 | private String conversationId; 18 | private String externalId; 19 | private Integer stock; 20 | private BigDecimal price; 21 | private Currency currency; 22 | private String description; 23 | private boolean multiPayment; 24 | private Set enabledInstallments; 25 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/CreateRemittanceRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.Currency; 4 | import io.craftgate.model.RemittanceReasonType; 5 | import lombok.Builder; 6 | import lombok.Data; 7 | 8 | import java.math.BigDecimal; 9 | 10 | @Data 11 | @Builder 12 | public class CreateRemittanceRequest { 13 | 14 | private Long memberId; 15 | private BigDecimal price; 16 | private Currency currency; 17 | private String description; 18 | private RemittanceReasonType remittanceReasonType; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/CreateWalletRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.Currency; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | 7 | import java.math.BigDecimal; 8 | 9 | @Data 10 | @Builder 11 | public class CreateWalletRequest { 12 | 13 | private BigDecimal negativeAmountLimit; 14 | private Currency currency; 15 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/CreateWithdrawRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.Currency; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | 7 | import java.math.BigDecimal; 8 | 9 | @Data 10 | @Builder 11 | public class CreateWithdrawRequest { 12 | 13 | private BigDecimal price; 14 | private Long memberId; 15 | private String description; 16 | private Currency currency; 17 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/DeleteStoredCardRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | @Data 7 | @Builder 8 | public class DeleteStoredCardRequest { 9 | 10 | private String cardUserKey; 11 | private String cardToken; 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/DisapprovePaymentTransactionsRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | import java.util.Set; 7 | 8 | @Data 9 | @Builder 10 | public class DisapprovePaymentTransactionsRequest { 11 | 12 | private Set paymentTransactionIds; 13 | 14 | @Builder.Default 15 | private Boolean isTransactional = false; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/FraudValueListRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.FraudValueType; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | 7 | @Data 8 | @Builder 9 | public class FraudValueListRequest { 10 | private String listName; 11 | private String label; 12 | private FraudValueType type; 13 | private String value; 14 | private Integer durationInSeconds; 15 | private Long paymentId; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/InitApmDepositPaymentRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.ApmType; 4 | import io.craftgate.model.Currency; 5 | import lombok.Builder; 6 | import lombok.Data; 7 | 8 | import java.math.BigDecimal; 9 | import java.util.Map; 10 | 11 | @Data 12 | @Builder 13 | public class InitApmDepositPaymentRequest { 14 | 15 | private ApmType apmType; 16 | private Long merchantApmId; 17 | private BigDecimal price; 18 | private Currency currency; 19 | private Long buyerMemberId; 20 | private String paymentChannel; 21 | private String conversationId; 22 | private String externalId; 23 | private String callbackUrl; 24 | private String apmOrderId; 25 | private String apmUserIdentity; 26 | private Map additionalParams; 27 | private String clientIp; 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/InitApmPaymentRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.ApmType; 4 | import io.craftgate.model.Currency; 5 | import io.craftgate.model.PaymentGroup; 6 | import io.craftgate.request.dto.PaymentItem; 7 | import lombok.Data; 8 | import lombok.experimental.SuperBuilder; 9 | 10 | import java.math.BigDecimal; 11 | import java.util.List; 12 | import java.util.Map; 13 | 14 | @Data 15 | @SuperBuilder 16 | public class InitApmPaymentRequest { 17 | 18 | private ApmType apmType; 19 | private Long merchantApmId; 20 | private BigDecimal price; 21 | private BigDecimal paidPrice; 22 | private Long buyerMemberId; 23 | private Currency currency; 24 | private PaymentGroup paymentGroup; 25 | private String paymentChannel; 26 | private String conversationId; 27 | private String externalId; 28 | private String callbackUrl; 29 | private String apmOrderId; 30 | private String apmUserIdentity; 31 | private Map additionalParams; 32 | private String clientIp; 33 | private List items; 34 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/InitBkmExpressRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.Currency; 4 | import io.craftgate.model.PaymentGroup; 5 | import io.craftgate.model.PaymentPhase; 6 | import io.craftgate.request.dto.PaymentItem; 7 | import lombok.*; 8 | 9 | import java.math.BigDecimal; 10 | import java.util.List; 11 | 12 | @Data 13 | @Builder 14 | public class InitBkmExpressRequest { 15 | 16 | private BigDecimal price; 17 | private BigDecimal paidPrice; 18 | private PaymentGroup paymentGroup; 19 | private String conversationId; 20 | private PaymentPhase paymentPhase; 21 | private List items; 22 | private List enabledInstallments; 23 | private Long buyerMemberId; 24 | private Currency currency; 25 | private String bankOrderId; 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/InitBnplPaymentRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.request.dto.BnplPaymentCartItem; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | import lombok.experimental.SuperBuilder; 7 | 8 | import java.util.List; 9 | 10 | @Data 11 | @SuperBuilder 12 | @EqualsAndHashCode(callSuper = true) 13 | public class InitBnplPaymentRequest extends InitApmPaymentRequest { 14 | 15 | private String bankCode; 16 | private List cartItems; 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/InitCheckoutPaymentRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.Currency; 4 | import io.craftgate.model.PaymentGroup; 5 | import io.craftgate.model.PaymentMethod; 6 | import io.craftgate.model.PaymentPhase; 7 | import io.craftgate.request.dto.CustomInstallment; 8 | import io.craftgate.request.dto.FraudCheckParameters; 9 | import io.craftgate.request.dto.PaymentItem; 10 | import lombok.Builder; 11 | import lombok.Data; 12 | 13 | import java.math.BigDecimal; 14 | import java.util.List; 15 | import java.util.Map; 16 | 17 | @Data 18 | @Builder 19 | public class InitCheckoutPaymentRequest { 20 | 21 | protected BigDecimal price; 22 | protected BigDecimal paidPrice; 23 | protected Currency currency; 24 | protected PaymentGroup paymentGroup; 25 | protected String conversationId; 26 | protected String externalId; 27 | protected String orderId; 28 | protected String callbackUrl; 29 | protected String clientIp; 30 | 31 | @Builder.Default 32 | protected PaymentPhase paymentPhase = PaymentPhase.AUTH; 33 | protected String paymentChannel; 34 | 35 | protected List enabledPaymentMethods; 36 | protected String masterpassGsmNumber; 37 | protected String masterpassUserId; 38 | 39 | protected String cardUserKey; 40 | 41 | protected Long buyerMemberId; 42 | protected List enabledInstallments; 43 | protected boolean alwaysStoreCardAfterPayment; 44 | protected boolean allowOnlyStoredCards; 45 | protected boolean allowOnlyCreditCard; 46 | protected boolean allowInstallmentOnlyCommercialCards; 47 | protected boolean forceThreeDS; 48 | protected boolean forceAuthForNonCreditCards; 49 | protected boolean depositPayment; 50 | protected Long ttl; 51 | protected List customInstallments; 52 | protected List items; 53 | protected FraudCheckParameters fraudParams; 54 | protected Map additionalParams; 55 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/InitGarantiPayPaymentRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.Currency; 4 | import io.craftgate.model.PaymentGroup; 5 | import io.craftgate.request.dto.GarantiPayInstallment; 6 | import io.craftgate.request.dto.PaymentItem; 7 | import lombok.Builder; 8 | import lombok.Data; 9 | 10 | import java.math.BigDecimal; 11 | import java.util.List; 12 | 13 | @Data 14 | @Builder 15 | public class InitGarantiPayPaymentRequest { 16 | 17 | protected BigDecimal price; 18 | protected BigDecimal paidPrice; 19 | protected Currency currency; 20 | protected String posAlias; 21 | protected PaymentGroup paymentGroup; 22 | protected String conversationId; 23 | protected String externalId; 24 | protected String callbackUrl; 25 | protected String clientIp; 26 | protected String paymentChannel; 27 | protected Long buyerMemberId; 28 | protected String bankOrderId; 29 | protected List items; 30 | protected List installments; 31 | private List enabledInstallments; 32 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/InitJuzdanPaymentRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.Currency; 4 | import io.craftgate.model.PaymentGroup; 5 | import io.craftgate.model.PaymentPhase; 6 | import io.craftgate.request.dto.PaymentItem; 7 | import lombok.Builder; 8 | import lombok.Data; 9 | 10 | import java.math.BigDecimal; 11 | import java.util.List; 12 | 13 | @Data 14 | @Builder 15 | public class InitJuzdanPaymentRequest { 16 | private BigDecimal price; 17 | private BigDecimal paidPrice; 18 | private Currency currency; 19 | private PaymentGroup paymentGroup; 20 | private String conversationId; 21 | private String externalId; 22 | private String callbackUrl; 23 | 24 | @Builder.Default 25 | private PaymentPhase paymentPhase = PaymentPhase.AUTH; 26 | private String paymentChannel; 27 | private Long buyerMemberId; 28 | private String bankOrderId; 29 | private List items; 30 | private ClientType clientType; 31 | private Long loanCampaignId; 32 | 33 | public enum ClientType { 34 | M, 35 | W 36 | } 37 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/InitPosApmPaymentRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.Currency; 4 | import io.craftgate.model.PaymentGroup; 5 | import io.craftgate.model.PaymentPhase; 6 | import io.craftgate.model.PosApmPaymentProvider; 7 | import io.craftgate.request.dto.FraudCheckParameters; 8 | import io.craftgate.request.dto.PaymentItem; 9 | import io.craftgate.request.dto.PosApmInstallment; 10 | import lombok.Builder; 11 | import lombok.Data; 12 | 13 | import java.math.BigDecimal; 14 | import java.util.List; 15 | import java.util.Map; 16 | 17 | @Data 18 | @Builder 19 | public class InitPosApmPaymentRequest { 20 | 21 | private BigDecimal price; 22 | private BigDecimal paidPrice; 23 | private String posAlias; 24 | private Currency currency; 25 | private String conversationId; 26 | private String externalId; 27 | private String callbackUrl; 28 | private PaymentGroup paymentGroup; 29 | 30 | @Builder.Default 31 | protected PaymentPhase paymentPhase = PaymentPhase.AUTH; 32 | 33 | private String paymentChannel; 34 | private Long buyerMemberId; 35 | private String bankOrderId; 36 | private String clientIp; 37 | protected List items; 38 | private Map additionalParams; 39 | private List installments; 40 | private PosApmPaymentProvider paymentProvider; 41 | private FraudCheckParameters fraudParams; 42 | private String checkoutFormToken; 43 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/InitThreeDSPaymentRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import lombok.Data; 4 | import lombok.EqualsAndHashCode; 5 | import lombok.experimental.SuperBuilder; 6 | 7 | @Data 8 | @SuperBuilder 9 | @EqualsAndHashCode(callSuper = true) 10 | public class InitThreeDSPaymentRequest extends CreatePaymentRequest { 11 | 12 | private String callbackUrl; 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/MasterpassPaymentCompleteRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | @Data 7 | @Builder 8 | public class MasterpassPaymentCompleteRequest { 9 | private String referenceId; 10 | private String token; 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/MasterpassPaymentThreeDSCompleteRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | @Data 7 | @Builder 8 | public class MasterpassPaymentThreeDSCompleteRequest { 9 | private Long paymentId; 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/MasterpassPaymentThreeDSInitRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | @Data 7 | @Builder 8 | public class MasterpassPaymentThreeDSInitRequest { 9 | private String referenceId; 10 | private String callbackUrl; 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/MasterpassPaymentTokenGenerateRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.Loyalty; 4 | import io.craftgate.model.MasterpassValidationType; 5 | import io.craftgate.request.dto.MasterpassCreatePayment; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | 9 | @Data 10 | @Builder 11 | public class MasterpassPaymentTokenGenerateRequest { 12 | private String msisdn; 13 | private String userId; 14 | private String binNumber; 15 | private Boolean forceThreeDS; 16 | private Boolean isMsisdnValidated; 17 | private MasterpassCreatePayment createPayment; 18 | private Integer masterpassIntegrationVersion; 19 | private Loyalty loyalty; 20 | private MasterpassValidationType validationType; 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/MasterpassRetrieveLoyaltiesRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | @Data 7 | @Builder 8 | public class MasterpassRetrieveLoyaltiesRequest { 9 | private String msisdn; 10 | private String binNumber; 11 | private String cardName; 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/PostAuthPaymentRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | import java.math.BigDecimal; 7 | 8 | @Data 9 | @Builder 10 | public class PostAuthPaymentRequest { 11 | 12 | private BigDecimal paidPrice; 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/RefundPaymentRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.RefundDestinationType; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | 7 | @Data 8 | @Builder 9 | public class RefundPaymentRequest { 10 | 11 | private Long paymentId; 12 | private String conversationId; 13 | 14 | @Builder.Default 15 | private RefundDestinationType refundDestinationType = RefundDestinationType.PROVIDER; 16 | 17 | @Builder.Default 18 | private Boolean chargeFromMe = false; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/RefundPaymentTransactionMarkAsRefundedRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.RefundDestinationType; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | 7 | import java.math.BigDecimal; 8 | 9 | @Data 10 | @Builder 11 | public class RefundPaymentTransactionMarkAsRefundedRequest { 12 | 13 | private Long paymentTransactionId; 14 | private String conversationId; 15 | private BigDecimal refundPrice; 16 | 17 | @Builder.Default 18 | private RefundDestinationType refundDestinationType = RefundDestinationType.PROVIDER; 19 | 20 | @Builder.Default 21 | private Boolean chargeFromMe = false; 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/RefundPaymentTransactionRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.RefundDestinationType; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | 7 | import java.math.BigDecimal; 8 | 9 | @Data 10 | @Builder 11 | public class RefundPaymentTransactionRequest { 12 | 13 | private Long paymentTransactionId; 14 | private String conversationId; 15 | private BigDecimal refundPrice; 16 | 17 | @Builder.Default 18 | private RefundDestinationType refundDestinationType = RefundDestinationType.PROVIDER; 19 | 20 | @Builder.Default 21 | private Boolean chargeFromMe = false; 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/RefundWalletTransactionToCardRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | import java.math.BigDecimal; 7 | 8 | @Data 9 | @Builder 10 | public class RefundWalletTransactionToCardRequest { 11 | 12 | private BigDecimal refundPrice; 13 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/ResetMerchantMemberWalletBalanceRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | import java.math.BigDecimal; 7 | 8 | @Data 9 | @Builder 10 | public class ResetMerchantMemberWalletBalanceRequest { 11 | 12 | private BigDecimal walletAmount; 13 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/RetrieveDailyPaymentReportRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | 4 | import io.craftgate.model.ReportFileType; 5 | import lombok.Builder; 6 | import lombok.Data; 7 | 8 | import java.time.LocalDate; 9 | 10 | @Data 11 | @Builder 12 | public class RetrieveDailyPaymentReportRequest { 13 | 14 | private LocalDate reportDate; 15 | private ReportFileType fileType; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/RetrieveDailyTransactionReportRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | 4 | import io.craftgate.model.ReportFileType; 5 | import lombok.Builder; 6 | import lombok.Data; 7 | 8 | import java.time.LocalDate; 9 | 10 | @Data 11 | @Builder 12 | public class RetrieveDailyTransactionReportRequest { 13 | 14 | private LocalDate reportDate; 15 | private ReportFileType fileType; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/RetrieveLoyaltiesRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | @Data 7 | @Builder 8 | public class RetrieveLoyaltiesRequest { 9 | private String cardNumber; 10 | private String expireYear; 11 | private String expireMonth; 12 | private String cvc; 13 | 14 | private String cardUserKey; 15 | private String cardToken; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/RetrieveProviderCardRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | 4 | import io.craftgate.model.CardProvider; 5 | import lombok.Builder; 6 | import lombok.Data; 7 | 8 | @Data 9 | @Builder 10 | public class RetrieveProviderCardRequest { 11 | 12 | private String providerCardToken; 13 | private String externalId; 14 | private String providerCardUserId; 15 | private CardProvider cardProvider; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/SearchBankAccountTrackingRecordsRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.Currency; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | 7 | import java.time.LocalDateTime; 8 | 9 | @Data 10 | @Builder 11 | public class SearchBankAccountTrackingRecordsRequest { 12 | 13 | private Currency currency; 14 | private String description; 15 | private String senderName; 16 | private String senderIban; 17 | private LocalDateTime minRecordDate; 18 | private LocalDateTime maxRecordDate; 19 | 20 | @Builder.Default 21 | private Integer page = 0; 22 | 23 | @Builder.Default 24 | private Integer size = 10; 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/SearchFraudChecksRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.FraudAction; 4 | import io.craftgate.model.FraudCheckStatus; 5 | import io.craftgate.model.PaymentStatus; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | 9 | import java.time.LocalDateTime; 10 | 11 | @Data 12 | @Builder 13 | public class SearchFraudChecksRequest { 14 | private Integer page; 15 | private Integer size; 16 | private FraudAction action; 17 | private FraudCheckStatus checkStatus; 18 | private LocalDateTime minCreatedDate; 19 | private LocalDateTime maxCreatedDate; 20 | private Long ruleId; 21 | private Long paymentId; 22 | private PaymentStatus paymentStatus; 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/SearchInstallmentsRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.Currency; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | 7 | import java.math.BigDecimal; 8 | 9 | @Data 10 | @Builder 11 | public class SearchInstallmentsRequest { 12 | 13 | private String binNumber; 14 | private BigDecimal price; 15 | private Currency currency; 16 | private boolean distinctCardBrandsWithLowestCommissions; 17 | private boolean loyaltyExists; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/SearchMembersRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.MemberType; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | 7 | import java.util.Set; 8 | 9 | @Data 10 | @Builder 11 | public class SearchMembersRequest { 12 | 13 | @Builder.Default 14 | private Integer page = 0; 15 | @Builder.Default 16 | private Integer size = 10; 17 | 18 | private Boolean isBuyer; 19 | private Boolean isSubMerchant; 20 | private String name; 21 | private Set memberIds; 22 | private MemberType memberType; 23 | private String memberExternalId; 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/SearchMerchantPosRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.Currency; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | 7 | @Data 8 | @Builder 9 | public class SearchMerchantPosRequest { 10 | private String name; 11 | private String alias; 12 | private Currency currency; 13 | private Boolean enableInstallment; 14 | private Boolean enableForeignCard; 15 | private String bankName; 16 | private Integer page; 17 | private Integer size; 18 | 19 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/SearchPaymentRefundsRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.Currency; 4 | import io.craftgate.model.RefundStatus; 5 | import lombok.Builder; 6 | import lombok.Data; 7 | 8 | import java.math.BigDecimal; 9 | import java.time.LocalDateTime; 10 | 11 | @Data 12 | @Builder 13 | public class SearchPaymentRefundsRequest { 14 | 15 | private Integer page; 16 | private Integer size; 17 | private Long id; 18 | private Long paymentId; 19 | private Long buyerMemberId; 20 | private String conversationId; 21 | private RefundStatus status; 22 | private Currency currency; 23 | private BigDecimal minRefundPrice; 24 | private BigDecimal maxRefundPrice; 25 | private LocalDateTime minCreatedDate; 26 | private LocalDateTime maxCreatedDate; 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/SearchPaymentTransactionRefundsRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.Currency; 4 | import io.craftgate.model.RefundStatus; 5 | import lombok.Builder; 6 | import lombok.Data; 7 | 8 | import java.math.BigDecimal; 9 | import java.time.LocalDateTime; 10 | 11 | @Data 12 | @Builder 13 | public class SearchPaymentTransactionRefundsRequest { 14 | 15 | private Integer page; 16 | private Integer size; 17 | private Long id; 18 | private Long paymentId; 19 | private Long paymentTransactionId; 20 | private Long buyerMemberId; 21 | private String conversationId; 22 | private RefundStatus status; 23 | private Currency currency; 24 | private BigDecimal minRefundPrice; 25 | private BigDecimal maxRefundPrice; 26 | private Boolean isAfterSettlement; 27 | private LocalDateTime minCreatedDate; 28 | private LocalDateTime maxCreatedDate; 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/SearchPaymentsRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.*; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | 7 | import java.math.BigDecimal; 8 | import java.time.LocalDateTime; 9 | 10 | @Data 11 | @Builder 12 | public class SearchPaymentsRequest { 13 | 14 | private Integer page; 15 | private Integer size; 16 | private Long paymentId; 17 | private Long paymentTransactionId; 18 | private Long buyerMemberId; 19 | private Long subMerchantMemberId; 20 | private String conversationId; 21 | private String externalId; 22 | private String orderId; 23 | private PaymentType paymentType; 24 | private PaymentProvider paymentProvider; 25 | private PaymentStatus paymentStatus; 26 | private PaymentSource paymentSource; 27 | private String paymentChannel; 28 | private String binNumber; 29 | private String lastFourDigits; 30 | private Currency currency; 31 | private BigDecimal minPaidPrice; 32 | private BigDecimal maxPaidPrice; 33 | private Integer installment; 34 | private Boolean isThreeDS; 35 | private LocalDateTime minCreatedDate; 36 | private LocalDateTime maxCreatedDate; 37 | } 38 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/SearchPayoutAccountRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.AccountOwner; 4 | import io.craftgate.model.Currency; 5 | import lombok.Builder; 6 | import lombok.Data; 7 | @Data 8 | @Builder 9 | public class SearchPayoutAccountRequest { 10 | 11 | private Currency currency; 12 | private AccountOwner accountOwner; 13 | private Long subMerchantMemberId; 14 | 15 | @Builder.Default 16 | private Integer page = 0; 17 | 18 | @Builder.Default 19 | private Integer size = 10; 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/SearchPayoutBouncedTransactionsRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | import java.time.LocalDateTime; 7 | 8 | @Data 9 | @Builder 10 | public class SearchPayoutBouncedTransactionsRequest { 11 | 12 | private LocalDateTime endDate; 13 | private LocalDateTime startDate; 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/SearchPayoutCompletedTransactionsRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.SettlementType; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | 7 | import java.time.LocalDateTime; 8 | 9 | @Data 10 | @Builder 11 | public class SearchPayoutCompletedTransactionsRequest { 12 | 13 | private Long settlementFileId; 14 | private SettlementType settlementType; 15 | private LocalDateTime endDate; 16 | private LocalDateTime startDate; 17 | private Integer page; 18 | private Integer size; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/SearchPayoutRowsRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.FileStatus; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | 7 | import java.time.LocalDateTime; 8 | 9 | @Data 10 | @Builder 11 | public class SearchPayoutRowsRequest { 12 | 13 | @Builder.Default 14 | private Integer page = 0; 15 | 16 | @Builder.Default 17 | private Integer size = 10; 18 | private FileStatus fileStatus; 19 | 20 | private LocalDateTime startDate; 21 | private LocalDateTime endDate; 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/SearchProductsRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.Currency; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | 7 | import java.math.BigDecimal; 8 | 9 | @Data 10 | @Builder 11 | public class SearchProductsRequest { 12 | 13 | private String name; 14 | private BigDecimal minPrice; 15 | private BigDecimal maxPrice; 16 | private Currency currency; 17 | private String channel; 18 | 19 | private Integer page = 0; 20 | private Integer size = 25; 21 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/SearchStoredCardsRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.CardAssociation; 4 | import io.craftgate.model.CardExpiryStatus; 5 | import io.craftgate.model.CardType; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | 9 | import java.time.LocalDateTime; 10 | 11 | @Data 12 | @Builder 13 | public class SearchStoredCardsRequest { 14 | 15 | private String cardAlias; 16 | private String cardBrand; 17 | private CardType cardType; 18 | private String cardUserKey; 19 | private String cardToken; 20 | private String cardBankName; 21 | private CardAssociation cardAssociation; 22 | private CardExpiryStatus cardExpiryStatus; 23 | private LocalDateTime minCreatedDate; 24 | private LocalDateTime maxCreatedDate; 25 | 26 | @Builder.Default 27 | private Integer page = 0; 28 | 29 | @Builder.Default 30 | private Integer size = 10; 31 | } 32 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/SearchWalletTransactionsRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.WalletTransactionType; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | 7 | import java.math.BigDecimal; 8 | import java.time.LocalDateTime; 9 | import java.util.Set; 10 | 11 | @Data 12 | @Builder 13 | public class SearchWalletTransactionsRequest { 14 | 15 | @Builder.Default 16 | private Integer page = 0; 17 | 18 | @Builder.Default 19 | private Integer size = 10; 20 | private Set walletTransactionTypes; 21 | private LocalDateTime minCreatedDate; 22 | private LocalDateTime maxCreatedDate; 23 | private BigDecimal minAmount; 24 | private BigDecimal maxAmount; 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/SearchWithdrawsRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.Currency; 4 | import io.craftgate.model.TransactionPayoutStatus; 5 | import lombok.Builder; 6 | import lombok.Data; 7 | 8 | import java.math.BigDecimal; 9 | import java.time.LocalDateTime; 10 | 11 | @Data 12 | @Builder 13 | public class SearchWithdrawsRequest { 14 | 15 | private Long memberId; 16 | private Currency currency; 17 | private TransactionPayoutStatus payoutStatus; 18 | private BigDecimal minWithdrawPrice; 19 | private BigDecimal maxWithdrawPrice; 20 | private LocalDateTime minCreatedDate; 21 | private LocalDateTime maxCreatedDate; 22 | 23 | @Builder.Default 24 | private Integer page = 0; 25 | 26 | @Builder.Default 27 | private Integer size = 10; 28 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/StoreCardRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | @Data 7 | @Builder 8 | public class StoreCardRequest { 9 | 10 | private String cardHolderName; 11 | private String cardNumber; 12 | private String expireYear; 13 | private String expireMonth; 14 | private String cardAlias; 15 | private String cardUserKey; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/UpdateCardRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | @Data 7 | @Builder 8 | public class UpdateCardRequest { 9 | 10 | private String cardUserKey; 11 | private String cardToken; 12 | private String expireYear; 13 | private String expireMonth; 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/UpdateFraudCheckRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.FraudCheckStatus; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | 7 | @Data 8 | @Builder 9 | public class UpdateFraudCheckRequest { 10 | private FraudCheckStatus checkStatus; 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/UpdateMemberRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.MemberType; 4 | import io.craftgate.model.SettlementEarningsDestination; 5 | import lombok.Builder; 6 | import lombok.Data; 7 | 8 | import java.math.BigDecimal; 9 | 10 | @Data 11 | @Builder 12 | public class UpdateMemberRequest { 13 | 14 | private String name; 15 | private String address; 16 | private String email; 17 | private String phoneNumber; 18 | private String contactName; 19 | private String contactSurname; 20 | private MemberType memberType; 21 | private String legalCompanyTitle; 22 | private String taxOffice; 23 | private String taxNumber; 24 | private String iban; 25 | private SettlementEarningsDestination settlementEarningsDestination; 26 | /** 27 | * @deprecated use @{@link CreateWalletRequest#setNegativeAmountLimit(BigDecimal)} instead. 28 | */ 29 | @Deprecated 30 | private BigDecimal negativeWalletAmountLimit; 31 | 32 | private BigDecimal subMerchantMaximumAllowedNegativeBalance; 33 | private Boolean isBuyer; 34 | private Boolean isSubMerchant; 35 | private Integer settlementDelayCount; 36 | } 37 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/UpdateMerchantPosCommissionsRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.request.dto.UpdateMerchantPosCommission; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | 7 | import java.util.List; 8 | 9 | @Data 10 | @Builder 11 | public class UpdateMerchantPosCommissionsRequest { 12 | 13 | private List commissions; 14 | 15 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/UpdateMerchantPosRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.CardAssociation; 4 | import io.craftgate.model.PaymentAuthenticationType; 5 | import io.craftgate.request.dto.UpdateMerchantPosUser; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | 9 | import java.util.List; 10 | 11 | @Data 12 | @Builder 13 | public class UpdateMerchantPosRequest { 14 | private String name; 15 | private String hostname; 16 | private String clientId; 17 | private String mode; 18 | private String path; 19 | private Integer port; 20 | private String posnetId; 21 | private String terminalId; 22 | private String threedsPosnetId; 23 | private String threedsTerminalId; 24 | private String threedsKey; 25 | private String threedsPath; 26 | private Boolean enableForeignCard; 27 | private Boolean enableInstallment; 28 | private Boolean enablePaymentWithoutCvc; 29 | private Boolean enableLoyalty; 30 | private Boolean newIntegration; 31 | private Integer orderNumber; 32 | private List supportedCardAssociations; 33 | private List enabledPaymentAuthenticationTypes; 34 | private List merchantPosUsers; 35 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/UpdatePaymentTransactionRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | import java.math.BigDecimal; 7 | 8 | @Data 9 | @Builder 10 | public class UpdatePaymentTransactionRequest { 11 | 12 | private Long paymentTransactionId; 13 | private Long subMerchantMemberId; 14 | private BigDecimal subMerchantMemberPrice; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/UpdatePayoutAccountRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.PayoutAccountType; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | @Data 7 | @Builder 8 | public class UpdatePayoutAccountRequest { 9 | 10 | private PayoutAccountType type; 11 | private String externalAccountId; 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/UpdateProductRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import io.craftgate.model.Currency; 4 | import io.craftgate.model.Status; 5 | import lombok.Builder; 6 | import lombok.Data; 7 | 8 | import java.math.BigDecimal; 9 | import java.util.Set; 10 | 11 | @Data 12 | @Builder 13 | public class UpdateProductRequest { 14 | 15 | private String name; 16 | private String channel; 17 | private String orderId; 18 | private String conversationId; 19 | private String externalId; 20 | private Status status; 21 | private Integer stock; 22 | private BigDecimal price; 23 | private Currency currency; 24 | private String description; 25 | private Set enabledInstallments; 26 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/UpdateWalletRequest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | import java.math.BigDecimal; 7 | 8 | @Data 9 | @Builder 10 | public class UpdateWalletRequest { 11 | 12 | private BigDecimal negativeAmountLimit; 13 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/common/HashGenerator.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request.common; 2 | 3 | import com.google.gson.Gson; 4 | import io.craftgate.exception.CraftgateException; 5 | import org.apache.commons.codec.binary.Base64; 6 | import org.apache.commons.codec.digest.DigestUtils; 7 | 8 | import java.net.URLDecoder; 9 | import java.nio.charset.StandardCharsets; 10 | 11 | public final class HashGenerator { 12 | 13 | private HashGenerator() { 14 | } 15 | 16 | public static String generateHash(String baseUrl, String apiKey, String secretKey, String randomString, Object request, String path) { 17 | try { 18 | String hashData; 19 | String decodedUrl = URLDecoder.decode(baseUrl + path, StandardCharsets.UTF_8.toString()); 20 | 21 | if (request != null) { 22 | Gson gson = new Gson(); 23 | String requestBody = gson.toJson(request); 24 | hashData = decodedUrl + apiKey + secretKey + randomString + requestBody; 25 | } else { 26 | hashData = decodedUrl + apiKey + secretKey + randomString; 27 | } 28 | 29 | return Base64.encodeBase64String(DigestUtils.sha256(hashData)); 30 | } catch (Exception e) { 31 | throw new CraftgateException(e); 32 | } 33 | } 34 | 35 | public static String generateHash(String hashString) { 36 | try { 37 | return DigestUtils.sha256Hex(hashString); 38 | } catch (Exception e) { 39 | throw new CraftgateException(e); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/common/RequestOptions.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request.common; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | @Data 7 | @Builder 8 | public class RequestOptions { 9 | 10 | private String apiKey; 11 | private String secretKey; 12 | private String baseUrl; 13 | private String language; 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/common/RequestQueryParamsBuilder.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request.common; 2 | 3 | import lombok.Data; 4 | 5 | import java.lang.reflect.Field; 6 | import java.net.URLEncoder; 7 | import java.time.LocalDateTime; 8 | import java.time.format.DateTimeFormatter; 9 | import java.util.Collection; 10 | import java.util.Objects; 11 | import java.util.stream.Collectors; 12 | 13 | @Data 14 | public class RequestQueryParamsBuilder { 15 | 16 | private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss"); 17 | private static final String EMPTY = ""; 18 | private static final String PLUS_CHAR = "+"; 19 | private static final String PLUS_REPLACEMENT_CHAR = "%20"; 20 | 21 | public static String buildQueryParam(Object object) { 22 | try { 23 | Field[] fields = object.getClass().getDeclaredFields(); 24 | StringBuilder query = new StringBuilder(fields.length > 0 ? "?" : ""); 25 | 26 | for (Field field : fields) { 27 | field.setAccessible(true); 28 | Object value = field.get(object); 29 | 30 | if (Objects.nonNull(value)) { 31 | query.append(field.getName()).append("=").append(URLEncoder.encode(formatValue(value), "UTF-8")).append("&"); 32 | } 33 | } 34 | 35 | return query.toString().replace(PLUS_CHAR, PLUS_REPLACEMENT_CHAR); 36 | } catch (Exception e) { 37 | return EMPTY; 38 | } 39 | } 40 | 41 | @SuppressWarnings("unchecked") 42 | private static String formatValue(Object value) { 43 | if (value instanceof LocalDateTime) return formatDateValue((LocalDateTime) value); 44 | if (value instanceof Collection) return formatCollectionValue((Collection) value); 45 | return value.toString(); 46 | } 47 | 48 | private static String formatDateValue(LocalDateTime date) { 49 | return DATE_TIME_FORMATTER.format(date); 50 | } 51 | 52 | private static String formatCollectionValue(Collection value) { 53 | return value.stream().map(String::valueOf).collect(Collectors.joining(",")); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/dto/BnplPaymentCartItem.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request.dto; 2 | 3 | import io.craftgate.model.BnplCartItemType; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | 7 | import java.math.BigDecimal; 8 | 9 | @Data 10 | @Builder 11 | public class BnplPaymentCartItem { 12 | 13 | private String id; 14 | private String name; 15 | private String brandName; 16 | private BnplCartItemType type; 17 | private BigDecimal unitPrice; 18 | private Integer quantity; 19 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/dto/Card.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request.dto; 2 | 3 | import io.craftgate.model.Loyalty; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | 7 | @Data 8 | @Builder 9 | public class Card { 10 | 11 | private String cardHolderName; 12 | private String cardNumber; 13 | private String expireYear; 14 | private String expireMonth; 15 | private String cvc; 16 | private String cardAlias; 17 | private String cardUserKey; 18 | private String cardToken; 19 | private String binNumber; 20 | private String lastFourDigits; 21 | private String cardHolderIdentityNumber; 22 | private Loyalty loyalty; 23 | private TokenizedCard tokenizedCard; 24 | 25 | @Builder.Default 26 | private Boolean storeCardAfterSuccessPayment = false; 27 | } 28 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/dto/CreateMerchantPosUser.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request.dto; 2 | 3 | import io.craftgate.model.PosOperationType; 4 | import io.craftgate.model.PosUserType; 5 | import lombok.Builder; 6 | import lombok.Data; 7 | 8 | @Data 9 | @Builder 10 | public class CreateMerchantPosUser { 11 | private String posUsername; 12 | private String posPassword; 13 | private PosUserType posUserType; 14 | private PosOperationType posOperationType; 15 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/dto/CustomInstallment.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request.dto; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | import java.math.BigDecimal; 7 | 8 | @Data 9 | @Builder 10 | public class CustomInstallment { 11 | 12 | private int number; 13 | private BigDecimal totalPrice; 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/dto/FraudCheckParameters.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request.dto; 2 | 3 | import lombok.AllArgsConstructor; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | import lombok.NoArgsConstructor; 7 | 8 | @Data 9 | @Builder 10 | @NoArgsConstructor 11 | @AllArgsConstructor 12 | public class FraudCheckParameters { 13 | 14 | private String buyerExternalId; 15 | private String buyerPhoneNumber; 16 | private String buyerEmail; 17 | private String customFraudVariable; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/dto/FraudPaymentData.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request.dto; 2 | 3 | import lombok.Data; 4 | 5 | import java.math.BigDecimal; 6 | import java.time.LocalDateTime; 7 | 8 | @Data 9 | public class FraudPaymentData { 10 | private LocalDateTime paymentDate; 11 | private String conversationId; 12 | private BigDecimal paidPrice; 13 | private String currency; 14 | private Long buyerId; 15 | private String clientIp; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/dto/GarantiPayInstallment.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request.dto; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | import java.math.BigDecimal; 7 | 8 | @Data 9 | @Builder 10 | public class GarantiPayInstallment { 11 | 12 | private int number; 13 | private BigDecimal totalPrice; 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/dto/MasterpassCreatePayment.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request.dto; 2 | 3 | import io.craftgate.model.Currency; 4 | import io.craftgate.model.PaymentGroup; 5 | import io.craftgate.model.PaymentPhase; 6 | import lombok.Builder; 7 | import lombok.Data; 8 | 9 | import java.math.BigDecimal; 10 | import java.util.List; 11 | import java.util.Map; 12 | 13 | @Data 14 | @Builder 15 | public class MasterpassCreatePayment { 16 | protected BigDecimal price; 17 | protected BigDecimal paidPrice; 18 | protected String posAlias; 19 | protected Integer installment; 20 | protected Currency currency; 21 | protected PaymentGroup paymentGroup; 22 | protected String conversationId; 23 | protected String externalId; 24 | protected String clientIp; 25 | 26 | @Builder.Default 27 | protected PaymentPhase paymentPhase = PaymentPhase.AUTH; 28 | 29 | protected String paymentChannel; 30 | protected Long buyerMemberId; 31 | protected String bankOrderId; 32 | protected List items; 33 | protected Map additionalParams; 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/dto/PaymentItem.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request.dto; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | import java.math.BigDecimal; 7 | 8 | @Data 9 | @Builder 10 | public class PaymentItem { 11 | 12 | private String name; 13 | private BigDecimal price; 14 | private String externalId; 15 | private Long subMerchantMemberId; 16 | private BigDecimal subMerchantMemberPrice; 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/dto/PosApmInstallment.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request.dto; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | import java.math.BigDecimal; 7 | 8 | @Data 9 | @Builder 10 | public class PosApmInstallment { 11 | 12 | private int number; 13 | private BigDecimal totalPrice; 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/dto/TokenizedCard.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request.dto; 2 | 3 | import io.craftgate.model.TokenizedCardType; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | 7 | import java.util.Map; 8 | @Data 9 | @Builder 10 | public class TokenizedCard { 11 | private TokenizedCardType type; 12 | private Map data; 13 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/dto/UpdateMerchantPosCommission.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request.dto; 2 | 3 | import io.craftgate.model.Status; 4 | import lombok.Builder; 5 | import lombok.Data; 6 | 7 | import java.math.BigDecimal; 8 | 9 | @Data 10 | @Builder 11 | public class UpdateMerchantPosCommission { 12 | 13 | private String cardBrandName; 14 | 15 | private Integer installment; 16 | 17 | private Status status; 18 | 19 | private Integer blockageDay; 20 | 21 | private String installmentLabel; 22 | 23 | private BigDecimal bankOnUsCreditCardCommissionRate; 24 | 25 | private BigDecimal bankOnUsDebitCardCommissionRate; 26 | 27 | private BigDecimal bankNotOnUsCreditCardCommissionRate; 28 | 29 | private BigDecimal bankNotOnUsDebitCardCommissionRate; 30 | 31 | private BigDecimal bankForeignCardCommissionRate; 32 | 33 | private BigDecimal merchantCommissionRate; 34 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/request/dto/UpdateMerchantPosUser.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.request.dto; 2 | 3 | import io.craftgate.model.PosOperationType; 4 | import io.craftgate.model.PosUserType; 5 | import lombok.Builder; 6 | import lombok.Data; 7 | 8 | @Data 9 | @Builder 10 | public class UpdateMerchantPosUser { 11 | private Long id; 12 | private String posUsername; 13 | private String posPassword; 14 | private PosUserType posUserType; 15 | private PosOperationType posOperationType; 16 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/ApmDepositPaymentResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.ApmAdditionalAction; 4 | import io.craftgate.model.PaymentStatus; 5 | import io.craftgate.response.dto.PaymentError; 6 | import io.craftgate.response.dto.WalletTransaction; 7 | import lombok.Data; 8 | 9 | @Data 10 | public class ApmDepositPaymentResponse { 11 | 12 | private Long paymentId; 13 | private String redirectUrl; 14 | private PaymentStatus paymentStatus; 15 | private ApmAdditionalAction additionalAction; 16 | private PaymentError paymentError; 17 | private WalletTransaction walletTransaction; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/ApmPaymentCompleteResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.PaymentStatus; 4 | import io.craftgate.response.dto.PaymentError; 5 | import lombok.Data; 6 | 7 | @Data 8 | public class ApmPaymentCompleteResponse { 9 | 10 | private Long paymentId; 11 | private PaymentStatus paymentStatus; 12 | private PaymentError paymentError; 13 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/ApmPaymentInitResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.ApmAdditionalAction; 4 | import io.craftgate.model.PaymentStatus; 5 | import io.craftgate.response.dto.PaymentError; 6 | import lombok.Data; 7 | 8 | import java.util.Map; 9 | 10 | @Data 11 | public class ApmPaymentInitResponse { 12 | 13 | private Long paymentId; 14 | private String redirectUrl; 15 | private String htmlContent; 16 | private PaymentStatus paymentStatus; 17 | private ApmAdditionalAction additionalAction; 18 | private PaymentError paymentError; 19 | private Map additionalData; 20 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/BankAccountTrackingRecordListResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.response.common.ListResponse; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | @Data 8 | @EqualsAndHashCode(callSuper = true) 9 | public class BankAccountTrackingRecordListResponse extends ListResponse { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/BankAccountTrackingRecordResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.BankAccountTrackingSource; 4 | import io.craftgate.model.Currency; 5 | import io.craftgate.model.RecordType; 6 | import lombok.Data; 7 | 8 | import java.math.BigDecimal; 9 | import java.time.LocalDateTime; 10 | 11 | @Data 12 | public class BankAccountTrackingRecordResponse { 13 | 14 | private Long id; 15 | private String key; 16 | private Currency currency; 17 | private RecordType recordType; 18 | private String senderName; 19 | private String senderIban; 20 | private String description; 21 | private LocalDateTime recordDate; 22 | private BigDecimal amount; 23 | private BankAccountTrackingSource bankAccountTrackingSource; 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/BinNumberResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.CardAssociation; 4 | import io.craftgate.model.CardType; 5 | import lombok.Data; 6 | 7 | @Data 8 | public class BinNumberResponse { 9 | 10 | private String binNumber; 11 | private CardType cardType; 12 | private CardAssociation cardAssociation; 13 | private String cardBrand; 14 | private String bankName; 15 | private Long bankCode; 16 | private Boolean commercial; 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/BnplPaymentOfferResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.response.dto.BnplBankOffer; 4 | import lombok.Data; 5 | 6 | import java.math.BigDecimal; 7 | import java.util.List; 8 | 9 | @Data 10 | public class BnplPaymentOfferResponse { 11 | 12 | private String offerId; 13 | private BigDecimal price; 14 | private List bankOffers; 15 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/BnplPaymentVerifyResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.ApmAdditionalAction; 4 | import io.craftgate.model.PaymentStatus; 5 | import io.craftgate.response.dto.PaymentError; 6 | import lombok.Data; 7 | 8 | @Data 9 | public class BnplPaymentVerifyResponse { 10 | 11 | private PaymentStatus paymentStatus; 12 | private ApmAdditionalAction additionalAction; 13 | private PaymentError paymentError; 14 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/CheckMasterpassUserResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class CheckMasterpassUserResponse { 7 | 8 | private Boolean isEligibleToUseMasterpass; 9 | private Boolean isAnyCardSavedInCustomerProgram; 10 | private Boolean hasMasterpassAccount; 11 | private Boolean hashAnyCardSavedInMasterpassAccount; 12 | private Boolean isMasterpassAccountLinkedWithMerchant; 13 | private Boolean isMasterpassAccountLocked; 14 | private Boolean isPhoneNumberUpdatedInAnotherMerchant; 15 | private String accountStatus; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/CreateMerchantResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.response.dto.MerchantApiCredential; 4 | import lombok.Data; 5 | 6 | import java.util.List; 7 | 8 | @Data 9 | public class CreateMerchantResponse { 10 | 11 | private Long id; 12 | private String name; 13 | private List merchantApiCredentials; 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/DepositPaymentResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.FraudAction; 4 | import io.craftgate.model.PaymentStatus; 5 | import io.craftgate.model.PaymentType; 6 | import io.craftgate.response.dto.WalletTransaction; 7 | import lombok.Data; 8 | 9 | import java.math.BigDecimal; 10 | import java.time.LocalDateTime; 11 | 12 | @Data 13 | public class DepositPaymentResponse { 14 | 15 | private Long id; 16 | private BigDecimal price; 17 | private String currency; 18 | private Long buyerMemberId; 19 | private String conversationId; 20 | private BigDecimal bankCommissionRate; 21 | private BigDecimal bankCommissionRateAmount; 22 | private String authCode; 23 | private String hostReference; 24 | private String transId; 25 | private String orderId; 26 | private PaymentType paymentType; 27 | private LocalDateTime createdDate; 28 | private PaymentStatus paymentStatus; 29 | private String cardUserKey; 30 | private String cardToken; 31 | private WalletTransaction walletTransaction; 32 | private Long fraudId; 33 | private FraudAction fraudAction; 34 | } 35 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/FraudAllValueListsResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.ArrayList; 6 | import java.util.List; 7 | 8 | @Data 9 | public class FraudAllValueListsResponse { 10 | private List items = new ArrayList<>(); 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/FraudCheckListResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.response.common.ListResponse; 4 | import io.craftgate.response.dto.FraudCheck; 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | import lombok.ToString; 8 | 9 | @Data 10 | @EqualsAndHashCode(callSuper = true) 11 | @ToString(callSuper = true) 12 | public class FraudCheckListResponse extends ListResponse { 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/FraudValueListResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.FraudValue; 4 | import lombok.Data; 5 | 6 | import java.util.List; 7 | 8 | @Data 9 | public class FraudValueListResponse { 10 | 11 | private String name; 12 | private List values; 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/FundTransferDepositPaymentResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.response.dto.WalletTransaction; 4 | import lombok.Data; 5 | 6 | import java.math.BigDecimal; 7 | 8 | @Data 9 | public class FundTransferDepositPaymentResponse { 10 | 11 | private BigDecimal price; 12 | private String currency; 13 | private String conversationId; 14 | private Long buyerMemberId; 15 | private WalletTransaction walletTransaction; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/InitBkmExpressResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import lombok.Builder; 4 | import lombok.Data; 5 | 6 | @Data 7 | @Builder 8 | public class InitBkmExpressResponse { 9 | 10 | private String id; 11 | private String path; 12 | private String token; 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/InitBnplPaymentResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.ApmAdditionalAction; 4 | import io.craftgate.model.PaymentStatus; 5 | import io.craftgate.response.dto.PaymentError; 6 | import lombok.Data; 7 | 8 | @Data 9 | public class InitBnplPaymentResponse { 10 | 11 | private Long paymentId; 12 | private String redirectUrl; 13 | private PaymentStatus paymentStatus; 14 | private ApmAdditionalAction additionalAction; 15 | private PaymentError paymentError; 16 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/InitCheckoutPaymentResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import lombok.Data; 4 | 5 | import java.time.LocalDateTime; 6 | 7 | @Data 8 | public class InitCheckoutPaymentResponse { 9 | 10 | protected String token; 11 | protected String pageUrl; 12 | protected LocalDateTime tokenExpireDate; 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/InitGarantiPayPaymentResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import lombok.Data; 4 | import org.apache.commons.codec.binary.Base64; 5 | 6 | @Data 7 | public class InitGarantiPayPaymentResponse { 8 | 9 | private String htmlContent; 10 | private Long paymentId; 11 | 12 | public String getDecodedHtmlContent() { 13 | return new String(Base64.decodeBase64(htmlContent)); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/InitJuzdanPaymentResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class InitJuzdanPaymentResponse { 7 | private String referenceId; 8 | private String juzdanQrUrl; 9 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/InitPosApmPaymentResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.AdditionalAction; 4 | import io.craftgate.model.PaymentStatus; 5 | import io.craftgate.response.dto.PaymentError; 6 | import lombok.Data; 7 | 8 | import java.util.Map; 9 | 10 | @Data 11 | public class InitPosApmPaymentResponse { 12 | 13 | private String htmlContent; 14 | private Long paymentId; 15 | private PaymentStatus paymentStatus; 16 | private AdditionalAction additionalAction; 17 | private PaymentError paymentError; 18 | private Map additionalData; 19 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/InitThreeDSPaymentResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.AdditionalAction; 4 | import io.craftgate.model.PaymentStatus; 5 | import lombok.Data; 6 | import org.apache.commons.codec.binary.Base64; 7 | 8 | @Data 9 | public class InitThreeDSPaymentResponse { 10 | 11 | private String htmlContent; 12 | private Long paymentId; 13 | private PaymentStatus paymentStatus; 14 | private AdditionalAction additionalAction; 15 | 16 | public String getDecodedHtmlContent() { 17 | return new String(Base64.decodeBase64(htmlContent)); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/InstallmentListResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.response.dto.Installment; 4 | import lombok.Data; 5 | 6 | import java.util.List; 7 | 8 | @Data 9 | public class InstallmentListResponse { 10 | 11 | private List items; 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/InstantTransferBank.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import lombok.*; 4 | 5 | @Data 6 | public class InstantTransferBank { 7 | 8 | private String bankCode; 9 | private String bankName; 10 | private String bankLogoUrl; 11 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/InstantTransferBanksResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.List; 6 | 7 | @Data 8 | public class InstantTransferBanksResponse { 9 | 10 | private List items; 11 | 12 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/MasterpassPaymentThreeDSInitResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class MasterpassPaymentThreeDSInitResponse { 7 | 8 | private Long paymentId; 9 | private String returnUrl; 10 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/MasterpassPaymentTokenGenerateResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class MasterpassPaymentTokenGenerateResponse { 7 | 8 | private String token; 9 | private String referenceId; 10 | private String orderNo; 11 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/MemberListResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.response.common.ListResponse; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | @Data 8 | @EqualsAndHashCode(callSuper = true) 9 | public class MemberListResponse extends ListResponse { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/MemberResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.MemberType; 4 | import io.craftgate.model.SettlementEarningsDestination; 5 | import io.craftgate.model.Status; 6 | import io.craftgate.request.CreateWalletRequest; 7 | import lombok.Data; 8 | 9 | import java.math.BigDecimal; 10 | import java.time.LocalDateTime; 11 | 12 | @Data 13 | public class MemberResponse { 14 | 15 | private Long id; 16 | private LocalDateTime createdDate; 17 | private LocalDateTime updatedDate; 18 | private Status status; 19 | private Boolean isBuyer; 20 | private Boolean isSubMerchant; 21 | private MemberType memberType; 22 | private String memberExternalId; 23 | private String name; 24 | private String email; 25 | private String address; 26 | private String phoneNumber; 27 | private String contactName; 28 | private String contactSurname; 29 | private String legalCompanyTitle; 30 | private String taxOffice; 31 | private String taxNumber; 32 | private SettlementEarningsDestination settlementEarningsDestination; 33 | /** 34 | * @deprecated use @{@link CreateWalletRequest#setNegativeAmountLimit(BigDecimal)} instead. 35 | */ 36 | @Deprecated 37 | private BigDecimal negativeWalletAmountLimit; 38 | private String iban; 39 | private Integer settlementDelayCount; 40 | } 41 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/MerchantPosCommissionListResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.response.common.ListResponse; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | @Data 8 | @EqualsAndHashCode(callSuper = true) 9 | public class MerchantPosCommissionListResponse extends ListResponse { 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/MerchantPosCommissionResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.Status; 4 | import lombok.Data; 5 | 6 | import java.math.BigDecimal; 7 | 8 | @Data 9 | public class MerchantPosCommissionResponse { 10 | 11 | private Long id; 12 | private Status status; 13 | private Integer installment; 14 | private Integer blockageDay; 15 | private String installmentLabel; 16 | private String cardBrandName; 17 | private BigDecimal bankOnUsCreditCardCommissionRate; 18 | private BigDecimal bankNotOnUsCreditCardCommissionRate; 19 | private BigDecimal bankOnUsDebitCardCommissionRate; 20 | private BigDecimal bankNotOnUsDebitCardCommissionRate; 21 | private BigDecimal bankForeignCardCommissionRate; 22 | private BigDecimal merchantCommissionRate; 23 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/MerchantPosListResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.response.common.ListResponse; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | @Data 8 | @EqualsAndHashCode(callSuper = true) 9 | public class MerchantPosListResponse extends ListResponse { 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/MerchantPosResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.*; 4 | import io.craftgate.response.dto.MerchantPosUser; 5 | import lombok.Data; 6 | 7 | import java.util.List; 8 | 9 | @Data 10 | public class MerchantPosResponse { 11 | 12 | private Long id; 13 | private PosStatus status; 14 | private String name; 15 | private String alias; 16 | private PosIntegrator posIntegrator; 17 | private String hostname; 18 | private String clientId; 19 | private String posCurrencyCode; 20 | private String mode; 21 | private String path; 22 | private Integer port; 23 | private String posnetId; 24 | private String terminalId; 25 | private String threedsPosnetId; 26 | private String threedsTerminalId; 27 | private String threedsKey; 28 | private String threedsPath; 29 | private Boolean enableForeignCard; 30 | private Boolean enableInstallment; 31 | private Boolean enablePaymentWithoutCvc; 32 | private Boolean enableLoyalty; 33 | private Boolean newIntegration; 34 | private Integer orderNumber; 35 | private AutopilotState autopilotState; 36 | private Currency currency; 37 | private Long bankId; 38 | private String bankName; 39 | private Boolean isPf; 40 | private List merchantPosUsers; 41 | private List supportedCardAssociations; 42 | private List enabledPaymentAuthenticationTypes; 43 | 44 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/MultiPaymentResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.MultiPaymentStatus; 4 | import lombok.Data; 5 | 6 | import java.math.BigDecimal; 7 | import java.time.LocalDateTime; 8 | import java.util.Set; 9 | 10 | @Data 11 | public class MultiPaymentResponse { 12 | 13 | private Long id; 14 | private MultiPaymentStatus multiPaymentStatus; 15 | private String token; 16 | private String conversationId; 17 | private String externalId; 18 | private BigDecimal paidPrice; 19 | private BigDecimal remainingAmount; 20 | private LocalDateTime tokenExpireDate; 21 | private Set paymentIds; 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/PaymentRefundResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.Currency; 4 | import io.craftgate.model.RefundType; 5 | import io.craftgate.response.common.BasePaymentRefundResponse; 6 | import lombok.Data; 7 | import lombok.EqualsAndHashCode; 8 | 9 | import java.util.List; 10 | 11 | @Data 12 | @EqualsAndHashCode(callSuper = true) 13 | public class PaymentRefundResponse extends BasePaymentRefundResponse { 14 | 15 | private RefundType refundType; 16 | private Currency currency; 17 | private List paymentTransactionRefunds; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/PaymentResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.response.common.BasePaymentResponse; 4 | import io.craftgate.response.dto.PaymentTransaction; 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | 8 | import java.util.List; 9 | import java.util.Map; 10 | 11 | @Data 12 | @EqualsAndHashCode(callSuper = true) 13 | public class PaymentResponse extends BasePaymentResponse { 14 | 15 | private String cardUserKey; 16 | private String cardToken; 17 | private Map additionalData; 18 | private List paymentTransactions; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/PaymentTokenResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class PaymentTokenResponse { 7 | 8 | private String token; 9 | private String issuer; 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/PaymentTransactionApprovalListResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.response.dto.PaymentTransactionApproval; 4 | import lombok.Data; 5 | 6 | import java.util.List; 7 | 8 | @Data 9 | public class PaymentTransactionApprovalListResponse { 10 | 11 | private Long size; 12 | private List items; 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/PaymentTransactionRefundListResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.response.common.ListResponse; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | @Data 8 | @EqualsAndHashCode(callSuper = true) 9 | public class PaymentTransactionRefundListResponse extends ListResponse { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/PaymentTransactionRefundResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.Currency; 4 | import io.craftgate.response.common.BasePaymentTransactionRefundResponse; 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | 8 | @Data 9 | @EqualsAndHashCode(callSuper = true) 10 | public class PaymentTransactionRefundResponse extends BasePaymentTransactionRefundResponse { 11 | 12 | private Currency currency; 13 | private Long paymentId; 14 | } 15 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/PaymentTransactionResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.TransactionStatus; 4 | import io.craftgate.response.dto.Payout; 5 | import lombok.Data; 6 | 7 | import java.math.BigDecimal; 8 | import java.time.LocalDateTime; 9 | 10 | @Data 11 | public class PaymentTransactionResponse { 12 | 13 | private Long id; 14 | private String name; 15 | private String externalId; 16 | private BigDecimal price; 17 | private BigDecimal paidPrice; 18 | private BigDecimal walletPrice; 19 | private BigDecimal merchantCommissionRate; 20 | private BigDecimal merchantCommissionRateAmount; 21 | private BigDecimal merchantPayoutAmount; 22 | private Long subMerchantMemberId; 23 | private BigDecimal subMerchantMemberPrice; 24 | private BigDecimal subMerchantMemberPayoutRate; 25 | private BigDecimal subMerchantMemberPayoutAmount; 26 | private TransactionStatus transactionStatus; 27 | private LocalDateTime blockageResolvedDate; 28 | private Payout payout; 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/PayoutAccountListResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.response.common.ListResponse; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | @Data 8 | @EqualsAndHashCode(callSuper = true) 9 | public class PayoutAccountListResponse extends ListResponse { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/PayoutAccountResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.AccountOwner; 4 | import io.craftgate.model.PayoutAccountType; 5 | import lombok.Data; 6 | 7 | import java.util.Currency; 8 | 9 | @Data 10 | public class PayoutAccountResponse { 11 | private Long id; 12 | private PayoutAccountType type; 13 | private String externalAccountId; 14 | private Currency currency; 15 | private AccountOwner accountOwner; 16 | private Long subMerchantMemberId; 17 | } 18 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/PayoutBouncedTransactionListResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.response.dto.PayoutBouncedTransaction; 4 | import lombok.Data; 5 | 6 | import java.util.List; 7 | 8 | @Data 9 | public class PayoutBouncedTransactionListResponse { 10 | 11 | private List items; 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/PayoutCompletedTransactionListResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.response.dto.PayoutCompletedTransaction; 4 | import lombok.Data; 5 | 6 | import java.util.List; 7 | 8 | @Data 9 | public class PayoutCompletedTransactionListResponse { 10 | 11 | private List items; 12 | private Integer page; 13 | private Integer size; 14 | private Integer totalSize; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/PayoutDetailResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.BounceStatus; 4 | import io.craftgate.response.dto.PayoutDetailTransaction; 5 | import lombok.Data; 6 | 7 | import java.math.BigDecimal; 8 | import java.time.LocalDateTime; 9 | import java.util.List; 10 | 11 | @Data 12 | public class PayoutDetailResponse { 13 | 14 | private String rowDescription; 15 | private LocalDateTime payoutDate; 16 | private String name; 17 | private String iban; 18 | private BigDecimal payoutAmount; 19 | private String currency; 20 | private Long merchantId; 21 | private String merchantType; 22 | private String settlementEarningsDestination; 23 | private String settlementSource; 24 | private BounceStatus bounceStatus; 25 | private List payoutTransactions; 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/PayoutRowListResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.response.common.ListResponse; 4 | import io.craftgate.response.dto.PayoutRow; 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | 8 | @Data 9 | @EqualsAndHashCode(callSuper = true) 10 | public class PayoutRowListResponse extends ListResponse { 11 | 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/ProductListResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.response.common.ListResponse; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | @Data 8 | @EqualsAndHashCode(callSuper = true) 9 | public class ProductListResponse extends ListResponse { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/ProductResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.Currency; 4 | import io.craftgate.model.Status; 5 | import lombok.Data; 6 | 7 | import java.math.BigDecimal; 8 | import java.util.Set; 9 | 10 | @Data 11 | public class ProductResponse { 12 | 13 | private Long id; 14 | private String name; 15 | private String description; 16 | private String orderId; 17 | private String conversationId; 18 | private String externalId; 19 | private Status status; 20 | private BigDecimal price; 21 | private Currency currency; 22 | private Integer stock; 23 | private Integer soldCount; 24 | private String token; 25 | private Set enabledInstallments; 26 | private String url; 27 | private String qrCodeUrl; 28 | private String channel; 29 | } 30 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/RefundWalletTransactionListResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.List; 6 | 7 | @Data 8 | public class RefundWalletTransactionListResponse { 9 | 10 | private List items; 11 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/RefundWalletTransactionResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.RefundStatus; 4 | import io.craftgate.model.WalletTransactionRefundCardTransactionType; 5 | import io.craftgate.response.dto.PaymentError; 6 | import lombok.Data; 7 | 8 | import java.math.BigDecimal; 9 | import java.time.LocalDateTime; 10 | 11 | @Data 12 | public class RefundWalletTransactionResponse { 13 | 14 | private Long id; 15 | private LocalDateTime createdDate; 16 | private RefundStatus refundStatus; 17 | private BigDecimal refundPrice; 18 | private String authCode; 19 | private String hostReference; 20 | private String transId; 21 | private Long transactionId; 22 | private WalletTransactionRefundCardTransactionType transactionType; 23 | private PaymentError paymentError; 24 | private Long walletTransactionId; 25 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/RemittanceResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.Currency; 4 | import io.craftgate.model.RemittanceReasonType; 5 | import io.craftgate.model.RemittanceType; 6 | import io.craftgate.model.Status; 7 | import lombok.Data; 8 | 9 | import java.math.BigDecimal; 10 | import java.time.LocalDateTime; 11 | 12 | @Data 13 | public class RemittanceResponse { 14 | 15 | private Long id; 16 | private LocalDateTime createdDate; 17 | private Status status; 18 | private BigDecimal price; 19 | private Currency currency; 20 | private Long memberId; 21 | private RemittanceType remittanceType; 22 | private RemittanceReasonType remittanceReasonType; 23 | private String description; 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/ReportingPaymentListResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.response.common.ListResponse; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | @Data 8 | @EqualsAndHashCode(callSuper = true) 9 | public class ReportingPaymentListResponse extends ListResponse { 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/ReportingPaymentRefundListResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.response.common.ListResponse; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | @Data 8 | @EqualsAndHashCode(callSuper = true) 9 | public class ReportingPaymentRefundListResponse extends ListResponse { 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/ReportingPaymentRefundResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.PaymentType; 4 | import io.craftgate.response.common.BasePaymentRefundResponse; 5 | import io.craftgate.response.dto.PaymentError; 6 | import lombok.Data; 7 | import lombok.EqualsAndHashCode; 8 | 9 | @Data 10 | @EqualsAndHashCode(callSuper = true) 11 | public class ReportingPaymentRefundResponse extends BasePaymentRefundResponse { 12 | 13 | private PaymentType paymentType; 14 | private PaymentError error; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/ReportingPaymentResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.PaymentRefundStatus; 4 | import io.craftgate.response.common.BasePaymentResponse; 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | 8 | import java.math.BigDecimal; 9 | import java.util.List; 10 | 11 | @Data 12 | @EqualsAndHashCode(callSuper = true) 13 | public class ReportingPaymentResponse extends BasePaymentResponse { 14 | 15 | private Integer retryCount; 16 | private BigDecimal refundablePrice; 17 | private PaymentRefundStatus refundStatus; 18 | private String cardIssuerBankName; 19 | private MemberResponse buyerMember; 20 | private List refunds; 21 | } 22 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/ReportingPaymentTransactionListResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.response.common.ListResponse; 4 | import io.craftgate.response.dto.ReportingPaymentTransaction; 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | 8 | @Data 9 | @EqualsAndHashCode(callSuper = true) 10 | public class ReportingPaymentTransactionListResponse extends ListResponse { 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/ReportingPaymentTransactionRefundListResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.response.common.ListResponse; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | @Data 8 | @EqualsAndHashCode(callSuper = true) 9 | public class ReportingPaymentTransactionRefundListResponse extends ListResponse { 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/ReportingPaymentTransactionRefundResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.PaymentType; 4 | import io.craftgate.response.common.BasePaymentTransactionRefundResponse; 5 | import io.craftgate.response.dto.PaymentError; 6 | import lombok.Data; 7 | import lombok.EqualsAndHashCode; 8 | 9 | @Data 10 | @EqualsAndHashCode(callSuper = true) 11 | public class ReportingPaymentTransactionRefundResponse extends BasePaymentTransactionRefundResponse { 12 | 13 | private PaymentType paymentType; 14 | private PaymentError error; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/RetrieveLoyaltiesResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.Loyalty; 4 | import io.craftgate.response.dto.MerchantPos; 5 | import lombok.Data; 6 | 7 | import java.util.List; 8 | 9 | @Data 10 | public class RetrieveLoyaltiesResponse { 11 | private String cardBrand; 12 | private Boolean force3ds; 13 | private MerchantPos pos; 14 | private List loyalties; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/SettlementResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.SettlementResultStatus; 4 | import lombok.Data; 5 | 6 | @Data 7 | public class SettlementResponse { 8 | 9 | private SettlementResultStatus settlementResultStatus; 10 | } 11 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/StoredCardListResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.response.common.ListResponse; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | @Data 8 | @EqualsAndHashCode(callSuper = true) 9 | public class StoredCardListResponse extends ListResponse { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/StoredCardResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.CardAssociation; 4 | import io.craftgate.model.CardExpiryStatus; 5 | import io.craftgate.model.CardType; 6 | import lombok.Data; 7 | 8 | import java.time.LocalDateTime; 9 | 10 | @Data 11 | public class StoredCardResponse { 12 | 13 | private String binNumber; 14 | private String lastFourDigits; 15 | private String cardUserKey; 16 | private String cardToken; 17 | private String cardHolderName; 18 | private String cardAlias; 19 | private CardType cardType; 20 | private CardAssociation cardAssociation; 21 | private String cardBrand; 22 | private String cardBankName; 23 | private Long cardBankId; 24 | private CardExpiryStatus cardExpiryStatus; 25 | private LocalDateTime createdAt; 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/WalletResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.Currency; 4 | import lombok.Data; 5 | 6 | import java.math.BigDecimal; 7 | import java.time.LocalDateTime; 8 | 9 | @Data 10 | public class WalletResponse { 11 | 12 | private Long id; 13 | private LocalDateTime createdDate; 14 | private LocalDateTime updatedDate; 15 | private BigDecimal amount; 16 | private BigDecimal withdrawalAmount; 17 | private BigDecimal negativeAmountLimit; 18 | private Currency currency; 19 | private Long memberId; 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/WalletTransactionListResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.response.common.ListResponse; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | @Data 8 | @EqualsAndHashCode(callSuper = true) 9 | public class WalletTransactionListResponse extends ListResponse { 10 | 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/WalletTransactionRefundableAmountResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import lombok.Data; 4 | 5 | import java.math.BigDecimal; 6 | 7 | @Data 8 | public class WalletTransactionRefundableAmountResponse { 9 | 10 | private BigDecimal refundableAmount; 11 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/WalletTransactionResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.WalletTransactionType; 4 | import lombok.Data; 5 | 6 | import java.math.BigDecimal; 7 | import java.time.LocalDateTime; 8 | 9 | @Data 10 | public class WalletTransactionResponse { 11 | 12 | private Long id; 13 | private LocalDateTime createdDate; 14 | private WalletTransactionType walletTransactionType; 15 | private BigDecimal amount; 16 | private Long transactionId; 17 | private Long walletId; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/WithdrawListResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.response.common.ListResponse; 4 | import lombok.Data; 5 | import lombok.EqualsAndHashCode; 6 | 7 | @Data 8 | @EqualsAndHashCode(callSuper = true) 9 | public class WithdrawListResponse extends ListResponse { 10 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/WithdrawResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response; 2 | 3 | import io.craftgate.model.Currency; 4 | import io.craftgate.model.Status; 5 | import io.craftgate.model.TransactionPayoutStatus; 6 | import lombok.Data; 7 | 8 | import java.math.BigDecimal; 9 | import java.time.LocalDateTime; 10 | 11 | @Data 12 | public class WithdrawResponse { 13 | 14 | private Long id; 15 | private LocalDateTime createdDate; 16 | private Status status; 17 | private BigDecimal price; 18 | private String description; 19 | private Currency currency; 20 | private TransactionPayoutStatus payoutStatus; 21 | private Long memberId; 22 | private Long payoutId; 23 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/common/BasePaymentRefundResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response.common; 2 | 3 | import io.craftgate.model.RefundDestinationType; 4 | import io.craftgate.model.RefundStatus; 5 | import lombok.Data; 6 | 7 | import java.math.BigDecimal; 8 | import java.time.LocalDateTime; 9 | 10 | @Data 11 | public class BasePaymentRefundResponse { 12 | 13 | private Long id; 14 | private LocalDateTime createdDate; 15 | private RefundStatus status; 16 | private RefundDestinationType refundDestinationType; 17 | private BigDecimal refundPrice; 18 | private BigDecimal refundBankPrice; 19 | private BigDecimal refundWalletPrice; 20 | private String conversationId; 21 | private String authCode; 22 | private String hostReference; 23 | private String transId; 24 | private Long paymentId; 25 | } 26 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/common/BasePaymentResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response.common; 2 | 3 | import io.craftgate.model.*; 4 | import io.craftgate.response.dto.MerchantPos; 5 | import io.craftgate.response.dto.PaymentError; 6 | import lombok.Data; 7 | 8 | import java.math.BigDecimal; 9 | import java.time.LocalDateTime; 10 | 11 | @Data 12 | public class BasePaymentResponse { 13 | 14 | private Long id; 15 | private LocalDateTime createdDate; 16 | private BigDecimal price; 17 | private BigDecimal paidPrice; 18 | private BigDecimal walletPrice; 19 | private Currency currency; 20 | private Long buyerMemberId; 21 | private Integer installment; 22 | private String conversationId; 23 | private String externalId; 24 | private PaymentType paymentType; 25 | private PaymentProvider paymentProvider; 26 | private PaymentSource paymentSource; 27 | private PaymentGroup paymentGroup; 28 | private PaymentStatus paymentStatus; 29 | private PaymentPhase paymentPhase; 30 | private String paymentChannel; 31 | private Boolean isThreeDS; 32 | private BigDecimal merchantCommissionRate; 33 | private BigDecimal merchantCommissionRateAmount; 34 | private BigDecimal bankCommissionRate; 35 | private BigDecimal bankCommissionRateAmount; 36 | private Boolean paidWithStoredCard; 37 | private String binNumber; 38 | private String lastFourDigits; 39 | private String authCode; 40 | private String hostReference; 41 | private String transId; 42 | private Integer mdStatus; 43 | private String orderId; 44 | private String cardHolderName; 45 | private String bankCardHolderName; 46 | private CardType cardType; 47 | private CardAssociation cardAssociation; 48 | private String cardBrand; 49 | private String requestedPosAlias; 50 | private Long fraudId; 51 | private FraudAction fraudAction; 52 | private MerchantPos pos; 53 | private Loyalty loyalty; 54 | private PaymentError paymentError; 55 | } 56 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/common/BasePaymentTransactionRefundResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response.common; 2 | 3 | import io.craftgate.model.RefundDestinationType; 4 | import io.craftgate.model.RefundStatus; 5 | import lombok.Data; 6 | 7 | import java.math.BigDecimal; 8 | import java.time.LocalDateTime; 9 | 10 | @Data 11 | public class BasePaymentTransactionRefundResponse { 12 | 13 | private Long id; 14 | private LocalDateTime createdDate; 15 | private RefundStatus status; 16 | private RefundDestinationType refundDestinationType; 17 | private BigDecimal refundPrice; 18 | private BigDecimal refundBankPrice; 19 | private BigDecimal refundWalletPrice; 20 | private String conversationId; 21 | private String authCode; 22 | private String hostReference; 23 | private String transId; 24 | private Boolean isAfterSettlement; 25 | private Long paymentTransactionId; 26 | } 27 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/common/ErrorResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response.common; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class ErrorResponse { 7 | 8 | private String errorCode; 9 | private String errorDescription; 10 | private String errorGroup; 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/common/ListResponse.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response.common; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.ArrayList; 6 | import java.util.List; 7 | 8 | @Data 9 | public class ListResponse { 10 | 11 | private List items = new ArrayList<>(); 12 | private Integer page; 13 | private Integer size; 14 | private Long totalSize; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/common/Response.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response.common; 2 | 3 | import com.google.gson.JsonObject; 4 | import lombok.Data; 5 | 6 | @Data 7 | public class Response { 8 | 9 | private ErrorResponse errors; 10 | private JsonObject data; 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/dto/BkmExpressToken.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response.dto; 2 | 3 | import lombok.Builder; 4 | import lombok.Getter; 5 | 6 | @Getter 7 | @Builder 8 | public class BkmExpressToken { 9 | 10 | private String id; 11 | private String path; 12 | private String token; 13 | } 14 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/dto/BnplBankOffer.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response.dto; 2 | 3 | import lombok.Data; 4 | 5 | import java.util.List; 6 | 7 | @Data 8 | public class BnplBankOffer { 9 | 10 | private String bankCode; 11 | private String bankName; 12 | private String bankIconUrl; 13 | private String bankTableBannerMessage; 14 | private String bankSmallBannerMessage; 15 | private String preApprovedApplicationId; 16 | private Boolean isSupportNonCustomer; 17 | private Boolean isPaymentPlanCalculatedByBank; 18 | private List bankOfferTerms; 19 | } 20 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/dto/BnplBankOfferTerm.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response.dto; 2 | 3 | import lombok.Data; 4 | 5 | import java.math.BigDecimal; 6 | 7 | @Data 8 | public class BnplBankOfferTerm { 9 | 10 | private Integer term; 11 | private BigDecimal amount; 12 | private BigDecimal totalAmount; 13 | private BigDecimal interestRate; 14 | private BigDecimal annualInterestRate; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/dto/FraudCheck.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response.dto; 2 | 3 | import io.craftgate.model.FraudAction; 4 | import io.craftgate.model.FraudCheckStatus; 5 | import io.craftgate.model.PaymentStatus; 6 | import io.craftgate.model.Status; 7 | import io.craftgate.request.dto.FraudPaymentData; 8 | import lombok.Data; 9 | 10 | @Data 11 | public class FraudCheck { 12 | private Long id; 13 | private Status status; 14 | private FraudAction action; 15 | private FraudCheckStatus checkStatus; 16 | private FraudPaymentData paymentData; 17 | private Long ruleId; 18 | private String ruleName; 19 | private String ruleConditions; 20 | private Long paymentId; 21 | private PaymentStatus paymentStatus; 22 | } 23 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/dto/Installment.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response.dto; 2 | 3 | import io.craftgate.model.CardAssociation; 4 | import io.craftgate.model.CardType; 5 | import lombok.Data; 6 | 7 | import java.math.BigDecimal; 8 | import java.util.List; 9 | 10 | @Data 11 | public class Installment { 12 | 13 | private String binNumber; 14 | private BigDecimal price; 15 | private CardType cardType; 16 | private CardAssociation cardAssociation; 17 | private String cardBrand; 18 | private String bankName; 19 | private Long bankCode; 20 | private Boolean force3ds; 21 | private Boolean cvcRequired; 22 | private Boolean commercial; 23 | private List installmentPrices; 24 | } 25 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/dto/InstallmentPrice.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response.dto; 2 | 3 | import lombok.Data; 4 | 5 | import java.math.BigDecimal; 6 | 7 | @Data 8 | public class InstallmentPrice { 9 | 10 | private String posAlias; 11 | private Integer installmentNumber; 12 | private BigDecimal installmentPrice; 13 | private BigDecimal bankCommissionRate; 14 | private BigDecimal merchantCommissionRate; 15 | private BigDecimal totalPrice; 16 | private String installmentLabel; 17 | private Boolean loyaltySupported; 18 | private Boolean force3ds; 19 | private Boolean cvcRequired; 20 | } 21 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/dto/MerchantApiCredential.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response.dto; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class MerchantApiCredential { 7 | 8 | private String name; 9 | private String apiKey; 10 | private String secretKey; 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/dto/MerchantPos.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response.dto; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class MerchantPos { 7 | 8 | private Long id; 9 | private String name; 10 | private String alias; 11 | private Long bankId; 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/dto/MerchantPosUser.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response.dto; 2 | 3 | import io.craftgate.model.PosOperationType; 4 | import io.craftgate.model.PosUserType; 5 | import lombok.Data; 6 | 7 | @Data 8 | public class MerchantPosUser { 9 | 10 | private Long id; 11 | private String posUsername; 12 | private String posPassword; 13 | private PosUserType posUserType; 14 | private PosOperationType posOperationType; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/dto/PaymentError.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response.dto; 2 | 3 | import lombok.Data; 4 | 5 | @Data 6 | public class PaymentError { 7 | 8 | private String errorCode; 9 | private String errorDescription; 10 | private String errorGroup; 11 | } 12 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/dto/PaymentTransaction.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response.dto; 2 | 3 | import io.craftgate.model.TransactionStatus; 4 | import lombok.Data; 5 | 6 | import java.math.BigDecimal; 7 | import java.time.LocalDateTime; 8 | 9 | @Data 10 | public class PaymentTransaction { 11 | 12 | private Long id; 13 | private String name; 14 | private String externalId; 15 | private BigDecimal price; 16 | private BigDecimal paidPrice; 17 | private BigDecimal walletPrice; 18 | private BigDecimal merchantCommissionRate; 19 | private BigDecimal merchantCommissionRateAmount; 20 | private BigDecimal merchantPayoutAmount; 21 | private Long subMerchantMemberId; 22 | private BigDecimal subMerchantMemberPrice; 23 | private BigDecimal subMerchantMemberPayoutRate; 24 | private BigDecimal subMerchantMemberPayoutAmount; 25 | private TransactionStatus transactionStatus; 26 | private LocalDateTime blockageResolvedDate; 27 | private Payout payout; 28 | } 29 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/dto/PaymentTransactionApproval.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response.dto; 2 | 3 | import io.craftgate.model.ApprovalStatus; 4 | import lombok.Data; 5 | 6 | @Data 7 | public class PaymentTransactionApproval { 8 | 9 | private Long paymentTransactionId; 10 | private ApprovalStatus approvalStatus; 11 | private String failedReason; 12 | } 13 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/dto/Payout.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response.dto; 2 | 3 | import io.craftgate.model.Currency; 4 | import lombok.Data; 5 | 6 | import java.math.BigDecimal; 7 | 8 | @Data 9 | public class Payout { 10 | 11 | private Currency currency; 12 | private BigDecimal parity; 13 | private BigDecimal paidPrice; 14 | private BigDecimal merchantPayoutAmount; 15 | private BigDecimal subMerchantMemberPayoutAmount; 16 | } 17 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/dto/PayoutBouncedTransaction.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response.dto; 2 | 3 | import lombok.Data; 4 | 5 | import java.math.BigDecimal; 6 | import java.time.LocalDateTime; 7 | 8 | @Data 9 | public class PayoutBouncedTransaction { 10 | 11 | private Long id; 12 | private String iban; 13 | private LocalDateTime createdDate; 14 | private LocalDateTime updatedDate; 15 | private Long payoutId; 16 | private BigDecimal payoutAmount; 17 | private String contactName; 18 | private String contactSurname; 19 | private String legalCompanyTitle; 20 | private String rowDescription; 21 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/dto/PayoutCompletedTransaction.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response.dto; 2 | 3 | import io.craftgate.model.MerchantType; 4 | import io.craftgate.model.SettlementEarningsDestination; 5 | import io.craftgate.model.SettlementSource; 6 | import lombok.Data; 7 | 8 | import java.math.BigDecimal; 9 | import java.time.LocalDateTime; 10 | 11 | @Data 12 | public class PayoutCompletedTransaction { 13 | 14 | private Long payoutId; 15 | private Long transactionId; 16 | private String transactionType; 17 | private BigDecimal payoutAmount; 18 | private LocalDateTime payoutDate; 19 | private String currency; 20 | private Long merchantId; 21 | private MerchantType merchantType; 22 | private SettlementEarningsDestination settlementEarningsDestination; 23 | private SettlementSource settlementSource; 24 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/dto/PayoutDetailTransaction.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response.dto; 2 | 3 | import lombok.Data; 4 | 5 | import java.math.BigDecimal; 6 | 7 | @Data 8 | public class PayoutDetailTransaction { 9 | 10 | private Long transactionId; 11 | private String transactionType; 12 | private BigDecimal payoutAmount; 13 | } -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/dto/PayoutRow.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response.dto; 2 | 3 | import lombok.Data; 4 | 5 | import java.math.BigDecimal; 6 | import java.time.LocalDateTime; 7 | 8 | @Data 9 | public class PayoutRow { 10 | 11 | private String name; 12 | private String iban; 13 | private Long payoutId; 14 | private Long merchantId; 15 | private String merchantType; 16 | private BigDecimal payoutAmount; 17 | private LocalDateTime payoutDate; 18 | } 19 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/dto/PayoutStatus.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response.dto; 2 | 3 | import io.craftgate.model.TransactionPayoutStatus; 4 | import lombok.Data; 5 | 6 | import java.time.LocalDateTime; 7 | 8 | @Data 9 | public class PayoutStatus { 10 | 11 | private TransactionPayoutStatus merchantStatus; 12 | private LocalDateTime merchantStatusDate; 13 | private TransactionPayoutStatus subMerchantMemberStatus; 14 | private LocalDateTime subMerchantMemberStatusDate; 15 | } 16 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/dto/ReportingPaymentTransaction.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response.dto; 2 | 3 | import io.craftgate.model.PaymentRefundStatus; 4 | import io.craftgate.response.MemberResponse; 5 | import lombok.Data; 6 | import lombok.EqualsAndHashCode; 7 | 8 | import java.math.BigDecimal; 9 | import java.time.LocalDateTime; 10 | 11 | @Data 12 | @EqualsAndHashCode(callSuper = true) 13 | public class ReportingPaymentTransaction extends PaymentTransaction { 14 | 15 | private LocalDateTime createdDate; 16 | private LocalDateTime transactionStatusDate; 17 | private BigDecimal refundablePrice; 18 | private MemberResponse subMerchantMember; 19 | private PaymentRefundStatus refundStatus; 20 | private PayoutStatus payoutStatus; 21 | private BigDecimal bankCommissionRate; 22 | private BigDecimal bankCommissionRateAmount; 23 | } 24 | -------------------------------------------------------------------------------- /src/main/java/io/craftgate/response/dto/WalletTransaction.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.response.dto; 2 | 3 | import io.craftgate.model.WalletTransactionType; 4 | import lombok.Data; 5 | 6 | import java.math.BigDecimal; 7 | 8 | @Data 9 | public class WalletTransaction { 10 | 11 | private Long id; 12 | private WalletTransactionType walletTransactionType; 13 | private BigDecimal amount; 14 | private Long walletId; 15 | } 16 | -------------------------------------------------------------------------------- /src/test/java/io/craftgate/sample/BankAccountTrackingSample.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.sample; 2 | 3 | import io.craftgate.Craftgate; 4 | import io.craftgate.model.Currency; 5 | import io.craftgate.request.SearchBankAccountTrackingRecordsRequest; 6 | import io.craftgate.response.BankAccountTrackingRecordListResponse; 7 | import io.craftgate.response.BankAccountTrackingRecordResponse; 8 | import org.junit.jupiter.api.Test; 9 | 10 | import static org.junit.jupiter.api.Assertions.*; 11 | 12 | public class BankAccountTrackingSample { 13 | 14 | private final Craftgate craftgate = new Craftgate("api-key", "secret-key", "https://sandbox-api.craftgate.io"); 15 | 16 | @Test 17 | void search_bank_account_tracking_records() { 18 | SearchBankAccountTrackingRecordsRequest request = SearchBankAccountTrackingRecordsRequest.builder() 19 | .page(0) 20 | .size(10) 21 | .currency(Currency.TRY) 22 | .build(); 23 | 24 | BankAccountTrackingRecordListResponse response = craftgate.bankAccountTracking().searchRecords(request); 25 | assertNotNull(response); 26 | assertFalse(response.getItems().isEmpty()); 27 | } 28 | 29 | @Test 30 | void retrieve_bank_account_tracking_record() { 31 | Long recordId = 326L; 32 | BankAccountTrackingRecordResponse response = craftgate.bankAccountTracking().retrieveRecord(recordId); 33 | assertNotNull(response); 34 | assertEquals(response.getId(), recordId); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/test/java/io/craftgate/sample/FileReportingSample.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.sample; 2 | 3 | import io.craftgate.Craftgate; 4 | import io.craftgate.model.ReportFileType; 5 | import io.craftgate.request.RetrieveDailyPaymentReportRequest; 6 | import io.craftgate.request.RetrieveDailyTransactionReportRequest; 7 | import org.junit.jupiter.api.Test; 8 | 9 | import java.time.LocalDate; 10 | 11 | import static org.junit.jupiter.api.Assertions.assertNotNull; 12 | 13 | public class FileReportingSample { 14 | 15 | private final Craftgate craftgate = new Craftgate("api-key", "secret-key", "https://sandbox-api.craftgate.io"); 16 | 17 | @Test 18 | void retrieve_daily_transaction_report() { 19 | RetrieveDailyTransactionReportRequest retrieveRequest = RetrieveDailyTransactionReportRequest.builder() 20 | .reportDate(LocalDate.now()) 21 | .fileType(ReportFileType.CSV) 22 | .build(); 23 | 24 | String response = new String(craftgate.fileReporting().retrieveDailyTransactionReport(retrieveRequest)); 25 | assertNotNull(response); 26 | } 27 | 28 | @Test 29 | void retrieve_daily_payment_report() { 30 | RetrieveDailyPaymentReportRequest retrieveRequest = RetrieveDailyPaymentReportRequest.builder() 31 | .reportDate(LocalDate.now()) 32 | .fileType(ReportFileType.CSV) 33 | .build(); 34 | 35 | String response = new String(craftgate.fileReporting().retrieveDailyPaymentReport(retrieveRequest)); 36 | assertNotNull(response); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/test/java/io/craftgate/sample/HookSample.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.sample; 2 | 3 | import io.craftgate.Craftgate; 4 | import io.craftgate.model.WebhookData; 5 | import io.craftgate.model.WebhookEventType; 6 | import io.craftgate.model.WebhookStatus; 7 | import org.junit.jupiter.api.Test; 8 | 9 | import java.time.LocalDateTime; 10 | 11 | import static org.junit.jupiter.api.Assertions.assertFalse; 12 | import static org.junit.jupiter.api.Assertions.assertTrue; 13 | 14 | public class HookSample { 15 | 16 | private final Craftgate craftgate = new Craftgate("api-key", "secret-key", "https://sandbox-api.craftgate.io"); 17 | 18 | @Test 19 | void should_verify_webhook_signature() { 20 | //given 21 | String merchantHookKey = "Aoh7tReTybO6wOjBmOJFFsOR53SBojEp"; 22 | String incomingSignature = "0wRB5XqWJxwwPbn5Z9TcbHh8EGYFufSYTsRMB74N094="; 23 | 24 | LocalDateTime eventTime = LocalDateTime.of(2022, 8, 26, 16, 40, 21, 395655000); 25 | WebhookData webhookData = WebhookData.builder() 26 | .eventType(WebhookEventType.API_VERIFY_AND_AUTH) 27 | .eventTime(eventTime) 28 | .eventTimestamp(1661521221L) 29 | .status(WebhookStatus.SUCCESS) 30 | .payloadId("584") 31 | .build(); 32 | 33 | //when 34 | boolean isWebhookVerified = craftgate.hook().isWebhookVerified(merchantHookKey, incomingSignature, webhookData); 35 | 36 | //then 37 | assertTrue(isWebhookVerified); 38 | } 39 | 40 | @Test 41 | void should_not_verify_webhook_signature() { 42 | //given 43 | String merchantHookKey = "Aoh7tReTybO6wOjBmOJFFsOR53SBojEp"; 44 | String incomingSignature = "Bsa498wcnaasd4bhx8anxıxcsdnxanalkdjcahxhd"; 45 | 46 | LocalDateTime eventTime = LocalDateTime.of(2022, 8, 26, 16, 40, 21, 395655000); 47 | WebhookData webhookData = WebhookData.builder() 48 | .eventType(WebhookEventType.API_VERIFY_AND_AUTH) 49 | .eventTime(eventTime) 50 | .eventTimestamp(1661521221L) 51 | .status(WebhookStatus.SUCCESS) 52 | .payloadId("584") 53 | .build(); 54 | 55 | //when 56 | boolean isWebhookVerified = craftgate.hook().isWebhookVerified(merchantHookKey, incomingSignature, webhookData); 57 | 58 | //then 59 | assertFalse(isWebhookVerified); 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/test/java/io/craftgate/sample/InstallmentSample.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.sample; 2 | 3 | import io.craftgate.Craftgate; 4 | import io.craftgate.model.CardAssociation; 5 | import io.craftgate.model.CardType; 6 | import io.craftgate.model.Currency; 7 | import io.craftgate.request.SearchInstallmentsRequest; 8 | import io.craftgate.response.BinNumberResponse; 9 | import io.craftgate.response.InstallmentListResponse; 10 | import org.junit.jupiter.api.Test; 11 | 12 | import java.math.BigDecimal; 13 | 14 | import static org.junit.jupiter.api.Assertions.assertEquals; 15 | import static org.junit.jupiter.api.Assertions.assertTrue; 16 | 17 | public class InstallmentSample { 18 | 19 | private final Craftgate craftgate = new Craftgate("api-key", "secret-key", "https://sandbox-api.craftgate.io"); 20 | 21 | @Test 22 | void retrieve_bin() { 23 | String binNumber = "525864"; 24 | 25 | BinNumberResponse response = craftgate.installment().retrieveBinNumber(binNumber); 26 | assertEquals(binNumber, response.getBinNumber()); 27 | assertEquals(CardType.CREDIT_CARD, response.getCardType()); 28 | assertEquals(CardAssociation.MASTER_CARD, response.getCardAssociation()); 29 | assertEquals("World", response.getCardBrand()); 30 | assertEquals("YAPI VE KREDİ BANKASI A.Ş.", response.getBankName()); 31 | assertEquals(67L, response.getBankCode()); 32 | assertEquals(false, response.getCommercial()); 33 | } 34 | 35 | @Test 36 | void search_installments() { 37 | SearchInstallmentsRequest request = SearchInstallmentsRequest.builder() 38 | .binNumber("525864") 39 | .price(BigDecimal.valueOf(100L)) 40 | .currency(Currency.TRY) 41 | .build(); 42 | 43 | InstallmentListResponse response = craftgate.installment().searchInstallments(request); 44 | assertTrue(response.getItems().size() > 0); 45 | } 46 | 47 | @Test 48 | void search_installments_with_distinct_card_brand_with_lowest_commissions() { 49 | SearchInstallmentsRequest request = SearchInstallmentsRequest.builder() 50 | .binNumber("525864") 51 | .price(BigDecimal.valueOf(100L)) 52 | .currency(Currency.TRY) 53 | .distinctCardBrandsWithLowestCommissions(true) 54 | .build(); 55 | 56 | InstallmentListResponse response = craftgate.installment().searchInstallments(request); 57 | assertTrue(response.getItems().size() > 0); 58 | } 59 | } 60 | -------------------------------------------------------------------------------- /src/test/java/io/craftgate/sample/InstantTransferPaymentSample.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.sample; 2 | 3 | import io.craftgate.Craftgate; 4 | import io.craftgate.model.*; 5 | import io.craftgate.request.InitApmPaymentRequest; 6 | import io.craftgate.request.dto.PaymentItem; 7 | import io.craftgate.response.ApmPaymentInitResponse; 8 | import io.craftgate.response.InstantTransferBank; 9 | import io.craftgate.response.InstantTransferBanksResponse; 10 | import org.junit.jupiter.api.Test; 11 | 12 | import java.math.BigDecimal; 13 | import java.util.ArrayList; 14 | import java.util.HashMap; 15 | import java.util.List; 16 | import java.util.UUID; 17 | 18 | import static org.junit.jupiter.api.Assertions.*; 19 | 20 | public class InstantTransferPaymentSample { 21 | 22 | private final Craftgate craftgate = new Craftgate("api-key", "secret-key", "https://sandbox-api.craftgate.io"); 23 | 24 | @Test 25 | void retrieve_active_banks() { 26 | InstantTransferBanksResponse response = craftgate.payment().retrieveActiveBanks(); 27 | assertNotNull(response.getItems()); 28 | InstantTransferBank instantTransferBank = response.getItems().get(0); 29 | assertNotNull(instantTransferBank); 30 | } 31 | 32 | @Test 33 | void init_instant_transfer_apm_payment() { 34 | List items = new ArrayList<>(); 35 | 36 | items.add(PaymentItem.builder() 37 | .name("item 1") 38 | .externalId(UUID.randomUUID().toString()) 39 | .price(BigDecimal.valueOf(0.60)) 40 | .build()); 41 | 42 | items.add(PaymentItem.builder() 43 | .name("item 2") 44 | .externalId(UUID.randomUUID().toString()) 45 | .price(BigDecimal.valueOf(0.40)) 46 | .build()); 47 | 48 | InitApmPaymentRequest request = InitApmPaymentRequest.builder() 49 | .apmType(ApmType.INSTANT_TRANSFER) 50 | .price(BigDecimal.valueOf(1)) 51 | .paidPrice(BigDecimal.valueOf(1)) 52 | .currency(Currency.TRY) 53 | .paymentGroup(PaymentGroup.LISTING_OR_SUBSCRIPTION) 54 | .conversationId("456d1297-908e-4bd6-a13b-4be31a6e47d5") 55 | .externalId("optional-externalId") 56 | .callbackUrl("https://www.your-website.com/craftgate-apm-callback") 57 | .additionalParams(new HashMap() {{ 58 | put("bankCode", "0"); 59 | }}) 60 | .items(items) 61 | .build(); 62 | 63 | ApmPaymentInitResponse response = craftgate.payment().initApmPayment(request); 64 | assertNotNull(response.getPaymentId()); 65 | assertNull(response.getRedirectUrl()); 66 | assertNotNull(response.getHtmlContent()); 67 | assertEquals(PaymentStatus.WAITING, response.getPaymentStatus()); 68 | assertEquals(ApmAdditionalAction.SHOW_HTML_CONTENT, response.getAdditionalAction()); 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /src/test/java/io/craftgate/sample/JuzdanSample.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.sample; 2 | 3 | import io.craftgate.Craftgate; 4 | import io.craftgate.model.*; 5 | import io.craftgate.request.InitJuzdanPaymentRequest; 6 | import io.craftgate.request.dto.PaymentItem; 7 | import io.craftgate.response.InitJuzdanPaymentResponse; 8 | import io.craftgate.response.PaymentResponse; 9 | import org.junit.jupiter.api.Test; 10 | 11 | import java.math.BigDecimal; 12 | import java.util.LinkedList; 13 | import java.util.List; 14 | 15 | import static org.junit.jupiter.api.Assertions.*; 16 | 17 | public class JuzdanSample { 18 | 19 | private final Craftgate craftgate = new Craftgate("api-key", "secret-key", "https://sandbox-api.craftgate.io"); 20 | 21 | @Test 22 | void init() { 23 | List items = new LinkedList<>(); 24 | 25 | PaymentItem paymentItem = PaymentItem.builder() 26 | .price(BigDecimal.ONE) 27 | .name("test123") 28 | .externalId("test2") 29 | .build(); 30 | 31 | items.add(paymentItem); 32 | 33 | InitJuzdanPaymentRequest initJuzdanPaymentRequest = InitJuzdanPaymentRequest.builder() 34 | .price(BigDecimal.ONE) 35 | .paidPrice(BigDecimal.ONE) 36 | .currency(Currency.TRY) 37 | .paymentGroup(PaymentGroup.PRODUCT) 38 | .conversationId("testConversationId") 39 | .externalId("testExternalId") 40 | .callbackUrl("www.testCallbackUrl.com") 41 | .clientType(InitJuzdanPaymentRequest.ClientType.W) 42 | .items(items) 43 | .paymentPhase(PaymentPhase.AUTH) 44 | .paymentChannel("testPaymentChannel") 45 | .bankOrderId("testBankOrderId") 46 | .build(); 47 | 48 | InitJuzdanPaymentResponse initResponse = assertDoesNotThrow(() -> craftgate.juzdan().init(initJuzdanPaymentRequest)); 49 | assertNotNull(initResponse); 50 | assertNotNull(initResponse.getJuzdanQrUrl()); 51 | assertNotNull(initResponse.getReferenceId()); 52 | } 53 | 54 | @Test 55 | void retrieve() { 56 | 57 | String referenceId = "5493c7a7-4d8b-4517-887d-f8b8f826a3d0"; 58 | 59 | PaymentResponse paymentResponse = assertDoesNotThrow(() -> craftgate.juzdan().retrieve(referenceId)); 60 | 61 | assertNotNull(paymentResponse); 62 | assertEquals(PaymentSource.JUZDAN, paymentResponse.getPaymentSource()); 63 | assertEquals(PaymentType.CARD_PAYMENT, paymentResponse.getPaymentType()); 64 | } 65 | 66 | } 67 | -------------------------------------------------------------------------------- /src/test/java/io/craftgate/sample/PaymentTokenSample.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.sample; 2 | 3 | import io.craftgate.Craftgate; 4 | import io.craftgate.model.ApmType; 5 | import io.craftgate.request.CreatePaymentTokenRequest; 6 | import io.craftgate.response.PaymentTokenResponse; 7 | import org.junit.jupiter.api.Test; 8 | 9 | import static org.junit.jupiter.api.Assertions.assertEquals; 10 | import static org.junit.jupiter.api.Assertions.assertNotNull; 11 | 12 | public class PaymentTokenSample { 13 | 14 | private final Craftgate craftgate = new Craftgate("api-key", "secret-key", "https://sandbox-api.craftgate.io"); 15 | 16 | @Test 17 | void create_payment_token() { 18 | CreatePaymentTokenRequest request = CreatePaymentTokenRequest.builder() 19 | .value("value-to-be-tokenized") 20 | .issuer("EDENRED") 21 | .build(); 22 | 23 | PaymentTokenResponse response = craftgate.paymentTokenAdapter().createPaymentToken(request); 24 | 25 | assertEquals(response.getIssuer(), ApmType.EDENRED.name()); 26 | assertNotNull(response.getToken()); 27 | } 28 | 29 | @Test 30 | void delete_payment_token() { 31 | String token = "token-to-be-deleted"; 32 | 33 | craftgate.paymentTokenAdapter().deletePaymentToken(token); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /src/test/java/io/craftgate/sample/SettlementSample.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.sample; 2 | 3 | import io.craftgate.Craftgate; 4 | import io.craftgate.model.AccountOwner; 5 | import io.craftgate.model.Currency; 6 | import io.craftgate.model.PayoutAccountType; 7 | import io.craftgate.request.CreateInstantWalletSettlementRequest; 8 | import io.craftgate.request.CreatePayoutAccountRequest; 9 | import io.craftgate.request.SearchPayoutAccountRequest; 10 | import io.craftgate.request.UpdatePayoutAccountRequest; 11 | import io.craftgate.response.PayoutAccountListResponse; 12 | import io.craftgate.response.PayoutAccountResponse; 13 | import io.craftgate.response.SettlementResponse; 14 | import org.junit.jupiter.api.Test; 15 | 16 | import static org.junit.jupiter.api.Assertions.assertNotNull; 17 | 18 | public class SettlementSample { 19 | 20 | private final Craftgate craftgate = new Craftgate("api-key", "secret-key", "https://sandbox-api.craftgate.io"); 21 | 22 | @Test 23 | void create_instant_wallet_settlement() { 24 | CreateInstantWalletSettlementRequest request = CreateInstantWalletSettlementRequest.builder() 25 | .build(); 26 | 27 | SettlementResponse response = craftgate.settlement().createInstantWalletSettlement(request); 28 | assertNotNull(response.getSettlementResultStatus()); 29 | } 30 | 31 | @Test 32 | void create_merchant_payout_account() { 33 | CreatePayoutAccountRequest request = CreatePayoutAccountRequest.builder() 34 | .accountOwner(AccountOwner.MERCHANT) 35 | .currency(Currency.USD) 36 | .type(PayoutAccountType.WISE) 37 | .externalAccountId("wiseRecipientId") 38 | .build(); 39 | 40 | PayoutAccountResponse response = craftgate.settlement().createPayoutAccount(request); 41 | assertNotNull(response.getId()); 42 | } 43 | 44 | @Test 45 | void create_sub_merchant_payout_account() { 46 | CreatePayoutAccountRequest request = CreatePayoutAccountRequest.builder() 47 | .accountOwner(AccountOwner.SUB_MERCHANT_MEMBER) 48 | .subMerchantMemberId(1L) 49 | .currency(Currency.USD) 50 | .type(PayoutAccountType.WISE) 51 | .externalAccountId("wiseRecipientId") 52 | .build(); 53 | 54 | PayoutAccountResponse response = craftgate.settlement().createPayoutAccount(request); 55 | assertNotNull(response.getId()); 56 | } 57 | 58 | @Test 59 | void update_payout_account() { 60 | UpdatePayoutAccountRequest request = UpdatePayoutAccountRequest.builder() 61 | .type(PayoutAccountType.WISE) 62 | .externalAccountId("wiseRecipientId2") 63 | .build(); 64 | 65 | craftgate.settlement().updatePayoutAccount(11L, request); 66 | } 67 | 68 | @Test 69 | void search_payout_account() { 70 | SearchPayoutAccountRequest request = SearchPayoutAccountRequest.builder() 71 | .accountOwner(AccountOwner.MERCHANT) 72 | .currency(Currency.USD) 73 | .page(0) 74 | .size(10) 75 | .build(); 76 | 77 | PayoutAccountListResponse response = craftgate.settlement().searchPayoutAccount(request); 78 | assertNotNull(response.getItems()); 79 | } 80 | 81 | @Test 82 | void delete_payout_account() { 83 | craftgate.settlement().deletePayoutAccount(10L); 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /src/test/java/io/craftgate/unit/HashGeneratorTest.java: -------------------------------------------------------------------------------- 1 | package io.craftgate.unit; 2 | 3 | import io.craftgate.request.CreateMemberRequest; 4 | import io.craftgate.request.common.HashGenerator; 5 | import org.junit.jupiter.api.Test; 6 | 7 | import static org.junit.jupiter.api.Assertions.assertEquals; 8 | 9 | public class HashGeneratorTest { 10 | 11 | @Test 12 | void should_generate_hash() { 13 | //given 14 | String expectedSignature = "Tj0mkbp+WLBwLhS65CjX708PGCl9hD9rlT6n6Zgcyi8="; 15 | CreateMemberRequest request = CreateMemberRequest.builder() 16 | .memberExternalId("ext-1511") 17 | .email("haluk.demir@example.com") 18 | .phoneNumber("905551111111") 19 | .name("Haluk Demir") 20 | .build(); 21 | 22 | //when 23 | String signature = HashGenerator.generateHash("http://api.craftgate.io", "api-key", "secret-key", 24 | "rand-2010", request, "/onboarding/v1/members"); 25 | 26 | //then 27 | assertEquals(expectedSignature, signature); 28 | } 29 | 30 | @Test 31 | void should_generate_hash_when_request_body_null() { 32 | //given 33 | String expectedSignature = "lecLrGZXo5u+Oq3V33vIqtbLU2fopbiH78kq6wjWNDQ="; 34 | 35 | //when 36 | String signature = HashGenerator.generateHash("http://api.craftgate.io", "api-key", "secret-key", 37 | "rand-2010", null, "/onboarding/v1/members"); 38 | 39 | //then 40 | assertEquals(expectedSignature, signature); 41 | } 42 | } 43 | --------------------------------------------------------------------------------