@montarist/nestpay-api-v2
Version:
Unofficial comprehensive TypeScript API client for Nestpay payment gateway with 3D Secure support
530 lines • 20.7 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.providerEndpointManager = exports.ProviderEndpointManager = void 0;
const enums_1 = require("../types/enums");
/**
* Comprehensive provider endpoint mappings for all Turkish banks
* Each bank has its own production and test endpoints for API and 3D Secure
*/
class ProviderEndpointManager {
/**
* Get endpoints for a specific provider
* @param provider Bank provider
* @param isTestMode Whether to use test endpoints
* @param customEndpoints Custom endpoints for CUSTOM provider
* @returns Provider endpoints
*/
static getEndpoints(provider, isTestMode = false, customEndpoints) {
if (provider === enums_1.BankProvider.CUSTOM) {
if (!customEndpoints) {
throw new Error('Custom endpoints are required when using CUSTOM provider');
}
return isTestMode ? customEndpoints.test : customEndpoints.production;
}
const endpoints = this.PROVIDER_ENDPOINTS[provider];
if (!endpoints) {
throw new Error(`Unsupported provider: ${provider}`);
}
return isTestMode ? endpoints.test : endpoints.production;
}
/**
* Get all available providers
* @returns Array of all bank providers
*/
static getAvailableProviders() {
return Object.values(enums_1.BankProvider);
}
/**
* Auto-detect provider from client ID
* @param clientId Client ID
* @returns Detected provider or null
*/
static detectProviderFromClientId(clientId) {
const id = clientId.toLowerCase();
if (id.includes('isbank') || id.includes('64')) {
return enums_1.BankProvider.ISBANK;
}
if (id.includes('yapikredi') || id.includes('ykb') || id.includes('67')) {
return enums_1.BankProvider.YAPIKREDI;
}
if (id.includes('garanti') || id.includes('12')) {
return enums_1.BankProvider.GARANTI;
}
if (id.includes('akbank') || id.includes('46')) {
return enums_1.BankProvider.AKBANK;
}
if (id.includes('ziraat') || id.includes('10')) {
return enums_1.BankProvider.ZIRAAT;
}
if (id.includes('halkbank') || id.includes('halk')) {
return enums_1.BankProvider.HALKBANK;
}
if (id.includes('vakifbank') || id.includes('vakif') || id.includes('15')) {
return enums_1.BankProvider.VAKIFBANK;
}
if (id.includes('finansbank') || id.includes('finans')) {
return enums_1.BankProvider.FINANSBANK;
}
if (id.includes('denizbank') || id.includes('deniz')) {
return enums_1.BankProvider.DENIZBANK;
}
return null; // Cannot auto-detect
}
/**
* Validate provider configuration
* @param provider Bank provider
* @param customEndpoints Custom endpoints if applicable
* @returns Validation result
*/
static validateProvider(provider, customEndpoints) {
const errors = [];
if (provider === enums_1.BankProvider.CUSTOM) {
if (!customEndpoints) {
errors.push('Custom endpoints are required for CUSTOM provider');
}
else {
if (!customEndpoints.production.api || !customEndpoints.production.threeD) {
errors.push('Production endpoints (api and threeD) are required');
}
if (!customEndpoints.test.api || !customEndpoints.test.threeD) {
errors.push('Test endpoints (api and threeD) are required');
}
}
}
else if (!this.PROVIDER_ENDPOINTS[provider]) {
errors.push(`Unsupported provider: ${provider}`);
}
return {
isValid: errors.length === 0,
errors
};
}
/**
* Get provider display name
* @param provider Bank provider
* @returns Display name
*/
static getProviderDisplayName(provider) {
const displayNames = {
[enums_1.BankProvider.ISBANK]: 'İş Bankası',
[enums_1.BankProvider.YAPIKREDI]: 'Yapı Kredi',
[enums_1.BankProvider.GARANTI]: 'Garanti BBVA',
[enums_1.BankProvider.AKBANK]: 'Akbank',
[enums_1.BankProvider.ZIRAAT]: 'Ziraat Bankası',
[enums_1.BankProvider.HALKBANK]: 'Halk Bankası',
[enums_1.BankProvider.VAKIFBANK]: 'VakıfBank',
[enums_1.BankProvider.FINANSBANK]: 'Finansbank',
[enums_1.BankProvider.DENIZBANK]: 'Denizbank',
[enums_1.BankProvider.ODEABANK]: 'ODEA Bank',
[enums_1.BankProvider.SEKERBANK]: 'Şeker Bank',
[enums_1.BankProvider.TURKIYEFINANS]: 'Türkiye Finans',
[enums_1.BankProvider.KUVEYTTURK]: 'Kuveyt Türk',
[enums_1.BankProvider.ALBARAKA]: 'Albaraka Türk',
[enums_1.BankProvider.ANADOLUBANK]: 'Anadolu Bank',
[enums_1.BankProvider.FIBABANKA]: 'Fibabanka',
[enums_1.BankProvider.ICBC]: 'ICBC Turkey',
[enums_1.BankProvider.INTESASANPAOLO]: 'Intesa Sanpaolo',
[enums_1.BankProvider.MUFG]: 'MUFG Bank',
[enums_1.BankProvider.RABOBANK]: 'Rabobank',
[enums_1.BankProvider.TURKLANDBANK]: 'Turkland Bank',
[enums_1.BankProvider.TURKISHBANK]: 'Turkish Bank',
[enums_1.BankProvider.ALTERNATIFBANK]: 'Alternatif Bank',
[enums_1.BankProvider.BURGANBANK]: 'Burgan Bank',
[enums_1.BankProvider.CITIBANK]: 'Citibank',
[enums_1.BankProvider.DEUTSCHE]: 'Deutsche Bank',
[enums_1.BankProvider.HSBC]: 'HSBC',
[enums_1.BankProvider.ING]: 'ING Bank',
[enums_1.BankProvider.JPMORGAN]: 'JPMorgan Chase',
[enums_1.BankProvider.ODEA]: 'ODEA Bank',
[enums_1.BankProvider.QNB]: 'QNB Finansbank',
[enums_1.BankProvider.STANDARD]: 'Standard Chartered',
[enums_1.BankProvider.TEB]: 'TEB',
[enums_1.BankProvider.ENPARA]: 'Enpara.com',
[enums_1.BankProvider.PAYKASA]: 'Paykasa',
[enums_1.BankProvider.PARAM]: 'Param',
[enums_1.BankProvider.CUSTOM]: 'Custom Provider'
};
return displayNames[provider] || provider;
}
}
exports.ProviderEndpointManager = ProviderEndpointManager;
/**
* Complete endpoint mappings for all supported banks
*/
ProviderEndpointManager.PROVIDER_ENDPOINTS = {
[enums_1.BankProvider.ISBANK]: {
production: {
api: 'https://sanalpos.isbank.com.tr/fim/api',
threeD: 'https://sanalpos.isbank.com.tr/fim/est3Dgate'
},
test: {
api: 'https://istest.asseco-see.com.tr/fim/api',
threeD: 'https://istest.asseco-see.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.YAPIKREDI]: {
production: {
api: 'https://posnet.yapikredi.com.tr/PosnetWebService/XML',
threeD: 'https://posnet.yapikredi.com.tr/3DSWebService/YKBPaymentService'
},
test: {
api: 'https://setmpos.ykb.com/PosnetWebService/XML',
threeD: 'https://setmpos.ykb.com/3DSWebService/YKBPaymentService'
}
},
[enums_1.BankProvider.GARANTI]: {
production: {
api: 'https://sanalposprov.garanti.com.tr/VPServlet',
threeD: 'https://sanalposprov.garanti.com.tr/servlet/gt3dengine'
},
test: {
api: 'https://sanalposprovtest.garanti.com.tr/VPServlet',
threeD: 'https://sanalposprovtest.garanti.com.tr/servlet/gt3dengine'
}
},
[enums_1.BankProvider.AKBANK]: {
production: {
api: 'https://www.akbankvpos.com.tr/fim/api',
threeD: 'https://www.akbankvpos.com.tr/fim/est3Dgate'
},
test: {
api: 'https://apipre.akbank.com/api/v1/payment/virtualpos',
threeD: 'https://virtualpospaymentgatewaypre.akbank.com/paymentgateway'
}
},
[enums_1.BankProvider.ZIRAAT]: {
production: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
},
test: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.HALKBANK]: {
production: {
api: 'https://sanalpos.halkbank.com.tr/fim/api',
threeD: 'https://sanalpos.halkbank.com.tr/fim/est3Dgate'
},
test: {
api: 'https://sanalpos.halkbank.com.tr/fim/api',
threeD: 'https://sanalpos.halkbank.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.VAKIFBANK]: {
production: {
api: 'https://onlineodeme.vakifbank.com.tr:4443/VposService/v3/Vposreq.aspx',
threeD: 'https://3dsecure.vakifbank.com.tr:4443/MPIAPI/MPI_Enrollment.aspx'
},
test: {
api: 'https://onlineodemetest.vakifbank.com.tr:4443/VposService/v3/Vposreq.aspx',
threeD: 'https://3dsecuretest.vakifbank.com.tr:4443/MPIAPI/MPI_Enrollment.aspx'
}
},
[enums_1.BankProvider.FINANSBANK]: {
production: {
api: 'https://www.fbwebpos.com/fim/api',
threeD: 'https://www.fbwebpos.com/fim/est3Dgate'
},
test: {
api: 'https://www.fbwebpos.com/fim/api',
threeD: 'https://www.fbwebpos.com/fim/est3Dgate'
}
},
[enums_1.BankProvider.DENIZBANK]: {
production: {
api: 'https://denizbank.est.com.tr/fim/api',
threeD: 'https://denizbank.est.com.tr/fim/est3Dgate'
},
test: {
api: 'https://denizbank.est.com.tr/fim/api',
threeD: 'https://denizbank.est.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.ODEABANK]: {
production: {
api: 'https://odeabank.asseco-see.com.tr/fim/api',
threeD: 'https://odeabank.asseco-see.com.tr/fim/est3Dgate'
},
test: {
api: 'https://odeabank.asseco-see.com.tr/fim/api',
threeD: 'https://odeabank.asseco-see.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.SEKERBANK]: {
production: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
},
test: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.TURKIYEFINANS]: {
production: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
},
test: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.KUVEYTTURK]: {
production: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
},
test: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.ALBARAKA]: {
production: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
},
test: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.ANADOLUBANK]: {
production: {
api: 'https://anadolubank.est.com.tr/fim/api',
threeD: 'https://anadolubank.est.com.tr/fim/est3Dgate'
},
test: {
api: 'https://anadolubank.est.com.tr/fim/api',
threeD: 'https://anadolubank.est.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.FIBABANKA]: {
production: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
},
test: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.ICBC]: {
production: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
},
test: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.INTESASANPAOLO]: {
production: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
},
test: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.MUFG]: {
production: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
},
test: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.RABOBANK]: {
production: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
},
test: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.TURKLANDBANK]: {
production: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
},
test: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.TURKISHBANK]: {
production: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
},
test: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.ALTERNATIFBANK]: {
production: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
},
test: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.BURGANBANK]: {
production: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
},
test: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.CITIBANK]: {
production: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
},
test: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.DEUTSCHE]: {
production: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
},
test: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.HSBC]: {
production: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
},
test: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.ING]: {
production: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
},
test: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.JPMORGAN]: {
production: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
},
test: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.ODEA]: {
production: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
},
test: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.QNB]: {
production: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
},
test: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.STANDARD]: {
production: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
},
test: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.TEB]: {
production: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
},
test: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.ENPARA]: {
production: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
},
test: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.PAYKASA]: {
production: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
},
test: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.PARAM]: {
production: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
},
test: {
api: 'https://entegrasyon.asseco-see.com.tr/fim/api',
threeD: 'https://entegrasyon.asseco-see.com.tr/fim/est3Dgate'
}
},
[enums_1.BankProvider.CUSTOM]: {
production: {
api: '',
threeD: ''
},
test: {
api: '',
threeD: ''
}
}
};
/**
* Default provider endpoint manager instance
*/
exports.providerEndpointManager = new ProviderEndpointManager();
//# sourceMappingURL=provider-endpoints.js.map