UNPKG

@nackamoto/medusa-paypal-payment

Version:
76 lines 4.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.PAYPAL_CURRENCY_CODES = void 0; exports.convertAmount = convertAmount; const utils_1 = require("@medusajs/utils"); /** * The supported paypal currency codes and their options prefering paypal * docuementation over ISO-4217. * * https://developer.paypal.com/api/rest/reference/currency-codes/#link-currencycodes * * https://en.wikipedia.org/wiki/ISO_4217#Active_codes */ exports.PAYPAL_CURRENCY_CODES = { AUD: {}, BRL: {}, CAD: {}, CNY: {}, CZK: {}, DKK: {}, EUR: {}, HKD: {}, HUF: { decimal: false }, ILS: {}, JPY: { decimal: false }, MYR: {}, MXN: {}, TWD: { decimal: false }, NZD: {}, NOK: {}, PHP: {}, PLN: {}, GBP: {}, RUB: {}, SGD: {}, SEK: {}, CHF: {}, THB: {}, USD: {}, }; /** * Converts an amount to the format required by Paypal based on currency. * https://developer.paypal.com/docs/api/orders/v2/ * * @param {BigNumberInput} amount - The amount to be converted. * @param {string} currency - The 3-character ISO-4217 currency code * * @returns {{ currency_code: string, value: string }} An object containing the * amount as a string value and the supported currency code. * * @throws {Error} If the currency is not supported by Paypal or if the amount * stringification is over the 32 character limit of the Paypal API. * * @example * const amount = 10; * const currency = "usd"; * const { value, currency_code } = convertAmount(amount, currency); * console.log(amountString); // "10.00" * console.log(currencyCode); // "USD" * */ function convertAmount(amount, currency) { const currency_ = currency.toUpperCase(); if (!(currency_ in exports.PAYPAL_CURRENCY_CODES)) { throw new Error(`Currency ${currency} is not supported by Paypal`); } const currency_code = currency_; const currencyOptions = exports.PAYPAL_CURRENCY_CODES[currency_code]; const precision = currencyOptions?.decimal === false ? 0 : currencyOptions?.places ?? 2; const value = new utils_1.BigNumber(amount, { precision }).numeric.toFixed(precision); if (value.length > 32) { throw new Error(`Amount string exceeds 32 character limit: ${value}`); } return { value, currencyCode: currency_code }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvcGF5cGFsLXBheW1lbnQvZm9ybWF0dGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUF1RUEsc0NBeUJDO0FBL0ZELDJDQUE0QztBQVM1Qzs7Ozs7OztHQU9HO0FBQ1UsUUFBQSxxQkFBcUIsR0FBRztJQUNuQyxHQUFHLEVBQUUsRUFBRTtJQUNQLEdBQUcsRUFBRSxFQUFFO0lBQ1AsR0FBRyxFQUFFLEVBQUU7SUFDUCxHQUFHLEVBQUUsRUFBRTtJQUNQLEdBQUcsRUFBRSxFQUFFO0lBQ1AsR0FBRyxFQUFFLEVBQUU7SUFDUCxHQUFHLEVBQUUsRUFBRTtJQUNQLEdBQUcsRUFBRSxFQUFFO0lBQ1AsR0FBRyxFQUFFLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRTtJQUN2QixHQUFHLEVBQUUsRUFBRTtJQUNQLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUU7SUFDdkIsR0FBRyxFQUFFLEVBQUU7SUFDUCxHQUFHLEVBQUUsRUFBRTtJQUNQLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUU7SUFDdkIsR0FBRyxFQUFFLEVBQUU7SUFDUCxHQUFHLEVBQUUsRUFBRTtJQUNQLEdBQUcsRUFBRSxFQUFFO0lBQ1AsR0FBRyxFQUFFLEVBQUU7SUFDUCxHQUFHLEVBQUUsRUFBRTtJQUNQLEdBQUcsRUFBRSxFQUFFO0lBQ1AsR0FBRyxFQUFFLEVBQUU7SUFDUCxHQUFHLEVBQUUsRUFBRTtJQUNQLEdBQUcsRUFBRSxFQUFFO0lBQ1AsR0FBRyxFQUFFLEVBQUU7SUFDUCxHQUFHLEVBQUUsRUFBRTtDQUNDLENBQUM7QUFNWDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFDSCxTQUFnQixhQUFhLENBQzNCLE1BQXNCLEVBQ3RCLFFBQWdCO0lBRWhCLE1BQU0sU0FBUyxHQUFHLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUV6QyxJQUFJLENBQUMsQ0FBQyxTQUFTLElBQUksNkJBQXFCLENBQUMsRUFBRSxDQUFDO1FBQzFDLE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxRQUFRLDZCQUE2QixDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELE1BQU0sYUFBYSxHQUFHLFNBQStCLENBQUM7SUFFdEQsTUFBTSxlQUFlLEdBQ25CLDZCQUFxQixDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRXZDLE1BQU0sU0FBUyxHQUNiLGVBQWUsRUFBRSxPQUFPLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGVBQWUsRUFBRSxNQUFNLElBQUksQ0FBQyxDQUFDO0lBRXhFLE1BQU0sS0FBSyxHQUFHLElBQUksaUJBQVMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7SUFFOUUsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLEVBQUUsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELE9BQU8sRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxDQUFDO0FBQ2hELENBQUMifQ==