UNPKG

@malga-checkout/core

Version:
53 lines (52 loc) 2.83 kB
import platform from 'platform'; const version = '1.22.0'; import { Api } from '../api'; import { cleanObjectProperties } from '@malga-checkout/utils'; import settings from '../../stores/settings'; import { formatFraudAnalysis } from './charges.utils'; import { Payments } from '../payments'; export class Charges { constructor({ provider }) { this.api = new Api(); this.provider = provider; this.payments = new Payments({ provider }); } async create(customerId) { var _a, _b, _c, _d, _e, _f; const fraudAnalysis = await formatFraudAnalysis(settings.transactionConfig.fraudAnalysis, settings.transactionConfig.customer); const data = cleanObjectProperties(Object.assign({ customerId: customerId || settings.transactionConfig.customerId, currency: settings.transactionConfig.currency, orderId: settings.transactionConfig.orderId, description: settings.transactionConfig.description, merchantId: settings.merchantId, amount: settings.transactionConfig.amount, statementDescriptor: settings.transactionConfig.statementDescriptor, capture: settings.transactionConfig.capture, sessionId: settings.sessionId, splitRules: settings.transactionConfig.splitRules, providerReferenceKey: settings.transactionConfig.providerReferenceKey, fraudAnalysis }, (settings.transactionConfig.paymentFlowMetadata && { paymentFlow: { metadata: settings.transactionConfig.paymentFlowMetadata, }, }))); const payload = Object.assign(Object.assign({}, data), { paymentMethod: this.provider.getPaymentMethod(), paymentSource: await this.provider.getPaymentSource(), appInfo: Object.assign(Object.assign({}, settings.appInfo), { platform: { integrator: 'Malga', name: (_c = (_b = (_a = settings === null || settings === void 0 ? void 0 : settings.appInfo) === null || _a === void 0 ? void 0 : _a.platform) === null || _b === void 0 ? void 0 : _b.name) !== null && _c !== void 0 ? _c : 'Checkout SDK', version: (_f = (_e = (_d = settings === null || settings === void 0 ? void 0 : settings.appInfo) === null || _d === void 0 ? void 0 : _d.platform) === null || _e === void 0 ? void 0 : _e.version) !== null && _f !== void 0 ? _f : version, }, device: { name: platform.name, version: platform.version, } }) }); const headers = settings.idempotencyKey ? { 'X-Idempotency-Key': settings.idempotencyKey } : {}; return this.payments.pay({ headers, payload, }); } async find(chargeId) { const errorStatus = [ 'failed', 'charged_back', 'canceled', 'voided', 'pending', ]; const response = await this.api.fetch({ endpoint: `/charges/${chargeId}` }); return { hasError: errorStatus.includes(response.data.status), data: response.data, }; } }