esnekpos
Version:
Node.js entegrasyon paketi - EsnekPOS ödeme sistemi için resmi olmayan istemci
132 lines (117 loc) • 3.92 kB
JavaScript
/**
* 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;