cloudcommerce 2.10.7 → 2.12.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.
Files changed (137) hide show
  1. package/.github/workflows/test-apps.yml +2 -2
  2. package/CHANGELOG.md +31 -0
  3. package/action.yml +2 -2
  4. package/ecomplus-stores/barradoce/functions/many/package.json +3 -3
  5. package/ecomplus-stores/barradoce/functions/ssr/content/extra-pages/promocoes.md +1 -1
  6. package/ecomplus-stores/barradoce/functions/ssr/content/pages/home.json +50 -86
  7. package/ecomplus-stores/barradoce/functions/ssr/package.json +6 -6
  8. package/ecomplus-stores/barradoce/functions/ssr/public/img/uploads/banner-pistache.jpg +0 -0
  9. package/ecomplus-stores/barradoce/functions/ssr/public/robots.txt +1 -0
  10. package/ecomplus-stores/barradoce/functions/ssr/src/components/Banner.vue +7 -8
  11. package/ecomplus-stores/barradoce/functions/ssr/src/state/midd-search-engine.ts +9 -1
  12. package/ecomplus-stores/barradoce/functions/ssr/tsconfig.json +6 -2
  13. package/ecomplus-stores/barradoce/functions/with-apps/package.json +3 -3
  14. package/ecomplus-stores/barradoce/package.json +2 -2
  15. package/package.json +2 -2
  16. package/packages/__skeleton/package.json +2 -1
  17. package/packages/api/lib/api.d.ts +8 -1
  18. package/packages/api/lib/api.js +12 -3
  19. package/packages/api/lib/api.js.map +1 -1
  20. package/packages/api/package.json +2 -2
  21. package/packages/api/src/api.ts +20 -5
  22. package/packages/apps/affiliate-program/package.json +2 -2
  23. package/packages/apps/correios/package.json +2 -2
  24. package/packages/apps/custom-payment/package.json +2 -2
  25. package/packages/apps/custom-shipping/package.json +2 -2
  26. package/packages/apps/datafrete/package.json +2 -2
  27. package/packages/apps/discounts/package.json +2 -2
  28. package/packages/apps/emails/package.json +2 -2
  29. package/packages/apps/fb-conversions/package.json +2 -2
  30. package/packages/apps/flash-courier/package.json +2 -2
  31. package/packages/apps/frenet/package.json +2 -2
  32. package/packages/apps/galaxpay/package.json +3 -2
  33. package/packages/apps/google-analytics/package.json +2 -2
  34. package/packages/apps/jadlog/package.json +2 -2
  35. package/packages/apps/loyalty-points/package.json +2 -2
  36. package/packages/apps/mandae/package.json +2 -2
  37. package/packages/apps/melhor-envio/package.json +2 -2
  38. package/packages/apps/mercadopago/package.json +3 -2
  39. package/packages/apps/pagaleve/CHANGELOG.md +1 -0
  40. package/packages/apps/pagaleve/README.md +1 -0
  41. package/packages/apps/pagaleve/lib/index.d.ts +1 -0
  42. package/packages/apps/pagaleve/lib/index.js +3 -0
  43. package/packages/apps/pagaleve/lib/index.js.map +1 -0
  44. package/packages/apps/pagaleve/lib/pagaleve-constructor.d.ts +7 -0
  45. package/packages/apps/pagaleve/lib/pagaleve-constructor.js +78 -0
  46. package/packages/apps/pagaleve/lib/pagaleve-constructor.js.map +1 -0
  47. package/packages/apps/pagaleve/lib/pagaleve-create-transaction.d.ts +7 -0
  48. package/packages/apps/pagaleve/lib/pagaleve-create-transaction.js +148 -0
  49. package/packages/apps/pagaleve/lib/pagaleve-create-transaction.js.map +1 -0
  50. package/packages/apps/pagaleve/lib/pagaleve-list-payments.d.ts +7 -0
  51. package/packages/apps/pagaleve/lib/pagaleve-list-payments.js +113 -0
  52. package/packages/apps/pagaleve/lib/pagaleve-list-payments.js.map +1 -0
  53. package/packages/apps/pagaleve/lib/pagaleve-webhook.d.ts +4 -0
  54. package/packages/apps/pagaleve/lib/pagaleve-webhook.js +135 -0
  55. package/packages/apps/pagaleve/lib/pagaleve-webhook.js.map +1 -0
  56. package/packages/apps/pagaleve/lib/pagaleve.d.ts +12 -0
  57. package/packages/apps/pagaleve/lib/pagaleve.js +12 -0
  58. package/packages/apps/pagaleve/lib/pagaleve.js.map +1 -0
  59. package/packages/apps/pagaleve/package.json +43 -0
  60. package/packages/apps/pagaleve/src/index.ts +2 -0
  61. package/packages/apps/pagaleve/src/pagaleve-constructor.ts +85 -0
  62. package/packages/apps/pagaleve/src/pagaleve-create-transaction.ts +161 -0
  63. package/packages/apps/pagaleve/src/pagaleve-list-payments.ts +122 -0
  64. package/packages/apps/pagaleve/src/pagaleve-webhook.ts +150 -0
  65. package/packages/apps/pagaleve/src/pagaleve.ts +12 -0
  66. package/packages/apps/pagaleve/tsconfig.json +6 -0
  67. package/packages/apps/pagaleve/webhook.js +1 -0
  68. package/packages/apps/pagarme/package.json +3 -2
  69. package/packages/apps/pagarme-v5/package.json +3 -2
  70. package/packages/apps/paghiper/package.json +2 -2
  71. package/packages/apps/pix/package.json +2 -2
  72. package/packages/apps/tiny-erp/package.json +2 -2
  73. package/packages/apps/webhooks/package.json +2 -2
  74. package/packages/cli/package.json +2 -2
  75. package/packages/config/package.json +2 -2
  76. package/packages/emails/package.json +2 -2
  77. package/packages/eslint/package.json +2 -2
  78. package/packages/events/lib/firebase.js +2 -0
  79. package/packages/events/lib/firebase.js.map +1 -1
  80. package/packages/events/package.json +3 -2
  81. package/packages/events/src/firebase.ts +2 -0
  82. package/packages/feeds/package.json +2 -2
  83. package/packages/firebase/lib/config.d.ts +3 -0
  84. package/packages/firebase/lib/config.js +3 -0
  85. package/packages/firebase/lib/config.js.map +1 -1
  86. package/packages/firebase/package.json +2 -2
  87. package/packages/firebase/src/config.ts +3 -0
  88. package/packages/i18n/package.json +2 -2
  89. package/packages/modules/lib/firebase/call-app-module.js +12 -0
  90. package/packages/modules/lib/firebase/call-app-module.js.map +1 -1
  91. package/packages/modules/package.json +3 -2
  92. package/packages/modules/src/firebase/call-app-module.ts +12 -0
  93. package/packages/passport/lib/firebase.js +20 -22
  94. package/packages/passport/lib/firebase.js.map +1 -1
  95. package/packages/passport/package.json +2 -2
  96. package/packages/passport/src/firebase.ts +25 -25
  97. package/packages/ssr/lib/lib/serve-storefront.js +3 -1
  98. package/packages/ssr/lib/lib/serve-storefront.js.map +1 -1
  99. package/packages/ssr/package.json +3 -3
  100. package/packages/ssr/src/lib/serve-storefront.ts +3 -1
  101. package/packages/storefront/dist/client/_astro/ProductDetails.BpZtnS8j.js +1 -7
  102. package/packages/storefront/dist/client/_astro/hoisted.-C0vLMXT.js +8 -0
  103. package/packages/storefront/dist/server/_astro-internal_middleware.mjs +2 -2
  104. package/packages/storefront/dist/server/chunks/{404_jTV5wvby.mjs → 404_BcY_5eJJ.mjs} +1 -1
  105. package/packages/storefront/dist/server/chunks/{CartSidebar_CV9qwGNE.mjs → CartSidebar_tmly-0ip.mjs} +2 -2
  106. package/packages/storefront/dist/server/chunks/{SearchModal_Cw1ECnXI.mjs → SearchModal_CGNQss2j.mjs} +2 -2
  107. package/packages/storefront/dist/server/chunks/{_.._k1NruPDv.mjs → _.._Bt6Uzpk2.mjs} +1 -1
  108. package/packages/storefront/dist/server/chunks/{_astro-internal_middleware_DIG56BhA.mjs → _astro-internal_middleware_CqUpziyW.mjs} +1 -1
  109. package/packages/storefront/dist/server/chunks/{_page__BKNX3RH7.mjs → _page__Dz-iZHMh.mjs} +1 -1
  110. package/packages/storefront/dist/server/chunks/{account_BZOa6Kmc.mjs → account_tfs9KFTy.mjs} +1 -1
  111. package/packages/storefront/dist/server/chunks/astro/{assets-service_MW85B416.mjs → assets-service_DSoC_W52.mjs} +2 -1
  112. package/packages/storefront/dist/server/chunks/{astro_8KdHu_Gf.mjs → astro_Cu3MZ9xv.mjs} +72 -33
  113. package/packages/storefront/dist/server/chunks/{index_D1o9pXka.mjs → index_BKS_40rA.mjs} +1 -1
  114. package/packages/storefront/dist/server/chunks/{index_CZ6FSUEb.mjs → index_CGzMgZTN.mjs} +1 -1
  115. package/packages/storefront/dist/server/chunks/{node_Khrf-0bH.mjs → node_lZaNT3E1.mjs} +1 -1
  116. package/packages/storefront/dist/server/chunks/pages/{404_BPSxJtl3.mjs → 404_CMwuVMu1.mjs} +9 -10
  117. package/packages/storefront/dist/server/chunks/pages/{__ByRpsTnC.mjs → __Dz53F-0T.mjs} +2 -2
  118. package/packages/storefront/dist/server/chunks/pages/{_page__BasreLue.mjs → _page__C1x19nYF.mjs} +3 -3
  119. package/packages/storefront/dist/server/chunks/pages/{account_MZBvNAyZ.mjs → account_B5Z6wDBy.mjs} +2 -2
  120. package/packages/storefront/dist/server/chunks/pages/{index_CV2ET14h.mjs → index_CqvjdvSg.mjs} +3 -3
  121. package/packages/storefront/dist/server/chunks/pages/{node_1tKTIKG-.mjs → node_mvX6Tssv.mjs} +4 -111
  122. package/packages/storefront/dist/server/chunks/pages/{~fallback_BVYzgZ5p.mjs → ~fallback_D2ugBVgc.mjs} +2 -2
  123. package/packages/storefront/dist/server/chunks/{~fallback_xH9bJF7E.mjs → ~fallback_CrFe__-f.mjs} +1 -1
  124. package/packages/storefront/dist/server/entry.mjs +15 -14
  125. package/packages/storefront/dist/server/{manifest_S9lE9v48.mjs → manifest_D4v8KX-D.mjs} +2 -2
  126. package/packages/storefront/dist/server/middleware.mjs +2 -2
  127. package/packages/storefront/dist/server/renderers.mjs +1 -1
  128. package/packages/storefront/package.json +4 -4
  129. package/packages/storefront/server.d.ts +2 -4
  130. package/packages/storefront/src/lib/$storefront.d.ts +4 -0
  131. package/packages/storefront/src/lib/ssr-context.ts +3 -3
  132. package/packages/storefront/tsconfig.base.json +16 -0
  133. package/packages/storefront/tsconfig.json +5 -13
  134. package/packages/test-base/package.json +2 -2
  135. package/packages/types/package.json +2 -2
  136. package/ecomplus-stores/barradoce/functions/ssr/public/img/uploads/banner-forma-decora.jpg +0 -0
  137. package/packages/storefront/dist/client/_astro/hoisted.CSjieYcR.js +0 -8
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-custom-payment",
3
3
  "type": "module",
