react-native-pos-pagseguro 1.1.0 → 1.2.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.
- package/README.md +161 -4
- package/android/libs/wrapper-1.33.0.aar +0 -0
- package/android/src/main/java/com/margelo/nitro/pospagseguro/PosPagseguro.kt +20 -0
- package/android/src/main/java/com/margelo/nitro/pospagseguro/maps/PlugPagCommand.kt +29 -0
- package/lib/module/hooks/useBoolStates.js +16 -0
- package/lib/module/hooks/useBoolStates.js.map +1 -0
- package/lib/module/hooks/usePagPayment.js +194 -0
- package/lib/module/hooks/usePagPayment.js.map +1 -0
- package/lib/module/hooks/usePagRefund.js +176 -0
- package/lib/module/hooks/usePagRefund.js.map +1 -0
- package/lib/module/index.js +4 -2
- package/lib/module/index.js.map +1 -1
- package/lib/module/pag_seguro.js +66 -3
- package/lib/module/pag_seguro.js.map +1 -1
- package/lib/module/types/device.js +24 -0
- package/lib/module/types/device.js.map +1 -1
- package/lib/module/types/payments.js +70 -0
- package/lib/module/types/payments.js.map +1 -1
- package/lib/typescript/src/PosPagseguro.nitro.d.ts +4 -2
- package/lib/typescript/src/PosPagseguro.nitro.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useBoolStates.d.ts +7 -0
- package/lib/typescript/src/hooks/useBoolStates.d.ts.map +1 -0
- package/lib/typescript/src/hooks/usePagPayment.d.ts +13 -0
- package/lib/typescript/src/hooks/usePagPayment.d.ts.map +1 -0
- package/lib/typescript/src/hooks/usePagRefund.d.ts +13 -0
- package/lib/typescript/src/hooks/usePagRefund.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +6 -4
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/pag_seguro.d.ts +46 -3
- package/lib/typescript/src/pag_seguro.d.ts.map +1 -1
- package/lib/typescript/src/types/device.d.ts +22 -0
- package/lib/typescript/src/types/device.d.ts.map +1 -1
- package/lib/typescript/src/types/payments.d.ts +92 -0
- package/lib/typescript/src/types/payments.d.ts.map +1 -1
- package/nitrogen/generated/android/c++/JHybridPosPagseguroSpec.cpp +32 -0
- package/nitrogen/generated/android/c++/JHybridPosPagseguroSpec.hpp +2 -0
- package/nitrogen/generated/android/c++/JInstallment.hpp +73 -0
- package/nitrogen/generated/android/c++/JPlugPagMode.hpp +58 -0
- package/nitrogen/generated/android/c++/JPlugPagOp.hpp +100 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pospagseguro/HybridPosPagseguroSpec.kt +8 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pospagseguro/Installment.kt +50 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pospagseguro/PlugPagMode.kt +23 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pospagseguro/PlugPagOp.kt +37 -0
- package/nitrogen/generated/shared/c++/HybridPosPagseguroSpec.cpp +2 -0
- package/nitrogen/generated/shared/c++/HybridPosPagseguroSpec.hpp +15 -0
- package/nitrogen/generated/shared/c++/Installment.hpp +99 -0
- package/nitrogen/generated/shared/c++/PlugPagMode.hpp +65 -0
- package/nitrogen/generated/shared/c++/PlugPagOp.hpp +93 -0
- package/package.json +2 -1
- package/src/PosPagseguro.nitro.ts +5 -2
- package/src/hooks/useBoolStates.ts +44 -0
- package/src/hooks/usePagPayment.ts +204 -0
- package/src/hooks/usePagRefund.ts +187 -0
- package/src/index.ts +29 -23
- package/src/pag_seguro.ts +70 -4
- package/src/types/device.ts +25 -0
- package/src/types/payments.ts +95 -0
- package/android/libs/wrapper-1.30.52.aar +0 -0
package/README.md
CHANGED
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
**PagSeguro POS SDK for React Native** – Integration with PagSeguro terminals (Moderninha, Moderninha2, etc.) using react-native-nitro-modules.
|
|
4
4
|
|
|
5
5
|
Supports credit, debit, voucher, PIX payments, installments, cancellations, receipt printing, and more.
|
|
6
|
-
[](https://badge.fury.io/js/react-native-pos-pagseguro)
|
|
6
|
+
[](https://badge.fury.io/js/react-native-pos-pagseguro)
|
|
7
7
|
[](https://www.android.com)
|
|
8
8
|
[](https://opensource.org/licenses/MIT)
|
|
9
|
+

|
|
9
10
|
|
|
10
11
|
## Features
|
|
11
12
|
|
|
@@ -13,6 +14,8 @@ Supports credit, debit, voucher, PIX payments, installments, cancellations, rece
|
|
|
13
14
|
- **Payments:** Credit, Debit, Voucher, PIX
|
|
14
15
|
- **Installments:** (à vista, store installment without interest, buyer installment with interest)
|
|
15
16
|
- **Cancel/refund:** transactions (same-day only)
|
|
17
|
+
- **Easy use payment Hook**
|
|
18
|
+
- **Easy use refund Hook**
|
|
16
19
|
- Get last approved transaction
|
|
17
20
|
- **Reprint:** customer or merchant receipt
|
|
18
21
|
- Custom image printing (file path or Base64)
|
|
@@ -20,6 +23,7 @@ Supports credit, debit, voucher, PIX payments, installments, cancellations, rece
|
|
|
20
23
|
- Reboot terminal
|
|
21
24
|
- **Device info:** model, serial number, user data, sub-acquirer data
|
|
22
25
|
- **Capability detection:** printer, NFC, chip, magnetic stripe, etc.
|
|
26
|
+
- **Software Capability detection:** can activate, can activate remotely, can refund, etc.
|
|
23
27
|
- Progress callbacks during payment flow
|
|
24
28
|
|
|
25
29
|
## Installation
|
|
@@ -91,6 +95,60 @@ try {
|
|
|
91
95
|
}
|
|
92
96
|
```
|
|
93
97
|
|
|
98
|
+
### 2.1. Make a payment with hook
|
|
99
|
+
[Full example here](https://github.com/CECSMH/react-native-pos-pagseguro/blob/main/example/src/payhook.tsx)
|
|
100
|
+
```typescript
|
|
101
|
+
const {
|
|
102
|
+
request_payment,
|
|
103
|
+
abort_operation,
|
|
104
|
+
reset,
|
|
105
|
+
state,
|
|
106
|
+
message,
|
|
107
|
+
errors,
|
|
108
|
+
isError,
|
|
109
|
+
isSuccess,
|
|
110
|
+
isProcessing,
|
|
111
|
+
} = usePagPayment();
|
|
112
|
+
|
|
113
|
+
const handlePayment = async () => {
|
|
114
|
+
const paymentData: PaymentData = {
|
|
115
|
+
amount,
|
|
116
|
+
type: PaymentTypes.DEBIT,
|
|
117
|
+
installment_type: InstallmentTypes.NO_INSTALLMENT,
|
|
118
|
+
installments: 1,
|
|
119
|
+
print_receipt: false,
|
|
120
|
+
user_reference: `ORDER${Date.now()}`,
|
|
121
|
+
};
|
|
122
|
+
try {
|
|
123
|
+
const result = await request_payment(paymentData);
|
|
124
|
+
Alert.alert(
|
|
125
|
+
'Pagamento Aprovado! ✓',
|
|
126
|
+
`NSU: ${result.nsu}\nAutorização: ${result.auto_code}\nBandeira: ${result.card_brand}`,
|
|
127
|
+
[{ text: 'OK', onPress: () => reset() }]
|
|
128
|
+
);
|
|
129
|
+
} catch (error) {console.log(error)
|
|
130
|
+
Alert.alert(
|
|
131
|
+
'Erro no Pagamento ✗',
|
|
132
|
+
errors?.message || 'Falha ao processar pagamento',
|
|
133
|
+
[{ text: 'OK', onPress: () => reset() }]
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
console.log(message) // Digite sua senha.
|
|
138
|
+
|
|
139
|
+
const getStateIcon = () => {
|
|
140
|
+
switch (state) {
|
|
141
|
+
case HookPayState.WAITING_CARD:
|
|
142
|
+
return '💳';
|
|
143
|
+
case HookPayState.CARD_INSERTED:
|
|
144
|
+
return '✓';
|
|
145
|
+
case HookPayState.ENTER_PASSWORD:
|
|
146
|
+
...
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
|
|
150
|
+
};
|
|
151
|
+
```
|
|
94
152
|
|
|
95
153
|
### 3. Cancel a payment (same day only)
|
|
96
154
|
```typescript
|
|
@@ -110,6 +168,80 @@ try {
|
|
|
110
168
|
}
|
|
111
169
|
```
|
|
112
170
|
|
|
171
|
+
### 3.1. Cancel a payment with hook (same day only)
|
|
172
|
+
[Full example here](https://github.com/CECSMH/react-native-pos-pagseguro/blob/main/example/src/refundhook.tsx)
|
|
173
|
+
```typescript
|
|
174
|
+
const {
|
|
175
|
+
request_refund,
|
|
176
|
+
abort_operation,
|
|
177
|
+
reset,
|
|
178
|
+
state,
|
|
179
|
+
message,
|
|
180
|
+
errors,
|
|
181
|
+
isError,
|
|
182
|
+
isSuccess,
|
|
183
|
+
isProcessing,
|
|
184
|
+
} = usePagRefund();
|
|
185
|
+
|
|
186
|
+
const [transactionCode, setTransactionCode] = useState('');
|
|
187
|
+
const [transactionId, setTransactionId] = useState('');
|
|
188
|
+
|
|
189
|
+
const handleRefund = async () => {
|
|
190
|
+
if (!transactionCode.trim()) {
|
|
191
|
+
Alert.alert('Atenção', 'Informe o código da transação');
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
if (!transactionId.trim()) {
|
|
195
|
+
Alert.alert('Atenção', 'Informe o ID da transação');
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
const refundData: VoidPayData = {
|
|
199
|
+
transaction_code: transactionCode.trim(),
|
|
200
|
+
transaction_id: transactionId.trim(),
|
|
201
|
+
print_receipt: false,
|
|
202
|
+
void_type: VoidType.PAYMENT,
|
|
203
|
+
};
|
|
204
|
+
try {
|
|
205
|
+
const result = await request_refund(refundData);
|
|
206
|
+
Alert.alert(
|
|
207
|
+
'Estorno Aprovado! ✓',
|
|
208
|
+
`NSU: ${result.nsu}\nCódigo: ${result.transaction_code}\nData: ${result.date} ${result.time}`,
|
|
209
|
+
[
|
|
210
|
+
{
|
|
211
|
+
text: 'OK',
|
|
212
|
+
onPress: () => {
|
|
213
|
+
reset();
|
|
214
|
+
setTransactionCode('');
|
|
215
|
+
setTransactionId('');
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
]
|
|
219
|
+
);
|
|
220
|
+
} catch (error) {
|
|
221
|
+
Alert.alert(
|
|
222
|
+
'Erro no Estorno ✗',
|
|
223
|
+
errors?.message || 'Falha ao processar estorno',
|
|
224
|
+
[{ text: 'OK', onPress: () => reset() }]
|
|
225
|
+
);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
console.log(message) // Autorizando estorno...
|
|
230
|
+
|
|
231
|
+
const getStateIcon = () => {
|
|
232
|
+
switch (state) {
|
|
233
|
+
case HookPayState.WAITING_CARD:
|
|
234
|
+
return '💳';
|
|
235
|
+
case HookPayState.CARD_INSERTED:
|
|
236
|
+
return '✓';
|
|
237
|
+
case HookPayState.ENTER_PASSWORD:
|
|
238
|
+
case HookPayState.ENTER_CVV:
|
|
239
|
+
return '🔒';
|
|
240
|
+
...
|
|
241
|
+
}
|
|
242
|
+
}:
|
|
243
|
+
```
|
|
244
|
+
|
|
113
245
|
|
|
114
246
|
### 4. Reprint receipts
|
|
115
247
|
```typescript
|
|
@@ -169,6 +301,28 @@ console.log('Model:', PagSeguro.get_model());
|
|
|
169
301
|
console.log('Serial:', PagSeguro.get_serial_number());
|
|
170
302
|
console.log('User data:', PagSeguro.get_userdata());
|
|
171
303
|
```
|
|
304
|
+
### 8. Calculate installments
|
|
305
|
+
```typescript
|
|
306
|
+
//InstallmentTypes.SELLER_INSTALLMENT or InstallmentTypes.BUYER_INSTALLMENT
|
|
307
|
+
// R$ 230,00
|
|
308
|
+
const installments = PagSeguro.calculate_installments(23000, InstallmentTypes.SELLER_INSTALLMENT);
|
|
309
|
+
console.log(installments)
|
|
310
|
+
/*[{
|
|
311
|
+
"quantity": 2,
|
|
312
|
+
"amount": 11500,
|
|
313
|
+
"total": 23000,
|
|
314
|
+
"formatted_amount": "R$ 115,00",
|
|
315
|
+
"formatted_total": "R$ 230,00"
|
|
316
|
+
}
|
|
317
|
+
...]*/
|
|
318
|
+
```
|
|
319
|
+
### 8. Check Software capabilities
|
|
320
|
+
```typescript
|
|
321
|
+
console.log("can activate: ", PagSeguro.software.can_activate());
|
|
322
|
+
console.log("can activate remotely: ", PagSeguro.software.can_activate_remotely());
|
|
323
|
+
console.log("can reprint: ", PagSeguro.software.can_reprint());
|
|
324
|
+
//...
|
|
325
|
+
```
|
|
172
326
|
|
|
173
327
|
## Error Handling
|
|
174
328
|
|
|
@@ -188,10 +342,13 @@ try {
|
|
|
188
342
|
|
|
189
343
|
## API Reference
|
|
190
344
|
|
|
191
|
-
All types and enums are fully typed.
|
|
345
|
+
All types and enums are fully typed. exports:
|
|
192
346
|
|
|
193
347
|
- `PagSeguro` (main class)
|
|
194
348
|
- `PaymentData`
|
|
349
|
+
- `usePagRefund`
|
|
350
|
+
- `usePagPayment`
|
|
351
|
+
- `HookPayState`
|
|
195
352
|
- `TransactionResult`
|
|
196
353
|
- `VoidPayData`
|
|
197
354
|
- `PaymentTypes`
|
|
@@ -221,9 +378,9 @@ If you've found this library helpful, consider buying me a coffee!
|
|
|
221
378
|
|
|
222
379
|
|
|
223
380
|
|
|
224
|
-
Scan the QR code to donate (
|
|
381
|
+
Scan the QR code to donate (PIX):
|
|
225
382
|
|
|
226
|
-

|
|
227
384
|
|
|
228
385
|
Thank you for your support! 🚀
|
|
229
386
|
|
|
Binary file
|
|
@@ -113,6 +113,12 @@ class PosPagseguro : HybridPosPagseguroSpec() {
|
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
override fun hasCapability(capability: Capabilities): Boolean { return plug_pag.hasCapability(capability.value) }
|
|
116
|
+
override fun hasSoftwareCapability(op: PlugPagOp, mode: PlugPagMode): Boolean {
|
|
117
|
+
return when (mode){
|
|
118
|
+
PlugPagMode.REMOTECONFIG -> plug_pag.hasSoftwareCapability(op.toCommand().command, PlugPagCommand.OPERATION_MODE_REMOTECFG.command)
|
|
119
|
+
else -> plug_pag.hasSoftwareCapability(op.toCommand().command)
|
|
120
|
+
}
|
|
121
|
+
}
|
|
116
122
|
|
|
117
123
|
override fun initialize(activation_code: String): Unit {
|
|
118
124
|
try {
|
|
@@ -128,6 +134,20 @@ class PosPagseguro : HybridPosPagseguroSpec() {
|
|
|
128
134
|
else return CustomError("OPR_ERROR", "Ocorreu um erro ao solicitar cancelamento");
|
|
129
135
|
}
|
|
130
136
|
|
|
137
|
+
override fun calculateInstallments(value: String, type: InstallmentTypes): Array<Installment> {
|
|
138
|
+
val t = plug_pag.calculateInstallments(value, type.value)
|
|
139
|
+
|
|
140
|
+
return t.map { native ->
|
|
141
|
+
Installment(
|
|
142
|
+
quantity = native.quantity.toDouble(),
|
|
143
|
+
amount = native.amount.toDouble(),
|
|
144
|
+
total = native.total.toDouble(),
|
|
145
|
+
formatted_amount = "R$ ${"%.2f".format(native.amount / 100.0)}",
|
|
146
|
+
formatted_total = "R$ ${"%.2f".format(native.total / 100.0)}"
|
|
147
|
+
)
|
|
148
|
+
}.toTypedArray()
|
|
149
|
+
}
|
|
150
|
+
|
|
131
151
|
override fun doPayment(payment_data: PaymentData, process_callback: (event: String, code: PaymentEvent) -> Unit): Promise<Variant_CustomError_TransactionResult> {
|
|
132
152
|
return Promise.async {
|
|
133
153
|
try {
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
package com.margelo.nitro.pospagseguro.maps
|
|
2
|
+
|
|
3
|
+
import com.margelo.nitro.pospagseguro.PlugPagOp
|
|
4
|
+
import com.margelo.nitro.pospagseguro.PlugPagMode
|
|
5
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.PlugPagCommand
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
fun PlugPagOp.toCommand(): PlugPagCommand {
|
|
9
|
+
return when (this) {
|
|
10
|
+
PlugPagOp.ACTIVATE -> PlugPagCommand.OPERATION_ACTIVATE
|
|
11
|
+
PlugPagOp.PAYMENT -> PlugPagCommand.OPERATION_PAYMENT
|
|
12
|
+
PlugPagOp.REFUND -> PlugPagCommand.OPERATION_REFUND
|
|
13
|
+
PlugPagOp.QUERYLASTAPPROVED -> PlugPagCommand.OPERATION_QUERY_LAST_APPROVED_TRANSACTION
|
|
14
|
+
PlugPagOp.REPRINTCUSTOMER -> PlugPagCommand.OPERATION_REPRINT_CUSTOMER_RECEIPT
|
|
15
|
+
PlugPagOp.REPRINTMERCHANT -> PlugPagCommand.OPERATION_REPRINT_ESTABLISHMENT_RECEIPT
|
|
16
|
+
PlugPagOp.PRINT -> PlugPagCommand.OPERATION_PRINT
|
|
17
|
+
PlugPagOp.CALCINSTALLMENTS -> PlugPagCommand.OPERATION_CALCULATE_INSTALLMENTS
|
|
18
|
+
PlugPagOp.CALCINSTALLMENTSWITHTOTAL -> PlugPagCommand.OPERATION_CALCULATE_INSTALLMENTS_WITH_TOTAL_AMOUNT
|
|
19
|
+
PlugPagOp.GETCARDDATA -> PlugPagCommand.OPERATION_GET_CARD_DATA
|
|
20
|
+
PlugPagOp.INITTECHACTIVATION -> PlugPagCommand.OPERATION_INIT_TECH_ACTIVATION
|
|
21
|
+
PlugPagOp.SENDLOGS -> PlugPagCommand.OPERATION_SEND_PS_LOGS
|
|
22
|
+
PlugPagOp.PREAUTHCREATE -> PlugPagCommand.OPERATION_PRE_AUTO_CREATE
|
|
23
|
+
PlugPagOp.PREAUTHCAPTURE -> PlugPagCommand.OPERATION_EFFECTUATE_PRE_AUTO
|
|
24
|
+
PlugPagOp.PREAUTHCANCEL -> PlugPagCommand.OPERATION_PRE_AUTO_CANCEL
|
|
25
|
+
PlugPagOp.NOEXTRAPARAMS -> PlugPagCommand.OPERATION_NO_EXTRA_PARAMS
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useMemo } from "react";
|
|
4
|
+
import { HookPayState } from "../types/payments.js";
|
|
5
|
+
export default function useBoolStates(state) {
|
|
6
|
+
const isProcessing = useMemo(() => [HookPayState.PROCESSING, HookPayState.WAITING_CARD, HookPayState.CARD_INSERTED, HookPayState.USE_CHIP, HookPayState.USE_TARJA, HookPayState.ENTER_PASSWORD, HookPayState.ENTER_CVV, HookPayState.ENTER_CAR_BIN, HookPayState.ENTER_CAR_HOLDER, HookPayState.PIN_OK, HookPayState.CVV_OK, HookPayState.CAR_BIN_OK, HookPayState.CAR_HOLDER_OK, HookPayState.DIGIT_PASSWORD, HookPayState.AUTHORIZING, HookPayState.WAITING_REMOVE_CARD, HookPayState.CONTACTLESS_ON_DEVICE, HookPayState.SOLVING_PENDINGS, HookPayState.DOWNLOADING_TABLES, HookPayState.RECORDING_TABLES].includes(state), [state]);
|
|
7
|
+
const isSuccess = useMemo(() => [HookPayState.APPROVED, HookPayState.SUCCESS, HookPayState.SALE_END, HookPayState.ACTIVATION_SUCCESS].includes(state), [state]);
|
|
8
|
+
const isError = useMemo(() => state === HookPayState.ERROR || state === HookPayState.REPROVED || state === HookPayState.CONTACTLESS_ERROR, [state]);
|
|
9
|
+
return {
|
|
10
|
+
isProcessing,
|
|
11
|
+
isSuccess,
|
|
12
|
+
isError
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
;
|
|
16
|
+
//# sourceMappingURL=useBoolStates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useMemo","HookPayState","useBoolStates","state","isProcessing","PROCESSING","WAITING_CARD","CARD_INSERTED","USE_CHIP","USE_TARJA","ENTER_PASSWORD","ENTER_CVV","ENTER_CAR_BIN","ENTER_CAR_HOLDER","PIN_OK","CVV_OK","CAR_BIN_OK","CAR_HOLDER_OK","DIGIT_PASSWORD","AUTHORIZING","WAITING_REMOVE_CARD","CONTACTLESS_ON_DEVICE","SOLVING_PENDINGS","DOWNLOADING_TABLES","RECORDING_TABLES","includes","isSuccess","APPROVED","SUCCESS","SALE_END","ACTIVATION_SUCCESS","isError","ERROR","REPROVED","CONTACTLESS_ERROR"],"sourceRoot":"..\\..\\..\\src","sources":["hooks/useBoolStates.ts"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,OAAO;AAE/B,SAASC,YAAY,QAAQ,sBAAmB;AAEhD,eAAe,SAASC,aAAaA,CAACC,KAAmB,EAAE;EACvD,MAAMC,YAAY,GAAGJ,OAAO,CAAC,MAAM,CAC/BC,YAAY,CAACI,UAAU,EACvBJ,YAAY,CAACK,YAAY,EACzBL,YAAY,CAACM,aAAa,EAC1BN,YAAY,CAACO,QAAQ,EACrBP,YAAY,CAACQ,SAAS,EACtBR,YAAY,CAACS,cAAc,EAC3BT,YAAY,CAACU,SAAS,EACtBV,YAAY,CAACW,aAAa,EAC1BX,YAAY,CAACY,gBAAgB,EAC7BZ,YAAY,CAACa,MAAM,EACnBb,YAAY,CAACc,MAAM,EACnBd,YAAY,CAACe,UAAU,EACvBf,YAAY,CAACgB,aAAa,EAC1BhB,YAAY,CAACiB,cAAc,EAC3BjB,YAAY,CAACkB,WAAW,EACxBlB,YAAY,CAACmB,mBAAmB,EAChCnB,YAAY,CAACoB,qBAAqB,EAClCpB,YAAY,CAACqB,gBAAgB,EAC7BrB,YAAY,CAACsB,kBAAkB,EAC/BtB,YAAY,CAACuB,gBAAgB,CAChC,CAACC,QAAQ,CAACtB,KAAK,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;EAE3B,MAAMuB,SAAS,GAAG1B,OAAO,CAAC,MAAM,CAC5BC,YAAY,CAAC0B,QAAQ,EACrB1B,YAAY,CAAC2B,OAAO,EACpB3B,YAAY,CAAC4B,QAAQ,EACrB5B,YAAY,CAAC6B,kBAAkB,CAClC,CAACL,QAAQ,CAACtB,KAAK,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;EAE3B,MAAM4B,OAAO,GAAG/B,OAAO,CAAC,MACpBG,KAAK,KAAKF,YAAY,CAAC+B,KAAK,IAC5B7B,KAAK,KAAKF,YAAY,CAACgC,QAAQ,IAC/B9B,KAAK,KAAKF,YAAY,CAACiC,iBAAiB,EACxC,CAAC/B,KAAK,CACV,CAAC;EAED,OAAO;IAAEC,YAAY;IAAEsB,SAAS;IAAEK;EAAQ,CAAC;AAC/C;AAAC","ignoreList":[]}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useCallback, useRef, useState, useEffect } from "react";
|
|
4
|
+
import PagSeguro from "../pag_seguro.js";
|
|
5
|
+
import { HookPayState, PaymentEvent } from "../types/payments.js";
|
|
6
|
+
import useBoolStates from "./useBoolStates.js";
|
|
7
|
+
export default function usePagPayment() {
|
|
8
|
+
const aborting = useRef(false);
|
|
9
|
+
const [state, setState] = useState(HookPayState.IDLE);
|
|
10
|
+
const [message, setMessage] = useState("");
|
|
11
|
+
const [errors, setErrors] = useState(null);
|
|
12
|
+
const {
|
|
13
|
+
isError,
|
|
14
|
+
isSuccess,
|
|
15
|
+
isProcessing
|
|
16
|
+
} = useBoolStates(state);
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
return () => {
|
|
19
|
+
if (isProcessing) PagSeguro.abort_current_operation();
|
|
20
|
+
};
|
|
21
|
+
}, []);
|
|
22
|
+
const request_payment = useCallback(async data => {
|
|
23
|
+
try {
|
|
24
|
+
aborting.current = false;
|
|
25
|
+
setState(HookPayState.PROCESSING);
|
|
26
|
+
setMessage("Processando...");
|
|
27
|
+
const r = await PagSeguro.do_payment(data, (msg, code) => {
|
|
28
|
+
switch (code) {
|
|
29
|
+
case PaymentEvent.WAITING_CARD:
|
|
30
|
+
setState(HookPayState.WAITING_CARD);
|
|
31
|
+
setMessage("Insira, passe ou aproxime o cartão");
|
|
32
|
+
break;
|
|
33
|
+
case PaymentEvent.INSERTED_CARD:
|
|
34
|
+
setState(HookPayState.CARD_INSERTED);
|
|
35
|
+
setMessage("Cartão identificado");
|
|
36
|
+
break;
|
|
37
|
+
case PaymentEvent.WAITING_REMOVE_CARD:
|
|
38
|
+
setState(HookPayState.WAITING_REMOVE_CARD);
|
|
39
|
+
setMessage("Remova o cartão");
|
|
40
|
+
break;
|
|
41
|
+
case PaymentEvent.SALE_END:
|
|
42
|
+
setState(HookPayState.SALE_END);
|
|
43
|
+
setMessage("Transação finalizada");
|
|
44
|
+
break;
|
|
45
|
+
case PaymentEvent.AUTHORIZING:
|
|
46
|
+
setState(HookPayState.AUTHORIZING);
|
|
47
|
+
setMessage("Autorizando...");
|
|
48
|
+
break;
|
|
49
|
+
case PaymentEvent.REMOVED_CARD:
|
|
50
|
+
setState(HookPayState.CARD_REMOVED);
|
|
51
|
+
setMessage("Cartão removido");
|
|
52
|
+
break;
|
|
53
|
+
case PaymentEvent.PIN_REQUESTED:
|
|
54
|
+
setState(HookPayState.ENTER_PASSWORD);
|
|
55
|
+
setMessage("Digite sua senha");
|
|
56
|
+
break;
|
|
57
|
+
case PaymentEvent.PIN_OK:
|
|
58
|
+
setState(HookPayState.PIN_OK);
|
|
59
|
+
setMessage("Senha confirmada");
|
|
60
|
+
break;
|
|
61
|
+
case PaymentEvent.APPROVED:
|
|
62
|
+
setState(HookPayState.APPROVED);
|
|
63
|
+
setMessage("Pagamento aprovado!");
|
|
64
|
+
break;
|
|
65
|
+
case PaymentEvent.NO_PASSWORD:
|
|
66
|
+
setState(HookPayState.ENTER_PASSWORD);
|
|
67
|
+
setMessage("Digite sua senha");
|
|
68
|
+
break;
|
|
69
|
+
case PaymentEvent.CVV_REQUESTED:
|
|
70
|
+
setState(HookPayState.ENTER_CVV);
|
|
71
|
+
setMessage("Digite o CVV do cartão");
|
|
72
|
+
break;
|
|
73
|
+
case PaymentEvent.CVV_OK:
|
|
74
|
+
setState(HookPayState.CVV_OK);
|
|
75
|
+
setMessage("CVV confirmado");
|
|
76
|
+
break;
|
|
77
|
+
case PaymentEvent.CAR_BIN_REQUESTED:
|
|
78
|
+
setState(HookPayState.ENTER_CAR_BIN);
|
|
79
|
+
setMessage("Digite o BIN do cartão");
|
|
80
|
+
break;
|
|
81
|
+
case PaymentEvent.CAR_BIN_OK:
|
|
82
|
+
setState(HookPayState.CAR_BIN_OK);
|
|
83
|
+
setMessage("BIN confirmado");
|
|
84
|
+
break;
|
|
85
|
+
case PaymentEvent.CAR_HOLDER_REQUESTED:
|
|
86
|
+
setState(HookPayState.ENTER_CAR_HOLDER);
|
|
87
|
+
setMessage("Digite o nome do portador");
|
|
88
|
+
break;
|
|
89
|
+
case PaymentEvent.CAR_HOLDER_OK:
|
|
90
|
+
setState(HookPayState.CAR_HOLDER_OK);
|
|
91
|
+
setMessage("Nome confirmado");
|
|
92
|
+
break;
|
|
93
|
+
case PaymentEvent.ACTIVATION_SUCCESS:
|
|
94
|
+
setState(HookPayState.ACTIVATION_SUCCESS);
|
|
95
|
+
setMessage("Ativação realizada com sucesso");
|
|
96
|
+
break;
|
|
97
|
+
case PaymentEvent.DIGIT_PASSWORD:
|
|
98
|
+
setState(HookPayState.DIGIT_PASSWORD);
|
|
99
|
+
setMessage("Digitando senha...");
|
|
100
|
+
break;
|
|
101
|
+
case PaymentEvent.CONTACTLESS_ERROR:
|
|
102
|
+
setState(HookPayState.CONTACTLESS_ERROR);
|
|
103
|
+
setMessage("Erro na leitura por aproximação");
|
|
104
|
+
break;
|
|
105
|
+
case PaymentEvent.CONTACTLESS_ON_DEVICE:
|
|
106
|
+
setState(HookPayState.CONTACTLESS_ON_DEVICE);
|
|
107
|
+
setMessage("Siga as instruções no dispositivo");
|
|
108
|
+
break;
|
|
109
|
+
case PaymentEvent.SUCCESS:
|
|
110
|
+
setState(HookPayState.SUCCESS);
|
|
111
|
+
setMessage("Transação concluída com sucesso!");
|
|
112
|
+
break;
|
|
113
|
+
/* case PaymentEvent.CUSTOM_MESSAGE:
|
|
114
|
+
if (msg) {
|
|
115
|
+
setMessage(msg);
|
|
116
|
+
}
|
|
117
|
+
break;
|
|
118
|
+
case PaymentEvent.DEFAULT:
|
|
119
|
+
if (msg) {
|
|
120
|
+
setMessage(msg);
|
|
121
|
+
}
|
|
122
|
+
break; */
|
|
123
|
+
case PaymentEvent.NOT_APPROVED:
|
|
124
|
+
setState(HookPayState.REPROVED);
|
|
125
|
+
setMessage("Pagamento reprovado!");
|
|
126
|
+
break;
|
|
127
|
+
case PaymentEvent.USE_CHIP:
|
|
128
|
+
setState(HookPayState.USE_CHIP);
|
|
129
|
+
setMessage("Insira o cartão com chip");
|
|
130
|
+
break;
|
|
131
|
+
case PaymentEvent.USE_TARJA:
|
|
132
|
+
setState(HookPayState.USE_TARJA);
|
|
133
|
+
setMessage("Use a tarja do cartão!");
|
|
134
|
+
break;
|
|
135
|
+
case PaymentEvent.SOLVE_PENDINGS:
|
|
136
|
+
setState(HookPayState.SOLVING_PENDINGS);
|
|
137
|
+
setMessage("Resolvendo pendências...");
|
|
138
|
+
break;
|
|
139
|
+
case PaymentEvent.DOWNLOADING_TABLES:
|
|
140
|
+
setState(HookPayState.DOWNLOADING_TABLES);
|
|
141
|
+
setMessage("Fazendo carga de tabelas...");
|
|
142
|
+
break;
|
|
143
|
+
case PaymentEvent.RECORDING_TABLES:
|
|
144
|
+
setState(HookPayState.RECORDING_TABLES);
|
|
145
|
+
setMessage("Gravando tabelas...");
|
|
146
|
+
break;
|
|
147
|
+
case PaymentEvent.ON_EVENT_ERROR:
|
|
148
|
+
setState(HookPayState.ERROR);
|
|
149
|
+
setMessage(msg || "Erro no evento");
|
|
150
|
+
break;
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
setState(HookPayState.IDLE);
|
|
154
|
+
setMessage("");
|
|
155
|
+
aborting.current = false;
|
|
156
|
+
return r;
|
|
157
|
+
} catch (err) {
|
|
158
|
+
aborting.current = false;
|
|
159
|
+
setErrors(err);
|
|
160
|
+
setState(HookPayState.ERROR);
|
|
161
|
+
const error = err;
|
|
162
|
+
setMessage(error.message || "Falha no pagamento");
|
|
163
|
+
return Promise.reject(err);
|
|
164
|
+
}
|
|
165
|
+
}, []);
|
|
166
|
+
const abort_operation = useCallback(() => {
|
|
167
|
+
if (aborting.current) return;
|
|
168
|
+
aborting.current = true;
|
|
169
|
+
PagSeguro.abort_current_operation();
|
|
170
|
+
}, [aborting]);
|
|
171
|
+
const reset = useCallback(() => {
|
|
172
|
+
if (isProcessing) {
|
|
173
|
+
console.warn("Não é possível resetar enquanto há uma operação em andamento, por favor cancele a operação antes!");
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
176
|
+
setState(HookPayState.IDLE);
|
|
177
|
+
setMessage("");
|
|
178
|
+
setErrors(null);
|
|
179
|
+
aborting.current = false;
|
|
180
|
+
return true;
|
|
181
|
+
}, []);
|
|
182
|
+
return {
|
|
183
|
+
request_payment,
|
|
184
|
+
abort_operation,
|
|
185
|
+
reset,
|
|
186
|
+
state,
|
|
187
|
+
message,
|
|
188
|
+
errors,
|
|
189
|
+
isError,
|
|
190
|
+
isSuccess,
|
|
191
|
+
isProcessing
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=usePagPayment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCallback","useRef","useState","useEffect","PagSeguro","HookPayState","PaymentEvent","useBoolStates","usePagPayment","aborting","state","setState","IDLE","message","setMessage","errors","setErrors","isError","isSuccess","isProcessing","abort_current_operation","request_payment","data","current","PROCESSING","r","do_payment","msg","code","WAITING_CARD","INSERTED_CARD","CARD_INSERTED","WAITING_REMOVE_CARD","SALE_END","AUTHORIZING","REMOVED_CARD","CARD_REMOVED","PIN_REQUESTED","ENTER_PASSWORD","PIN_OK","APPROVED","NO_PASSWORD","CVV_REQUESTED","ENTER_CVV","CVV_OK","CAR_BIN_REQUESTED","ENTER_CAR_BIN","CAR_BIN_OK","CAR_HOLDER_REQUESTED","ENTER_CAR_HOLDER","CAR_HOLDER_OK","ACTIVATION_SUCCESS","DIGIT_PASSWORD","CONTACTLESS_ERROR","CONTACTLESS_ON_DEVICE","SUCCESS","NOT_APPROVED","REPROVED","USE_CHIP","USE_TARJA","SOLVE_PENDINGS","SOLVING_PENDINGS","DOWNLOADING_TABLES","RECORDING_TABLES","ON_EVENT_ERROR","ERROR","err","error","Promise","reject","abort_operation","reset","console","warn"],"sourceRoot":"..\\..\\..\\src","sources":["hooks/usePagPayment.ts"],"mappings":"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","ignoreList":[]}
|