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

|
|
227
383
|
|
|
228
384
|
Thank you for your support! 🚀
|
|
229
385
|
|
|
@@ -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":[]}
|