@lina-openx/react-native-lina-pay-sdk 1.0.0 → 1.0.1

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 (76) hide show
  1. package/README.md +356 -2
  2. package/lib/module/config/environment.js +10 -3
  3. package/lib/module/config/environment.js.map +1 -1
  4. package/lib/module/controllers/config.controller.js +22 -0
  5. package/lib/module/controllers/config.controller.js.map +1 -0
  6. package/lib/module/controllers/consent.controller.js +50 -0
  7. package/lib/module/controllers/consent.controller.js.map +1 -0
  8. package/lib/module/controllers/enrollment.controller.js +179 -0
  9. package/lib/module/controllers/enrollment.controller.js.map +1 -0
  10. package/lib/module/controllers/participants.controller.js +26 -0
  11. package/lib/module/controllers/participants.controller.js.map +1 -0
  12. package/lib/module/controllers/payment.controller.js +37 -0
  13. package/lib/module/controllers/payment.controller.js.map +1 -0
  14. package/lib/module/index.js +6 -128
  15. package/lib/module/index.js.map +1 -1
  16. package/lib/module/services/consent.service.js.map +1 -1
  17. package/lib/module/services/enrollment.service.js +318 -0
  18. package/lib/module/services/enrollment.service.js.map +1 -0
  19. package/lib/module/services/fido.service.js +94 -0
  20. package/lib/module/services/fido.service.js.map +1 -0
  21. package/lib/module/types/enrollment.types.js +49 -0
  22. package/lib/module/types/enrollment.types.js.map +1 -0
  23. package/lib/module/types/fido.types.js +2 -0
  24. package/lib/module/types/fido.types.js.map +1 -0
  25. package/lib/module/utils/consent.utils.js.map +1 -1
  26. package/lib/module/utils/enrollment.utils.js +182 -0
  27. package/lib/module/utils/enrollment.utils.js.map +1 -0
  28. package/lib/module/utils/payment.utils.js.map +1 -1
  29. package/lib/typescript/src/config/environment.d.ts +7 -0
  30. package/lib/typescript/src/config/environment.d.ts.map +1 -1
  31. package/lib/typescript/src/controllers/config.controller.d.ts +17 -0
  32. package/lib/typescript/src/controllers/config.controller.d.ts.map +1 -0
  33. package/lib/typescript/src/controllers/consent.controller.d.ts +40 -0
  34. package/lib/typescript/src/controllers/consent.controller.d.ts.map +1 -0
  35. package/lib/typescript/src/controllers/enrollment.controller.d.ts +144 -0
  36. package/lib/typescript/src/controllers/enrollment.controller.d.ts.map +1 -0
  37. package/lib/typescript/src/controllers/participants.controller.d.ts +17 -0
  38. package/lib/typescript/src/controllers/participants.controller.d.ts.map +1 -0
  39. package/lib/typescript/src/controllers/payment.controller.d.ts +28 -0
  40. package/lib/typescript/src/controllers/payment.controller.d.ts.map +1 -0
  41. package/lib/typescript/src/index.d.ts +7 -103
  42. package/lib/typescript/src/index.d.ts.map +1 -1
  43. package/lib/typescript/src/services/enrollment.service.d.ts +22 -0
  44. package/lib/typescript/src/services/enrollment.service.d.ts.map +1 -0
  45. package/lib/typescript/src/services/fido.service.d.ts +7 -0
  46. package/lib/typescript/src/services/fido.service.d.ts.map +1 -0
  47. package/lib/typescript/src/types/enrollment.types.d.ts +305 -0
  48. package/lib/typescript/src/types/enrollment.types.d.ts.map +1 -0
  49. package/lib/typescript/src/types/fido.types.d.ts +56 -0
  50. package/lib/typescript/src/types/fido.types.d.ts.map +1 -0
  51. package/lib/typescript/src/types/index.d.ts +1 -0
  52. package/lib/typescript/src/types/index.d.ts.map +1 -1
  53. package/lib/typescript/src/utils/consent.utils.d.ts.map +1 -1
  54. package/lib/typescript/src/utils/enrollment.utils.d.ts +177 -0
  55. package/lib/typescript/src/utils/enrollment.utils.d.ts.map +1 -0
  56. package/lib/typescript/src/utils/payment.utils.d.ts.map +1 -1
  57. package/package.json +10 -1
  58. package/src/config/environment.ts +9 -3
  59. package/src/controllers/config.controller.ts +22 -0
  60. package/src/controllers/consent.controller.ts +56 -0
  61. package/src/controllers/enrollment.controller.ts +210 -0
  62. package/src/controllers/participants.controller.ts +28 -0
  63. package/src/controllers/payment.controller.ts +44 -0
  64. package/src/index.tsx +40 -155
  65. package/src/services/consent.service.ts +2 -3
  66. package/src/services/enrollment.service.ts +458 -0
  67. package/src/services/fido.service.ts +126 -0
  68. package/src/services/payment.service.ts +0 -1
  69. package/src/types/consent.types.ts +0 -1
  70. package/src/types/enrollment.types.ts +360 -0
  71. package/src/types/fido.types.ts +58 -0
  72. package/src/types/index.ts +13 -0
  73. package/src/types/payment.types.ts +0 -1
  74. package/src/utils/consent.utils.ts +3 -11
  75. package/src/utils/enrollment.utils.ts +246 -0
  76. package/src/utils/payment.utils.ts +1 -4
