Skip to content

Commit 1c6c55f

Browse files
committed
Add card verification endpoints
1 parent 44e8b0e commit 1c6c55f

12 files changed

Lines changed: 199 additions & 0 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));

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/adapter/PaymentAdapter.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import DisapprovePaymentTransactionsRequest from '../request/DisapprovePaymentTr
1717
import InitApmDepositPaymentRequest from '../request/InitApmDepositPaymentRequest';
1818
import InitApmPaymentRequest from '../request/InitApmPaymentRequest';
1919
import InitBnplPaymentRequest from '../request/InitBnplPaymentRequest';
20+
import InitCheckoutCardVerifyRequest from '../request/InitCheckoutCardVerifyRequest';
2021
import InitCheckoutPaymentRequest from '../request/InitCheckoutPaymentRequest';
2122
import InitGarantiPayPaymentRequest from '../request/InitGarantiPayPaymentRequest';
2223
import InitPosApmPaymentRequest from '../request/InitPosApmPaymentRequest';
@@ -32,6 +33,7 @@ import SearchStoredCardsRequest from '../request/SearchStoredCardsRequest';
3233
import StoreCardRequest from '../request/StoreCardRequest';
3334
import UpdateCardRequest from '../request/UpdateCardRequest';
3435
import UpdatePaymentTransactionRequest from '../request/UpdatePaymentTransactionRequest';
36+
import VerifyCardRequest from '../request/VerifyCardRequest';
3537

3638
import ApmDepositPaymentResponse from '../response/ApmDepositPaymentResponse';
3739
import BnplPaymentOfferResponse from '../response/BnplPaymentOfferResponse';
@@ -42,6 +44,7 @@ import DepositPaymentResponse from '../response/DepositPaymentResponse';
4244
import FundTransferDepositPaymentResponse from '../response/FundTransferDepositPaymentResponse';
4345
import InitApmPaymentResponse from '../response/InitApmPaymentResponse';
4446
import InitBnplPaymentResponse from '../response/InitBnplPaymentResponse';
47+
import InitCheckoutCardVerifyResponse from '../response/InitCheckoutCardVerifyResponse';
4548
import InitCheckoutPaymentResponse from '../response/InitCheckoutPaymentResponse';
4649
import InitGarantiPayPaymentResponse from '../response/InitGarantiPayPaymentResponse';
4750
import InitPosApmPaymentResponse from '../response/InitPosApmPaymentResponse';
@@ -56,6 +59,7 @@ import PaymentTransactionRefundResponse from '../response/PaymentTransactionRefu
5659
import PaymentTransactionResponse from '../response/PaymentTransactionResponse';
5760
import RetrieveLoyaltiesResponse from '../response/RetrieveLoyaltiesResponse';
5861
import StoredCardResponse from '../response/StoredCardResponse';
62+
import VerifyCardResponse from '../response/VerifyCardResponse';
5963
import WaitingPaymentRefundResponse from '../response/WaitingPaymentRefundResponse';
6064

6165
import BaseAdapter from './BaseAdapter';
@@ -89,6 +93,10 @@ export default class PaymentAdapter extends BaseAdapter {
8993
return this._client.post('/payment/v1/checkout-payments/init', request);
9094
}
9195

96+
async initCheckoutCardVerify(request: InitCheckoutCardVerifyRequest): Promise<InitCheckoutCardVerifyResponse> {
97+
return this._client.post('/payment/v1/checkout-card-verify/init', request);
98+
}
99+
92100
async retrieveCheckoutPayment(token: string): Promise<PaymentResponse> {
93101
return this._client.get(`/payment/v1/checkout-payments/${token}`);
94102
}
@@ -189,6 +197,10 @@ export default class PaymentAdapter extends BaseAdapter {
189197
await this._client.post('/payment/v1/cards/delete', request);
190198
}
191199

200+
async verifyCard(request: VerifyCardRequest): Promise<VerifyCardResponse> {
201+
return this._client.post('/payment/v1/cards/verify', request);
202+
}
203+
192204
async approvePaymentTransactions(request: ApprovePaymentTransactionsRequest): Promise<PaymentTransactionApprovalListResponse> {
193205
return this._client.post('/payment/v1/payment-transactions/approve', request);
194206
}
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/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import BounceStatus from './BounceStatus';
77
import CardAssociation from './CardAssociation';
88
import CardBrand from './CardBrand';
99
import CardExpiryStatus from './CardExpiryStatus';
10+
import CardVerificationAuthType from './CardVerificationAuthType';
11+
import CardVerifyStatus from './CardVerifyStatus';
1012
import CardType from './CardType';
1113
import ClientType from './ClientType';
1214
import Currency from './Currency';
@@ -111,5 +113,7 @@ export = {
111113
PosUserType,
112114
PosOperationType,
113115
CardBrand,
116+
CardVerificationAuthType,
117+
CardVerifyStatus,
114118
ClientType
115119
};
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import CardVerificationAuthType from '../model/CardVerificationAuthType';
2+
import Currency from '../model/Currency';
3+
4+
type InitCheckoutCardVerifyRequest = {
5+
verificationPrice: number;
6+
currency: Currency;
7+
conversationId?: string;
8+
callbackUrl: string;
9+
cardUserKey?: string;
10+
paymentAuthenticationType: CardVerificationAuthType;
11+
ttl?: number;
12+
};
13+
14+
export default InitCheckoutCardVerifyRequest;

src/request/VerifyCardRequest.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import CardVerificationAuthType from '../model/CardVerificationAuthType';
2+
import Currency from '../model/Currency';
3+
4+
import VerifyCard from './dto/VerifyCard';
5+
6+
type VerifyCardRequest = {
7+
card: VerifyCard;
8+
paymentAuthenticationType: CardVerificationAuthType;
9+
verificationPrice: number;
10+
currency: Currency;
11+
clientIp?: string;
12+
conversationId?: string;
13+
callbackUrl?: string;
14+
};
15+
16+
export default VerifyCardRequest;

src/request/dto/VerifyCard.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
type VerifyCard = {
2+
cardHolderName: string;
3+
cardNumber: string;
4+
expireYear: string;
5+
expireMonth: string;
6+
cvc: string;
7+
cardAlias?: string;
8+
cardUserKey?: string;
9+
};
10+
11+
export default VerifyCard;
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
type InitCheckoutCardVerifyResponse = {
2+
token: string;
3+
pageUrl: string;
4+
tokenExpireDate: Date;
5+
};
6+
7+
export default InitCheckoutCardVerifyResponse;

0 commit comments

Comments
 (0)