diff --git a/samples/payment/InitMultiPayment.js b/samples/payment/InitMultiPayment.js new file mode 100644 index 0000000..dd58438 --- /dev/null +++ b/samples/payment/InitMultiPayment.js @@ -0,0 +1,39 @@ +const Craftgate = require('../../dist'); + +const craftgate = new Craftgate.Client({ + apiKey: 'api-key', + secretKey: 'secret-key', + baseUrl: 'https://sandbox-api.craftgate.io' +}); + +const request = { + price: 100.0, + paidPrice: 100.0, + callbackUrl: 'https://www.your-website.com/craftgate-checkout-callback', + currency: Craftgate.Model.Currency.TRY, + conversationId: '456d1297-908e-4bd6-a13b-4be31a6e47d5', + externalId: '123d1297-839e-4bd6-a13b-4be31a6e12b8', + paymentGroup: Craftgate.Model.PaymentGroup.ListingOrSubscription, + paymentPhase: Craftgate.Model.PaymentPhase.Auth, + items: [ + { + name: 'Item 1', + price: 30.0, + externalId: '123d1297-839e-4bd6-a13b-4be31a6e12a8' + }, + { + name: 'Item 2', + price: 50.0, + externalId: '789d1297-839e-4bd6-a13b-4be31a6e13f7' + }, + { + name: 'Item 3', + price: 20.0, + externalId: '3a1d1297-839e-4bd6-a13b-4be31a6e18e6' + } + ] +}; + +craftgate.payment().initMultiPayment(request) + .then(payment => console.info('Init Multi payment', payment)) + .catch(err => console.error('Failed to init multi payment', err)); diff --git a/src/adapter/MerchantApmAdapter.ts b/src/adapter/MerchantApmAdapter.ts index 211b178..587ac61 100644 --- a/src/adapter/MerchantApmAdapter.ts +++ b/src/adapter/MerchantApmAdapter.ts @@ -1,11 +1,7 @@ import {ClientCreationOptions} from '../lib/HttpClient'; -import RetrieveDailyPaymentReportRequest from '../request/RetrieveDailyPaymentReportRequest'; -import RetrieveDailyTransactionReportRequest from '../request/RetrieveDailyTransactionReportRequest'; - import DataResponse from '../response/DataResponse'; import MerchantApmResponse from '../response/MerchantApmResponse'; -import WalletResponse from '../response/WalletResponse'; import BaseAdapter from './BaseAdapter'; diff --git a/src/adapter/PaymentAdapter.ts b/src/adapter/PaymentAdapter.ts index 2d084b9..37a0592 100644 --- a/src/adapter/PaymentAdapter.ts +++ b/src/adapter/PaymentAdapter.ts @@ -20,6 +20,7 @@ import InitBnplPaymentRequest from '../request/InitBnplPaymentRequest'; import InitCheckoutCardVerifyRequest from '../request/InitCheckoutCardVerifyRequest'; import InitCheckoutPaymentRequest from '../request/InitCheckoutPaymentRequest'; import InitGarantiPayPaymentRequest from '../request/InitGarantiPayPaymentRequest'; +import InitMultiPaymentRequest from '../request/InitMultiPaymentRequest'; import InitPosApmPaymentRequest from '../request/InitPosApmPaymentRequest'; import InitThreeDSPaymentRequest from '../request/InitThreeDSPaymentRequest'; import PostAuthPaymentRequest from '../request/PostAuthPaymentRequest'; @@ -47,6 +48,7 @@ import InitBnplPaymentResponse from '../response/InitBnplPaymentResponse'; import InitCheckoutCardVerifyResponse from '../response/InitCheckoutCardVerifyResponse'; import InitCheckoutPaymentResponse from '../response/InitCheckoutPaymentResponse'; import InitGarantiPayPaymentResponse from '../response/InitGarantiPayPaymentResponse'; +import InitMultiPaymentResponse from '../response/InitMultipaymentPaymentResponse'; import InitPosApmPaymentResponse from '../response/InitPosApmPaymentResponse'; import InitThreeDSPaymentResponse from '../response/InitThreeDSPaymentResponse'; import InstantTransferBanksResponse from '../response/InstantTransferBanksResponse'; @@ -246,6 +248,10 @@ export default class PaymentAdapter extends BaseAdapter { return this._client.get(`/payment/v1/instant-transfer-banks`); } + async initMultiPayment(request: InitMultiPaymentRequest): Promise { + return this._client.post(`/payment/v1/multi-payments/init`, request); + } + async retrieveMultiPayment(token: string): Promise { return this._client.get(`/payment/v1/multi-payments/${token}`); } diff --git a/src/model/WebhookEventType.ts b/src/model/WebhookEventType.ts index f7d072c..770870e 100644 --- a/src/model/WebhookEventType.ts +++ b/src/model/WebhookEventType.ts @@ -11,6 +11,7 @@ enum WebhookEventType { WalletTxCreated = 'WALLET_TX_CREATED', BnplNotification = 'BNPL_NOTIFICATION', MultiPaymentCompleted = 'MULTI_PAYMENT_COMPLETED', + MultiPaymentExpired = 'MULTI_PAYMENT_EXPIRED', BkmExpressPaymentNotification = 'BKM_EXPRESS_PAYMENT_NOTIFICATION' } diff --git a/src/model/index.ts b/src/model/index.ts index 9be4e6e..1f6b1ee 100644 --- a/src/model/index.ts +++ b/src/model/index.ts @@ -7,9 +7,9 @@ import BounceStatus from './BounceStatus'; import CardAssociation from './CardAssociation'; import CardBrand from './CardBrand'; import CardExpiryStatus from './CardExpiryStatus'; +import CardType from './CardType'; import CardVerificationAuthType from './CardVerificationAuthType'; import CardVerifyStatus from './CardVerifyStatus'; -import CardType from './CardType'; import ClientType from './ClientType'; import Currency from './Currency'; import FileStatus from './FileStatus'; diff --git a/src/request/InitMultiPaymentRequest.ts b/src/request/InitMultiPaymentRequest.ts new file mode 100644 index 0000000..0366869 --- /dev/null +++ b/src/request/InitMultiPaymentRequest.ts @@ -0,0 +1,39 @@ +import Currency from '../model/Currency'; +import PaymentGroup from '../model/PaymentGroup'; +import PaymentMethod from '../model/PaymentMethod'; +import PaymentPhase from '../model/PaymentPhase'; +import PaymentSource from '../model/PaymentSource'; + +import PaymentItem from './dto/PaymentItem'; + +type InitMultiPaymentRequest = { + price: number; + paidPrice: number; + currency: Currency; + paymentGroup: PaymentGroup; + paymentSource?: PaymentSource; + conversationId?: string; + externalId?: string; + callbackUrl: string; + paymentPhase?: PaymentPhase; + paymentChannel?: string; + enabledPaymentMethods?: PaymentMethod[]; + cardUserKey?: string; + buyerMemberId?: number; + allowOnlyCreditCard?: boolean; + forceAuthForNonCreditCards?: boolean; + allowOnlyStoredCards?: boolean; + allowInstallmentOnlyCommercialCards?: boolean; + alwaysStoreCardAfterPayment?: boolean; + disableStoreCard?: boolean; + forceThreeDS?: boolean; + masterpassGsmNumber?: string; + masterpassUserId?: string; + apmUserIdentity?: string; + items?: PaymentItem[]; + ttl?: number; + maximumSplitPaymentCount?: number; + additionalParams?: Record; +}; + +export default InitMultiPaymentRequest; diff --git a/src/response/InitMultipaymentPaymentResponse.ts b/src/response/InitMultipaymentPaymentResponse.ts new file mode 100644 index 0000000..1f3cc5a --- /dev/null +++ b/src/response/InitMultipaymentPaymentResponse.ts @@ -0,0 +1,7 @@ +type InitMultiPaymentResponse = { + token: string; + pageUrl: string; + tokenExpireDate: Date; +}; + +export default InitMultiPaymentResponse;