esnekpos
Version:
Node.js entegrasyon paketi - EsnekPOS ödeme sistemi için resmi olmayan istemci
142 lines (126 loc) • 3.77 kB
JavaScript
/**
* Ödeme servisi
*/
const { validate3DPaymentRequest, validateCommonPaymentRequest } = require('../validators');
const { makeRequest } = require('../helpers/request');
const { ENDPOINTS } = require('../constants');
class PaymentService {
/**
* Ödeme servisini başlatır
* @param {EsnekPOSClient} client - EsnekPOS istemcisi
*/
constructor(client) {
this.client = client;
}
/**
* 3D ödeme işlemi başlatır
* @param {Object} paymentInfo - Ödeme bilgileri
* @returns {Promise<Object>} - Ödeme sonucu
*/
async create3DPayment(paymentInfo) {
const request = {
Config: {
MERCHANT: this.client.config.merchant,
MERCHANT_KEY: this.client.config.merchantKey,
...paymentInfo.Config
},
CreditCard: paymentInfo.CreditCard,
Customer: paymentInfo.Customer,
Product: paymentInfo.Product
};
validate3DPaymentRequest(request);
return makeRequest({
baseUrl: this.client.baseUrl,
endpoint: ENDPOINTS.PAYMENT_3D,
data: request
});
}
/**
* Ortak ödeme sayfası ile ödeme başlatır
* @param {Object} paymentInfo - Ödeme bilgileri
* @returns {Promise<Object>} - Ödeme sonucu
*/
async createCommonPayment(paymentInfo) {
const request = {
Config: {
MERCHANT: this.client.config.merchant,
MERCHANT_KEY: this.client.config.merchantKey,
...paymentInfo.Config
},
Customer: paymentInfo.Customer,
Product: paymentInfo.Product
};
validateCommonPaymentRequest(request);
return makeRequest({
baseUrl: this.client.baseUrl,
endpoint: ENDPOINTS.COMMON_PAYMENT,
data: request
});
}
/**
* BKM Express ile ödeme başlatır
* @param {Object} paymentInfo - Ödeme bilgileri
* @returns {Promise<Object>} - Ödeme sonucu
*/
async createBkmPayment(paymentInfo) {
const request = {
Config: {
MERCHANT: this.client.config.merchant,
MERCHANT_KEY: this.client.config.merchantKey,
...paymentInfo.Config
},
Customer: paymentInfo.Customer,
Product: paymentInfo.Product
};
return makeRequest({
baseUrl: this.client.baseUrl,
endpoint: ENDPOINTS.BKM_PAYMENT,
data: request
});
}
/**
* Android POS ile ödeme başlatır
* @param {Object} paymentInfo - Ödeme bilgileri
* @returns {Promise<Object>} - Ödeme sonucu
*/
async createPhysicalPosPayment(paymentInfo) {
const request = {
Config: {
MERCHANT: this.client.config.merchant,
MERCHANT_KEY: this.client.config.merchantKey,
...paymentInfo.Config
},
Customer: paymentInfo.Customer,
Product: paymentInfo.Product
};
return makeRequest({
baseUrl: this.client.baseUrl,
endpoint: ENDPOINTS.PHYSICAL_PAYMENT,
data: request
});
}
/**
* Pazaryeri ödemesi başlatır
* @param {Object} paymentInfo - Ödeme bilgileri
* @returns {Promise<Object>} - Ödeme sonucu
*/
async createMarketplacePayment(paymentInfo) {
const request = {
Config: {
MERCHANT: this.client.config.merchant,
MERCHANT_KEY: this.client.config.merchantKey,
...paymentInfo.Config
},
CreditCard: paymentInfo.CreditCard,
Customer: paymentInfo.Customer,
Product: paymentInfo.Product,
SubMerchantDetails: paymentInfo.SubMerchantDetails
};
return makeRequest({
baseUrl: this.client.baseUrl,
endpoint: ENDPOINTS.PAYMENT_3D,
data: request
});
}
}
module.exports = PaymentService;