cloudcommerce 0.0.133 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.vscode/settings.json +2 -1
- package/CHANGELOG.md +25 -0
- package/action.yml +13 -5
- package/ecomplus-stores/monocard/functions/core/package.json +1 -1
- package/ecomplus-stores/monocard/functions/events/package.json +1 -1
- package/ecomplus-stores/monocard/functions/modules/package.json +1 -1
- package/ecomplus-stores/monocard/functions/passport/package.json +1 -1
- package/ecomplus-stores/tia-sonia/functions/core/package.json +1 -1
- package/ecomplus-stores/tia-sonia/functions/events/package.json +1 -1
- package/ecomplus-stores/tia-sonia/functions/modules/package.json +1 -1
- package/ecomplus-stores/tia-sonia/functions/passport/package.json +1 -1
- package/package.json +8 -9
- package/packages/api/fetch-polyfill.js +1 -1
- package/packages/api/package.json +1 -1
- package/packages/api/tests/index.test.ts +0 -1
- package/packages/apps/correios/package.json +1 -1
- package/packages/apps/custom-payment/CHANGELOG.md +1 -0
- package/packages/apps/custom-payment/README.md +1 -0
- package/packages/apps/custom-payment/lib/custom-payment-create-transaction.d.ts +68 -0
- package/packages/apps/custom-payment/lib/custom-payment-create-transaction.js +55 -0
- package/packages/apps/custom-payment/lib/custom-payment-create-transaction.js.map +1 -0
- package/packages/apps/custom-payment/lib/custom-payment-list-payments.d.ts +3 -0
- package/packages/apps/custom-payment/lib/custom-payment-list-payments.js +79 -0
- package/packages/apps/custom-payment/lib/custom-payment-list-payments.js.map +1 -0
- package/packages/apps/custom-payment/lib/custom-payment.d.ts +68 -0
- package/packages/apps/custom-payment/lib/custom-payment.js +11 -0
- package/packages/apps/custom-payment/lib/custom-payment.js.map +1 -0
- package/packages/apps/custom-payment/lib/index.d.ts +1 -0
- package/packages/apps/custom-payment/lib/index.js +2 -0
- package/packages/apps/custom-payment/lib/index.js.map +1 -0
- package/packages/apps/custom-payment/package.json +27 -0
- package/packages/apps/custom-payment/src/custom-payment-create-transaction.ts +67 -0
- package/packages/apps/custom-payment/src/custom-payment-list-payments.ts +96 -0
- package/packages/apps/custom-payment/src/custom-payment.ts +11 -0
- package/packages/apps/custom-payment/src/index.ts +1 -0
- package/packages/apps/custom-payment/tsconfig.json +6 -0
- package/packages/apps/custom-shipping/package.json +1 -1
- package/packages/apps/discounts/package.json +1 -1
- package/packages/apps/emails/package.json +2 -2
- package/packages/apps/frenet/package.json +1 -1
- package/packages/apps/galaxpay/CHANGELOG.md +1 -0
- package/packages/apps/galaxpay/README.md +1 -0
- package/packages/apps/galaxpay/assets/onload-expression.js +23 -0
- package/packages/apps/galaxpay/events.js +1 -0
- package/packages/apps/galaxpay/lib/functions-lib/all-parses.d.ts +5 -0
- package/packages/apps/galaxpay/lib/functions-lib/all-parses.js +79 -0
- package/packages/apps/galaxpay/lib/functions-lib/all-parses.js.map +1 -0
- package/packages/apps/galaxpay/lib/functions-lib/ecom/events-to-galaxpay.d.ts +3 -0
- package/packages/apps/galaxpay/lib/functions-lib/ecom/events-to-galaxpay.js +75 -0
- package/packages/apps/galaxpay/lib/functions-lib/ecom/events-to-galaxpay.js.map +1 -0
- package/packages/apps/galaxpay/lib/functions-lib/galaxpay/auth/create-access.d.ts +11 -0
- package/packages/apps/galaxpay/lib/functions-lib/galaxpay/auth/create-access.js +60 -0
- package/packages/apps/galaxpay/lib/functions-lib/galaxpay/auth/create-access.js.map +1 -0
- package/packages/apps/galaxpay/lib/functions-lib/galaxpay/auth/create-axios.d.ts +2 -0
- package/packages/apps/galaxpay/lib/functions-lib/galaxpay/auth/create-axios.js +20 -0
- package/packages/apps/galaxpay/lib/functions-lib/galaxpay/auth/create-axios.js.map +1 -0
- package/packages/apps/galaxpay/lib/functions-lib/galaxpay/auth/gerate-token.d.ts +2 -0
- package/packages/apps/galaxpay/lib/functions-lib/galaxpay/auth/gerate-token.js +32 -0
- package/packages/apps/galaxpay/lib/functions-lib/galaxpay/auth/gerate-token.js.map +1 -0
- package/packages/apps/galaxpay/lib/functions-lib/galaxpay/handle-plans.d.ts +30 -0
- package/packages/apps/galaxpay/lib/functions-lib/galaxpay/handle-plans.js +73 -0
- package/packages/apps/galaxpay/lib/functions-lib/galaxpay/handle-plans.js.map +1 -0
- package/packages/apps/galaxpay/lib/functions-lib/galaxpay/update-subscription.d.ts +8 -0
- package/packages/apps/galaxpay/lib/functions-lib/galaxpay/update-subscription.js +56 -0
- package/packages/apps/galaxpay/lib/functions-lib/galaxpay/update-subscription.js.map +1 -0
- package/packages/apps/galaxpay/lib/functions-lib/galaxpay/webhook.d.ts +3 -0
- package/packages/apps/galaxpay/lib/functions-lib/galaxpay/webhook.js +291 -0
- package/packages/apps/galaxpay/lib/functions-lib/galaxpay/webhook.js.map +1 -0
- package/packages/apps/galaxpay/lib/functions-lib/utils.d.ts +8 -0
- package/packages/apps/galaxpay/lib/functions-lib/utils.js +17 -0
- package/packages/apps/galaxpay/lib/functions-lib/utils.js.map +1 -0
- package/packages/apps/galaxpay/lib/galaxpay-create-transaction.d.ts +71 -0
- package/packages/apps/galaxpay/lib/galaxpay-create-transaction.js +199 -0
- package/packages/apps/galaxpay/lib/galaxpay-create-transaction.js.map +1 -0
- package/packages/apps/galaxpay/lib/galaxpay-events.d.ts +6 -0
- package/packages/apps/galaxpay/lib/galaxpay-events.js +21 -0
- package/packages/apps/galaxpay/lib/galaxpay-events.js.map +1 -0
- package/packages/apps/galaxpay/lib/galaxpay-list-payments.d.ts +7 -0
- package/packages/apps/galaxpay/lib/galaxpay-list-payments.js +105 -0
- package/packages/apps/galaxpay/lib/galaxpay-list-payments.js.map +1 -0
- package/packages/apps/galaxpay/lib/galaxpay.d.ts +76 -0
- package/packages/apps/galaxpay/lib/galaxpay.js +12 -0
- package/packages/apps/galaxpay/lib/galaxpay.js.map +1 -0
- package/packages/apps/galaxpay/lib/index.d.ts +1 -0
- package/packages/apps/galaxpay/lib/index.js +3 -0
- package/packages/apps/galaxpay/lib/index.js.map +1 -0
- package/packages/apps/galaxpay/package.json +36 -0
- package/packages/apps/galaxpay/scripts/build.sh +5 -0
- package/packages/apps/galaxpay/src/functions-lib/all-parses.ts +91 -0
- package/packages/apps/galaxpay/src/functions-lib/ecom/events-to-galaxpay.ts +85 -0
- package/packages/apps/galaxpay/src/functions-lib/galaxpay/auth/create-access.ts +80 -0
- package/packages/apps/galaxpay/src/functions-lib/galaxpay/auth/create-axios.ts +21 -0
- package/packages/apps/galaxpay/src/functions-lib/galaxpay/auth/gerate-token.ts +36 -0
- package/packages/apps/galaxpay/src/functions-lib/galaxpay/handle-plans.ts +92 -0
- package/packages/apps/galaxpay/src/functions-lib/galaxpay/update-subscription.ts +73 -0
- package/packages/apps/galaxpay/src/functions-lib/galaxpay/webhook.ts +381 -0
- package/packages/apps/galaxpay/src/functions-lib/utils.ts +23 -0
- package/packages/apps/galaxpay/src/galaxpay-create-transaction.ts +240 -0
- package/packages/apps/galaxpay/src/galaxpay-events.ts +28 -0
- package/packages/apps/galaxpay/src/galaxpay-list-payments.ts +130 -0
- package/packages/apps/galaxpay/src/galaxpay.ts +12 -0
- package/packages/apps/galaxpay/src/index.ts +2 -0
- package/packages/apps/galaxpay/tsconfig.json +6 -0
- package/packages/apps/galaxpay/types/config-app.d.ts +99 -0
- package/packages/apps/infinitepay/lib/infinitepay.js +1 -2
- package/packages/apps/infinitepay/lib/infinitepay.js.map +1 -1
- package/packages/apps/infinitepay/lib/ip-create-transaction.d.ts +1 -2
- package/packages/apps/infinitepay/lib/ip-create-transaction.js +3 -2
- package/packages/apps/infinitepay/lib/ip-create-transaction.js.map +1 -1
- package/packages/apps/infinitepay/lib/ip-list-payments.d.ts +1 -2
- package/packages/apps/infinitepay/lib/ip-list-payments.js.map +1 -1
- package/packages/apps/infinitepay/package.json +3 -3
- package/packages/apps/infinitepay/src/infinitepay.ts +1 -2
- package/packages/apps/infinitepay/src/ip-create-transaction.ts +8 -6
- package/packages/apps/infinitepay/src/ip-list-payments.ts +5 -3
- package/packages/apps/jadlog/CHANGELOG.md +1 -0
- package/packages/apps/jadlog/README.md +1 -0
- package/packages/apps/jadlog/lib/index.d.ts +1 -0
- package/packages/apps/jadlog/lib/index.js +2 -0
- package/packages/apps/jadlog/lib/index.js.map +1 -0
- package/packages/apps/jadlog/lib/jadlog.d.ts +2 -0
- package/packages/apps/jadlog/lib/jadlog.js +6 -0
- package/packages/apps/jadlog/lib/jadlog.js.map +1 -0
- package/packages/apps/jadlog/lib-mjs/calculate-jadlog.mjs +408 -0
- package/packages/apps/jadlog/lib-mjs/deadlines/range-0.mjs +147 -0
- package/packages/apps/jadlog/lib-mjs/deadlines/range-1.mjs +1149 -0
- package/packages/apps/jadlog/lib-mjs/deadlines/range-2.mjs +1137 -0
- package/packages/apps/jadlog/lib-mjs/deadlines/range-3.mjs +1638 -0
- package/packages/apps/jadlog/lib-mjs/deadlines/range-4.mjs +1089 -0
- package/packages/apps/jadlog/lib-mjs/deadlines/range-5.mjs +1101 -0
- package/packages/apps/jadlog/lib-mjs/deadlines/range-6.mjs +1893 -0
- package/packages/apps/jadlog/lib-mjs/deadlines/range-7.mjs +1371 -0
- package/packages/apps/jadlog/lib-mjs/deadlines/range-8.mjs +1401 -0
- package/packages/apps/jadlog/lib-mjs/deadlines/range-9.mjs +963 -0
- package/packages/apps/jadlog/lib-mjs/jadlog-get-deadlines.mjs +32 -0
- package/packages/apps/jadlog/package.json +28 -0
- package/packages/apps/jadlog/src/index.ts +1 -0
- package/packages/apps/jadlog/src/jadlog.ts +7 -0
- package/packages/apps/jadlog/tsconfig.json +6 -0
- package/packages/apps/mercadopago/lib/mercadopago.js +1 -2
- package/packages/apps/mercadopago/lib/mercadopago.js.map +1 -1
- package/packages/apps/mercadopago/lib/mp-create-transaction.d.ts +1 -2
- package/packages/apps/mercadopago/lib/mp-create-transaction.js +3 -2
- package/packages/apps/mercadopago/lib/mp-create-transaction.js.map +1 -1
- package/packages/apps/mercadopago/lib/mp-list-payments.d.ts +1 -2
- package/packages/apps/mercadopago/lib/mp-list-payments.js +2 -1
- package/packages/apps/mercadopago/lib/mp-list-payments.js.map +1 -1
- package/packages/apps/mercadopago/package.json +3 -3
- package/packages/apps/mercadopago/src/mercadopago.ts +1 -2
- package/packages/apps/mercadopago/src/mp-create-transaction.ts +12 -10
- package/packages/apps/mercadopago/src/mp-list-payments.ts +9 -7
- package/packages/apps/pagarme/lib/pagarme-create-transaction.js.map +1 -1
- package/packages/apps/pagarme/lib/pagarme-list-payments.d.ts +1 -2
- package/packages/apps/pagarme/lib/pagarme-list-payments.js.map +1 -1
- package/packages/apps/pagarme/package.json +3 -3
- package/packages/apps/pagarme/src/pagarme-create-transaction.ts +5 -3
- package/packages/apps/pagarme/src/pagarme-list-payments.ts +5 -3
- package/packages/apps/pix/lib/functions-lib/pix-auth/construtor.js +1 -1
- package/packages/apps/pix/lib/functions-lib/pix-auth/construtor.js.map +1 -1
- package/packages/apps/pix/lib/pix-create-transaction.d.ts +1 -2
- package/packages/apps/pix/lib/pix-create-transaction.js +6 -5
- package/packages/apps/pix/lib/pix-create-transaction.js.map +1 -1
- package/packages/apps/pix/lib/pix-list-payments.d.ts +1 -2
- package/packages/apps/pix/lib/pix-list-payments.js.map +1 -1
- package/packages/apps/pix/lib/pix-webhook.js +1 -1
- package/packages/apps/pix/lib/pix-webhook.js.map +1 -1
- package/packages/apps/pix/lib/pix.js +1 -2
- package/packages/apps/pix/lib/pix.js.map +1 -1
- package/packages/apps/pix/package.json +3 -3
- package/packages/apps/pix/src/functions-lib/pix-auth/construtor.ts +1 -1
- package/packages/apps/pix/src/pix-create-transaction.ts +10 -9
- package/packages/apps/pix/src/pix-list-payments.ts +5 -3
- package/packages/apps/pix/src/pix-webhook.ts +1 -1
- package/packages/apps/pix/src/pix.ts +1 -2
- package/packages/apps/tiny-erp/package.json +3 -3
- package/packages/cli/package.json +1 -1
- package/packages/config/package.json +1 -1
- package/packages/emails/package.json +2 -2
- package/packages/events/lib/firebase.js +2 -0
- package/packages/events/lib/firebase.js.map +1 -1
- package/packages/events/package.json +4 -3
- package/packages/events/src/firebase.ts +2 -0
- package/packages/firebase/lib/config.d.ts +10 -0
- package/packages/firebase/lib/config.js +13 -0
- package/packages/firebase/lib/config.js.map +1 -1
- package/packages/firebase/lib/init.d.ts +0 -1
- package/packages/firebase/lib/init.js +0 -1
- package/packages/firebase/lib/init.js.map +1 -1
- package/packages/firebase/package.json +3 -4
- package/packages/firebase/src/config.ts +14 -0
- package/packages/firebase/src/init.ts +0 -1
- package/packages/i18n/lib/en_us/i19get$1back.txt +1 -0
- package/packages/i18n/lib/en_us.d.ts +1 -0
- package/packages/i18n/lib/en_us.js +1 -0
- package/packages/i18n/lib/en_us.js.map +1 -1
- package/packages/i18n/lib/pt_br/i19get$1back.txt +1 -0
- package/packages/i18n/lib/pt_br/i19get.txt +1 -1
- package/packages/i18n/lib/pt_br.d.ts +2 -1
- package/packages/i18n/lib/pt_br.js +2 -1
- package/packages/i18n/lib/pt_br.js.map +1 -1
- package/packages/i18n/package.json +1 -1
- package/packages/i18n/src/en_us.ts +1 -0
- package/packages/i18n/src/pt_br.ts +2 -1
- package/packages/modules/lib/firebase/call-app-module.js +71 -51
- package/packages/modules/lib/firebase/call-app-module.js.map +1 -1
- package/packages/modules/package.json +6 -3
- package/packages/modules/src/firebase/call-app-module.ts +37 -24
- package/packages/passport/package.json +3 -3
- package/packages/ssr/lib/firebase.js +1 -2
- package/packages/ssr/lib/firebase.js.map +1 -1
- package/packages/ssr/package.json +5 -5
- package/packages/ssr/src/firebase.ts +1 -2
- package/packages/storefront/.eslintrc.cjs +1 -1
- package/packages/storefront/.nvmrc +1 -0
- package/packages/storefront/dist/client/HeaderButtons.f1c92fd8.js +1 -0
- package/packages/storefront/dist/client/Prices.795d082c.js +1 -0
- package/packages/storefront/dist/client/ProductCard.f477b7a1.js +1 -0
- package/packages/storefront/dist/client/assets/_...slug_.15766f41.css +1 -0
- package/packages/storefront/dist/client/assets/index.e6a09532.css +1 -0
- package/packages/storefront/dist/client/assets/server.4d9646d8.css +1 -0
- package/packages/storefront/dist/client/chunks/HeaderButtons.27ab2180.js +1 -0
- package/packages/storefront/dist/client/chunks/{LoginForm.83fec3a1.js → LoginForm.36774236.js} +1 -1
- package/packages/storefront/dist/client/chunks/Prices.vue_vue_type_script_setup_true_lang.522e4ac4.js +1 -0
- package/packages/storefront/dist/client/chunks/_plugin-vue_export-helper.979dc9e3.js +1 -0
- package/packages/storefront/dist/client/chunks/{price.130e6005.js → price.ecf7fed4.js} +1 -1
- package/packages/storefront/dist/client/chunks/runtime-core.esm-bundler.6c012e5d.js +1 -0
- package/packages/storefront/dist/client/client.8b4e336b.js +1 -0
- package/packages/storefront/dist/client/hoisted.f6ee2883.js +1 -0
- package/packages/storefront/dist/client/sw.js +1 -1
- package/packages/storefront/dist/server/entry.mjs +704 -70
- package/packages/storefront/package.json +12 -9
- package/packages/storefront/src/lib/assets/base.css +4 -0
- package/packages/storefront/src/lib/components/Prices.vue +165 -0
- package/packages/storefront/src/lib/components/ProductCard.vue +36 -0
- package/packages/storefront/src/lib/components/globals/Fade.vue +171 -0
- package/packages/storefront/src/lib/composables/use-component-variant.ts +13 -0
- package/packages/storefront/src/lib/composables/use-prices.ts +172 -0
- package/packages/storefront/src/lib/layouts/BaseBody.astro +1 -0
- package/packages/storefront/src/lib/pages/_vue.ts +13 -1
- package/packages/storefront/src/lib/state/modules-info.ts +1 -1
- package/packages/storefront/src/vue-globals.d.ts +9 -2
- package/packages/storefront/tailwind.config.cjs +1 -0
- package/packages/storefront/uno.config.cjs +1 -0
- package/packages/types/package.json +1 -1
- package/store.renovate.json +2 -1
- package/packages/storefront/dist/client/HeaderButtons.1968a9ac.js +0 -1
- package/packages/storefront/dist/client/Price.c4aab3ea.js +0 -1
- package/packages/storefront/dist/client/assets/_...slug_.580c5aa4.css +0 -1
- package/packages/storefront/dist/client/chunks/HeaderButtons.5a0e371e.js +0 -1
- package/packages/storefront/dist/client/chunks/runtime-core.esm-bundler.4dae6bc1.js +0 -1
- package/packages/storefront/dist/client/chunks/runtime-dom.esm-bundler.7a999c6c.js +0 -1
- package/packages/storefront/dist/client/client.79a40b9d.js +0 -1
- package/packages/storefront/dist/client/hoisted.cce93d56.js +0 -1
- package/packages/storefront/src/lib/components/Price/PriceCashback.vue +0 -13
- package/packages/storefront/src/lib/components/Price/PriceCompare.vue +0 -13
- package/packages/storefront/src/lib/components/Price/PriceDiscountLabel.vue +0 -13
- package/packages/storefront/src/lib/components/Price/PriceInstallments.vue +0 -13
- package/packages/storefront/src/lib/components/Price/PriceSale.vue +0 -13
- package/packages/storefront/src/lib/components/Price/PriceWithDiscount.vue +0 -13
- package/packages/storefront/src/lib/components/Price.vue +0 -57
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import type { ApiEventHandler } from '@cloudcommerce/firebase/lib/helpers/pubsub';
|
|
2
|
+
import type { Orders } from '@cloudcommerce/types';
|
|
3
|
+
import logger from 'firebase-functions/logger';
|
|
4
|
+
import { getFirestore } from 'firebase-admin/firestore';
|
|
5
|
+
import config from '@cloudcommerce/firebase/lib/config';
|
|
6
|
+
import GalaxpayAxios from '../galaxpay/auth/create-access';
|
|
7
|
+
|
|
8
|
+
const collectionSubscription = getFirestore().collection('subscriptions');
|
|
9
|
+
|
|
10
|
+
const handleApiEvent: ApiEventHandler = async ({
|
|
11
|
+
evName,
|
|
12
|
+
apiEvent,
|
|
13
|
+
apiDoc,
|
|
14
|
+
app,
|
|
15
|
+
}) => {
|
|
16
|
+
const resourceId = apiEvent.resource_id;
|
|
17
|
+
logger.info('>> ', resourceId, ' - Action: ', apiEvent.action);
|
|
18
|
+
const key = `${evName}_${resourceId}`;
|
|
19
|
+
const appData = { ...app.data, ...app.hidden_data };
|
|
20
|
+
if (
|
|
21
|
+
Array.isArray(appData.ignore_events)
|
|
22
|
+
&& appData.ignore_events.includes(evName)
|
|
23
|
+
) {
|
|
24
|
+
logger.info('>> ', key, ' - Ignored event');
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
logger.info(`> Webhook ${resourceId} [${evName}] => ${apiDoc}`);
|
|
28
|
+
const galaxpayAxios = new GalaxpayAxios({
|
|
29
|
+
galaxpayId: appData.galaxpay_id,
|
|
30
|
+
galaxpayHash: appData.galaxpay_hash,
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
await galaxpayAxios.preparing;
|
|
34
|
+
const { axios } = galaxpayAxios;
|
|
35
|
+
if (axios) {
|
|
36
|
+
if (evName === 'orders-cancelled') {
|
|
37
|
+
const order = apiDoc as Orders;
|
|
38
|
+
|
|
39
|
+
if (!order.subscription_order) {
|
|
40
|
+
const documentSnapshot = await collectionSubscription.doc(order._id).get();
|
|
41
|
+
if (documentSnapshot && documentSnapshot.exists) {
|
|
42
|
+
const docSubscription = documentSnapshot.data();
|
|
43
|
+
if (docSubscription) {
|
|
44
|
+
const { status } = docSubscription.data();
|
|
45
|
+
if (status !== 'cancelled') {
|
|
46
|
+
try {
|
|
47
|
+
await axios.delete(`/subscriptions/${order._id}/myId`);
|
|
48
|
+
await collectionSubscription.doc(order._id)
|
|
49
|
+
.set({
|
|
50
|
+
status: 'cancelled',
|
|
51
|
+
updatedAt: new Date().toISOString(),
|
|
52
|
+
}, { merge: true })
|
|
53
|
+
.catch(logger.error);
|
|
54
|
+
} catch (err: any) {
|
|
55
|
+
const statusCode = err.response?.status;
|
|
56
|
+
if (statusCode === 404) {
|
|
57
|
+
logger.warn('> (App:GalaxPay): Subscription not found in GalaxPay');
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
if (statusCode === 401 || statusCode === 403) {
|
|
61
|
+
logger.warn('> (App:GalaxPay): Unauthorized subscription deletion request');
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
throw err;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
logger.warn('> (App:GalaxPay): Subscription not fount in Firestore');
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
const locationId = config.get().httpsFunctionOptions.region;
|
|
74
|
+
const webhookUrl = `https://${locationId}-${process.env.GCLOUD_PROJECT}.cloudfunctions.net/galapay-webhook`;
|
|
75
|
+
|
|
76
|
+
return axios.put('/webhooks', {
|
|
77
|
+
url: webhookUrl,
|
|
78
|
+
events: ['subscription.addTransaction', 'transaction.updateStatus'],
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
logger.warn('> (App GalaxPay) Access not found');
|
|
82
|
+
return null;
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
export default handleApiEvent;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import type { AxiosInstance } from 'axios';
|
|
2
|
+
import { getFirestore } from 'firebase-admin/firestore';
|
|
3
|
+
import logger from 'firebase-functions/logger';
|
|
4
|
+
import { isSandbox } from '../../utils';
|
|
5
|
+
import gerateAccessToken from './gerate-token';
|
|
6
|
+
import createAxios from './create-axios';
|
|
7
|
+
|
|
8
|
+
const { GALAXPAY_PARTNER_ID, GALAXPAY_PARTNER_HASH } = process.env;
|
|
9
|
+
|
|
10
|
+
const firestoreColl = 'galaxpayTokens';
|
|
11
|
+
|
|
12
|
+
type Option = {
|
|
13
|
+
galaxpayId: string;
|
|
14
|
+
galaxpayHash: string;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export default class GalaxPay {
|
|
18
|
+
preparing: Promise<unknown>;
|
|
19
|
+
axios: AxiosInstance | undefined;
|
|
20
|
+
|
|
21
|
+
constructor(options: Option) {
|
|
22
|
+
const {
|
|
23
|
+
galaxpayId,
|
|
24
|
+
galaxpayHash,
|
|
25
|
+
} = options;
|
|
26
|
+
|
|
27
|
+
const self = this;
|
|
28
|
+
|
|
29
|
+
let documentRef;
|
|
30
|
+
const hashLogin = Buffer.from(`${galaxpayId}:${galaxpayHash}`).toString('base64');
|
|
31
|
+
|
|
32
|
+
if (firestoreColl) {
|
|
33
|
+
documentRef = getFirestore()
|
|
34
|
+
.doc(`${firestoreColl}/${hashLogin}`);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
let galaxpayPartnerHash: string | undefined;
|
|
38
|
+
|
|
39
|
+
if (GALAXPAY_PARTNER_ID && GALAXPAY_PARTNER_HASH) {
|
|
40
|
+
galaxpayPartnerHash = Buffer.from(`${GALAXPAY_PARTNER_ID}:${GALAXPAY_PARTNER_HASH}`).toString('base64');
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
this.preparing = new Promise((resolve, reject) => {
|
|
44
|
+
const authenticate = (token: string) => {
|
|
45
|
+
self.axios = createAxios(token, isSandbox);
|
|
46
|
+
resolve(self);
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const handleAuth = () => {
|
|
50
|
+
logger.log('>(App Galaxpay) Auth02 ');
|
|
51
|
+
gerateAccessToken(hashLogin, isSandbox, galaxpayPartnerHash)
|
|
52
|
+
.then((accessToken) => {
|
|
53
|
+
// logger.log(`>(App Galaxpay) ${hashLogin}: ${accessToken}`);
|
|
54
|
+
authenticate(accessToken as string);
|
|
55
|
+
if (documentRef) {
|
|
56
|
+
documentRef.set({ accessToken }).catch(logger.error);
|
|
57
|
+
}
|
|
58
|
+
})
|
|
59
|
+
.catch(reject);
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
if (documentRef) {
|
|
63
|
+
documentRef.get()
|
|
64
|
+
.then((documentSnapshot) => {
|
|
65
|
+
if (documentSnapshot.exists
|
|
66
|
+
&& Date.now() - documentSnapshot.updateTime.toDate().getTime()
|
|
67
|
+
<= 9 * 60 * 1000 // access token expires in 10 minutes
|
|
68
|
+
) {
|
|
69
|
+
authenticate(documentSnapshot.get('accessToken'));
|
|
70
|
+
} else {
|
|
71
|
+
handleAuth();
|
|
72
|
+
}
|
|
73
|
+
})
|
|
74
|
+
.catch(logger.error);
|
|
75
|
+
} else {
|
|
76
|
+
handleAuth();
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import axios from 'axios';
|
|
2
|
+
// import logger from 'firebase-functions/logger';
|
|
3
|
+
|
|
4
|
+
export default (accessToken: string | undefined | null, isSandbox?: boolean) => {
|
|
5
|
+
// https://docs.galaxpay.com.br/autenticacao
|
|
6
|
+
// https://docs.galaxpay.com.br/auth/token
|
|
7
|
+
|
|
8
|
+
const headers = {
|
|
9
|
+
'Content-Type': 'application/json',
|
|
10
|
+
};
|
|
11
|
+
if (accessToken) {
|
|
12
|
+
// logger.log('>(App GalaxPay) token: ', accessToken);
|
|
13
|
+
Object.assign(headers, { Authorization: `Bearer ${accessToken}` });
|
|
14
|
+
Object.assign(headers, { 'Accept-Encoding': 'gzip,deflate,compress' });
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
return axios.create({
|
|
18
|
+
baseURL: `https://api.${isSandbox ? 'sandbox.cloud.' : ''}galaxpay.com.br/v2`,
|
|
19
|
+
headers,
|
|
20
|
+
});
|
|
21
|
+
};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// import logger from 'firebase-functions/logger';
|
|
2
|
+
import Axios from './create-axios';
|
|
3
|
+
|
|
4
|
+
const gereteToken = (
|
|
5
|
+
hashLogin: string,
|
|
6
|
+
isSandbox?: boolean,
|
|
7
|
+
galaxpayPartnerHash?: string,
|
|
8
|
+
) => new Promise((resolve, reject) => {
|
|
9
|
+
// https://docs.galaxpay.com.br/autenticacao
|
|
10
|
+
// https://docs.galaxpay.com.br/auth/token
|
|
11
|
+
|
|
12
|
+
const axios = Axios(null, isSandbox);
|
|
13
|
+
const request = (isRetry?: boolean) => {
|
|
14
|
+
const headers = { Authorization: `Basic ${hashLogin}` };
|
|
15
|
+
if (!isSandbox && galaxpayPartnerHash) {
|
|
16
|
+
// logger.log('#AuthorizationPartner ');
|
|
17
|
+
Object.assign(headers, { AuthorizationPartner: galaxpayPartnerHash });
|
|
18
|
+
}
|
|
19
|
+
axios.post('/token', {
|
|
20
|
+
grant_type: 'authorization_code',
|
|
21
|
+
scope: 'customers.read customers.write plans.read plans.write transactions.read transactions.write webhooks.write cards.read cards.write card-brands.read subscriptions.read subscriptions.write charges.read charges.write boletos.read',
|
|
22
|
+
}, { headers })
|
|
23
|
+
.then(({ data }) => {
|
|
24
|
+
resolve(data.access_token);
|
|
25
|
+
})
|
|
26
|
+
.catch((err) => {
|
|
27
|
+
if (!isRetry && err.response && err.response.status >= 429) {
|
|
28
|
+
setTimeout(() => request(true), 700);
|
|
29
|
+
}
|
|
30
|
+
reject(err);
|
|
31
|
+
});
|
|
32
|
+
};
|
|
33
|
+
request();
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
export default gereteToken;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import type { GalaxpayApp } from '../../../types/config-app';
|
|
2
|
+
// import type { ListPaymentsResponse } from '@cloudcommerce/types/modules/list_payments:response';
|
|
3
|
+
import type { ListPaymentsParams } from '@cloudcommerce/types/modules/list_payments:params';
|
|
4
|
+
|
|
5
|
+
// type Gateway = ListPaymentsResponse['payment_gateways'][number]
|
|
6
|
+
|
|
7
|
+
const handleGateway = (appData: GalaxpayApp) => {
|
|
8
|
+
const plans: Exclude<GalaxpayApp['plans'], undefined> = [];
|
|
9
|
+
if (appData.plans) {
|
|
10
|
+
// Newer versions of the app will have a list of plans
|
|
11
|
+
appData.plans.forEach((plan) => {
|
|
12
|
+
plans.push(plan);
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
return plans;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
// for create-transaction
|
|
20
|
+
const findPlanToCreateTransction = (label: string | undefined, appData: GalaxpayApp) => {
|
|
21
|
+
let sendPlan: Exclude<GalaxpayApp['plans'], undefined>[number] | undefined;
|
|
22
|
+
if (appData.plans) {
|
|
23
|
+
/*
|
|
24
|
+
More recent versions of the application will have a list of plans,
|
|
25
|
+
where it will be necessary to find the plan by name,
|
|
26
|
+
and return it since it will be necessary to use the periodicity and quantity property
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
// find plan by name (label)
|
|
30
|
+
appData.plans.forEach((plan) => {
|
|
31
|
+
// if the name of the plan is blank, on the list-payments side it is set to 'Plano'
|
|
32
|
+
let planLabel = plan.label || 'Plano';
|
|
33
|
+
planLabel = `${planLabel} ${plan.periodicity}`;
|
|
34
|
+
label = label?.trim();
|
|
35
|
+
if (label === planLabel) {
|
|
36
|
+
sendPlan = plan;
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
return sendPlan;
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
const discountPlan = (
|
|
44
|
+
planDiscount: Exclude<GalaxpayApp['plans'], undefined>[number]['discount'],
|
|
45
|
+
amount: Exclude<ListPaymentsParams['amount'], undefined>,
|
|
46
|
+
) => {
|
|
47
|
+
if (planDiscount && planDiscount.value > 0) {
|
|
48
|
+
// default discount option
|
|
49
|
+
const discountOption = {
|
|
50
|
+
value: planDiscount.value,
|
|
51
|
+
apply_at: (planDiscount.apply_at === 'frete' ? 'freight' : planDiscount) as 'total' | 'subtotal' | 'freight',
|
|
52
|
+
type: planDiscount.percentage ? 'percentage' : 'fixed' as 'percentage' | 'fixed' | undefined,
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
if (amount.total) {
|
|
56
|
+
// check amount value to apply discount
|
|
57
|
+
if (planDiscount.min_amount && amount.total < planDiscount.min_amount) {
|
|
58
|
+
planDiscount.value = 0;
|
|
59
|
+
} else {
|
|
60
|
+
delete planDiscount.min_amount;
|
|
61
|
+
|
|
62
|
+
const maxDiscount = amount[discountOption.apply_at || 'subtotal'];
|
|
63
|
+
let discountValue: number | undefined;
|
|
64
|
+
|
|
65
|
+
if (maxDiscount && discountOption.type === 'percentage') {
|
|
66
|
+
discountValue = (maxDiscount * planDiscount.value) / 100;
|
|
67
|
+
} else {
|
|
68
|
+
discountValue = planDiscount.value;
|
|
69
|
+
if (maxDiscount && discountValue > maxDiscount) {
|
|
70
|
+
discountValue = maxDiscount;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
if (discountValue && discountValue > 0) {
|
|
75
|
+
amount.discount = (amount.discount || 0) + discountValue;
|
|
76
|
+
amount.total -= discountValue;
|
|
77
|
+
if (amount.total < 0) {
|
|
78
|
+
amount.total = 0;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return discountOption;
|
|
84
|
+
}
|
|
85
|
+
return null;
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
export {
|
|
89
|
+
handleGateway,
|
|
90
|
+
findPlanToCreateTransction,
|
|
91
|
+
discountPlan,
|
|
92
|
+
};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { Orders, Applications } from '@cloudcommerce/types';
|
|
2
|
+
import GalaxpayAxios from './auth/create-access';
|
|
3
|
+
|
|
4
|
+
const checkAmountItemsOrder = (
|
|
5
|
+
amount: Orders['amount'],
|
|
6
|
+
items: Exclude<Orders['items'], undefined>,
|
|
7
|
+
plan: { [x: string]: any },
|
|
8
|
+
) => {
|
|
9
|
+
let subtotal = 0;
|
|
10
|
+
let item: Exclude<Orders['items'], undefined>[number];
|
|
11
|
+
for (let i = 0; i < items.length; i++) {
|
|
12
|
+
item = items[i];
|
|
13
|
+
if (item.flags && (item.flags.includes('freebie') || item.flags.includes('discount-set-free'))) {
|
|
14
|
+
items.splice(i, 1);
|
|
15
|
+
} else {
|
|
16
|
+
subtotal += item.quantity * (item.final_price || item.price);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
amount.subtotal = subtotal;
|
|
20
|
+
amount.total = amount.subtotal + (amount.tax || 0) + (amount.freight || 0) + (amount.extra || 0);
|
|
21
|
+
let planDiscount;
|
|
22
|
+
if (plan && plan.discount) {
|
|
23
|
+
if (plan.discount.percentage) {
|
|
24
|
+
planDiscount = amount[plan.discount.apply_at];
|
|
25
|
+
planDiscount *= ((plan.discount.value) / 100);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// if the plan doesn't exist, because it's subscription before the update
|
|
29
|
+
if (plan) {
|
|
30
|
+
amount.discount = (plan.discount && !plan.discount.percentage
|
|
31
|
+
? plan.discount.value : planDiscount) || 0;
|
|
32
|
+
}
|
|
33
|
+
if (amount.discount) {
|
|
34
|
+
amount.total -= amount.discount;
|
|
35
|
+
}
|
|
36
|
+
const total: any = amount.total - (amount.discount || 0); // BUG :(
|
|
37
|
+
return Math.floor(total.toFixed(2) * 100);
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const updateValueSubscription = (
|
|
41
|
+
appData: Applications,
|
|
42
|
+
subscriptionId: string,
|
|
43
|
+
amount: Orders['amount'],
|
|
44
|
+
items: Exclude<Orders['items'], undefined>,
|
|
45
|
+
plan: { [x: string]: any },
|
|
46
|
+
// GalaxPaySubscription: { [x: string]: any },
|
|
47
|
+
) => {
|
|
48
|
+
const value = checkAmountItemsOrder({ ...amount }, [...items], { ...plan });
|
|
49
|
+
|
|
50
|
+
return new Promise((resolve, reject) => {
|
|
51
|
+
const galaxpayAxios = new GalaxpayAxios({
|
|
52
|
+
galaxpayId: appData.hidden_data?.galaxpay_id,
|
|
53
|
+
galaxpayHash: appData.hidden_data?.galaxpay_hash,
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
galaxpayAxios.preparing
|
|
57
|
+
.then(async () => {
|
|
58
|
+
if (galaxpayAxios.axios) {
|
|
59
|
+
const { data } = await galaxpayAxios.axios.put(`subscriptions/${subscriptionId}/myId`, { value });
|
|
60
|
+
if (data.type) {
|
|
61
|
+
resolve(true);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}).catch((err) => {
|
|
65
|
+
reject(err);
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
export {
|
|
71
|
+
updateValueSubscription,
|
|
72
|
+
checkAmountItemsOrder,
|
|
73
|
+
};
|