package/README.md CHANGED
@@ -152,6 +152,204 @@ async function processPayment() {
152
152
  }
153
153
  ```
154
154
 
155
+ ### Enrollment (Cadastro de Dispositivo)
156
+
157
+ O **Enrollment** permite cadastrar um dispositivo do usuário usando autenticação FIDO2/Passkeys. Uma vez cadastrado, o usuário pode realizar pagamentos sem precisar redirecionar para o banco a cada transação.
158
+
159
+ #### Criar Enrollment
160
+
161
+ ```typescript
162
+ import { createEnrollment, type CreateEnrollmentRequest, LinaPayError } from 'react-native-lina-pay-sdk';
163
+ import { Linking } from 'react-native';
164
+
165
+ async function createDeviceEnrollment() {
166
+ try {
167
+ const enrollment = await createEnrollment(
168
+ {
169
+ subtenantId: 'seu-subtenant-id',
170
+ subtenantSecret: 'seu-subtenant-secret'
171
+ },
172
+ {
173
+ organisationId: 'org-uuid',
174
+ authorisationServerId: 'auth-uuid',
175
+ enrollment: {
176
+ document: '12345678901', // CPF do usuário
177
+ deviceName: 'iPhone do João',
178
+ debtor: {
179
+ accountNumber: '123456',
180
+ accountIssuer: '0001',
181
+ accountIspb: '12345678',
182
+ accountType: 'CACC'
183
+ }
184
+ },
185
+ redirectUri: 'https://seu-app.com/enrollment-callback'
186
+ }
187
+ );
188
+
189
+ console.log('Enrollment criado:', enrollment.id);
190
+
191
+ // Redirecionar usuário para autorização
192
+ if (enrollment.redirectUrl) {
193
+ Linking.openURL(enrollment.redirectUrl);
194
+ }
195
+ } catch (error) {
196
+ if (error instanceof LinaPayError) {
197
+ console.error('Erro ao criar enrollment:', error.message);
198
+ }
199
+ }
200
+ }
201
+ ```
202
+
203
+ #### Registrar Dispositivo (após callback)
204
+
205
+ Após o usuário autorizar no banco e receber o callback, registre o dispositivo:
206
+
207
+ ```typescript
208
+ import { registerDevice, type RegisterDeviceRequest, LinaPayError } from 'react-native-lina-pay-sdk';
209
+ import { Platform } from 'react-native';
210
+
211
+ async function registerDeviceAfterCallback(state: string, code: string, idToken: string) {
212
+ try {
213
+ const platform = Platform.OS === 'ios' ? 'IOS' : Platform.OS === 'android' ? 'ANDROID' : 'WEB';
214
+
215
+ const enrollment = await registerDevice(
216
+ {
217
+ subtenantId: 'seu-subtenant-id',
218
+ subtenantSecret: 'seu-subtenant-secret'
219
+ },
220
+ {
221
+ state,
222
+ code,
223
+ idToken,
224
+ tenantId: 'seu-subtenant-id',
225
+ platform
226
+ }
227
+ );
228
+
229
+ console.log('Dispositivo registrado:', enrollment.enrollmentId);
230
+ console.log('Status:', enrollment.status); // Deve ser 'AUTHORISED'
231
+ } catch (error) {
232
+ if (error instanceof LinaPayError) {
233
+ console.error('Erro ao registrar dispositivo:', error.message);
234
+ }
235
+ }
236
+ }
237
+ ```
238
+
239
+ #### Listar Enrollments
240
+
241
+ ```typescript
242
+ import { getEnrollmentList, LinaPayError } from 'react-native-lina-pay-sdk';
243
+
244
+ async function listUserEnrollments() {
245
+ try {
246
+ const enrollmentList = await getEnrollmentList(
247
+ {
248
+ subtenantId: 'seu-subtenant-id',
249
+ subtenantSecret: 'seu-subtenant-secret'
250
+ },
251
+ '12345678901' // CPF do usuário
252
+ );
253
+
254
+ console.log('Total de enrollments:', enrollmentList.enrollments.length);
255
+ enrollmentList.enrollments.forEach(enrollment => {
256
+ console.log(`- ${enrollment.enrollmentId}: ${enrollment.status}`);
257
+ });
258
+ } catch (error) {
259
+ if (error instanceof LinaPayError) {
260
+ console.error('Erro ao listar enrollments:', error.message);
261
+ }
262
+ }
263
+ }
264
+ ```
265
+
266
+ #### Revogar Enrollment
267
+
268
+ ```typescript
269
+ import { revokeEnrollment, LinaPayError } from 'react-native-lina-pay-sdk';
270
+
271
+ async function removeEnrollment() {
272
+ try {
273
+ await revokeEnrollment(
274
+ {
275
+ subtenantId: 'seu-subtenant-id',
276
+ subtenantSecret: 'seu-subtenant-secret'
277
+ },
278
+ 'enrollment-id-aqui'
279
+ );
280
+
281
+ console.log('Enrollment revogado com sucesso');
282
+ } catch (error) {
283
+ if (error instanceof LinaPayError) {
284
+ console.error('Erro ao revogar enrollment:', error.message);
285
+ }
286
+ }
287
+ }
288
+ ```
289
+
290
+ ### Pagamento com Enrollment
291
+
292
+ Após ter um enrollment ativo, você pode realizar pagamentos sem redirecionar o usuário ao banco. O pagamento é autorizado usando autenticação biométrica FIDO2/Passkeys:
293
+
294
+ ```typescript
295
+ import { createPaymentWithEnrollment, type PaymentWithEnrollmentRequest, LinaPayError } from 'react-native-lina-pay-sdk';
296
+ import { Platform } from 'react-native';
297
+
298
+ async function payWithEnrollment() {
299
+ try {
300
+ const platform = Platform.OS === 'ios' ? 'IOS' : Platform.OS === 'android' ? 'ANDROID' : 'WEB';
301
+
302
+ const payment = await createPaymentWithEnrollment(
303
+ {
304
+ subtenantId: 'seu-subtenant-id',
305
+ subtenantSecret: 'seu-subtenant-secret'
306
+ },
307
+ {
308
+ enrollmentId: 'enrollment-id-ativo',
309
+ organisationId: 'org-uuid',
310
+ authorisationServerId: 'auth-uuid',
311
+ payment: {
312
+ value: 1500.50,
313
+ details: 'Pagamento de serviço',
314
+ externalId: 'payment-123',
315
+ redirectUri: 'https://seu-app.com/payment-success',
316
+ cpfCnpj: '12345678901',
317
+ creditor: {
318
+ name: 'Empresa Beneficiária',
319
+ personType: 'PESSOA_JURIDICA',
320
+ cpfCnpj: '12345678000190',
321
+ accountNumber: '123456',
322
+ accountIssuer: '0001',
323
+ accountPixKey: 'empresa@email.com',
324
+ accountIspb: '12345678',
325
+ accountType: 'CACC'
326
+ },
327
+ txId: []
328
+ },
329
+ fidoSignOptions: {
330
+ rp: 'app.linaopenx.com.br',
331
+ platform
332
+ }
333
+ }
334
+ );
335
+
336
+ console.log('Pagamento processado:', payment.id);
337
+ console.log('Consent ID:', payment.consentId);
338
+ // O usuário será solicitado a autorizar com biometria automaticamente
339
+ } catch (error) {
340
+ if (error instanceof LinaPayError) {
341
+ console.error('Erro ao processar pagamento:', error.message);
342
+ }
343
+ }
344
+ }
345
+ ```
346
+
347
+ **Vantagens do Pagamento com Enrollment:**
348
+ - ⚡ Mais rápido: sem redirecionamento ao banco
349
+ - 🔒 Seguro: autenticação biométrica obrigatória
350
+ - 📱 Melhor UX: tudo acontece dentro do app
351
+ - 🔄 Ideal para pagamentos recorrentes
352
+
155
353
  ### Exemplo Completo com React
156
354
 
157
355
  ```typescript
