UNPKG

esnekpos

Version:

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

132 lines (117 loc) 3.92 kB
/** * Pazaryeri servisi */ const { makeRequest } = require('../helpers/request'); const { ENDPOINTS } = require('../constants'); const { validateSubMerchantRequest } = require('../validators'); class MarketplaceService { /** * Pazaryeri servisini başlatır * @param {EsnekPOSClient} client - EsnekPOS istemcisi */ constructor(client) { this.client = client; } /** * Alt üye işyeri (mağaza) tanımlar veya günceller * @param {Object} subMerchantInfo - Alt üye işyeri bilgileri * @returns {Promise<Object>} - İşlem sonucu */ async setSubMerchant(subMerchantInfo) { const request = { MERCHANT: this.client.config.merchant, MERCHANT_KEY: this.client.config.merchantKey, ...subMerchantInfo }; validateSubMerchantRequest(request); return makeRequest({ baseUrl: this.client.baseUrl, endpoint: ENDPOINTS.SUB_MERCHANT_SET, data: request }); } /** * Alt üye işyeri (mağaza) sorgular * @param {string} externalId - Alt üye işyeri dış ID'si * @returns {Promise<Object>} - Alt üye işyeri bilgileri */ async querySubMerchant(externalId) { const request = { MERCHANT: this.client.config.merchant, MERCHANT_KEY: this.client.config.merchantKey, EXTERNAL_ID: externalId }; return makeRequest({ baseUrl: this.client.baseUrl, endpoint: ENDPOINTS.SUB_MERCHANT_QUERY, data: request }); } /** * Ödeme onaylama işlemi * @param {string} orderRefNumber - Sipariş referans numarası * @param {Array<Object>} subMerchants - Onaylanacak alt üye işyerleri * @returns {Promise<Object>} - İşlem sonucu */ async confirmPayment(orderRefNumber, subMerchants) { const request = { MERCHANT: this.client.config.merchant, MERCHANT_KEY: this.client.config.merchantKey, ORDER_REF_NUMBER: orderRefNumber, SubMerchantDetails: subMerchants.map(sm => ({ EXTERNAL_ID: sm.externalId })) }; return makeRequest({ baseUrl: this.client.baseUrl, endpoint: ENDPOINTS.PAYMENT_CONFIRM, data: request }); } /** * Alt üye işyeri alacak tutarını günceller * @param {string} orderRefNumber - Sipariş referans numarası * @param {string} externalId - Alt üye işyeri dış ID'si * @param {number} amount - Değiştirilecek tutar (pozitif: ekle, negatif: azalt) * @returns {Promise<Object>} - İşlem sonucu */ async updateSubMerchantBalance(orderRefNumber, externalId, amount) { const request = { MERCHANT: this.client.config.merchant, MERCHANT_KEY: this.client.config.merchantKey, ORDER_REF_NUMBER: orderRefNumber, EXTERNAL_ID: externalId, AMOUNT: amount }; return makeRequest({ baseUrl: this.client.baseUrl, endpoint: ENDPOINTS.ADD_SUB_MERCHANT_AMOUNT, data: request }); } /** * Alt üye işyeri için iade işlemi * @param {string} orderRefNumber - Sipariş referans numarası * @param {number} amount - İade tutarı * @param {Array<Object>} subMerchantDetails - İade yapılacak alt üye işyerleri * @returns {Promise<Object>} - İşlem sonucu */ async refundSubMerchant(orderRefNumber, amount, subMerchantDetails) { const request = { MERCHANT: this.client.config.merchant, MERCHANT_KEY: this.client.config.merchantKey, ORDER_REF_NUMBER: orderRefNumber, AMOUNT: amount, SubMerchantDetails: subMerchantDetails.map(sm => ({ EXTERNAL_ID: sm.externalId, AMOUNT: sm.amount })) }; return makeRequest({ baseUrl: this.client.baseUrl, endpoint: ENDPOINTS.ORDER_RETURN, data: request }); } } module.exports = MarketplaceService;