4
- "version": "2.10.7",
5
- "description": "E-Com Plus Cloud Commerce app for simple custom payment methods",
4
+ "version": "2.12.0",
5
+ "description": "e-com.plus Cloud Commerce app for simple custom payment methods",
6
6
  "main": "lib/index.js",
7
7
  "files": [
8
8
  "/lib",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-custom-shipping",
3
3
  "type": "module",
4
- "version": "2.10.7",
5
- "description": "E-Com Plus Cloud Commerce app for custom shipping methods",
4
+ "version": "2.12.0",
5
+ "description": "e-com.plus Cloud Commerce app for custom shipping methods",
6
6
  "main": "lib/custom-shipping.js",
7
7
  "files": [
8
8
  "/lib",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-datafrete",
3
3
  "type": "module",
4
- "version": "2.10.7",
5
- "description": "E-Com Plus Cloud Commerce app to integrate Datafrete shipping gateway ",
4
+ "version": "2.12.0",
5
+ "description": "e-com.plus Cloud Commerce app to integrate Datafrete shipping gateway ",
6
6
  "main": "lib/datafrete.js",
7
7
  "exports": {
8
8
  ".": "./lib/datafrete.js",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-discounts",
3
3
  "type": "module",
4
- "version": "2.10.7",
5
- "description": "E-Com Plus Cloud Commerce app for complex discount rules",
4
+ "version": "2.12.0",
5
+ "description": "e-com.plus Cloud Commerce app for complex discount rules",
6
6
  "main": "lib/discounts.js",
7
7
  "files": [
8
8
  "/lib",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-emails",
3
3
  "type": "module",
4
- "version": "2.10.7",
5
- "description": "E-Com Plus Cloud Commerce default transactional email app",
4
+ "version": "2.12.0",
5
+ "description": "e-com.plus Cloud Commerce default transactional email app",
6
6
  "main": "lib/index.js",
7
7
  "files": [
8
8
  "/lib",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-fb-conversions",
3
3
  "type": "module",
4
- "version": "2.10.7",
5
- "description": "E-Com Plus Cloud Commerce app to send carts/orders to Facebook Conversions API",
4
+ "version": "2.12.0",
5
+ "description": "e-com.plus Cloud Commerce app to send carts/orders to Facebook Conversions API",
6
6
  "main": "lib/index.js",
7
7
  "files": [
8
8
  "/lib",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-flash-courier",
3
3
  "type": "module",
4
- "version": "2.10.7",
5
- "description": "E-Com Plus Cloud Commerce app to integrate Flash Courier",
4
+ "version": "2.12.0",
5
+ "description": "e-com.plus Cloud Commerce app to integrate Flash Courier",
6
6
  "main": "lib/index.js",
7
7
  "exports": {
8
8
  ".": "./lib/index.js",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-frenet",
3
3
  "type": "module",
4
- "version": "2.10.7",
5
- "description": "E-Com Plus Cloud Commerce app for Frenet shipping calculation",
4
+ "version": "2.12.0",
5
+ "description": "e-com.plus Cloud Commerce app for Frenet shipping calculation",
6
6
  "main": "lib/frenet.js",
7
7
  "exports": {
8
8
  ".": "./lib/frenet.js",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-galaxpay",
3
3
  "type": "module",
4
- "version": "2.10.7",
5
- "description": "E-Com Plus Cloud Commerce app to integrate Galax Pay for recurring payments",
4
+ "version": "2.12.0",
5
+ "description": "e-com.plus Cloud Commerce app to integrate Galax Pay for recurring payments",
6
6
  "main": "lib/galaxpay.js",
7
7
  "exports": {
8
8
  ".": "./lib/galaxpay.js",
@@ -11,6 +11,7 @@
11
11
  "files": [
12
12
  "/lib",
13
13
  "/lib-mjs",
14
+ "/assets",
14
15
  "/types",
15
16
  "/*.{js,mjs,ts}"
16
17
  ],
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-google-analytics",
3
3
  "type": "module",
4
- "version": "2.10.7",
5
- "description": "E-Com Plus Cloud Commerce app to send carts/orders events to GA Measurement Protocol",
4
+ "version": "2.12.0",
5
+ "description": "e-com.plus Cloud Commerce app to send carts/orders events to GA Measurement Protocol",
6
6
  "main": "lib/index.js",
7
7
  "files": [
8
8
  "/lib",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-jadlog",
3
3
  "type": "module",
4
- "version": "2.10.7",
5
- "description": "E-Com Plus Cloud Commerce app for Jadlog shipping calculation",
4
+ "version": "2.12.0",
5
+ "description": "e-com.plus Cloud Commerce app for Jadlog shipping calculation",
6
6
  "main": "lib/index.js",
7
7
  "files": [
8
8
  "/lib",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-loyalty-points",
3
3
  "type": "module",
4
- "version": "2.10.7",
5
- "description": "E-Com Plus Cloud Commerce app to handle simple loyalty points programs",
4
+ "version": "2.12.0",
5
+ "description": "e-com.plus Cloud Commerce app to handle simple loyalty points programs",
6
6
  "main": "lib/loyalty-points.js",
7
7
  "files": [
8
8
  "/lib",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-mandae",
3
3
  "type": "module",
4
- "version": "2.10.7",
5
- "description": "E-Com Plus Cloud Commerce app to integrate Mandaê shipping intermediator",
4
+ "version": "2.12.0",
5
+ "description": "e-com.plus Cloud Commerce app to integrate Mandaê shipping intermediator",
6
6
  "main": "lib/index.js",
7
7
  "files": [
8
8
  "/lib",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-melhor-envio",
3
3
  "type": "module",
4
- "version": "2.10.7",
5
- "description": "E-Com Plus Cloud Commerce app to integrate Melhor Envio",
4
+ "version": "2.12.0",
5
+ "description": "e-com.plus Cloud Commerce app to integrate Melhor Envio",
6
6
  "main": "lib/index.js",
7
7
  "exports": {
8
8
  ".": "./lib/index.js",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@cloudcommerce/app-mercadopago",
3
3
  "type": "module",
4
- "version": "2.10.7",
5
- "description": "E-Com Plus Cloud Commerce app to integrate Mercado Pago",
4
+ "version": "2.12.0",
5
+ "description": "e-com.plus Cloud Commerce app to integrate Mercado Pago",
6
6
  "main": "lib/mercadopago.js",
7
7
  "exports": {
8
8
  ".": "./lib/mercadopago.js",
@@ -11,6 +11,7 @@
11
11
  "files": [
12
12
  "/lib",
13
13
  "/lib-mjs",
14
+ "/assets",
14
15
  "/types",
15
16
  "/*.{js,mjs,ts}"
16
17
  ],
@@ -0,0 +1 @@
1
+ Please refer to GitHub [repository releases](https://github.com/ecomplus/cloud-commerce/releases) or monorepo unified [CHANGELOG.md](https://github.com/ecomplus/cloud-commerce/blob/main/CHANGELOG.md).
@@ -0,0 +1 @@
1
+ # `@cloudcommerce/app-pagaleve`
@@ -0,0 +1 @@
1
+ export * from './pagaleve';
@@ -0,0 +1,3 @@
1
+ // eslint-disable-next-line import/prefer-default-export
2
+ export * from './pagaleve.js';
3
+ // # sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,cAAc,YAAY,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { AxiosInstance } from 'axios';
2
+ import axios from 'axios';
3
+ declare const Pagaleve: (this: {
4
+ preparing: Promise<void>;
5
+ axios: AxiosInstance;
6
+ }, username: string, password: string, isSandbox?: boolean) => void;
7
+ export default Pagaleve;
@@ -0,0 +1,78 @@
1
+ import axios from 'axios';
2
+ import { getFirestore, Timestamp } from 'firebase-admin/firestore';
3
+ import logger from 'firebase-functions/logger';
4
+
5
+ const createAxios = (token, isSandbox = false) => {
6
+ const headers = {
7
+ 'Content-Type': 'application/json',
8
+ 'Idempotency-Key': `${Date.now() + Math.random()}`,
9
+ Authorization: token,
10
+ };
11
+ const baseURL = isSandbox
12
+ ? 'https://sandbox-api.pagaleve.io'
13
+ : 'https://api.pagaleve.com.br';
14
+ return axios.create({
15
+ baseURL,
16
+ headers,
17
+ validateStatus(status) {
18
+ return status >= 200 && status <= 301;
19
+ },
20
+ });
21
+ };
22
+ const createToken = (username, password, isSandbox = false) => {
23
+ return new Promise((resolve, reject) => {
24
+ // https://api-docs.addi-staging-br.com/#/Authentication/createAuthToken
25
+ const pagaleveAxios = createAxios(null, isSandbox);
26
+ const request = (isRetry = false) => {
27
+ pagaleveAxios.post('/v1/authentication', { username, password })
28
+ .then(({ data }) => resolve(data))
29
+ .catch((err) => {
30
+ if (!isRetry && err.response && err.response.status >= 429) {
31
+ setTimeout(() => request(true), 7000);
32
+ }
33
+ reject(err);
34
+ });
35
+ };
36
+ request();
37
+ });
38
+ };
39
+ const Pagaleve = function newPagaleve(username, password, isSandbox = false) {
40
+ const self = this;
41
+ const documentRef = getFirestore().doc('pagaleve/token');
42
+ this.preparing = new Promise((resolve, reject) => {
43
+ const authenticate = (token) => {
44
+ self.axios = createAxios(token, isSandbox);
45
+ resolve();
46
+ };
47
+ const handleAuth = () => {
48
+ createToken(username, password, isSandbox)
49
+ .then((data) => {
50
+ authenticate(data.token);
51
+ if (documentRef) {
52
+ documentRef.set({
53
+ ...data,
54
+ isSandbox,
55
+ updatedAt: Timestamp.now(),
56
+ }).catch(logger.error);
57
+ }
58
+ })
59
+ .catch(reject);
60
+ };
61
+ documentRef.get()
62
+ .then((documentSnapshot) => {
63
+ const data = documentSnapshot.data();
64
+ if (data) {
65
+ const updatedAt = data.updatedAt.toMillis();
66
+ if (updatedAt && Date.now() - updatedAt <= 50 * 60 * 1000) {
67
+ authenticate(data.token);
68
+ return;
69
+ }
70
+ }
71
+ handleAuth();
72
+ })
73
+ .catch(logger.error);
74
+ });
75
+ };
76
+
77
+ export default Pagaleve;
78
+ // # sourceMappingURL=pagaleve-constructor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagaleve-constructor.js","sourceRoot":"","sources":["../src/pagaleve-constructor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { AppModuleBody, CreateTransactionResponse } from '@cloudcommerce/types';
2
+ declare const pagaleveCreateTransaction: (body: AppModuleBody<'create_transaction'>) => Promise<CreateTransactionResponse | {
3
+ status: number;
4
+ error: string;
5
+ message: any;
6
+ }>;
7
+ export default pagaleveCreateTransaction;
@@ -0,0 +1,148 @@
1
+ import { createHmac } from 'node:crypto';
2
+ import logger from 'firebase-functions/logger';
3
+ import { img as getImg } from '@ecomplus/utils';
4
+ import config from '@cloudcommerce/firebase/lib/config';
5
+ import Pagaleve from './pagaleve-constructor.js';
6
+
7
+ const { region } = config.get().httpsFunctionOptions;
8
+ const baseUri = `https://${region}-${process.env.GCLOUD_PROJECT}.cloudfunctions.net`;
9
+ const pagaleveCreateTransaction = async (body) => {
10
+ const { params, application } = body;
11
+ const appData = { ...application.data, ...application.hidden_data };
12
+ const { PAGALEVE_USERNAME, PAGALEVE_PASSWORD, PAGALEVE_SANDBOX } = process.env;
13
+ if (PAGALEVE_USERNAME) appData.username = PAGALEVE_USERNAME;
14
+ if (PAGALEVE_PASSWORD) appData.password = PAGALEVE_PASSWORD;
15
+ const isSandbox = !!PAGALEVE_SANDBOX;
16
+ const pagaleve = new Pagaleve(appData.username, appData.password, isSandbox);
17
+ const orderId = params.order_id || '';
18
+ const orderNumber = params.order_number;
19
+ const { amount, buyer, items } = params;
20
+ const isPix = params.payment_method.code === 'account_deposit';
21
+ const transaction = {
22
+ intermediator: {
23
+ payment_method: params.payment_method,
24
+ },
25
+ currency_id: params.currency_id,
26
+ currency_symbol: params.currency_symbol,
27
+ amount: amount.total,
28
+ status: {
29
+ current: 'pending',
30
+ },
31
+ };
32
+ const finalAmount = Math.floor(amount.total * 100);
33
+ const finalFreight = amount.freight ? Math.floor(amount.freight * 100) : 0;
34
+ const parseAddress = (_to) => ({
35
+ name: _to.name,
36
+ city: _to.city,
37
+ state: _to.province_code,
38
+ street: _to.street,
39
+ zip_code: _to.zip,
40
+ neighborhood: _to.borough,
41
+ number: String(_to.number) || 's/n',
42
+ complement: _to.complement || undefined,
43
+ });
44
+ const shippingAddr = params.to && parseAddress(params.to);
45
+ const billingAddr = params.billing_address
46
+ ? parseAddress(params.billing_address)
47
+ : shippingAddr;
48
+ const hash = createHmac('sha256', appData.password)
49
+ .update(orderId).digest('hex');
50
+ const pagaleveTransaction = {
51
+ cancel_url: `https://${params.domain}/app/#/order/${orderNumber}/${orderId}`,
52
+ approve_url: `https://${params.domain}/app/#/order/${orderNumber}/${orderId}`,
53
+ webhook_url: `${baseUri}/pagaleve-webhook?order_id=${orderId}&hash=${hash}`,
54
+ is_pix_upfront: !!isPix,
55
+ order: {
56
+ reference: orderId,
57
+ description: `Order from e-com.plus ${orderNumber}`,
58
+ shipping: {
59
+ amount: finalFreight || 0,
60
+ address: shippingAddr,
61
+ },
62
+ amount: finalAmount,
63
+ items: [],
64
+ timestamp: new Date().toISOString(),
65
+ type: 'ORDINARY',
66
+ },
67
+ shopper: {
68
+ cpf: String(buyer.doc_number),
69
+ first_name: buyer.fullname.replace(/\s.*/, ''),
70
+ last_name: buyer.fullname.replace(/[^\s]+\s/, ''),
71
+ email: buyer.email,
72
+ phone: buyer.phone.number,
73
+ billing_address: billingAddr,
74
+ },
75
+ };
76
+ let totalQuantity = 0;
77
+ items.forEach((item) => {
78
+ if (item.quantity > 0) {
79
+ totalQuantity += item.quantity;
80
+ const objImg = getImg(item);
81
+ pagaleveTransaction.order.items.push({
82
+ name: item.name || item.sku,
83
+ sku: item.sku,
84
+ quantity: item.quantity,
85
+ price: Math.floor((item.final_price || item.price) * 100),
86
+ url: `https://${params.domain}`,
87
+ reference: item.product_id,
88
+ image: objImg && objImg.url ? objImg.url : `https://${params.domain}`,
89
+ });
90
+ }
91
+ });
92
+ const birthDate = buyer.birth_date;
93
+ if (birthDate && birthDate.year && birthDate.month && birthDate.day) {
94
+ pagaleveTransaction.birth_date = `${birthDate.year}-`
95
+ + `${birthDate.month.toString().padStart(2, '0')}-`
96
+ + birthDate.day.toString().padStart(2, '0');
97
+ }
98
+ if (totalQuantity > 0) {
99
+ try {
100
+ await pagaleve.preparing;
101
+ const { data } = pagaleve.axios.post('/v1/checkouts', pagaleveTransaction, {
102
+ maxRedirects: 0,
103
+ });
104
+ transaction.payment_link = data.redirect_url || data.checkout_url;
105
+ if (isPix && data.timestamp) {
106
+ transaction.account_deposit = {
107
+ valid_thru: data.timestamp,
108
+ };
109
+ }
110
+ return {
111
+ redirect_to_payment: true,
112
+ transaction,
113
+ };
114
+ } catch (error) {
115
+ const errCode = 'PAGALEVE_TRANSACTION_ERR';
116
+ let { message } = error;
117
+ const err = new Error(`${errCode} #${orderId} => ${message}`);
118
+ if (error.response) {
119
+ const { status, data } = error.response;
120
+ if (status !== 401 && status !== 403) {
121
+ err.transaction = transaction;
122
+ err.status = status;
123
+ if (typeof data === 'object' && data) {
124
+ err.response = JSON.stringify(data);
125
+ } else {
126
+ err.response = data;
127
+ }
128
+ } else if (Array.isArray(data?.errors) && data.errors[0]?.message) {
129
+ message = data.errors[0].message;
130
+ }
131
+ }
132
+ logger.error(err);
133
+ return {
134
+ status: 409,
135
+ error: errCode,
136
+ message,
137
+ };
138
+ }
139
+ }
140
+ return {
141
+ status: 400,
142
+ error: 'PAGALEVE_TRANSACTION_INVALID',
143
+ message: 'Não há itens disponíveis no pedido',
144
+ };
145
+ };
146
+
147
+ export default pagaleveCreateTransaction;
148
+ // # sourceMappingURL=pagaleve-create-transaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagaleve-create-transaction.js","sourceRoot":"","sources":["../src/pagaleve-create-transaction.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,MAAM,MAAM,2BAA2B,CAAC;AAC/C,OAAO,EAAE,GAAG,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,MAAM,MAAM,oCAAoC,CAAC;AACxD,OAAO,QAAQ,MAAM,wBAAwB,CAAC;AAE9C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC;AACrD,MAAM,OAAO,GAAG,WAAW,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,qBAAqB,CAAC;AAErF,MAAM,yBAAyB,GAAG,KAAK,EAAE,IAAyC,EAAE,EAAE;IACpF,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IACrC,MAAM,OAAO,GAAG,EAAE,GAAG,WAAW,CAAC,IAAI,EAAE,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IACpE,MAAM,EACJ,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,GACjB,GAAG,OAAO,CAAC,GAAG,CAAC;IAChB,IAAI,iBAAiB;QAAE,OAAO,CAAC,QAAQ,GAAG,iBAAiB,CAAC;IAC5D,IAAI,iBAAiB;QAAE,OAAO,CAAC,QAAQ,GAAG,iBAAiB,CAAC;IAC5D,MAAM,SAAS,GAAG,CAAC,CAAC,gBAAgB,CAAC;IACrC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAE7E,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;IACtC,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC;IACxC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IACxC,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,KAAK,iBAAiB,CAAC;IAC/D,MAAM,WAAW,GAA6C;QAC5D,aAAa,EAAE;YACb,cAAc,EAAE,MAAM,CAAC,cAAc;SACtC;QACD,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,MAAM,EAAE,MAAM,CAAC,KAAK;QACpB,MAAM,EAAE;YACN,OAAO,EAAE,SAAS;SACnB;KACF,CAAC;IACF,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3E,MAAM,YAAY,GAAG,CAAC,GAA8C,EAAE,EAAE,CAAC,CAAC;QACxE,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,KAAK,EAAE,GAAG,CAAC,aAAa;QACxB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,QAAQ,EAAE,GAAG,CAAC,GAAG;QACjB,YAAY,EAAE,GAAG,CAAC,OAAO;QACzB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK;QACnC,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;KACxC,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,MAAM,CAAC,EAAE,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC1D,MAAM,WAAW,GAAG,MAAM,CAAC,eAAe;QACxC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,eAAe,CAAC;QACtC,CAAC,CAAC,YAAY,CAAC;IAEjB,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC;SAChD,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,mBAAmB,GAAwB;QAC/C,UAAU,EAAE,WAAW,MAAM,CAAC,MAAM,gBAAgB,WAAW,IAAI,OAAO,EAAE;QAC5E,WAAW,EAAE,WAAW,MAAM,CAAC,MAAM,gBAAgB,WAAW,IAAI,OAAO,EAAE;QAC7E,WAAW,EAAE,GAAG,OAAO,8BAA8B,OAAO,SAAS,IAAI,EAAE;QAC3E,cAAc,EAAE,CAAC,CAAC,KAAK;QACvB,KAAK,EAAE;YACL,SAAS,EAAE,OAAO;YAClB,WAAW,EAAE,yBAAyB,WAAW,EAAE;YACnD,QAAQ,EAAE;gBACR,MAAM,EAAE,YAAY,IAAI,CAAC;gBACzB,OAAO,EAAE,YAAY;aACtB;YACD,MAAM,EAAE,WAAW;YACnB,KAAK,EAAE,EAAE;YACT,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,IAAI,EAAE,UAAU;SACjB;QACD,OAAO,EAAE;YACP,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;YAC7B,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YAC9C,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;YACjD,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM;YACzB,eAAe,EAAE,WAAW;SAC7B;KACF,CAAC;IACF,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACrB,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;YACtB,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC;YAC/B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAC5B,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;gBACnC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG;gBAC3B,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;gBACzD,GAAG,EAAE,WAAW,MAAM,CAAC,MAAM,EAAE;gBAC/B,SAAS,EAAE,IAAI,CAAC,UAAU;gBAC1B,KAAK,EAAE,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE;aACtE,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC;IACnC,IAAI,SAAS,IAAI,SAAS,CAAC,IAAI,IAAI,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,GAAG,EAAE,CAAC;QACpE,mBAAmB,CAAC,UAAU,GAAG,GAAG,SAAS,CAAC,IAAI,GAAG;cACjD,GAAG,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG;cACjD,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,SAAS,CAAC;YACzB,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,mBAAmB,EAAE;gBACzE,YAAY,EAAE,CAAC;aAChB,CAAC,CAAC;YACH,WAAW,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC;YAClE,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC5B,WAAW,CAAC,eAAe,GAAG;oBAC5B,UAAU,EAAE,IAAI,CAAC,SAAS;iBAC3B,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,mBAAmB,EAAE,IAAI;gBACzB,WAAW;aACiB,CAAC;QACjC,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,MAAM,OAAO,GAAG,0BAA0B,CAAC;YAC3C,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC;YACxB,MAAM,GAAG,GAAQ,IAAI,KAAK,CAAC,GAAG,OAAO,KAAK,OAAO,OAAO,OAAO,EAAE,CAAC,CAAC;YACnE,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC;gBACxC,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,EAAE,CAAC;oBACrC,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC;oBAC9B,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;oBACpB,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,EAAE,CAAC;wBACrC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBACtC,CAAC;yBAAM,CAAC;wBACN,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACtB,CAAC;gBACH,CAAC;qBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;oBAClE,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBACnC,CAAC;YACH,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClB,OAAO;gBACL,MAAM,EAAE,GAAG;gBACX,KAAK,EAAE,OAAO;gBACd,OAAO;aACR,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,MAAM,EAAE,GAAG;QACX,KAAK,EAAE,8BAA8B;QACrC,OAAO,EAAE,oCAAoC;KAC9C,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,yBAAyB,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { AppModuleBody, ListPaymentsResponse } from '@cloudcommerce/types';
2
+ declare const pagaleveListPayments: (body: AppModuleBody<'list_payments'>) => ListPaymentsResponse | {
3
+ status: number;
4
+ error: string;
5
+ message: string;
6
+ };
7
+ export default pagaleveListPayments;
@@ -0,0 +1,113 @@
1
+ import logger from 'firebase-functions/logger';
2
+
3
+ const pagaleveListPayments = (body) => {
4
+ const { application } = body;
5
+ const params = body.params;
6
+ const response = {
7
+ payment_gateways: [],
8
+ };
9
+ const appData = { ...application.data, ...application.hidden_data };
10
+ const { PAGALEVE_USERNAME, PAGALEVE_PASSWORD } = process.env;
11
+ if (PAGALEVE_USERNAME) appData.username = PAGALEVE_USERNAME;
12
+ if (PAGALEVE_PASSWORD) appData.password = PAGALEVE_PASSWORD;
13
+ if (!appData.username || !appData.password) {
14
+ logger.warn('Missign Pagaleve username/password');
15
+ return {
16
+ status: 409,
17
+ error: 'NO_PAGALEVE_KEYS',
18
+ message: 'Usuário e/ou senha não configurados pelo lojista',
19
+ };
20
+ }
21
+ const amount = params.amount || {};
22
+ const intermediator = {
23
+ name: 'Pagaleve',
24
+ link: 'https://api.pagaleve.com.br',
25
+ code: 'pagaleve',
26
+ };
27
+ const { discount } = appData;
28
+ if (discount && discount.value) {
29
+ if (discount.apply_at !== 'freight') {
30
+ const { value } = discount;
31
+ response.discount_option = {
32
+ label: 'Pix',
33
+ value,
34
+ };
35
+ ['type', 'min_amount'].forEach((prop) => {
36
+ if (discount[prop]) {
37
+ response.discount_option[prop] = discount[prop];
38
+ }
39
+ });
40
+ }
41
+ if (amount.total) {
42
+ if (amount.total < discount.min_amount) {
43
+ discount.value = 0;
44
+ } else {
45
+ delete discount.min_amount;
46
+ const maxDiscount = amount[discount.apply_at || 'subtotal'];
47
+ let discountValue;
48
+ if (discount.type === 'percentage') {
49
+ discountValue = maxDiscount * (discount.value / 100);
50
+ } else {
51
+ discountValue = discount.value;
52
+ if (discountValue > maxDiscount) {
53
+ discountValue = maxDiscount;
54
+ }
55
+ }
56
+ if (discountValue) {
57
+ amount.discount = (amount.discount || 0) + discountValue;
58
+ amount.total -= discountValue;
59
+ if (amount.total < 0) {
60
+ amount.total = 0;
61
+ }
62
+ }
63
+ }
64
+ }
65
+ }
66
+ const listPaymentMethods = ['payment_link', 'account_deposit'];
67
+ listPaymentMethods.forEach((paymentMethod) => {
68
+ const isLinkPayment = paymentMethod === 'payment_link';
69
+ const methodConfig = (appData[paymentMethod] || {});
70
+ const minAmount = Number(methodConfig.min_amount || 1);
71
+ let validateAmount = false;
72
+ if (amount.total && minAmount >= 0) {
73
+ validateAmount = amount.total >= minAmount;
74
+ }
75
+ // Workaround for showcase
76
+ const validatePayment = amount.total ? validateAmount : true;
77
+ const methodEnable = !methodConfig.disable;
78
+ if (validatePayment && methodEnable) {
79
+ const label = methodConfig.label || (isLinkPayment ? 'Pix Parcelado' : 'Pagar com Pix');
80
+ const gateway = {
81
+ label,
82
+ icon: methodConfig.icon,
83
+ text: methodConfig.text,
84
+ payment_method: {
85
+ code: isLinkPayment ? 'balance_on_intermediary' : paymentMethod,
86
+ name: `${label} - ${intermediator.name} `,
87
+ },
88
+ intermediator,
89
+ };
90
+ if (!gateway.icon) {
91
+ if (isLinkPayment) {
92
+ gateway.icon = 'https://ecom-pagaleve.web.app/pagaleve-parcelado.png';
93
+ } else {
94
+ gateway.icon = 'https://ecom-pagaleve.web.app/pagaleve-pix.png';
95
+ }
96
+ }
97
+ if ((discount && discount.value && discount[paymentMethod] !== false)) {
98
+ gateway.discount = {};
99
+ ['apply_at', 'type', 'value'].forEach((field) => {
100
+ gateway.discount[field] = discount[field];
101
+ });
102
+ if (response.discount_option && !response.discount_option.label) {
103
+ response.discount_option.label = label;
104
+ }
105
+ }
106
+ response.payment_gateways.push(gateway);
107
+ }
108
+ });
109
+ return response;
110
+ };
111
+
112
+ export default pagaleveListPayments;
113
+ // # sourceMappingURL=pagaleve-list-payments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagaleve-list-payments.js","sourceRoot":"","sources":["../src/pagaleve-list-payments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import functions from 'firebase-functions/v1';
2
+ export declare const pagarme: {
3
+ webhook: functions.HttpsFunction;
4
+ };