UNPKG

esnekpos

Version:

Node.js entegrasyon paketi - EsnekPOS ödeme sistemi için resmi olmayan istemci

195 lines (172 loc) 5.65 kB
/** * Sorgulama servisi */ const { validateProcessQueryRequest } = require('../validators'); const { makeRequest } = require('../helpers/request'); const { ENDPOINTS } = require('../constants'); class QueryService { /** * Sorgulama servisini başlatır * @param {EsnekPOSClient} client - EsnekPOS istemcisi */ constructor(client) { this.client = client; } /** * İşlem durumu sorgular * @param {string} orderRefNumber - Sipariş referans numarası * @returns {Promise<Object>} - Sorgu sonucu */ async queryTransaction(orderRefNumber) { const request = { MERCHANT: this.client.config.merchant, MERCHANT_KEY: this.client.config.merchantKey, ORDER_REF_NUMBER: orderRefNumber }; validateProcessQueryRequest(request); return makeRequest({ baseUrl: this.client.baseUrl, endpoint: ENDPOINTS.PROCESS_QUERY, data: request }); } /** * İşlem durumu detaylı sorgular * @param {string} orderRefNumber - Sipariş referans numarası * @returns {Promise<Object>} - Sorgu sonucu */ async queryTransactionDetail(orderRefNumber) { const request = { MERCHANT: this.client.config.merchant, MERCHANT_KEY: this.client.config.merchantKey, ORDER_REF_NUMBER: orderRefNumber }; return makeRequest({ baseUrl: this.client.baseUrl, endpoint: ENDPOINTS.PROCESS_QUERY_DETAIL, data: request }); } /** * İşlemleri listeler * @param {Object} options - Filtreleme seçenekleri * @param {string} options.startDate - Başlangıç tarihi (GG-AA-YYYY) * @param {string} options.endDate - Bitiş tarihi (GG-AA-YYYY) * @returns {Promise<Object>} - İşlem listesi */ async listTransactions(options) { const request = { MERCHANT: this.client.config.merchant, MERCHANT_KEY: this.client.config.merchantKey, START_DATE: options.startDate, END_DATE: options.endDate }; return makeRequest({ baseUrl: this.client.baseUrl, endpoint: ENDPOINTS.PAYMENT_LIST, data: request }); } /** * Taksit seçeneklerini sorgular * @param {Object} options - Sorgulama seçenekleri * @param {string} options.amount - Tutar * @param {string} [options.bin] - Kart BIN numarası (ilk 6 hane) * @param {number} [options.commissionForCustomer] - Komisyon müşteriye mi yansıtılacak (0: hayır, 1: evet) * @returns {Promise<Object>} - Taksit seçenekleri */ async getInstallmentOptions(options) { const request = { MERCHANT: this.client.config.merchant, MERCHANT_KEY: this.client.config.merchantKey, AMOUNT: options.amount }; if (options.bin) { request.BIN = options.bin; } if (options.commissionForCustomer !== undefined) { request.COMMISSION_FOR_CUSTOMER = options.commissionForCustomer; } return makeRequest({ baseUrl: this.client.baseUrl, endpoint: ENDPOINTS.INSTALLMENTS, data: request }); } /** * Üye işyeri bakiyesini sorgular * @param {Object} options - Sorgulama seçenekleri * @param {string} options.currency - Para birimi (TRY, USD, EUR, GBP) * @param {string} [options.subMerchantExternalId] - Pazaryeri alt üye işyeri ID'si * @returns {Promise<Object>} - Bakiye bilgisi */ async getDealerBalance(options) { const request = { MERCHANT: this.client.config.merchant, MERCHANT_KEY: this.client.config.merchantKey, CURRENCY: options.currency, DEALER_SUB_EXTERNAL_ID: options.subMerchantExternalId || null }; return makeRequest({ baseUrl: this.client.baseUrl, endpoint: ENDPOINTS.DEALER_BALANCE, data: request }); } /** * Kart BIN bilgisini sorgular * @param {string} cardBin - Kart BIN numarası (ilk 6 hane) * @returns {Promise<Object>} - BIN bilgisi */ async getBinInfo(cardBin) { const request = { CardNumber: cardBin }; return makeRequest({ baseUrl: this.client.baseUrl, endpoint: ENDPOINTS.BIN_SERVICE, data: request }); } /** * Dekont listesini sorgular * @param {Object} options - Sorgulama seçenekleri * @param {string} options.startDate - Başlangıç tarihi (YYYY-AA-GG) * @param {string} options.endDate - Bitiş tarihi (YYYY-AA-GG) * @returns {Promise<Object>} - Dekont listesi */ async getReceiptList(options) { const request = { MERCHANT: this.client.config.merchant, MERCHANT_KEY: this.client.config.merchantKey, START_DATE: options.startDate, END_DATE: options.endDate }; return makeRequest({ baseUrl: this.client.baseUrl, endpoint: ENDPOINTS.RECEIPT_LIST, data: request }); } /** * Transfer listesini sorgular * @param {Object} options - Sorgulama seçenekleri * @param {string} options.startDate - Başlangıç tarihi (GG-AA-YYYY) * @param {string} options.endDate - Bitiş tarihi (GG-AA-YYYY) * @returns {Promise<Object>} - Transfer listesi */ async getTransferList(options) { const request = { MERCHANT: this.client.config.merchant, MERCHANT_KEY: this.client.config.merchantKey, START_DATE: options.startDate, END_DATE: options.endDate }; return makeRequest({ baseUrl: this.client.baseUrl, endpoint: ENDPOINTS.EXTRACT_LIST, data: request }); } } module.exports = QueryService;