Skip to content

Commit bec3c85

Browse files
Merge branch 'master' into added-limit-inquiry
2 parents 7561261 + 7c6241e commit bec3c85

26 files changed

Lines changed: 370 additions & 6 deletions
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
const Craftgate = require('../../dist');
2+
3+
const craftgate = new Craftgate.Client({
4+
apiKey: 'api-key',
5+
secretKey: 'secret-key',
6+
baseUrl: 'https://sandbox-api.craftgate.io'
7+
});
8+
9+
const request = {
10+
verificationPrice: 10,
11+
currency: Craftgate.Model.Currency.TRY,
12+
conversationId: '456d1297-908e-4bd6-a13b-4be31a6e47d5',
13+
callbackUrl: 'https://www.your-website.com/craftgate-checkout-card-verify-callback',
14+
paymentAuthenticationType: Craftgate.Model.CardVerificationAuthType.NonThreeDs
15+
};
16+
17+
craftgate.payment().initCheckoutCardVerify(request)
18+
.then(result => console.info('Init checkout card verify successful', result))
19+
.catch(err => console.error('Init checkout card verify failed', err));
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
const Craftgate = require('../../dist');
2+
3+
const craftgate = new Craftgate.Client({
4+
apiKey: 'api-key',
5+
secretKey: 'secret-key',
6+
baseUrl: 'https://sandbox-api.craftgate.io'
7+
});
8+
9+
const request = {
10+
price: 100.0,
11+
paidPrice: 100.0,
12+
callbackUrl: 'https://www.your-website.com/craftgate-checkout-callback',
13+
currency: Craftgate.Model.Currency.TRY,
14+
conversationId: '456d1297-908e-4bd6-a13b-4be31a6e47d5',
15+
externalId: '123d1297-839e-4bd6-a13b-4be31a6e12b8',
16+
paymentGroup: Craftgate.Model.PaymentGroup.ListingOrSubscription,
17+
paymentPhase: Craftgate.Model.PaymentPhase.Auth,
18+
items: [
19+
{
20+
name: 'Item 1',
21+
price: 30.0,
22+
externalId: '123d1297-839e-4bd6-a13b-4be31a6e12a8'
23+
},
24+
{
25+
name: 'Item 2',
26+
price: 50.0,
27+
externalId: '789d1297-839e-4bd6-a13b-4be31a6e13f7'
28+
},
29+
{
30+
name: 'Item 3',
31+
price: 20.0,
32+
externalId: '3a1d1297-839e-4bd6-a13b-4be31a6e18e6'
33+
}
34+
]
35+
};
36+
37+
craftgate.payment().initMultiPayment(request)
38+
.then(payment => console.info('Init Multi payment', payment))
39+
.catch(err => console.error('Failed to init multi payment', err));
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
const Craftgate = require('../../dist');
2+
3+
const craftgate = new Craftgate.Client({
4+
apiKey: 'api-key',
5+
secretKey: 'secret-key',
6+
baseUrl: 'https://sandbox-api.craftgate.io'
7+
});
8+
9+
const request = {
10+
secureFieldsToken:"xxXXxx",
11+
};
12+
13+
craftgate.payment().storeCard(request)
14+
.then(results => console.info('Store card response', results))
15+
.catch(err => console.error('Failed to store card', err));

samples/payment/VerifyCard.js

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
const Craftgate = require('../../dist');
2+
3+
const craftgate = new Craftgate.Client({
4+
apiKey: 'api-key',
5+
secretKey: 'secret-key',
6+
baseUrl: 'https://sandbox-api.craftgate.io'
7+
});
8+
9+
const request = {
10+
card: {
11+
cardHolderName: 'Haluk Demir',
12+
cardNumber: '5258640000000001',
13+
expireYear: '2044',
14+
expireMonth: '07',
15+
cvc: '000',
16+
cardAlias: 'My YKB Card'
17+
},
18+
paymentAuthenticationType: Craftgate.Model.CardVerificationAuthType.ThreeDs,
19+
callbackUrl: 'https://www.your-website.com/craftgate-3DSecure-card-verify-callback',
20+
conversationId: '456d1297-908e-4bd6-a13b-4be31a6e47d5',
21+
verificationPrice: 10,
22+
currency: Craftgate.Model.Currency.TRY,
23+
clientIp: '127.0.0.1'
24+
};
25+
26+
craftgate.payment().verifyCard(request)
27+
.then(result => console.info('Verify card successful', result))
28+
.catch(err => console.error('Verify card failed', err));

