cloudcommerce 0.0.126 → 0.0.128
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 +3 -0
- package/CHANGELOG.md +50 -0
- package/action.yml +50 -10
- package/ecomplus-stores/monocard/README.md +0 -15
- package/ecomplus-stores/monocard/README.pt-BR.md +0 -15
- package/ecomplus-stores/monocard/functions/core/package.json +1 -1
- package/ecomplus-stores/monocard/functions/events/package.json +2 -2
- package/ecomplus-stores/monocard/functions/modules/package.json +2 -2
- package/ecomplus-stores/monocard/functions/passport/package.json +2 -2
- package/ecomplus-stores/monocard/functions/ssr/package.json +8 -8
- package/ecomplus-stores/monocard/functions/ssr/tailwind.config.cjs +1 -3
- package/ecomplus-stores/monocard/functions/ssr/{uno.config.ts → uno.config.cjs} +1 -1
- package/ecomplus-stores/monocard/package.json +1 -1
- package/ecomplus-stores/tia-sonia/README.md +0 -15
- package/ecomplus-stores/tia-sonia/README.pt-BR.md +0 -15
- package/ecomplus-stores/tia-sonia/functions/core/package.json +1 -1
- package/ecomplus-stores/tia-sonia/functions/events/package.json +2 -2
- package/ecomplus-stores/tia-sonia/functions/modules/package.json +2 -2
- package/ecomplus-stores/tia-sonia/functions/passport/package.json +2 -2
- package/ecomplus-stores/tia-sonia/functions/ssr/package.json +7 -7
- package/ecomplus-stores/tia-sonia/functions/ssr/tailwind.config.cjs +1 -3
- package/ecomplus-stores/tia-sonia/functions/ssr/{uno.config.ts → uno.config.cjs} +1 -1
- package/ecomplus-stores/tia-sonia/package.json +1 -1
- package/package.json +14 -14
- package/packages/api/lib/api.d.ts +4 -4
- package/packages/api/lib/types.d.ts +41 -41
- package/packages/api/package.json +1 -1
- package/packages/apps/correios/package.json +2 -2
- package/packages/apps/custom-shipping/package.json +1 -1
- package/packages/apps/discounts/lib-mjs/apply-discount.mjs +94 -20
- package/packages/apps/discounts/package.json +2 -2
- package/packages/apps/emails/CHANGELOG.md +1 -0
- package/packages/apps/emails/README.md +1 -0
- package/packages/apps/emails/lib/events-to-app-emails.js +19 -0
- package/packages/apps/emails/lib/events-to-app-emails.js.map +1 -0
- package/packages/apps/emails/lib/firebase.js +19 -0
- package/packages/apps/emails/lib/firebase.js.map +1 -0
- package/packages/apps/emails/lib/functios-lib/abandoned-carts.js +86 -0
- package/packages/apps/emails/lib/functios-lib/abandoned-carts.js.map +1 -0
- package/packages/apps/emails/lib/functios-lib/handle-orders.js +174 -0
- package/packages/apps/emails/lib/functios-lib/handle-orders.js.map +1 -0
- package/packages/apps/emails/lib/functios-lib/trigger-actions.js +178 -0
- package/packages/apps/emails/lib/functios-lib/trigger-actions.js.map +1 -0
- package/packages/apps/emails/lib/functios-lib/utils.js +33 -0
- package/packages/apps/emails/lib/functios-lib/utils.js.map +1 -0
- package/packages/apps/emails/lib/index.js +2 -0
- package/packages/apps/emails/lib/index.js.map +1 -0
- package/packages/apps/emails/package.json +33 -0
- package/packages/apps/emails/src/events-to-app-emails.ts +27 -0
- package/packages/apps/emails/src/firebase.ts +25 -0
- package/packages/apps/emails/src/functios-lib/abandoned-carts.ts +100 -0
- package/packages/apps/emails/src/functios-lib/handle-orders.ts +232 -0
- package/packages/apps/emails/src/functios-lib/trigger-actions.ts +177 -0
- package/packages/apps/emails/src/functios-lib/utils.ts +44 -0
- package/packages/apps/emails/src/index.ts +1 -0
- package/packages/apps/emails/tsconfig.json +3 -0
- package/packages/apps/frenet/package.json +2 -2
- package/packages/apps/infinitepay/CHANGELOG.md +1 -0
- package/packages/apps/infinitepay/README.md +1 -0
- package/packages/apps/infinitepay/assets/onload-expression.js +57 -0
- package/packages/apps/infinitepay/lib/functions-lib/add-installments.d.ts +55 -0
- package/packages/apps/infinitepay/lib/functions-lib/add-installments.js +63 -0
- package/packages/apps/infinitepay/lib/functions-lib/add-installments.js.map +1 -0
- package/packages/apps/infinitepay/lib/functions-lib/ip-auth/create-access.d.ts +14 -0
- package/packages/apps/infinitepay/lib/functions-lib/ip-auth/create-access.js +63 -0
- package/packages/apps/infinitepay/lib/functions-lib/ip-auth/create-access.js.map +1 -0
- package/packages/apps/infinitepay/lib/functions-lib/ip-auth/create-axios.d.ts +2 -0
- package/packages/apps/infinitepay/lib/functions-lib/ip-auth/create-axios.js +19 -0
- package/packages/apps/infinitepay/lib/functions-lib/ip-auth/create-axios.js.map +1 -0
- package/packages/apps/infinitepay/lib/functions-lib/ip-auth/oauth.d.ts +2 -0
- package/packages/apps/infinitepay/lib/functions-lib/ip-auth/oauth.js +25 -0
- package/packages/apps/infinitepay/lib/functions-lib/ip-auth/oauth.js.map +1 -0
- package/packages/apps/infinitepay/lib/functions-lib/utils.d.ts +8 -0
- package/packages/apps/infinitepay/lib/functions-lib/utils.js +17 -0
- package/packages/apps/infinitepay/lib/functions-lib/utils.js.map +1 -0
- package/packages/apps/infinitepay/lib/index.d.ts +1 -0
- package/packages/apps/infinitepay/lib/index.js +3 -0
- package/packages/apps/infinitepay/lib/index.js.map +1 -0
- package/packages/apps/infinitepay/lib/infinitepay.d.ts +76 -0
- package/packages/apps/infinitepay/lib/infinitepay.js +13 -0
- package/packages/apps/infinitepay/lib/infinitepay.js.map +1 -0
- package/packages/apps/infinitepay/lib/ip-create-transaction.d.ts +72 -0
- package/packages/apps/infinitepay/lib/ip-create-transaction.js +305 -0
- package/packages/apps/infinitepay/lib/ip-create-transaction.js.map +1 -0
- package/packages/apps/infinitepay/lib/ip-list-payments.d.ts +8 -0
- package/packages/apps/infinitepay/lib/ip-list-payments.js +130 -0
- package/packages/apps/infinitepay/lib/ip-list-payments.js.map +1 -0
- package/packages/apps/infinitepay/lib/ip-webhook.d.ts +5 -0
- package/packages/apps/infinitepay/lib/ip-webhook.js +152 -0
- package/packages/apps/infinitepay/lib/ip-webhook.js.map +1 -0
- package/packages/apps/infinitepay/package.json +38 -0
- package/packages/apps/infinitepay/scripts/build.sh +5 -0
- package/packages/apps/infinitepay/src/functions-lib/add-installments.ts +78 -0
- package/packages/apps/infinitepay/src/functions-lib/ip-auth/create-access.ts +85 -0
- package/packages/apps/infinitepay/src/functions-lib/ip-auth/create-axios.ts +20 -0
- package/packages/apps/infinitepay/src/functions-lib/ip-auth/oauth.ts +30 -0
- package/packages/apps/infinitepay/src/functions-lib/utils.ts +23 -0
- package/packages/apps/infinitepay/src/index.ts +2 -0
- package/packages/apps/infinitepay/src/infinitepay.ts +13 -0
- package/packages/apps/infinitepay/src/ip-create-transaction.ts +418 -0
- package/packages/apps/infinitepay/src/ip-list-payments.ts +158 -0
- package/packages/apps/infinitepay/src/ip-webhook.ts +184 -0
- package/packages/apps/infinitepay/tsconfig.json +6 -0
- package/packages/apps/infinitepay/webhook.js +1 -0
- package/packages/apps/mercadopago/lib/mp-create-transaction.js +1 -1
- package/packages/apps/mercadopago/lib/mp-create-transaction.js.map +1 -1
- package/packages/apps/mercadopago/lib/mp-webhook.js +1 -1
- package/packages/apps/mercadopago/lib/mp-webhook.js.map +1 -1
- package/packages/apps/mercadopago/package.json +4 -4
- package/packages/apps/mercadopago/src/mp-create-transaction.ts +1 -1
- package/packages/apps/mercadopago/src/mp-webhook.ts +1 -1
- package/packages/apps/pagarme/CHANGELOG.md +1 -0
- package/packages/apps/pagarme/README.md +1 -0
- package/packages/apps/pagarme/assets/onload-expression.js +18 -0
- package/packages/apps/pagarme/lib/functions-lib/add-installments.d.ts +55 -0
- package/packages/apps/pagarme/lib/functions-lib/add-installments.js +48 -0
- package/packages/apps/pagarme/lib/functions-lib/add-installments.js.map +1 -0
- package/packages/apps/pagarme/lib/functions-lib/parse-status-to-ecom.d.ts +2 -0
- package/packages/apps/pagarme/lib/functions-lib/parse-status-to-ecom.js +24 -0
- package/packages/apps/pagarme/lib/functions-lib/parse-status-to-ecom.js.map +1 -0
- package/packages/apps/pagarme/lib/index.d.ts +1 -0
- package/packages/apps/pagarme/lib/index.js +3 -0
- package/packages/apps/pagarme/lib/index.js.map +1 -0
- package/packages/apps/pagarme/lib/pagarme-create-transaction.d.ts +82 -0
- package/packages/apps/pagarme/lib/pagarme-create-transaction.js +275 -0
- package/packages/apps/pagarme/lib/pagarme-create-transaction.js.map +1 -0
- package/packages/apps/pagarme/lib/pagarme-list-payments.d.ts +7 -0
- package/packages/apps/pagarme/lib/pagarme-list-payments.js +139 -0
- package/packages/apps/pagarme/lib/pagarme-list-payments.js.map +1 -0
- package/packages/apps/pagarme/lib/pagarme-webhook.d.ts +4 -0
- package/packages/apps/pagarme/lib/pagarme-webhook.js +80 -0
- package/packages/apps/pagarme/lib/pagarme-webhook.js.map +1 -0
- package/packages/apps/pagarme/lib/pagarme.d.ts +86 -0
- package/packages/apps/pagarme/lib/pagarme.js +12 -0
- package/packages/apps/pagarme/lib/pagarme.js.map +1 -0
- package/packages/apps/pagarme/package.json +38 -0
- package/packages/apps/pagarme/scripts/build.sh +5 -0
- package/packages/apps/pagarme/src/functions-lib/add-installments.ts +59 -0
- package/packages/apps/pagarme/src/functions-lib/parse-status-to-ecom.ts +23 -0
- package/packages/apps/pagarme/src/index.ts +2 -0
- package/packages/apps/pagarme/src/pagarme-create-transaction.ts +307 -0
- package/packages/apps/pagarme/src/pagarme-list-payments.ts +158 -0
- package/packages/apps/pagarme/src/pagarme-webhook.ts +88 -0
- package/packages/apps/pagarme/src/pagarme.ts +12 -0
- package/packages/apps/pagarme/tsconfig.json +6 -0
- package/packages/apps/pagarme/webhook.js +1 -0
- package/packages/apps/pix/CHANGELOG.md +1 -0
- package/packages/apps/pix/README.md +1 -0
- package/packages/apps/pix/lib/functions-lib/get-certificate.d.ts +2 -0
- package/packages/apps/pix/lib/functions-lib/get-certificate.js +21 -0
- package/packages/apps/pix/lib/functions-lib/get-certificate.js.map +1 -0
- package/packages/apps/pix/lib/functions-lib/pix-auth/construtor.d.ts +15 -0
- package/packages/apps/pix/lib/functions-lib/pix-auth/construtor.js +65 -0
- package/packages/apps/pix/lib/functions-lib/pix-auth/construtor.js.map +1 -0
- package/packages/apps/pix/lib/functions-lib/pix-auth/create-axios.d.ts +6 -0
- package/packages/apps/pix/lib/functions-lib/pix-auth/create-axios.js +20 -0
- package/packages/apps/pix/lib/functions-lib/pix-auth/create-axios.js.map +1 -0
- package/packages/apps/pix/lib/functions-lib/pix-auth/oauth.d.ts +12 -0
- package/packages/apps/pix/lib/functions-lib/pix-auth/oauth.js +36 -0
- package/packages/apps/pix/lib/functions-lib/pix-auth/oauth.js.map +1 -0
- package/packages/apps/pix/lib/index.d.ts +1 -0
- package/packages/apps/pix/lib/index.js +3 -0
- package/packages/apps/pix/lib/index.js.map +1 -0
- package/packages/apps/pix/lib/pix-create-transaction.d.ts +73 -0
- package/packages/apps/pix/lib/pix-create-transaction.js +221 -0
- package/packages/apps/pix/lib/pix-create-transaction.js.map +1 -0
- package/packages/apps/pix/lib/pix-list-payments.d.ts +14 -0
- package/packages/apps/pix/lib/pix-list-payments.js +80 -0
- package/packages/apps/pix/lib/pix-list-payments.js.map +1 -0
- package/packages/apps/pix/lib/pix-webhook.d.ts +5 -0
- package/packages/apps/pix/lib/pix-webhook.js +146 -0
- package/packages/apps/pix/lib/pix-webhook.js.map +1 -0
- package/packages/apps/pix/lib/pix.d.ts +77 -0
- package/packages/apps/pix/lib/pix.js +13 -0
- package/packages/apps/pix/lib/pix.js.map +1 -0
- package/packages/apps/pix/package.json +36 -0
- package/packages/apps/pix/src/functions-lib/get-certificate.ts +24 -0
- package/packages/apps/pix/src/functions-lib/pix-auth/construtor.ts +87 -0
- package/packages/apps/pix/src/functions-lib/pix-auth/create-axios.ts +24 -0
- package/packages/apps/pix/src/functions-lib/pix-auth/oauth.ts +50 -0
- package/packages/apps/pix/src/index.ts +2 -0
- package/packages/apps/pix/src/pix-create-transaction.ts +261 -0
- package/packages/apps/pix/src/pix-list-payments.ts +93 -0
- package/packages/apps/pix/src/pix-webhook.ts +171 -0
- package/packages/apps/pix/src/pix.ts +13 -0
- package/packages/apps/pix/tsconfig.json +6 -0
- package/packages/apps/pix/webhook.js +1 -0
- package/packages/apps/tiny-erp/package.json +5 -5
- package/packages/cli/bin/run.mjs +1 -1
- package/packages/cli/lib/build.js +14 -7
- package/packages/cli/lib/{index.js → cli.js} +2 -2
- package/packages/cli/lib/setup-gcloud.js +1 -1
- package/packages/cli/package.json +3 -3
- package/packages/cli/src/build.ts +17 -10
- package/packages/cli/src/{index.ts → cli.ts} +2 -2
- package/packages/cli/src/setup-gcloud.ts +1 -1
- package/packages/config/lib/config.d.ts +4 -2
- package/packages/config/lib/config.js +11 -4
- package/packages/config/lib/config.js.map +1 -1
- package/packages/config/lib/env.d.ts +1 -1
- package/packages/config/package.json +2 -2
- package/packages/config/src/config.ts +14 -5
- package/packages/emails/CHANGELOG.md +1 -0
- package/packages/emails/README.md +1 -0
- package/packages/emails/lib/index.d.ts +56 -0
- package/packages/emails/lib/index.js +83 -0
- package/packages/emails/lib/index.js.map +1 -0
- package/packages/emails/lib/parse-template-to-html.d.ts +3 -0
- package/packages/emails/lib/parse-template-to-html.js +16 -0
- package/packages/emails/lib/parse-template-to-html.js.map +1 -0
- package/packages/emails/lib/providers/sendgrid/index.d.ts +8 -0
- package/packages/emails/lib/providers/sendgrid/index.js +54 -0
- package/packages/emails/lib/providers/sendgrid/index.js.map +1 -0
- package/packages/emails/lib/providers/sendgrid/parse-to-data.d.ts +5 -0
- package/packages/emails/lib/providers/sendgrid/parse-to-data.js +55 -0
- package/packages/emails/lib/providers/sendgrid/parse-to-data.js.map +1 -0
- package/packages/emails/lib/providers/smtp/index.d.ts +13 -0
- package/packages/emails/lib/providers/smtp/index.js +79 -0
- package/packages/emails/lib/providers/smtp/index.js.map +1 -0
- package/packages/emails/package.json +35 -0
- package/packages/emails/src/index.ts +144 -0
- package/packages/emails/src/parse-template-to-html.ts +19 -0
- package/packages/emails/src/providers/sendgrid/index.ts +78 -0
- package/packages/emails/src/providers/sendgrid/parse-to-data.ts +92 -0
- package/packages/emails/src/providers/smtp/index.ts +115 -0
- package/packages/emails/tests/assets/customer.json +68 -0
- package/packages/emails/tests/assets/order.json +190 -0
- package/packages/emails/tests/assets/store.json +25 -0
- package/packages/emails/tests/ex.config-sendgrid.json +19 -0
- package/packages/emails/tests/ex.config-smtp.json +21 -0
- package/packages/emails/tests/sendgrid.test.ts +156 -0
- package/packages/emails/tests/smtp.test.ts +147 -0
- package/packages/emails/tests/templates/new-order.ejs +37 -0
- package/packages/emails/tsconfig.json +6 -0
- package/packages/emails/types/index.d.ts +84 -0
- package/packages/emails/types/sendgrid.d.ts +28 -0
- package/packages/events/lib/firebase.js +8 -0
- package/packages/events/lib/firebase.js.map +1 -1
- package/packages/events/package.json +7 -3
- package/packages/events/src/firebase.ts +8 -0
- package/packages/firebase/lib/config.d.ts +15 -1
- package/packages/firebase/lib/config.js +28 -1
- package/packages/firebase/lib/config.js.map +1 -1
- package/packages/firebase/lib/helpers/pubsub.d.ts +2 -2
- package/packages/firebase/package.json +5 -5
- package/packages/firebase/src/config.ts +31 -1
- package/packages/i18n/package.json +1 -1
- package/packages/modules/lib/firebase/call-app-module.js +36 -0
- package/packages/modules/lib/firebase/call-app-module.js.map +1 -1
- package/packages/modules/package.json +9 -6
- package/packages/modules/schemas/apply_discount.cjs +47 -0
- package/packages/modules/src/firebase/call-app-module.ts +36 -0
- package/packages/passport/lib/firebase/authenticate-customer.js +1 -1
- package/packages/passport/lib/firebase/authenticate-customer.js.map +1 -1
- package/packages/passport/package.json +3 -3
- package/packages/passport/src/firebase/authenticate-customer.ts +2 -2
- package/packages/ssr/package.json +8 -8
- package/packages/storefront/.eslintrc.cjs +4 -0
- package/packages/storefront/astro.config.mjs +12 -6
- package/packages/storefront/dist/client/HeaderButtons.bc4a5c97.js +1 -0
- package/packages/storefront/dist/client/assets/_...slug_.acb18581.css +1 -0
- package/packages/storefront/dist/client/chunks/HeaderButtons.861af799.js +1 -0
- package/packages/storefront/dist/client/chunks/{LoginForm.0c5ba697.js → LoginForm.7e9c481c.js} +4 -4
- package/packages/storefront/dist/client/chunks/runtime-dom.esm-bundler.1b578f5a.js +1 -0
- package/packages/storefront/dist/client/{client.69fdbd1b.js → client.75c18572.js} +1 -1
- package/packages/storefront/dist/client/manifest.webmanifest +1 -1
- package/packages/storefront/dist/client/page.5a6f3db5.js +1 -0
- package/packages/storefront/dist/client/sw.js +1 -1
- package/packages/storefront/dist/server/{avif → chunks/avif}/avif_node_dec.wasm +0 -0
- package/packages/storefront/dist/server/{avif → chunks/avif}/avif_node_enc.wasm +0 -0
- package/packages/storefront/dist/server/chunks/image-pool.f66f99fb.mjs +10791 -0
- package/packages/storefront/dist/server/{mozjpeg → chunks/mozjpeg}/mozjpeg_node_dec.wasm +0 -0
- package/packages/storefront/dist/server/{mozjpeg → chunks/mozjpeg}/mozjpeg_node_enc.wasm +0 -0
- package/packages/storefront/dist/server/{png → chunks/png}/squoosh_oxipng_bg.wasm +0 -0
- package/packages/storefront/dist/server/{png → chunks/png}/squoosh_png_bg.wasm +0 -0
- package/packages/storefront/dist/server/{resize → chunks/resize}/squoosh_resize_bg.wasm +0 -0
- package/packages/storefront/dist/server/{rotate → chunks/rotate}/rotate.wasm +0 -0
- package/packages/storefront/dist/server/{webp → chunks/webp}/webp_node_dec.wasm +0 -0
- package/packages/storefront/dist/server/{webp → chunks/webp}/webp_node_enc.wasm +0 -0
- package/packages/storefront/dist/server/entry.mjs +10832 -13568
- package/packages/storefront/dist/server/manifest.webmanifest +1 -1
- package/packages/storefront/package.json +22 -18
- package/packages/storefront/src/lib/assets/base.css +110 -0
- package/packages/storefront/src/lib/assets/dark.css +92 -0
- package/packages/storefront/src/lib/assets/forms.css +0 -0
- package/packages/storefront/src/lib/assets/pico.css +29 -130
- package/packages/storefront/src/lib/assets/preflight.css +362 -0
- package/packages/storefront/src/lib/assets/typography.css +15 -0
- package/packages/storefront/src/lib/components/ADrawer.vue +11 -11
- package/packages/storefront/src/lib/components/LoginDrawer.vue +1 -1
- package/packages/storefront/src/lib/layouts/BaseBody.astro +2 -1
- package/packages/storefront/src/lib/layouts/BaseHead.astro +13 -3
- package/packages/storefront/src/lib/layouts/BaseStateJson.astro +3 -12
- package/packages/storefront/src/lib/ssr/image.ts +11 -5
- package/packages/storefront/src/lib/ssr-context.ts +3 -3
- package/packages/storefront/src/lib/state/shopping-cart/add-cart-item.ts +37 -57
- package/packages/storefront/src/lib/state/shopping-cart/parse-product.ts +36 -0
- package/packages/storefront/src/lib/state/shopping-cart.ts +32 -1
- package/packages/storefront/src/lib/types/cms-settings.d.ts +3 -1
- package/packages/storefront/storefront.cms.cjs +41 -0
- package/packages/storefront/storefront.cms.mjs +7 -2
- package/packages/storefront/storefront.config.mjs +1 -0
- package/packages/storefront/tailwind.config.cjs +142 -113
- package/packages/storefront/uno.config.cjs +126 -0
- package/packages/types/index.ts +21 -0
- package/packages/types/modules/apply_discount:response.d.ts +32 -0
- package/packages/types/package.json +1 -1
- package/packages/storefront/dist/client/HeaderButtons.b5b4a939.js +0 -1
- package/packages/storefront/dist/client/assets/_...slug_.8d138f36.css +0 -4
- package/packages/storefront/dist/client/chunks/HeaderButtons.308edb4d.js +0 -1
- package/packages/storefront/dist/client/chunks/runtime-dom.esm-bundler.f00ab3bd.js +0 -1
- package/packages/storefront/dist/client/page.33c44e88.js +0 -1
- package/packages/storefront/uno.config.ts +0 -167
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pix-list-payments.js","sourceRoot":"","sources":["../src/pix-list-payments.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import '@cloudcommerce/firebase/lib/init';
|
|
2
|
+
import api from '@cloudcommerce/api';
|
|
3
|
+
import * as logger from 'firebase-functions/logger';
|
|
4
|
+
import { getFirestore } from 'firebase-admin/firestore';
|
|
5
|
+
import * as functions from 'firebase-functions/v1';
|
|
6
|
+
import config from '@cloudcommerce/firebase/lib/config';
|
|
7
|
+
import Pix from './functions-lib/pix-auth/construtor.js';
|
|
8
|
+
import getPfx from './functions-lib/get-certificate.js';
|
|
9
|
+
|
|
10
|
+
const handler = async (req, res, rand) => {
|
|
11
|
+
try {
|
|
12
|
+
const querySnapshot = await getFirestore()
|
|
13
|
+
.collection('pixSetup')
|
|
14
|
+
.where('rand', '==', rand)
|
|
15
|
+
.limit(1)
|
|
16
|
+
.get();
|
|
17
|
+
if (querySnapshot && !querySnapshot.empty) {
|
|
18
|
+
const documentSnapshot = querySnapshot.docs[0];
|
|
19
|
+
const setHookState = (isValidating = false) => {
|
|
20
|
+
return documentSnapshot.ref
|
|
21
|
+
.set({ isValidating }, { merge: true });
|
|
22
|
+
};
|
|
23
|
+
if (req.body) {
|
|
24
|
+
logger.log(`> (App:Pix) Webhook (${rand}) ${JSON.stringify(req.body)}`);
|
|
25
|
+
const pixHooks = req.body.pix;
|
|
26
|
+
if (Array.isArray(pixHooks) && pixHooks.length) {
|
|
27
|
+
if (!documentSnapshot.exists) {
|
|
28
|
+
return res.sendStatus(401);
|
|
29
|
+
}
|
|
30
|
+
const pixApi = documentSnapshot.get('pixApi');
|
|
31
|
+
if (!pixApi) {
|
|
32
|
+
return res.sendStatus(410);
|
|
33
|
+
}
|
|
34
|
+
if (documentSnapshot.get('isValidating')) {
|
|
35
|
+
setHookState();
|
|
36
|
+
}
|
|
37
|
+
let pfx;
|
|
38
|
+
try {
|
|
39
|
+
pfx = await getPfx(pixApi.certificate);
|
|
40
|
+
} catch (err) {
|
|
41
|
+
logger.error(err);
|
|
42
|
+
return res.sendStatus(409);
|
|
43
|
+
}
|
|
44
|
+
let baseURL;
|
|
45
|
+
if (pixApi.host && typeof pixApi.host === 'string') {
|
|
46
|
+
baseURL = pixApi.host.startsWith('http') ? pixApi.host : `https://${pixApi.host}`;
|
|
47
|
+
}
|
|
48
|
+
const pix = new Pix({
|
|
49
|
+
clientId: pixApi.client_id,
|
|
50
|
+
clientSecret: pixApi.client_secret,
|
|
51
|
+
pfx,
|
|
52
|
+
baseURL,
|
|
53
|
+
oauthEndpoint: pixApi.oauth_endpoint,
|
|
54
|
+
tokenData: pixApi.authorization,
|
|
55
|
+
});
|
|
56
|
+
await pix.preparing;
|
|
57
|
+
await Promise.all(pixHooks.map(async ({ endToEndId, txid }) => {
|
|
58
|
+
if (pix.axios) {
|
|
59
|
+
const { data } = await pix.axios.get(`/v2/cob/${txid}`);
|
|
60
|
+
if (data) {
|
|
61
|
+
logger.log(`> (App:Pix) Read ${txid} ${JSON.stringify(data)}`);
|
|
62
|
+
const { status, infoAdicionais } = data;
|
|
63
|
+
const orderInfo = infoAdicionais.find(({ nome }) => nome === 'ecom_order_id');
|
|
64
|
+
if (orderInfo) {
|
|
65
|
+
const orderId = orderInfo.valor;
|
|
66
|
+
let financialStatus;
|
|
67
|
+
switch (status.toUpperCase()) {
|
|
68
|
+
case 'CONCLUIDA':
|
|
69
|
+
if (Array.isArray(data.pix)
|
|
70
|
+
&& data.pix.find(({ valor, devolucoes }) => {
|
|
71
|
+
if (data.valor
|
|
72
|
+
&& data.valor.original
|
|
73
|
+
&& valor < data.valor.original) {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
return devolucoes && devolucoes.find((devolucao) => {
|
|
77
|
+
return devolucao.status === 'DEVOLVIDO';
|
|
78
|
+
});
|
|
79
|
+
})) {
|
|
80
|
+
financialStatus = 'refunded';
|
|
81
|
+
} else {
|
|
82
|
+
financialStatus = 'paid';
|
|
83
|
+
}
|
|
84
|
+
break;
|
|
85
|
+
case 'DEVOLVIDO':
|
|
86
|
+
financialStatus = 'refunded';
|
|
87
|
+
break;
|
|
88
|
+
default:
|
|
89
|
+
if (status.startsWith('REMOVIDA_')) {
|
|
90
|
+
financialStatus = 'voided';
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (orderId && financialStatus) {
|
|
94
|
+
const bodyPaymentHistory = {
|
|
95
|
+
date_time: new Date().toISOString(),
|
|
96
|
+
status: financialStatus,
|
|
97
|
+
notification_code: endToEndId,
|
|
98
|
+
flags: ['pixapi'],
|
|
99
|
+
}; // TODO: incompatible type=> amount and status;
|
|
100
|
+
await api.post(`orders/${orderId}/payments_history`, bodyPaymentHistory);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return data;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return true;
|
|
107
|
+
}));
|
|
108
|
+
return res.sendStatus(200);
|
|
109
|
+
}
|
|
110
|
+
// not create axios instance
|
|
111
|
+
return res.sendStatus(500);
|
|
112
|
+
}
|
|
113
|
+
// body not found
|
|
114
|
+
if (!documentSnapshot.exists || !documentSnapshot.get('isValidating')) {
|
|
115
|
+
setHookState(true).catch(logger.error);
|
|
116
|
+
return res.sendStatus(503);
|
|
117
|
+
}
|
|
118
|
+
logger.log('> (App:Pix) Webhook ignored');
|
|
119
|
+
setHookState().catch(logger.error);
|
|
120
|
+
return res.sendStatus(200);
|
|
121
|
+
}
|
|
122
|
+
return res.sendStatus(410);
|
|
123
|
+
} catch (err) {
|
|
124
|
+
logger.error(err);
|
|
125
|
+
if (!res.headersSent) {
|
|
126
|
+
return res.sendStatus(502);
|
|
127
|
+
}
|
|
128
|
+
//
|
|
129
|
+
return res.sendStatus(500);
|
|
130
|
+
}
|
|
131
|
+
};
|
|
132
|
+
|
|
133
|
+
export const pix = {
|
|
134
|
+
webhook: functions
|
|
135
|
+
.region(config.get().httpsFunctionOptions.region)
|
|
136
|
+
.https.onRequest(async (req, res) => {
|
|
137
|
+
const { method } = req;
|
|
138
|
+
const rand = req.url.split('/')[1];
|
|
139
|
+
if (method === 'POST' || method === 'PUT') {
|
|
140
|
+
handler(req, res, rand);
|
|
141
|
+
} else {
|
|
142
|
+
res.sendStatus(405);
|
|
143
|
+
}
|
|
144
|
+
}),
|
|
145
|
+
};
|
|
146
|
+
// # sourceMappingURL=pix-webhook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pix-webhook.js","sourceRoot":"","sources":["../src/pix-webhook.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import '@cloudcommerce/firebase/lib/init';
|
|
2
|
+
import type { AppModuleBody } from '@cloudcommerce/types';
|
|
3
|
+
export declare const listPayments: (modBody: AppModuleBody) => Promise<import("@cloudcommerce/types").ListPaymentsResponse | {
|
|
4
|
+
status: number;
|
|
5
|
+
error: string;
|
|
6
|
+
message: string;
|
|
7
|
+
}>;
|
|
8
|
+
export declare const createTransaction: (modBody: AppModuleBody) => Promise<{
|
|
9
|
+
status: number;
|
|
10
|
+
error: string;
|
|
11
|
+
message: string;
|
|
12
|
+
} | {
|
|
13
|
+
status: number;
|
|
14
|
+
redirect_to_payment: boolean;
|
|
15
|
+
transaction: {
|
|
16
|
+
payment_link?: string | undefined;
|
|
17
|
+
payment_instructions?: string | undefined;
|
|
18
|
+
intermediator?: {
|
|
19
|
+
transaction_id?: string | undefined;
|
|
20
|
+
transaction_code?: string | undefined;
|
|
21
|
+
transaction_reference?: string | undefined;
|
|
22
|
+
payment_method?: {
|
|
23
|
+
code: string;
|
|
24
|
+
name?: string | undefined;
|
|
25
|
+
} | undefined;
|
|
26
|
+
buyer_id?: string | undefined;
|
|
27
|
+
} | undefined;
|
|
28
|
+
credit_card?: {
|
|
29
|
+
holder_name?: string | undefined;
|
|
30
|
+
avs_result_code?: string | null | undefined;
|
|
31
|
+
cvv_result_code?: string | null | undefined;
|
|
32
|
+
bin?: number | undefined;
|
|
33
|
+
company?: string | undefined;
|
|
34
|
+
last_digits?: string | undefined;
|
|
35
|
+
token?: string | undefined;
|
|
36
|
+
error_code?: "incorrect_number" | "invalid_number" | "invalid_expiry_date" | "invalid_cvc" | "expired_card" | "incorrect_cvc" | "incorrect_zip" | "incorrect_address" | "card_declined" | "processing_error" | "call_issuer" | "pick_up_card" | undefined;
|
|
37
|
+
} | undefined;
|
|
38
|
+
banking_billet?: {
|
|
39
|
+
code?: string | undefined;
|
|
40
|
+
valid_thru?: string | undefined;
|
|
41
|
+
text_lines?: string[] | undefined;
|
|
42
|
+
link?: string | undefined;
|
|
43
|
+
} | undefined;
|
|
44
|
+
loyalty_points?: {
|
|
45
|
+
name?: string | undefined;
|
|
46
|
+
program_id: string;
|
|
47
|
+
points_value: number;
|
|
48
|
+
ratio?: number | undefined;
|
|
49
|
+
} | undefined;
|
|
50
|
+
currency_id?: string | undefined;
|
|
51
|
+
currency_symbol?: string | undefined;
|
|
52
|
+
discount?: number | undefined;
|
|
53
|
+
amount: number;
|
|
54
|
+
installments?: {
|
|
55
|
+
number: number;
|
|
56
|
+
value?: number | undefined;
|
|
57
|
+
tax?: boolean | undefined;
|
|
58
|
+
total?: number | undefined;
|
|
59
|
+
} | undefined;
|
|
60
|
+
creditor_fees?: {
|
|
61
|
+
installment?: number | undefined;
|
|
62
|
+
operational?: number | undefined;
|
|
63
|
+
intermediation?: number | undefined;
|
|
64
|
+
other?: number | undefined;
|
|
65
|
+
} | undefined;
|
|
66
|
+
status?: {
|
|
67
|
+
updated_at?: string | undefined;
|
|
68
|
+
current: "refunded" | "paid" | "voided" | "pending" | "under_analysis" | "authorized" | "unauthorized" | "in_dispute" | "unknown";
|
|
69
|
+
} | undefined;
|
|
70
|
+
flags?: string[] | undefined;
|
|
71
|
+
custom_fields?: {
|
|
72
|
+
field: string;
|
|
73
|
+
value: string;
|
|
74
|
+
}[] | undefined;
|
|
75
|
+
notes?: string | undefined;
|
|
76
|
+
};
|
|
77
|
+
}>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import '@cloudcommerce/firebase/lib/init';
|
|
2
|
+
import { getFirestore } from 'firebase-admin/firestore';
|
|
3
|
+
import handleListPayments from './pix-list-payments.js';
|
|
4
|
+
import handleCreateTransaction from './pix-create-transaction.js';
|
|
5
|
+
|
|
6
|
+
export const listPayments = async (modBody) => {
|
|
7
|
+
return handleListPayments(modBody);
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export const createTransaction = async (modBody) => {
|
|
11
|
+
return handleCreateTransaction(modBody, getFirestore());
|
|
12
|
+
};
|
|
13
|
+
// # sourceMappingURL=pix.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pix.js","sourceRoot":"","sources":["../src/pix.ts"],"names":[],"mappings":"AAAA,OAAO,kCAAkC,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,kBAAkB,MAAM,qBAAqB,CAAC;AACrD,OAAO,uBAAuB,MAAM,0BAA0B,CAAC;AAE/D,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,OAAsB,EAAE,EAAE;IAC3D,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,OAAsB,EAAE,EAAE;IAChE,OAAO,uBAAuB,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;AAC1D,CAAC,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@cloudcommerce/app-pix",
|
|
3
|
+
"type": "module",
|
|
4
|
+
"version": "0.0.128",
|
|
5
|
+
"description": "E-Com Plus Cloud Commerce app to integrate Pix API (Bacen)",
|
|
6
|
+
"main": "lib/pix.js",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": "./lib/pix.js",
|
|
9
|
+
"./webhook": "./lib/pix-webhook.js"
|
|
10
|
+
},
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "git+https://github.com/ecomplus/cloud-commerce.git",
|
|
14
|
+
"directory": "packages/apps/pix"
|
|
15
|
+
},
|
|
16
|
+
"author": "E-Com Club Softwares para E-commerce <ti@e-com.club>",
|
|
17
|
+
"license": "Apache 2.0 with Commons Clause",
|
|
18
|
+
"bugs": {
|
|
19
|
+
"url": "https://github.com/ecomplus/cloud-commerce/issues"
|
|
20
|
+
},
|
|
21
|
+
"homepage": "https://github.com/ecomplus/cloud-commerce/tree/main/packages/apps/pix#readme",
|
|
22
|
+
"scripts": {
|
|
23
|
+
"build": "sh ../../../scripts/build-lib.sh"
|
|
24
|
+
},
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@cloudcommerce/api": "workspace:*",
|
|
27
|
+
"@cloudcommerce/firebase": "workspace:*",
|
|
28
|
+
"axios": "^1.2.0",
|
|
29
|
+
"firebase-admin": "^11.3.0",
|
|
30
|
+
"firebase-functions": "^4.1.0"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@cloudcommerce/types": "workspace:*",
|
|
34
|
+
"@firebase/app-types": "^0.8.1"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import os from 'os';
|
|
3
|
+
import fs from 'fs';
|
|
4
|
+
// eslint-disable-next-line import/no-unresolved
|
|
5
|
+
import { getStorage } from 'firebase-admin/storage';
|
|
6
|
+
|
|
7
|
+
export default async (certificate: string) => {
|
|
8
|
+
const fileName = `${certificate}.p12`;
|
|
9
|
+
|
|
10
|
+
const bucket = getStorage().bucket();
|
|
11
|
+
|
|
12
|
+
const tempFilePath = path.join(os.tmpdir(), fileName);
|
|
13
|
+
|
|
14
|
+
await bucket.file(fileName).download({ destination: tempFilePath });
|
|
15
|
+
|
|
16
|
+
return new Promise((resolve, reject) => {
|
|
17
|
+
try {
|
|
18
|
+
const file = fs.readFileSync(tempFilePath);
|
|
19
|
+
resolve(file);
|
|
20
|
+
} catch (err) {
|
|
21
|
+
reject(err);
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import type { AxiosInstance } from 'axios';
|
|
2
|
+
import * as logger from 'firebase-functions/logger';
|
|
3
|
+
import { getFirestore } from 'firebase-admin/firestore';
|
|
4
|
+
import createAxios from './create-axios';
|
|
5
|
+
import oauth from './oauth';
|
|
6
|
+
|
|
7
|
+
type Option = {
|
|
8
|
+
clientId?: string;
|
|
9
|
+
clientSecret?: string;
|
|
10
|
+
oauthEndpoint?: any;
|
|
11
|
+
pfx?: any;
|
|
12
|
+
tokenData?: any;
|
|
13
|
+
baseURL?: string
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const firestoreColl = 'pixTokens';
|
|
17
|
+
|
|
18
|
+
export default class Pix {
|
|
19
|
+
preparing: Promise<unknown>;
|
|
20
|
+
axios: AxiosInstance | undefined;
|
|
21
|
+
|
|
22
|
+
constructor(options: Option) {
|
|
23
|
+
const {
|
|
24
|
+
clientId,
|
|
25
|
+
clientSecret,
|
|
26
|
+
baseURL,
|
|
27
|
+
pfx,
|
|
28
|
+
tokenData,
|
|
29
|
+
} = options;
|
|
30
|
+
|
|
31
|
+
const self = this;
|
|
32
|
+
|
|
33
|
+
let documentRef;
|
|
34
|
+
if (firestoreColl) {
|
|
35
|
+
documentRef = getFirestore()
|
|
36
|
+
.doc(`${firestoreColl}/${clientId}:${clientSecret}`);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
this.preparing = new Promise((resolve, reject) => {
|
|
40
|
+
const authenticate = (token: any) => {
|
|
41
|
+
self.axios = createAxios({ pfx, tokenData: token, baseURL });
|
|
42
|
+
resolve(self);
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
const fetchOauth = () => {
|
|
46
|
+
logger.log('>(App: Pix) OAuth');
|
|
47
|
+
oauth(options)
|
|
48
|
+
// eslint-disable-next-line no-shadow
|
|
49
|
+
.then((tokenData) => {
|
|
50
|
+
logger.log(`>(App: Pix) Token ${JSON.stringify(tokenData)}`);
|
|
51
|
+
authenticate(tokenData);
|
|
52
|
+
if (documentRef) {
|
|
53
|
+
documentRef.set({ tokenData }).catch(logger.error);
|
|
54
|
+
}
|
|
55
|
+
})
|
|
56
|
+
.catch(reject);
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
if (tokenData) {
|
|
60
|
+
authenticate(tokenData);
|
|
61
|
+
} else if (documentRef) {
|
|
62
|
+
documentRef.get()
|
|
63
|
+
.then((documentSnapshot) => {
|
|
64
|
+
if (documentSnapshot.exists) {
|
|
65
|
+
const token = documentSnapshot.get('tokenData');
|
|
66
|
+
const expiresIn = (tokenData && tokenData.expires_in) || 3600;
|
|
67
|
+
const deadline = Date.now() + 10000 - documentSnapshot.updateTime.toDate().getTime();
|
|
68
|
+
|
|
69
|
+
if (deadline <= expiresIn * 1000) {
|
|
70
|
+
authenticate(token);
|
|
71
|
+
} else {
|
|
72
|
+
fetchOauth();
|
|
73
|
+
}
|
|
74
|
+
} else {
|
|
75
|
+
fetchOauth();
|
|
76
|
+
}
|
|
77
|
+
})
|
|
78
|
+
.catch((err: any) => {
|
|
79
|
+
logger.error(err);
|
|
80
|
+
fetchOauth();
|
|
81
|
+
});
|
|
82
|
+
} else {
|
|
83
|
+
fetchOauth();
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import * as https from 'https';
|
|
2
|
+
import axios from 'axios';
|
|
3
|
+
|
|
4
|
+
export default ({
|
|
5
|
+
pfx,
|
|
6
|
+
tokenData,
|
|
7
|
+
baseURL = 'https://api-pix.gerencianet.com.br',
|
|
8
|
+
}) => {
|
|
9
|
+
const httpsAgent = new https.Agent({
|
|
10
|
+
pfx,
|
|
11
|
+
passphrase: '',
|
|
12
|
+
});
|
|
13
|
+
const headers = {
|
|
14
|
+
'Content-Type': 'application/json',
|
|
15
|
+
};
|
|
16
|
+
if (tokenData) {
|
|
17
|
+
const Authorization = typeof tokenData === 'string'
|
|
18
|
+
? tokenData
|
|
19
|
+
: `${tokenData.token_type} ${tokenData.access_token}`;
|
|
20
|
+
|
|
21
|
+
Object.assign(headers, { Authorization });
|
|
22
|
+
}
|
|
23
|
+
return axios.create({ baseURL, headers, httpsAgent });
|
|
24
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import createAxios from './create-axios';
|
|
2
|
+
|
|
3
|
+
type Option = {
|
|
4
|
+
clientId?: string;
|
|
5
|
+
clientSecret?: string;
|
|
6
|
+
oauthEndpoint?: any;
|
|
7
|
+
pfx?: any;
|
|
8
|
+
tokenData?: { [key: string]: any };
|
|
9
|
+
baseURL?: string
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export default (options: Option) => new Promise((resolve, reject) => {
|
|
13
|
+
const {
|
|
14
|
+
clientId,
|
|
15
|
+
clientSecret,
|
|
16
|
+
oauthEndpoint,
|
|
17
|
+
pfx,
|
|
18
|
+
tokenData,
|
|
19
|
+
baseURL,
|
|
20
|
+
} = options;
|
|
21
|
+
const auth = Buffer.from(`${clientId}:${clientSecret}`).toString('base64');
|
|
22
|
+
const axios = createAxios({
|
|
23
|
+
pfx,
|
|
24
|
+
tokenData,
|
|
25
|
+
baseURL,
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
const request = (isRetry?: boolean) => {
|
|
29
|
+
axios({
|
|
30
|
+
url: oauthEndpoint || '/oauth/token',
|
|
31
|
+
method: 'post',
|
|
32
|
+
headers: {
|
|
33
|
+
Authorization: `Basic ${auth}`,
|
|
34
|
+
},
|
|
35
|
+
data: {
|
|
36
|
+
grant_type: 'client_credentials',
|
|
37
|
+
},
|
|
38
|
+
})
|
|
39
|
+
.then(({ data }) => {
|
|
40
|
+
resolve(data);
|
|
41
|
+
})
|
|
42
|
+
.catch((err) => {
|
|
43
|
+
if (!isRetry && err.response && err.response.status >= 429) {
|
|
44
|
+
setTimeout(() => request(true), 4000);
|
|
45
|
+
}
|
|
46
|
+
reject(err);
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
request();
|
|
50
|
+
});
|