@easyflow/javascript-sdk 2.1.7 → 2.1.9
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/README.md +294 -713
- package/dist/index.d.ts +421 -0
- package/package.json +19 -6
- package/.babelrc +0 -5
- package/.github/workflows/deploy-sdk-cf.yml +0 -49
- package/.github/workflows/release-sdk-cdn.yml +0 -144
- package/.github/workflows/release-sdk.yml +0 -112
- package/.prettierrc +0 -6
- package/CDN-DEPLOYMENT.md +0 -175
- package/DEMO.md +0 -258
- package/DEPLOYMENT.md +0 -224
- package/INTEGRATION-GUIDE.md +0 -521
- package/coverage/base.css +0 -224
- package/coverage/block-navigation.js +0 -87
- package/coverage/easyflow-javascript-sdk/index.html +0 -116
- package/coverage/easyflow-javascript-sdk/libs/constants.mjs.html +0 -268
- package/coverage/easyflow-javascript-sdk/libs/errors.mjs.html +0 -271
- package/coverage/easyflow-javascript-sdk/libs/exception-handler.mjs.html +0 -148
- package/coverage/easyflow-javascript-sdk/libs/fingerprint.mjs.html +0 -895
- package/coverage/easyflow-javascript-sdk/libs/http.mjs.html +0 -502
- package/coverage/easyflow-javascript-sdk/libs/index.html +0 -266
- package/coverage/easyflow-javascript-sdk/libs/logger.mjs.html +0 -568
- package/coverage/easyflow-javascript-sdk/libs/sanitizer.mjs.html +0 -1099
- package/coverage/easyflow-javascript-sdk/libs/security.mjs.html +0 -733
- package/coverage/easyflow-javascript-sdk/libs/types.mjs.html +0 -508
- package/coverage/easyflow-javascript-sdk/libs/utils.mjs.html +0 -379
- package/coverage/easyflow-javascript-sdk/libs/validator.mjs.html +0 -2623
- package/coverage/easyflow-javascript-sdk/sdk.mjs.html +0 -2434
- package/coverage/favicon.png +0 -0
- package/coverage/index.html +0 -131
- package/coverage/lcov-report/base.css +0 -224
- package/coverage/lcov-report/block-navigation.js +0 -87
- package/coverage/lcov-report/easyflow-javascript-sdk/index.html +0 -116
- package/coverage/lcov-report/easyflow-javascript-sdk/libs/constants.mjs.html +0 -268
- package/coverage/lcov-report/easyflow-javascript-sdk/libs/errors.mjs.html +0 -271
- package/coverage/lcov-report/easyflow-javascript-sdk/libs/exception-handler.mjs.html +0 -148
- package/coverage/lcov-report/easyflow-javascript-sdk/libs/fingerprint.mjs.html +0 -895
- package/coverage/lcov-report/easyflow-javascript-sdk/libs/http.mjs.html +0 -502
- package/coverage/lcov-report/easyflow-javascript-sdk/libs/index.html +0 -266
- package/coverage/lcov-report/easyflow-javascript-sdk/libs/logger.mjs.html +0 -568
- package/coverage/lcov-report/easyflow-javascript-sdk/libs/sanitizer.mjs.html +0 -1099
- package/coverage/lcov-report/easyflow-javascript-sdk/libs/security.mjs.html +0 -733
- package/coverage/lcov-report/easyflow-javascript-sdk/libs/types.mjs.html +0 -508
- package/coverage/lcov-report/easyflow-javascript-sdk/libs/utils.mjs.html +0 -379
- package/coverage/lcov-report/easyflow-javascript-sdk/libs/validator.mjs.html +0 -2623
- package/coverage/lcov-report/easyflow-javascript-sdk/sdk.mjs.html +0 -2434
- package/coverage/lcov-report/favicon.png +0 -0
- package/coverage/lcov-report/index.html +0 -131
- package/coverage/lcov-report/prettify.css +0 -1
- package/coverage/lcov-report/prettify.js +0 -2
- package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
- package/coverage/lcov-report/sorter.js +0 -196
- package/coverage/lcov.info +0 -1429
- package/coverage/prettify.css +0 -1
- package/coverage/prettify.js +0 -2
- package/coverage/sort-arrow-sprite.png +0 -0
- package/coverage/sorter.js +0 -196
- package/dist/435.easyflow-sdk.min.js +0 -1
- package/dist/easyflow-sdk.min.js +0 -1
- package/dist/easyflow-sdk.min.js.LICENSE.txt +0 -1
- package/dist/index.html +0 -756
- package/docs/index.html +0 -775
- package/examples/lovable-integration.html +0 -410
- package/index.html +0 -981
- package/jest.config.js +0 -37
- package/jsdoc.json +0 -42
- package/libs/auto-integration.mjs +0 -333
- package/libs/constants.mjs +0 -61
- package/libs/constants.spec.js +0 -198
- package/libs/errors.mjs +0 -62
- package/libs/errors.spec.js +0 -178
- package/libs/exception-handler.mjs +0 -21
- package/libs/exception-handler.spec.js +0 -237
- package/libs/fingerprint.mjs +0 -270
- package/libs/http.mjs +0 -163
- package/libs/http.spec.js +0 -427
- package/libs/integration-wrapper.mjs +0 -285
- package/libs/logger.mjs +0 -161
- package/libs/logger.spec.js +0 -389
- package/libs/sanitizer.mjs +0 -340
- package/libs/sanitizer.spec.js +0 -583
- package/libs/security.mjs +0 -217
- package/libs/types.mjs +0 -141
- package/libs/utils.mjs +0 -368
- package/libs/utils.spec.js +0 -231
- package/libs/validator.mjs +0 -952
- package/libs/validator.spec.js +0 -615
- package/mocks/offer.mock.js +0 -77
- package/scripts/publish-npm.sh +0 -82
- package/sdk.mjs +0 -945
- package/sdk.spec.js +0 -796
- package/test-setup.cjs +0 -211
- package/test.html +0 -154
- package/webpack.config.cjs +0 -41
package/dist/index.html
DELETED
|
@@ -1,756 +0,0 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="pt-BR">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8" />
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
-
<title>📚 Easyflow SDK - Documentação Pública</title>
|
|
7
|
-
<style>
|
|
8
|
-
:root {
|
|
9
|
-
--primary: #3b82f6;
|
|
10
|
-
--primary-dark: #2563eb;
|
|
11
|
-
--success: #10b981;
|
|
12
|
-
--warning: #f59e0b;
|
|
13
|
-
--error: #ef4444;
|
|
14
|
-
--text: #1e293b;
|
|
15
|
-
--text-light: #64748b;
|
|
16
|
-
--bg: #ffffff;
|
|
17
|
-
--bg-light: #f8fafc;
|
|
18
|
-
--border: #e2e8f0;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
* {
|
|
22
|
-
margin: 0;
|
|
23
|
-
padding: 0;
|
|
24
|
-
box-sizing: border-box;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
body {
|
|
28
|
-
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI',
|
|
29
|
-
Roboto, sans-serif;
|
|
30
|
-
line-height: 1.6;
|
|
31
|
-
color: var(--text);
|
|
32
|
-
background: var(--bg-light);
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
.container {
|
|
36
|
-
max-width: 1200px;
|
|
37
|
-
margin: 0 auto;
|
|
38
|
-
padding: 20px;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
.header {
|
|
42
|
-
background: var(--bg);
|
|
43
|
-
padding: 40px 20px;
|
|
44
|
-
text-align: center;
|
|
45
|
-
border-radius: 12px;
|
|
46
|
-
margin-bottom: 30px;
|
|
47
|
-
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
.header h1 {
|
|
51
|
-
font-size: 2.5rem;
|
|
52
|
-
margin-bottom: 15px;
|
|
53
|
-
color: var(--primary);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
.header p {
|
|
57
|
-
font-size: 1.2rem;
|
|
58
|
-
color: var(--text-light);
|
|
59
|
-
max-width: 600px;
|
|
60
|
-
margin: 0 auto;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
.nav {
|
|
64
|
-
background: var(--bg);
|
|
65
|
-
padding: 20px;
|
|
66
|
-
border-radius: 12px;
|
|
67
|
-
margin-bottom: 30px;
|
|
68
|
-
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
.nav ul {
|
|
72
|
-
list-style: none;
|
|
73
|
-
display: flex;
|
|
74
|
-
flex-wrap: wrap;
|
|
75
|
-
gap: 15px;
|
|
76
|
-
justify-content: center;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
.nav a {
|
|
80
|
-
color: var(--primary);
|
|
81
|
-
text-decoration: none;
|
|
82
|
-
padding: 8px 16px;
|
|
83
|
-
border-radius: 6px;
|
|
84
|
-
transition: all 0.2s;
|
|
85
|
-
border: 2px solid transparent;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
.nav a:hover {
|
|
89
|
-
background: var(--primary);
|
|
90
|
-
color: white;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
.section {
|
|
94
|
-
background: var(--bg);
|
|
95
|
-
padding: 30px;
|
|
96
|
-
border-radius: 12px;
|
|
97
|
-
margin-bottom: 30px;
|
|
98
|
-
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
.section h2 {
|
|
102
|
-
color: var(--primary);
|
|
103
|
-
margin-bottom: 20px;
|
|
104
|
-
font-size: 1.8rem;
|
|
105
|
-
border-bottom: 2px solid var(--primary);
|
|
106
|
-
padding-bottom: 10px;
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
.section h3 {
|
|
110
|
-
color: var(--text);
|
|
111
|
-
margin: 25px 0 15px 0;
|
|
112
|
-
font-size: 1.4rem;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
.code-block {
|
|
116
|
-
background: var(--text);
|
|
117
|
-
color: #e2e8f0;
|
|
118
|
-
padding: 20px;
|
|
119
|
-
border-radius: 8px;
|
|
120
|
-
overflow-x: auto;
|
|
121
|
-
margin: 15px 0;
|
|
122
|
-
font-family: 'Monaco', 'Menlo', monospace;
|
|
123
|
-
font-size: 14px;
|
|
124
|
-
line-height: 1.4;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
.highlight {
|
|
128
|
-
background: #fef3c7;
|
|
129
|
-
border-left: 4px solid var(--warning);
|
|
130
|
-
padding: 15px;
|
|
131
|
-
margin: 15px 0;
|
|
132
|
-
border-radius: 0 8px 8px 0;
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
.success-box {
|
|
136
|
-
background: #f0fdf4;
|
|
137
|
-
border-left: 4px solid var(--success);
|
|
138
|
-
padding: 15px;
|
|
139
|
-
margin: 15px 0;
|
|
140
|
-
border-radius: 0 8px 8px 0;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
.error-box {
|
|
144
|
-
background: #fef2f2;
|
|
145
|
-
border-left: 4px solid var(--error);
|
|
146
|
-
padding: 15px;
|
|
147
|
-
margin: 15px 0;
|
|
148
|
-
border-radius: 0 8px 8px 0;
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
.method {
|
|
152
|
-
background: var(--bg-light);
|
|
153
|
-
border: 1px solid var(--border);
|
|
154
|
-
border-radius: 8px;
|
|
155
|
-
padding: 20px;
|
|
156
|
-
margin: 15px 0;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
.method h4 {
|
|
160
|
-
color: var(--primary);
|
|
161
|
-
margin-bottom: 10px;
|
|
162
|
-
font-size: 1.1rem;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
.method .signature {
|
|
166
|
-
background: var(--text);
|
|
167
|
-
color: #e2e8f0;
|
|
168
|
-
padding: 10px;
|
|
169
|
-
border-radius: 6px;
|
|
170
|
-
font-family: monospace;
|
|
171
|
-
margin: 10px 0;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
.method .description {
|
|
175
|
-
color: var(--text-light);
|
|
176
|
-
margin: 10px 0;
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
.method .params {
|
|
180
|
-
margin: 10px 0;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
.method .params strong {
|
|
184
|
-
color: var(--text);
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
.method .example {
|
|
188
|
-
background: #f1f5f9;
|
|
189
|
-
border-left: 4px solid var(--primary);
|
|
190
|
-
padding: 15px;
|
|
191
|
-
margin: 10px 0;
|
|
192
|
-
border-radius: 0 8px 8px 0;
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
.tabs {
|
|
196
|
-
display: flex;
|
|
197
|
-
border-bottom: 1px solid var(--border);
|
|
198
|
-
margin-bottom: 20px;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
.tab {
|
|
202
|
-
padding: 12px 24px;
|
|
203
|
-
cursor: pointer;
|
|
204
|
-
border-bottom: 2px solid transparent;
|
|
205
|
-
transition: all 0.2s;
|
|
206
|
-
color: var(--text-light);
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
.tab.active {
|
|
210
|
-
border-bottom-color: var(--primary);
|
|
211
|
-
color: var(--primary);
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
.tab-content {
|
|
215
|
-
display: none;
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
.tab-content.active {
|
|
219
|
-
display: block;
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
.platform-grid {
|
|
223
|
-
display: grid;
|
|
224
|
-
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
|
|
225
|
-
gap: 20px;
|
|
226
|
-
margin: 20px 0;
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
.platform-card {
|
|
230
|
-
background: var(--bg);
|
|
231
|
-
border: 1px solid var(--border);
|
|
232
|
-
border-radius: 8px;
|
|
233
|
-
padding: 20px;
|
|
234
|
-
text-align: center;
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
.platform-card h4 {
|
|
238
|
-
color: var(--primary);
|
|
239
|
-
margin-bottom: 10px;
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
.platform-card p {
|
|
243
|
-
color: var(--text-light);
|
|
244
|
-
margin-bottom: 15px;
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
.platform-card .code {
|
|
248
|
-
background: var(--bg-light);
|
|
249
|
-
padding: 10px;
|
|
250
|
-
border-radius: 6px;
|
|
251
|
-
font-family: monospace;
|
|
252
|
-
font-size: 12px;
|
|
253
|
-
color: var(--text);
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
.footer {
|
|
257
|
-
text-align: center;
|
|
258
|
-
padding: 40px 20px;
|
|
259
|
-
color: var(--text-light);
|
|
260
|
-
border-top: 1px solid var(--border);
|
|
261
|
-
margin-top: 40px;
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
.footer a {
|
|
265
|
-
color: var(--primary);
|
|
266
|
-
text-decoration: none;
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
@media (max-width: 768px) {
|
|
270
|
-
.nav ul {
|
|
271
|
-
flex-direction: column;
|
|
272
|
-
align-items: center;
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
.header h1 {
|
|
276
|
-
font-size: 2rem;
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
.container {
|
|
280
|
-
padding: 10px;
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
</style>
|
|
284
|
-
</head>
|
|
285
|
-
<body>
|
|
286
|
-
<div class="container">
|
|
287
|
-
<!-- Header -->
|
|
288
|
-
<div class="header">
|
|
289
|
-
<h1>📚 Easyflow SDK</h1>
|
|
290
|
-
<p>
|
|
291
|
-
Documentação pública para integração com plataformas
|
|
292
|
-
low-code/no-code
|
|
293
|
-
</p>
|
|
294
|
-
</div>
|
|
295
|
-
|
|
296
|
-
<!-- Navigation -->
|
|
297
|
-
<div class="nav">
|
|
298
|
-
<ul>
|
|
299
|
-
<li><a href="#quick-start">🚀 Quick Start</a></li>
|
|
300
|
-
<li><a href="#integration">🔗 Integração</a></li>
|
|
301
|
-
<li><a href="#api-reference">📖 API Reference</a></li>
|
|
302
|
-
<li><a href="#examples">💡 Exemplos</a></li>
|
|
303
|
-
<li><a href="#platforms">🌐 Plataformas</a></li>
|
|
304
|
-
<li><a href="#troubleshooting">🔧 Troubleshooting</a></li>
|
|
305
|
-
</ul>
|
|
306
|
-
</div>
|
|
307
|
-
|
|
308
|
-
<!-- Quick Start -->
|
|
309
|
-
<div id="quick-start" class="section">
|
|
310
|
-
<h2>🚀 Quick Start</h2>
|
|
311
|
-
|
|
312
|
-
<div class="highlight">
|
|
313
|
-
<strong>⚠️ Importante:</strong> Esta documentação é
|
|
314
|
-
atualizada automaticamente e está sempre sincronizada com a
|
|
315
|
-
versão mais recente do SDK.
|
|
316
|
-
</div>
|
|
317
|
-
|
|
318
|
-
<h3>1. Incluir o SDK</h3>
|
|
319
|
-
<p>Adicione o script do SDK no seu projeto:</p>
|
|
320
|
-
<div class="code-block">
|
|
321
|
-
<script
|
|
322
|
-
src="https://easyflow-sdk.pages.dev/easyflow-sdk.min.js"></script>
|
|
323
|
-
</div>
|
|
324
|
-
|
|
325
|
-
<h3>2. Funcionalidades Automáticas</h3>
|
|
326
|
-
<p>
|
|
327
|
-
Após incluir o script, todas as funcionalidades ficam
|
|
328
|
-
disponíveis automaticamente:
|
|
329
|
-
</p>
|
|
330
|
-
<div class="code-block">
|
|
331
|
-
// ✅ Funcionalidades disponíveis automaticamente
|
|
332
|
-
window.easyflowSDK = { // Clientes createCustomer:
|
|
333
|
-
function(data) { /* ... */ }, getCustomer: function(id) { /*
|
|
334
|
-
... */ }, updateCustomer: function(id, data) { /* ... */ },
|
|
335
|
-
// Pagamentos placeOrder: function(offerId, data) { /* ...
|
|
336
|
-
*/ }, charge: function(data) { /* ... */ }, // Validação
|
|
337
|
-
validate: { email: function(email) { /* ... */ } }, //
|
|
338
|
-
Callbacks para eventos on: function(event, callback) { /*
|
|
339
|
-
... */ } }
|
|
340
|
-
</div>
|
|
341
|
-
|
|
342
|
-
<h3>3. Configurar Callbacks</h3>
|
|
343
|
-
<div class="code-block">
|
|
344
|
-
// 🎯 Configurar callbacks para eventos
|
|
345
|
-
easyflowSDK.on('customerCreated', function(customer) {
|
|
346
|
-
console.log('🎉 Cliente criado:', customer); // Atualizar UI
|
|
347
|
-
da plataforma }); easyflowSDK.on('paymentProcessed',
|
|
348
|
-
function(result) { console.log('💳 Pagamento processado:',
|
|
349
|
-
result); // Redirecionar ou atualizar status });
|
|
350
|
-
</div>
|
|
351
|
-
</div>
|
|
352
|
-
|
|
353
|
-
<!-- Integration -->
|
|
354
|
-
<div id="integration" class="section">
|
|
355
|
-
<h2>🔗 Integração NO BRAINER</h2>
|
|
356
|
-
|
|
357
|
-
<div class="success-box">
|
|
358
|
-
<strong>✨ NO BRAINER:</strong> O SDK se integra
|
|
359
|
-
automaticamente com plataformas low-code/no-code, expondo
|
|
360
|
-
todas as funcionalidades globalmente.
|
|
361
|
-
</div>
|
|
362
|
-
|
|
363
|
-
<h3>Como Funciona</h3>
|
|
364
|
-
<ol>
|
|
365
|
-
<li>
|
|
366
|
-
<strong>Carregamento:</strong> O script é carregado via
|
|
367
|
-
CDN
|
|
368
|
-
</li>
|
|
369
|
-
<li>
|
|
370
|
-
<strong>Auto-inicialização:</strong> O SDK se inicializa
|
|
371
|
-
automaticamente
|
|
372
|
-
</li>
|
|
373
|
-
<li>
|
|
374
|
-
<strong>Exposição global:</strong> Todas as
|
|
375
|
-
funcionalidades ficam disponíveis em
|
|
376
|
-
<code>window.easyflowSDK</code>
|
|
377
|
-
</li>
|
|
378
|
-
<li>
|
|
379
|
-
<strong>Callbacks:</strong> Sistema de eventos para
|
|
380
|
-
integração com a plataforma
|
|
381
|
-
</li>
|
|
382
|
-
</ol>
|
|
383
|
-
|
|
384
|
-
<h3>Inicialização Tradicional (Opcional)</h3>
|
|
385
|
-
<p>Para desenvolvedores que preferem controle manual:</p>
|
|
386
|
-
<div class="code-block">
|
|
387
|
-
// Inicialização tradicional const sdk = new
|
|
388
|
-
EasyflowSDK('your-business-id'); // Ou usar o wrapper de
|
|
389
|
-
integração const wrapper =
|
|
390
|
-
EasyflowSDK.initializeForPlatform({ businessId:
|
|
391
|
-
'your-business-id', enableDebug: true });
|
|
392
|
-
</div>
|
|
393
|
-
</div>
|
|
394
|
-
|
|
395
|
-
<!-- API Reference -->
|
|
396
|
-
<div id="api-reference" class="section">
|
|
397
|
-
<h2>📖 API Reference</h2>
|
|
398
|
-
|
|
399
|
-
<div class="tabs">
|
|
400
|
-
<div class="tab active" onclick="showTab('customers')">
|
|
401
|
-
👥 Clientes
|
|
402
|
-
</div>
|
|
403
|
-
<div class="tab" onclick="showTab('payments')">
|
|
404
|
-
💳 Pagamentos
|
|
405
|
-
</div>
|
|
406
|
-
<div class="tab" onclick="showTab('validation')">
|
|
407
|
-
✅ Validação
|
|
408
|
-
</div>
|
|
409
|
-
<div class="tab" onclick="showTab('events')">
|
|
410
|
-
🎯 Eventos
|
|
411
|
-
</div>
|
|
412
|
-
</div>
|
|
413
|
-
|
|
414
|
-
<!-- Customers Tab -->
|
|
415
|
-
<div id="customers" class="tab-content active">
|
|
416
|
-
<div class="method">
|
|
417
|
-
<h4>createCustomer(data)</h4>
|
|
418
|
-
<div class="signature">
|
|
419
|
-
easyflowSDK.createCustomer(customerData)
|
|
420
|
-
</div>
|
|
421
|
-
<div class="description">
|
|
422
|
-
Cria um novo cliente no sistema
|
|
423
|
-
</div>
|
|
424
|
-
<div class="params">
|
|
425
|
-
<strong>Parâmetros:</strong> customerData (Object) -
|
|
426
|
-
Dados do cliente
|
|
427
|
-
</div>
|
|
428
|
-
<div class="example">
|
|
429
|
-
<strong>Exemplo:</strong>
|
|
430
|
-
<div class="code-block">
|
|
431
|
-
const result = await
|
|
432
|
-
easyflowSDK.createCustomer({ name: "João Silva",
|
|
433
|
-
email: "joao@email.com", document: { type:
|
|
434
|
-
"CPF", number: "12345678909" } });
|
|
435
|
-
</div>
|
|
436
|
-
</div>
|
|
437
|
-
</div>
|
|
438
|
-
|
|
439
|
-
<div class="method">
|
|
440
|
-
<h4>getCustomer(id)</h4>
|
|
441
|
-
<div class="signature">
|
|
442
|
-
easyflowSDK.getCustomer(customerId)
|
|
443
|
-
</div>
|
|
444
|
-
<div class="description">
|
|
445
|
-
Obtém dados de um cliente existente
|
|
446
|
-
</div>
|
|
447
|
-
<div class="params">
|
|
448
|
-
<strong>Parâmetros:</strong> customerId (String) -
|
|
449
|
-
ID do cliente
|
|
450
|
-
</div>
|
|
451
|
-
</div>
|
|
452
|
-
|
|
453
|
-
<div class="method">
|
|
454
|
-
<h4>updateCustomer(id, data)</h4>
|
|
455
|
-
<div class="signature">
|
|
456
|
-
easyflowSDK.updateCustomer(customerId, updateData)
|
|
457
|
-
</div>
|
|
458
|
-
<div class="description">
|
|
459
|
-
Atualiza dados de um cliente existente
|
|
460
|
-
</div>
|
|
461
|
-
</div>
|
|
462
|
-
</div>
|
|
463
|
-
|
|
464
|
-
<!-- Payments Tab -->
|
|
465
|
-
<div id="payments" class="tab-content">
|
|
466
|
-
<div class="method">
|
|
467
|
-
<h4>placeOrder(offerId, data)</h4>
|
|
468
|
-
<div class="signature">
|
|
469
|
-
easyflowSDK.placeOrder(offerId, orderData)
|
|
470
|
-
</div>
|
|
471
|
-
<div class="description">
|
|
472
|
-
Cria um pedido com oferta específica
|
|
473
|
-
</div>
|
|
474
|
-
</div>
|
|
475
|
-
|
|
476
|
-
<div class="method">
|
|
477
|
-
<h4>charge(data)</h4>
|
|
478
|
-
<div class="signature">
|
|
479
|
-
easyflowSDK.charge(paymentData)
|
|
480
|
-
</div>
|
|
481
|
-
<div class="description">Processa pagamento direto</div>
|
|
482
|
-
</div>
|
|
483
|
-
|
|
484
|
-
<div class="method">
|
|
485
|
-
<h4>addCreditCard(customerId, token)</h4>
|
|
486
|
-
<div class="signature">
|
|
487
|
-
easyflowSDK.addCreditCard(customerId, cardToken)
|
|
488
|
-
</div>
|
|
489
|
-
<div class="description">
|
|
490
|
-
Adiciona cartão de crédito ao cliente
|
|
491
|
-
</div>
|
|
492
|
-
</div>
|
|
493
|
-
</div>
|
|
494
|
-
|
|
495
|
-
<!-- Validation Tab -->
|
|
496
|
-
<div id="validation" class="tab-content">
|
|
497
|
-
<div class="method">
|
|
498
|
-
<h4>validate.email(email)</h4>
|
|
499
|
-
<div class="signature">
|
|
500
|
-
easyflowSDK.validate.email(emailAddress)
|
|
501
|
-
</div>
|
|
502
|
-
<div class="description">Valida formato de email</div>
|
|
503
|
-
<div class="example">
|
|
504
|
-
<strong>Exemplo:</strong>
|
|
505
|
-
<div class="code-block">
|
|
506
|
-
const isValid =
|
|
507
|
-
easyflowSDK.validate.email("test@email.com"); //
|
|
508
|
-
Retorna: true ou false
|
|
509
|
-
</div>
|
|
510
|
-
</div>
|
|
511
|
-
</div>
|
|
512
|
-
|
|
513
|
-
<div class="method">
|
|
514
|
-
<h4>validate.cpf(cpf)</h4>
|
|
515
|
-
<div class="signature">
|
|
516
|
-
easyflowSDK.validate.cpf(cpfNumber)
|
|
517
|
-
</div>
|
|
518
|
-
<div class="description">Valida CPF brasileiro</div>
|
|
519
|
-
</div>
|
|
520
|
-
|
|
521
|
-
<div class="method">
|
|
522
|
-
<h4>validate.cnpj(cnpj)</h4>
|
|
523
|
-
<div class="signature">
|
|
524
|
-
easyflowSDK.validate.cnpj(cnpjNumber)
|
|
525
|
-
</div>
|
|
526
|
-
<div class="description">Valida CNPJ brasileiro</div>
|
|
527
|
-
</div>
|
|
528
|
-
</div>
|
|
529
|
-
|
|
530
|
-
<!-- Events Tab -->
|
|
531
|
-
<div id="events" class="tab-content">
|
|
532
|
-
<div class="method">
|
|
533
|
-
<h4>on(event, callback)</h4>
|
|
534
|
-
<div class="signature">
|
|
535
|
-
easyflowSDK.on(eventName, callbackFunction)
|
|
536
|
-
</div>
|
|
537
|
-
<div class="description">
|
|
538
|
-
Configura callback para eventos
|
|
539
|
-
</div>
|
|
540
|
-
<div class="example">
|
|
541
|
-
<strong>Eventos disponíveis:</strong>
|
|
542
|
-
<ul>
|
|
543
|
-
<li>
|
|
544
|
-
<code>'customerCreated'</code> - Cliente
|
|
545
|
-
criado
|
|
546
|
-
</li>
|
|
547
|
-
<li>
|
|
548
|
-
<code>'paymentProcessed'</code> - Pagamento
|
|
549
|
-
processado
|
|
550
|
-
</li>
|
|
551
|
-
<li><code>'error'</code> - Erro ocorreu</li>
|
|
552
|
-
</ul>
|
|
553
|
-
</div>
|
|
554
|
-
</div>
|
|
555
|
-
</div>
|
|
556
|
-
</div>
|
|
557
|
-
|
|
558
|
-
<!-- Examples -->
|
|
559
|
-
<div id="examples" class="section">
|
|
560
|
-
<h2>💡 Exemplos Práticos</h2>
|
|
561
|
-
|
|
562
|
-
<h3>Formulário de Cadastro</h3>
|
|
563
|
-
<div class="code-block">
|
|
564
|
-
// Formulário de cadastro de cliente async function
|
|
565
|
-
handleCustomerRegistration(formData) { try { // Validar
|
|
566
|
-
dados const emailValid =
|
|
567
|
-
easyflowSDK.validate.email(formData.email); const cpfValid =
|
|
568
|
-
easyflowSDK.validate.cpf(formData.cpf); if (!emailValid ||
|
|
569
|
-
!cpfValid) { throw new Error('Dados inválidos'); } // Criar
|
|
570
|
-
cliente const result = await easyflowSDK.createCustomer({
|
|
571
|
-
name: formData.name, email: formData.email, document: {
|
|
572
|
-
type: 'CPF', number: formData.cpf } }); if (result.success)
|
|
573
|
-
{ console.log('Cliente criado:', result.data); //
|
|
574
|
-
Redirecionar para checkout } } catch (error) {
|
|
575
|
-
console.error('Erro:', error.message); } }
|
|
576
|
-
</div>
|
|
577
|
-
|
|
578
|
-
<h3>Processamento de Pagamento</h3>
|
|
579
|
-
<div class="code-block">
|
|
580
|
-
// Processar pagamento async function
|
|
581
|
-
processPayment(offerId, customerId, paymentData) { try { //
|
|
582
|
-
Criar pedido const orderResult = await
|
|
583
|
-
easyflowSDK.placeOrder(offerId, { buyer: customerId,
|
|
584
|
-
payments: [paymentData] }); if (orderResult.success) {
|
|
585
|
-
console.log('Pedido criado:', orderResult.data); //
|
|
586
|
-
Redirecionar para sucesso } } catch (error) {
|
|
587
|
-
console.error('Erro no pagamento:', error.message); } }
|
|
588
|
-
</div>
|
|
589
|
-
</div>
|
|
590
|
-
|
|
591
|
-
<!-- Platforms -->
|
|
592
|
-
<div id="platforms" class="section">
|
|
593
|
-
<h2>🌐 Plataformas Suportadas</h2>
|
|
594
|
-
|
|
595
|
-
<div class="platform-grid">
|
|
596
|
-
<div class="platform-card">
|
|
597
|
-
<h4>Lovable.dev</h4>
|
|
598
|
-
<p>Integração automática com chat AI e workflows</p>
|
|
599
|
-
<div class="code">
|
|
600
|
-
// Funciona automaticamente
|
|
601
|
-
easyflowSDK.createCustomer(data)
|
|
602
|
-
</div>
|
|
603
|
-
</div>
|
|
604
|
-
|
|
605
|
-
<div class="platform-card">
|
|
606
|
-
<h4>Bubble</h4>
|
|
607
|
-
<p>JavaScript personalizado com callbacks</p>
|
|
608
|
-
<div class="code">
|
|
609
|
-
// Configurar callbacks
|
|
610
|
-
easyflowSDK.on('customerCreated', callback)
|
|
611
|
-
</div>
|
|
612
|
-
</div>
|
|
613
|
-
|
|
614
|
-
<div class="platform-card">
|
|
615
|
-
<h4>Webflow</h4>
|
|
616
|
-
<p>HTML personalizado com JavaScript</p>
|
|
617
|
-
<div class="code">
|
|
618
|
-
// Usar em formulários <script
|
|
619
|
-
src="..."></script>
|
|
620
|
-
</div>
|
|
621
|
-
</div>
|
|
622
|
-
|
|
623
|
-
<div class="platform-card">
|
|
624
|
-
<h4>Zapier</h4>
|
|
625
|
-
<p>Webhooks e automações</p>
|
|
626
|
-
<div class="code">
|
|
627
|
-
// Endpoint webhook POST /api/easyflow
|
|
628
|
-
</div>
|
|
629
|
-
</div>
|
|
630
|
-
</div>
|
|
631
|
-
</div>
|
|
632
|
-
|
|
633
|
-
<!-- Troubleshooting -->
|
|
634
|
-
<div id="troubleshooting" class="section">
|
|
635
|
-
<h2>🔧 Troubleshooting</h2>
|
|
636
|
-
|
|
637
|
-
<h3>Problemas Comuns</h3>
|
|
638
|
-
|
|
639
|
-
<div class="error-box">
|
|
640
|
-
<strong>❌ "easyflowSDK is not defined"</strong>
|
|
641
|
-
<p>O script não foi carregado corretamente. Verifique:</p>
|
|
642
|
-
<ul>
|
|
643
|
-
<li>URL do script está correta</li>
|
|
644
|
-
<li>Script foi incluído antes do seu código</li>
|
|
645
|
-
<li>Console do navegador não mostra erros</li>
|
|
646
|
-
</ul>
|
|
647
|
-
</div>
|
|
648
|
-
|
|
649
|
-
<div class="error-box">
|
|
650
|
-
<strong>❌ "Method not found"</strong>
|
|
651
|
-
<p>Método não existe ou não foi exposto. Verifique:</p>
|
|
652
|
-
<ul>
|
|
653
|
-
<li>Versão do SDK está atualizada</li>
|
|
654
|
-
<li>Método está listado na documentação</li>
|
|
655
|
-
<li>Console mostra <code>typeof easyflowSDK</code></li>
|
|
656
|
-
</ul>
|
|
657
|
-
</div>
|
|
658
|
-
|
|
659
|
-
<div class="success-box">
|
|
660
|
-
<strong>✅ Debug Mode</strong>
|
|
661
|
-
<p>Para habilitar logs de debug:</p>
|
|
662
|
-
<div class="code-block">
|
|
663
|
-
easyflowSDK.configure({ enableDebug: true });
|
|
664
|
-
</div>
|
|
665
|
-
</div>
|
|
666
|
-
|
|
667
|
-
<h3>Verificar Status</h3>
|
|
668
|
-
<div class="code-block">
|
|
669
|
-
// Verificar se o SDK está funcionando console.log('SDK
|
|
670
|
-
Status:', easyflowSDK.getStatus()); console.log('Métodos
|
|
671
|
-
disponíveis:', Object.keys(easyflowSDK));
|
|
672
|
-
</div>
|
|
673
|
-
</div>
|
|
674
|
-
|
|
675
|
-
<!-- Footer -->
|
|
676
|
-
<div class="footer">
|
|
677
|
-
<p>
|
|
678
|
-
<strong>Easyflow SDK</strong> - Documentação pública
|
|
679
|
-
atualizada automaticamente<br />
|
|
680
|
-
Mantido por
|
|
681
|
-
<a href="https://github.com/dmourainatel" target="_blank"
|
|
682
|
-
>Diego Moura</a
|
|
683
|
-
>
|
|
684
|
-
|
|
|
685
|
-
<a href="https://easyflow.digital" target="_blank"
|
|
686
|
-
>Easyflow.digital</a
|
|
687
|
-
>
|
|
688
|
-
</p>
|
|
689
|
-
<p
|
|
690
|
-
style="
|
|
691
|
-
margin-top: 15px;
|
|
692
|
-
font-size: 0.9rem;
|
|
693
|
-
color: var(--text-light);
|
|
694
|
-
"
|
|
695
|
-
>
|
|
696
|
-
Esta documentação é servida via CDN e está sempre
|
|
697
|
-
sincronizada com a versão mais recente do SDK.
|
|
698
|
-
</p>
|
|
699
|
-
</div>
|
|
700
|
-
</div>
|
|
701
|
-
|
|
702
|
-
<script>
|
|
703
|
-
// Tab functionality
|
|
704
|
-
function showTab(tabName) {
|
|
705
|
-
// Hide all tabs
|
|
706
|
-
document.querySelectorAll('.tab-content').forEach((tab) => {
|
|
707
|
-
tab.classList.remove('active')
|
|
708
|
-
})
|
|
709
|
-
document.querySelectorAll('.tab').forEach((tab) => {
|
|
710
|
-
tab.classList.remove('active')
|
|
711
|
-
})
|
|
712
|
-
|
|
713
|
-
// Show selected tab
|
|
714
|
-
document.getElementById(tabName).classList.add('active')
|
|
715
|
-
event.target.classList.add('active')
|
|
716
|
-
}
|
|
717
|
-
|
|
718
|
-
// Smooth scrolling for navigation
|
|
719
|
-
document.querySelectorAll('a[href^="#"]').forEach((anchor) => {
|
|
720
|
-
anchor.addEventListener('click', function (e) {
|
|
721
|
-
e.preventDefault()
|
|
722
|
-
const target = document.querySelector(
|
|
723
|
-
this.getAttribute('href')
|
|
724
|
-
)
|
|
725
|
-
if (target) {
|
|
726
|
-
target.scrollIntoView({
|
|
727
|
-
behavior: 'smooth',
|
|
728
|
-
block: 'start',
|
|
729
|
-
})
|
|
730
|
-
}
|
|
731
|
-
})
|
|
732
|
-
})
|
|
733
|
-
|
|
734
|
-
// Highlight current section in navigation
|
|
735
|
-
window.addEventListener('scroll', () => {
|
|
736
|
-
const sections = document.querySelectorAll('.section')
|
|
737
|
-
const navLinks = document.querySelectorAll('.nav a')
|
|
738
|
-
|
|
739
|
-
let current = ''
|
|
740
|
-
sections.forEach((section) => {
|
|
741
|
-
const sectionTop = section.offsetTop
|
|
742
|
-
if (pageYOffset >= sectionTop - 60) {
|
|
743
|
-
current = section.getAttribute('id')
|
|
744
|
-
}
|
|
745
|
-
})
|
|
746
|
-
|
|
747
|
-
navLinks.forEach((link) => {
|
|
748
|
-
link.classList.remove('active')
|
|
749
|
-
if (link.getAttribute('href') === `#${current}`) {
|
|
750
|
-
link.classList.add('active')
|
|
751
|
-
}
|
|
752
|
-
})
|
|
753
|
-
})
|
|
754
|
-
</script>
|
|
755
|
-
</body>
|
|
756
|
-
</html>
|