src/CraftgateError.ts

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,26 @@
1+
type ProviderError = {
2+
errorCode?: string;
3+
errorMessage?: string;
4+
};
5+
16
type ErrorResponse = {
27
errorCode: string;
38
errorDescription: string;
9+
providerError?: ProviderError;
410
};
511

612
export default class CraftgateError extends Error {
713
private _errorCode: string;
814
private _errorDescription: string;
15+
private _providerError?: ProviderError;
916
private _errorData: any;
1017

11-
constructor({errorCode, errorDescription, ...rest}: ErrorResponse) {
18+
constructor({errorCode, errorDescription, providerError, ...rest}: ErrorResponse) {
1219
super(errorDescription);
1320

1421
this._errorCode = errorCode;
1522
this._errorDescription = errorDescription;
23+
this._providerError = providerError;
1624
this._errorData = rest;
1725

1826
Object.setPrototypeOf(this, CraftgateError.prototype);
@@ -26,6 +34,10 @@ export default class CraftgateError extends Error {
2634
return this._errorDescription;
2735
}
2836

37+
getProviderError(): ProviderError | undefined {
38+
return this._providerError;
39+
}
40+
2941
getErrorData(): any {
3042
return this._errorData;
3143
}

src/adapter/MerchantApmAdapter.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
import {ClientCreationOptions} from '../lib/HttpClient';
22

3-
import RetrieveDailyPaymentReportRequest from '../request/RetrieveDailyPaymentReportRequest';
4-
import RetrieveDailyTransactionReportRequest from '../request/RetrieveDailyTransactionReportRequest';
5-
63
import DataResponse from '../response/DataResponse';
74
import MerchantApmResponse from '../response/MerchantApmResponse';
8-
import WalletResponse from '../response/WalletResponse';
95

106
import BaseAdapter from './BaseAdapter';
117

src/adapter/PaymentAdapter.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@ import InitApmDepositPaymentRequest from '../request/InitApmDepositPaymentReques
1919
import InitApmPaymentRequest from '../request/InitApmPaymentRequest';
2020
import InitBnplLimitInquiryRequest from '../request/InitBnplLimitInquiryRequest';
2121
import InitBnplPaymentRequest from '../request/InitBnplPaymentRequest';
22+
import InitCheckoutCardVerifyRequest from '../request/InitCheckoutCardVerifyRequest';
2223
import InitCheckoutPaymentRequest from '../request/InitCheckoutPaymentRequest';
2324
import InitGarantiPayPaymentRequest from '../request/InitGarantiPayPaymentRequest';
25+
import InitMultiPaymentRequest from '../request/InitMultiPaymentRequest';
2426
import InitPosApmPaymentRequest from '../request/InitPosApmPaymentRequest';
2527
import InitThreeDSPaymentRequest from '../request/InitThreeDSPaymentRequest';
2628
import PostAuthPaymentRequest from '../request/PostAuthPaymentRequest';
@@ -34,6 +36,7 @@ import SearchStoredCardsRequest from '../request/SearchStoredCardsRequest';
3436
import StoreCardRequest from '../request/StoreCardRequest';
3537
import UpdateCardRequest from '../request/UpdateCardRequest';
3638
import UpdatePaymentTransactionRequest from '../request/UpdatePaymentTransactionRequest';
39+
import VerifyCardRequest from '../request/VerifyCardRequest';
3740

3841
import ApmDepositPaymentResponse from '../response/ApmDepositPaymentResponse';
3942
import BnplLimitInquiryResponse from '../response/BnplLimitInquiryResponse';
@@ -45,8 +48,10 @@ import DepositPaymentResponse from '../response/DepositPaymentResponse';
4548
import FundTransferDepositPaymentResponse from '../response/FundTransferDepositPaymentResponse';
4649
import InitApmPaymentResponse from '../response/InitApmPaymentResponse';
4750
import InitBnplPaymentResponse from '../response/InitBnplPaymentResponse';
51+
import InitCheckoutCardVerifyResponse from '../response/InitCheckoutCardVerifyResponse';
4852
import InitCheckoutPaymentResponse from '../response/InitCheckoutPaymentResponse';
4953
import InitGarantiPayPaymentResponse from '../response/InitGarantiPayPaymentResponse';
54+
import InitMultiPaymentResponse from '../response/InitMultipaymentPaymentResponse';
5055
import InitPosApmPaymentResponse from '../response/InitPosApmPaymentResponse';
5156
import InitThreeDSPaymentResponse from '../response/InitThreeDSPaymentResponse';
5257
import InstantTransferBanksResponse from '../response/InstantTransferBanksResponse';
@@ -57,8 +62,10 @@ import PaymentTransactionApprovalListResponse from '../response/PaymentTransacti
5762
import PaymentTransactionRefundListResponse from '../response/PaymentTransactionRefundListResponse';
5863
import PaymentTransactionRefundResponse from '../response/PaymentTransactionRefundResponse';
5964
import PaymentTransactionResponse from '../response/PaymentTransactionResponse';
65+
import RetrieveCheckoutCardVerifyResponse from '../response/RetrieveCheckoutCardVerifyResponse';
6066
import RetrieveLoyaltiesResponse from '../response/RetrieveLoyaltiesResponse';
6167
import StoredCardResponse from '../response/StoredCardResponse';
68+
import VerifyCardResponse from '../response/VerifyCardResponse';
6269
import WaitingPaymentRefundResponse from '../response/WaitingPaymentRefundResponse';
6370

6471
import BaseAdapter from './BaseAdapter';
@@ -92,6 +99,14 @@ export default class PaymentAdapter extends BaseAdapter {
9299
return this._client.post('/payment/v1/checkout-payments/init', request);
93100
}
94101

102+
async initCheckoutCardVerify(request: InitCheckoutCardVerifyRequest): Promise<InitCheckoutCardVerifyResponse> {
103+
return this._client.post('/payment/v1/checkout-card-verify/init', request);
104+
}
105+
106+
async retrieveCheckoutCardVerify(token: string): Promise<RetrieveCheckoutCardVerifyResponse> {
107+
return this._client.get(`/payment/v1/checkout-card-verify/${token}`);
108+
}
109+
95110
async retrieveCheckoutPayment(token: string): Promise<PaymentResponse> {
96111
return this._client.get(`/payment/v1/checkout-payments/${token}`);
97112
}
@@ -192,6 +207,10 @@ export default class PaymentAdapter extends BaseAdapter {
192207
await this._client.post('/payment/v1/cards/delete', request);
193208
}
194209

210+
async verifyCard(request: VerifyCardRequest): Promise<VerifyCardResponse> {
211+
return this._client.post('/payment/v1/cards/verify', request);
212+
}
213+
195214
async approvePaymentTransactions(request: ApprovePaymentTransactionsRequest): Promise<PaymentTransactionApprovalListResponse> {
196215
return this._client.post('/payment/v1/payment-transactions/approve', request);
197216
}
@@ -240,6 +259,10 @@ export default class PaymentAdapter extends BaseAdapter {
240259
return this._client.get(`/payment/v1/instant-transfer-banks`);
241260
}
242261

262+
async initMultiPayment(request: InitMultiPaymentRequest): Promise<InitMultiPaymentResponse> {
263+
return this._client.post(`/payment/v1/multi-payments/init`, request);
264+
}
265+
243266
async retrieveMultiPayment(token: string): Promise<MultiPaymentResponse> {
244267
return this._client.get(`/payment/v1/multi-payments/${token}`);
245268
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
enum CardVerificationAuthType {
2+
NonThreeDs = 'NON_THREE_DS',
3+
ThreeDs = 'THREE_DS',
4+
None = 'NONE'
5+
}
6+
7+
export default CardVerificationAuthType;

src/model/CardVerifyStatus.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
enum CardVerifyStatus {
2+
Success = 'SUCCESS',
3+
Failure = 'FAILURE',
4+
ThreeDsPending = 'THREE_DS_PENDING'
5+
}
6+
7+
export default CardVerifyStatus;

src/model/WebhookEventType.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ enum WebhookEventType {
1111
WalletTxCreated = 'WALLET_TX_CREATED',
1212
BnplNotification = 'BNPL_NOTIFICATION',
1313
MultiPaymentCompleted = 'MULTI_PAYMENT_COMPLETED',
14+
MultiPaymentExpired = 'MULTI_PAYMENT_EXPIRED',
1415
BkmExpressPaymentNotification = 'BKM_EXPRESS_PAYMENT_NOTIFICATION'
1516
}
1617

0 commit comments

Comments
 (0)