UNPKG

@montarist/nestpay-api-v2

Version:

Unofficial comprehensive TypeScript API client for Nestpay payment gateway with 3D Secure support

530 lines 20.7 kB
"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