@@ -389,6 +587,148 @@ interface Participant {
389
587
  - Participantes sem servidores de autorização são automaticamente filtrados
390
588
  - O token de autenticação é gerenciado automaticamente pelo SDK (com cache)
391
589
 
590
+ ---
591
+
592
+ ### `createEnrollment(credentials, payload)`
593
+
594
+ Cria um enrollment inicial para registrar um dispositivo do usuário.
595
+
596
+ **Parâmetros:**
597
+ - `credentials` (objeto, obrigatório):
598
+ - `subtenantId` (string): ID do subtenant fornecido pela Lina
599
+ - `subtenantSecret` (string): Secret do subtenant fornecido pela Lina
600
+ - `payload` (objeto, obrigatório):
601
+ - `organisationId` (string, obrigatório): UUID da organização participante
602
+ - `authorisationServerId` (string, obrigatório): UUID do servidor de autorização
603
+ - `enrollment` (objeto, obrigatório):
604
+ - `document` (string, opcional): CPF do usuário
605
+ - `externalId` (string, opcional): ID externo
606
+ - `deviceName` (string, opcional): Nome do dispositivo
607
+ - `debtor` (objeto, obrigatório): Dados da conta do pagador
608
+ - `accountNumber` (string): Número da conta
609
+ - `accountIssuer` (string): Agência
610
+ - `accountIspb` (string): Código ISPB
611
+ - `accountType` (string): Tipo de conta ('CACC' | 'SLRY' | 'SVGS' | 'TRAN')
612
+ - `redirectUri` (string, obrigatório): URL do callback após autorização
613
+ - `paymentId` (string, opcional): ID do pagamento relacionado
614
+
615
+ **Retorna:** `Promise<CreateEnrollmentResponse>`
616
+
617
+ **Estrutura do CreateEnrollmentResponse:**
618
+ ```typescript
619
+ interface CreateEnrollmentResponse {
620
+ id: string; // UUID do enrollment
621
+ redirectUrl?: string; // URL para redirecionar o usuário
622
+ consentId?: string | null; // ID do consentimento (pode ser null)
623
+ }
624
+ ```
625
+
626
+ ---
627
+
628
+ ### `registerDevice(credentials, payload)`
629
+
630
+ Registra um dispositivo usando autenticação FIDO2/Passkeys após o callback de autorização.
631
+
632
+ **Parâmetros:**
633
+ - `credentials` (objeto, obrigatório):
634
+ - `subtenantId` (string): ID do subtenant fornecido pela Lina
635
+ - `subtenantSecret` (string): Secret do subtenant fornecido pela Lina
636
+ - `payload` (objeto, obrigatório):
637
+ - `state` (string): Estado retornado no callback
638
+ - `code` (string): Código retornado no callback
639
+ - `idToken` (string): Token ID retornado no callback
640
+ - `tenantId` (string): Mesmo valor do subtenantId
641
+ - `platform` (string): Plataforma ('ANDROID' | 'IOS' | 'WEB' | 'BROWSER' | 'CROSS_PLATFORM')
642
+ - `rp` (string, opcional): Relying Party ID
643
+
644
+ **Retorna:** `Promise<Enrollment>`
645
+
646
+ **Estrutura do Enrollment:**
647
+ ```typescript
648
+ interface Enrollment {
649
+ enrollmentId: string;
650
+ creationDateTime: string;
651
+ status: 'AWAITING_RISK_SIGNALS' | 'AWAITING_ACCOUNT_HOLDER_VALIDATION' |
652
+ 'AWAITING_ENROLLMENT' | 'AUTHORISED' | 'REJECTED' | 'REVOKED';
653
+ statusUpdateDateTime: string;
654
+ permissions: 'PAYMENTS_INITIATE';
655
+ expirationDateTime: string | null;
656
+ // ... outros campos
657
+ }
658
+ ```
659
+
660
+ **Observações:**
661
+ - O dispositivo deve suportar FIDO2/Passkeys
662
+ - O usuário precisará autorizar com biometria (Face ID, Touch ID, etc.)
663
+ - O enrollment só estará pronto quando o status for `AUTHORISED`
664
+
665
+ ---
666
+
667
+ ### `getEnrollmentList(credentials, cpf)`
668
+
669
+ Lista todos os enrollments de um usuário pelo CPF.
670
+
671
+ **Parâmetros:**
672
+ - `credentials` (objeto, obrigatório):
673
+ - `subtenantId` (string): ID do subtenant fornecido pela Lina
674
+ - `subtenantSecret` (string): Secret do subtenant fornecido pela Lina
675
+ - `cpf` (string, obrigatório): CPF do usuário (11 dígitos)
676
+
677
+ **Retorna:** `Promise<EnrollmentList>`
678
+
679
+ **Estrutura do EnrollmentList:**
680
+ ```typescript
681
+ interface EnrollmentList {
682
+ id: string;
683
+ username: string;
684
+ subTenant: string;
685
+ enrollments: EnrollmentUser[];
686
+ }
687
+ ```
688
+
689
+ ---
690
+
691
+ ### `revokeEnrollment(credentials, enrollmentId)`
692
+
693
+ Revoga um enrollment, desativando o dispositivo cadastrado.
694
+
695
+ **Parâmetros:**
696
+ - `credentials` (objeto, obrigatório):
697
+ - `subtenantId` (string): ID do subtenant fornecido pela Lina
698
+ - `subtenantSecret` (string): Secret do subtenant fornecido pela Lina
699
+ - `enrollmentId` (string, obrigatório): ID do enrollment a ser revogado
700
+
701
+ **Retorna:** `Promise<RevokeEnrollmentResponse>`
702
+
703
+ ---
704
+
705
+ ### `createPaymentWithEnrollment(credentials, payload)`
706
+
707
+ Cria um pagamento usando um enrollment ativo, sem necessidade de redirecionamento ao banco.
708
+
709
+ **Parâmetros:**
710
+ - `credentials` (objeto, obrigatório):
711
+ - `subtenantId` (string): ID do subtenant fornecido pela Lina
712
+ - `subtenantSecret` (string): Secret do subtenant fornecido pela Lina
713
+ - `payload` (objeto, obrigatório):
714
+ - `enrollmentId` (string, obrigatório): ID do enrollment ativo
715
+ - `organisationId` (string, obrigatório): UUID da organização participante
716
+ - `authorisationServerId` (string, obrigatório): UUID do servidor de autorização
717
+ - `paymentId` (string, opcional): ID do pagamento se já foi criado
718
+ - `payment` (objeto, opcional): Dados do pagamento (similar ao `createConsent`)
719
+ - `fidoSignOptions` (objeto, obrigatório):
720
+ - `rp` (string): Relying Party ID
721
+ - `platform` (string): Plataforma ('ANDROID' | 'IOS' | 'WEB' | 'BROWSER' | 'CROSS_PLATFORM')
722
+
723
+ **Retorna:** `Promise<PaymentWithEnrollmentResponse>`
724
+
725
+ **Observações:**
726
+ - Esta função realiza internamente: criação do consentimento, obtenção de opções FIDO, solicitação de biometria, assinatura e autorização
727
+ - O usuário será solicitado a autorizar com biometria automaticamente
728
+ - O enrollment deve estar com status `AUTHORISED`
729
+
730
+ ---
731
+
392
732
  ### `configure(config)`
393
733
 
394
734
  Configura as URLs base do SDK para diferentes ambientes.
@@ -507,14 +847,28 @@ yarn lint
507
847
  src/
508
848
  ├── config/
509
849
  │ └── environment.ts # Configuração de URLs
850
+ ├── controllers/
851
+ │ ├── consent.controller.ts # Controller de consentimentos
852
+ │ ├── enrollment.controller.ts # Controller de enrollments
853
+ │ ├── participants.controller.ts # Controller de participantes
854
+ │ └── payment.controller.ts # Controller de pagamentos
510
855
  ├── services/
511
856
  │ ├── auth.service.ts # Autenticação OAuth2
512
- └── participants.service.ts # API de participantes
857
+ ├── consent.service.ts # API de consentimentos
858
+ │ ├── enrollment.service.ts # API de enrollments
859
+ │ ├── fido.service.ts # Serviço FIDO2/Passkeys
860
+ │ ├── participants.service.ts # API de participantes
861
+ │ └── payment.service.ts # API de pagamentos
513
862
  ├── types/
514
863
  │ ├── auth.types.ts # Tipos de autenticação
515
- │ ├── participants.types.ts # Tipos de participantes
864
+ │ ├── consent.types.ts # Tipos de consentimento
865
+ │ ├── enrollment.types.ts # Tipos de enrollment
866
+ │ ├── fido.types.ts # Tipos FIDO
867
+ │ ├── participants.types.ts # Tipos de participantes
868
+ │ ├── payment.types.ts # Tipos de pagamento
516
869
  │ └── index.ts # Re-exports
517
870
  ├── utils/
871
+ │ ├── enrollment.utils.ts # Utilitários de enrollment
518
872
  │ └── http.utils.ts # Utilidades HTTP
519
873
  └── index.tsx # API pública do SDK
520
874
  ```
@@ -3,11 +3,17 @@
3
3
  /**
4
4
  * Environment configuration for Lina Pay SDK
5
5
  * Allows configuration of base URLs for different environments (HML, Production)
6
+ * @example
7
+ * ```typescript
8
+ * LinaPaySdk.configure({
9
+ * iamBaseUrl: 'https://iam.prod.linaob.com.br',
10
+ * apiBaseUrl: 'https://embedded-payment-manager.prod.linaob.com.br'
11
+ * });
6
12
  */
7
13
 
8
14
  const DEFAULT_CONFIG = {
9
- iamBaseUrl: 'https://iam.hml.linaob.com.br',
10
- apiBaseUrl: 'https://embedded-payment-manager.hml.linaob.com.br'
15
+ iamBaseUrl: 'https://iam.linaob.com.br',
16
+ apiBaseUrl: 'https://embedded-payment-manager.linaob.com.br'
11
17
  };
12
18
  let currentConfig = {
13
19
  ...DEFAULT_CONFIG
@@ -56,6 +62,7 @@ export const ENDPOINTS = {
56
62
  TOKEN: '/realms/ob-epp/protocol/openid-connect/token',
57
63
  PARTICIPANTS: '/api/v1/open-integration/participants/registered',
58
64
  CONSENTS: '/api/v1/open-integration/consents',
59
- PAYMENTS: '/api/v1/open-integration/payments'
65
+ PAYMENTS: '/api/v1/open-integration/payments',
66
+ ENROLLMENTS: '/api/v1/jsr'
60
67
  };
61
68
  //# sourceMappingURL=environment.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["DEFAULT_CONFIG","iamBaseUrl","apiBaseUrl","currentConfig","configure","config","getConfig","resetConfig","ENDPOINTS","TOKEN","PARTICIPANTS","CONSENTS","PAYMENTS"],"sourceRoot":"../../../src","sources":["config/environment.ts"],"mappings":";;AAAA;AACA;AACA;AACA;;AAOA,MAAMA,cAA6B,GAAG;EACpCC,UAAU,EAAE,+BAA+B;EAC3CC,UAAU,EAAE;AACd,CAAC;AAED,IAAIC,aAA4B,GAAG;EAAE,GAAGH;AAAe,CAAC;;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASI,SAASA,CAACC,MAA8B,EAAQ;EAC9DF,aAAa,GAAG;IACd,GAAGA,aAAa;IAChB,GAAGE;EACL,CAAC;AACH;;AAEA;AACA;AACA;AACA,OAAO,SAASC,SAASA,CAAA,EAAkB;EACzC,OAAO;IAAE,GAAGH;EAAc,CAAC;AAC7B;;AAEA;AACA;AACA;AACA,OAAO,SAASI,WAAWA,CAAA,EAAS;EAClCJ,aAAa,GAAG;IAAE,GAAGH;EAAe,CAAC;AACvC;;AAEA;AACA;AACA;AACA,OAAO,MAAMQ,SAAS,GAAG;EACvBC,KAAK,EAAE,8CAA8C;EACrDC,YAAY,EAAE,kDAAkD;EAChEC,QAAQ,EAAE,mCAAmC;EAC7CC,QAAQ,EAAE;AACZ,CAAU","ignoreList":[]}
1
+ {"version":3,"names":["DEFAULT_CONFIG","iamBaseUrl","apiBaseUrl","currentConfig","configure","config","getConfig","resetConfig","ENDPOINTS","TOKEN","PARTICIPANTS","CONSENTS","PAYMENTS","ENROLLMENTS"],"sourceRoot":"../../../src","sources":["config/environment.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAMA,MAAMA,cAA6B,GAAG;EACpCC,UAAU,EAAE,2BAA2B;EACvCC,UAAU,EAAE;AACd,CAAC;AAED,IAAIC,aAA4B,GAAG;EAAE,GAAGH;AAAe,CAAC;;AAExD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASI,SAASA,CAACC,MAA8B,EAAQ;EAC9DF,aAAa,GAAG;IACd,GAAGA,aAAa;IAChB,GAAGE;EACL,CAAC;AACH;;AAEA;AACA;AACA;AACA,OAAO,SAASC,SAASA,CAAA,EAAkB;EACzC,OAAO;IAAE,GAAGH;EAAc,CAAC;AAC7B;;AAEA;AACA;AACA;AACA,OAAO,SAASI,WAAWA,CAAA,EAAS;EAClCJ,aAAa,GAAG;IAAE,GAAGH;EAAe,CAAC;AACvC;;AAEA;AACA;AACA;AACA,OAAO,MAAMQ,SAAS,GAAG;EACvBC,KAAK,EAAE,8CAA8C;EACrDC,YAAY,EAAE,kDAAkD;EAChEC,QAAQ,EAAE,mCAAmC;EAC7CC,QAAQ,EAAE,mCAAmC;EAC7CC,WAAW,EAAE;AACf,CAAU","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ import { configure as configureEnvironment } from "../config/environment.js";
4
+
5
+ /**
6
+ * Configure SDK environment (base URLs)
7
+ *
8
+ * @param config Partial configuration to override defaults
9
+ *
10
+ * @example
11
+ * ```typescript
12
+ * // Configure for production
13
+ * LinaPaySdk.configure({
14
+ * iamBaseUrl: 'https://iam.prod.linaob.com.br',
15
+ * apiBaseUrl: 'https://embedded-payment-manager.prod.linaob.com.br'
16
+ * });
17
+ * ```
18
+ */
19
+ export function configure(config) {
20
+ configureEnvironment(config);
21
+ }
22
+ //# sourceMappingURL=config.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["configure","configureEnvironment","config"],"sourceRoot":"../../../src","sources":["controllers/config.controller.ts"],"mappings":";;AAAA,SACEA,SAAS,IAAIC,oBAAoB,QAE5B,0BAAuB;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASD,SAASA,CAACE,MAA8B,EAAQ;EAC9DD,oBAAoB,CAACC,MAAM,CAAC;AAC9B","ignoreList":[]}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ import { createConsent as createConsentService } from "../services/consent.service.js";
4
+ import { getAccessToken } from "../services/auth.service.js";
5
+
6
+ /**
7
+ * Create payment consent
8
+ *
9
+ * @param credentials Subtenant credentials (subtenantId and subtenantSecret)
10
+ * @param payload Consent creation payload with payment details
11
+ * @returns Promise with consent creation response including consentId and status
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const consent = await LinaPaySdk.createConsent(
16
+ * {
17
+ * subtenantId: 'your-subtenant-id',
18
+ * subtenantSecret: 'your-subtenant-secret'
19
+ * },
20
+ * {
21
+ * organisationId: 'c8f0bf49-4744-4933-8960-7add6e590841',
22
+ * authorisationServerId: 'c8f0bf49-4744-4933-8960-7add6e590841',
23
+ * payment: {
24
+ * redirectUri: 'http://example.com/redirect',
25
+ * value: 1500.50,
26
+ * creditor: {
27
+ * name: 'John Doe',
28
+ * personType: 'PESSOA_NATURAL',
29
+ * cpfCnpj: '12345678901234',
30
+ * accountNumber: '1234567890',
31
+ * accountIssuer: '0001',
32
+ * accountPixKey: 'email@example.com',
33
+ * accountIspb: '12345678',
34
+ * accountType: 'CACC'
35
+ * }
36
+ * },
37
+ * platform: 'APP'
38
+ * }
39
+ * );
40
+ * console.log('Consent ID:', consent.consentId);
41
+ * ```
42
+ */
43
+ export async function createConsent(credentials, payload) {
44
+ // Get access token (uses cache if available)
45
+ const accessToken = await getAccessToken(credentials);
46
+
47
+ // Create consent
48
+ return await createConsentService(accessToken, payload);
49
+ }
50
+ //# sourceMappingURL=consent.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createConsent","createConsentService","getAccessToken","credentials","payload","accessToken"],"sourceRoot":"../../../src","sources":["controllers/consent.controller.ts"],"mappings":";;AAMA,SAASA,aAAa,IAAIC,oBAAoB,QAAQ,gCAA6B;AACnF,SAASC,cAAc,QAAQ,6BAA0B;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeF,aAAaA,CACjCG,WAA+B,EAC/BC,OAA6B,EACG;EAChC;EACA,MAAMC,WAAW,GAAG,MAAMH,cAAc,CAACC,WAAW,CAAC;;EAErD;EACA,OAAO,MAAMF,oBAAoB,CAACI,WAAW,EAAED,OAAO,CAAC;AACzD","ignoreList":[]}
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+
3
+ import { getAccessToken } from "../services/auth.service.js";
4
+ import { createPaymentWithEnrollment as createPaymentWithEnrollmentService, registerDevice as registerDeviceToEnrollmentService, getEnrollmentList as getEnrollmentListService, createEnrollment as createEnrollmentService, revokeEnrollment as revokeEnrollmentService } from "../services/enrollment.service.js";
5
+ /**
6
+ * Create enrollment consent
7
+ *
8
+ * @param credentials Subtenant credentials (subtenantId and subtenantSecret)
9
+ * @param payload Consent creation payload with enrollment details
10
+ * @returns Promise with consent creation response including consentId and redirectUrl
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * const consent = await LinaPaySdk.createEnrollment(
15
+ * {
16
+ * subtenantId: 'your-subtenant-id',
17
+ * subtenantSecret: 'your-subtenant-secret'
18
+ * },
19
+ * {
20
+ * organisationId: 'c8f0bf49-4744-4933-8960-7add6e590841',
21
+ * authorisationServerId: 'c8f0bf49-4744-4933-8960-7add6e590841',
22
+ * enrollment: {
23
+ * deviceName: 'Teste Device',
24
+ * document: cpf.replace(/\D/g, ''),
25
+ * debtor: {
26
+ * accountIspb: '00000000',
27
+ * accountIssuer: '2558',
28
+ * accountNumber: '5271110',
29
+ * accountType: 'CACC',
30
+ * },
31
+ * },
32
+ * }
33
+ * );
34
+ * ```
35
+ */
36
+ export async function createEnrollment(credentials, payload) {
37
+ // Get access token (uses cache if available)
38
+ const accessToken = await getAccessToken(credentials);
39
+
40
+ // Create enrollment
41
+ return await createEnrollmentService(accessToken, payload);
42
+ }
43
+
44
+ /**
45
+ * Validate callback from enrollment fido registration options open fido registration
46
+ *
47
+ * @param credentials Subtenant credentials (subtenantId and subtenantSecret)
48
+ * @param payload Callback payload with state, code, idToken, and tenantId
49
+ * @returns Call registration options, return challenge and open fido registration
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * const consent = await LinaPaySdk.createEnrollment(
54
+ * {
55
+ * subtenantId: 'your-subtenant-id',
56
+ * subtenantSecret: 'your-subtenant-secret'
57
+ * },
58
+ * {
59
+ * state: 'rumUP',
60
+ * code: '1RDYVFQnPn721',
61
+ * idToken: 'eyJhbGciOiJQUz',
62
+ * tenantId: 'tenantId'
63
+ * }
64
+ * );
65
+ * ```
66
+ */
67
+ export async function registerDevice(credentials, payload) {
68
+ const accessToken = await getAccessToken(credentials);
69
+
70
+ // Register device
71
+ return await registerDeviceToEnrollmentService(accessToken, payload);
72
+ }
73
+
74
+ /**
75
+ * Get list of registered enrollments from current user and device
76
+ *
77
+ * @param credentials Subtenant credentials (subtenantId and subtenantSecret)
78
+ * @param cpf CPF of current user
79
+ * @returns Promise with array of enrollments
80
+ *
81
+ * @example
82
+ * ```typescript
83
+ * const enrollments = await LinaPaySdk.getEnrollmentList({
84
+ * subtenantId: 'your-subtenant-id',
85
+ * subtenantSecret: 'your-subtenant-secret'
86
+ * }, '1234567890');
87
+ * ```
88
+ */
89
+ export async function getEnrollmentList(credentials, cpf) {
90
+ // Get access token (uses cache if available)
91
+ const accessToken = await getAccessToken(credentials);
92
+
93
+ // Get enrollment list
94
+ return await getEnrollmentListService(accessToken, cpf);
95
+ }
96
+
97
+ /**
98
+ * Revoke enrollment
99
+ *
100
+ * @param credentials Subtenant credentials (subtenantId and subtenantSecret)
101
+ * @param enrollmentId Enrollment ID
102
+ * @returns Promise with status of revocation
103
+ *
104
+ * @example
105
+ * ```typescript
106
+ * const = await LinaPaySdk.revokeEnrollment({
107
+ * subtenantId: 'your-subtenant-id',
108
+ * subtenantSecret: 'your-subtenant-secret'
109
+ * }, '1728979312391739');
110
+ * ```
111
+ */
112
+ export async function revokeEnrollment(credentials, enrollmentId) {
113
+ // Get access token (uses cache if available)
114
+ const accessToken = await getAccessToken(credentials);
115
+
116
+ // Revoke enrollment
117
+ return await revokeEnrollmentService(accessToken, enrollmentId);
118
+ }
119
+
120
+ /**
121
+ * Create payment with enrollment
122
+ *
123
+ * @param credentials Subtenant credentials (subtenantId and subtenantSecret)
124
+ * @param payload Payment creation payload with enrollmentId, payment details, and fidoAssertion
125
+ * @returns Promise with challenge and open fido registration
126
+ *
127
+ * @example
128
+ * ```typescript
129
+ * const payment = await LinaPaySdk.createPaymentWithEnrollment(
130
+ * {
131
+ * subtenantId: 'your-subtenant-id',
132
+ * subtenantSecret: 'your-subtenant-secret'
133
+ * },
134
+ * {
135
+ * enrollmentId: 'enrollmentId',
136
+ * organisationId: 'c8f0bf49-4744-4933-8960-7add6e590841',
137
+ * authorisationServerId: 'c8f0bf49-4744-4933-8960-7add6e590841',
138
+ * payment: {
139
+ * details: 'Payment details',
140
+ * externalId: 'externalId',
141
+ * redirectUri: 'http://example.com/redirect',
142
+ * cpfCnpj: '12345678901234',
143
+ * value: 1500.50,
144
+ * creditor: {
145
+ * name: 'John Doe',
146
+ * personType: 'PESSOA_NATURAL',
147
+ * cpfCnpj: '12345678901234',
148
+ * accountNumber: '1234567890',
149
+ * accountIssuer: '0001',
150
+ * accountPixKey: 'email@example.com',
151
+ * accountIspb: '12345678',
152
+ * accountType: 'CACC'
153
+ * }
154
+ * },
155
+ * fidoAssertion: {
156
+ * id: 'id',
157
+ * rawId: 'rawId',
158
+ * response: {
159
+ * authenticatorData: 'authenticatorData',
160
+ * clientDataJSON: 'clientDataJSON',
161
+ * signature: 'signature',
162
+ * userHandle: 'userHandle'
163
+ * },
164
+ * type: 'public-key'
165
+ * },
166
+ * }
167
+ * );
168
+ * console.log('Payment ID:', payment.id);
169
+ * console.log('Status:', payment.status);
170
+ * ```
171
+ */
172
+ export async function createPaymentWithEnrollment(credentials, payload) {
173
+ // Get access token (uses cache if available)
174
+ const accessToken = await getAccessToken(credentials);
175
+
176
+ // Create payment with enrollment
177
+ return await createPaymentWithEnrollmentService(accessToken, payload);
178
+ }
179
+ //# sourceMappingURL=enrollment.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getAccessToken","createPaymentWithEnrollment","createPaymentWithEnrollmentService","registerDevice","registerDeviceToEnrollmentService","getEnrollmentList","getEnrollmentListService","createEnrollment","createEnrollmentService","revokeEnrollment","revokeEnrollmentService","credentials","payload","accessToken","cpf","enrollmentId"],"sourceRoot":"../../../src","sources":["controllers/enrollment.controller.ts"],"mappings":";;AACA,SAASA,cAAc,QAAQ,6BAA0B;AACzD,SACEC,2BAA2B,IAAIC,kCAAkC,EACjEC,cAAc,IAAIC,iCAAiC,EACnDC,iBAAiB,IAAIC,wBAAwB,EAC7CC,gBAAgB,IAAIC,uBAAuB,EAC3CC,gBAAgB,IAAIC,uBAAuB,QACtC,mCAAgC;AAavC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeH,gBAAgBA,CACpCI,WAA+B,EAC/BC,OAAgC,EACG;EACnC;EACA,MAAMC,WAAW,GAAG,MAAMb,cAAc,CAACW,WAAW,CAAC;;EAErD;EACA,OAAO,MAAMH,uBAAuB,CAACK,WAAW,EAAED,OAAO,CAAC;AAC5D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeT,cAAcA,CAClCQ,WAA+B,EAC/BC,OAA8B,EACT;EACrB,MAAMC,WAAW,GAAG,MAAMb,cAAc,CAACW,WAAW,CAAC;;EAErD;EACA,OAAO,MAAMP,iCAAiC,CAACS,WAAW,EAAED,OAAO,CAAC;AACtE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeP,iBAAiBA,CACrCM,WAA+B,EAC/BG,GAAW,EACc;EACzB;EACA,MAAMD,WAAW,GAAG,MAAMb,cAAc,CAACW,WAAW,CAAC;;EAErD;EACA,OAAO,MAAML,wBAAwB,CAACO,WAAW,EAAEC,GAAG,CAAC;AACzD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeL,gBAAgBA,CACpCE,WAA+B,EAC/BI,YAAoB,EACe;EACnC;EACA,MAAMF,WAAW,GAAG,MAAMb,cAAc,CAACW,WAAW,CAAC;;EAErD;EACA,OAAO,MAAMD,uBAAuB,CAACG,WAAW,EAAEE,YAAY,CAAC;AACjE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAed,2BAA2BA,CAC/CU,WAA+B,EAC/BC,OAAqC,EACN;EAC/B;EACA,MAAMC,WAAW,GAAG,MAAMb,cAAc,CAACW,WAAW,CAAC;;EAErD;EACA,OAAO,MAAMT,kCAAkC,CAACW,WAAW,EAAED,OAAO,CAAC;AACvE","ignoreList":[]}