@malga-checkout/core
Version:
Core components for Malga Checkout
53 lines (52 loc) • 2.83 kB
JavaScript
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,
};
}
}