react-native-pos-pagseguro 1.0.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/LICENSE +20 -0
- package/PosPagseguro.podspec +29 -0
- package/README.md +193 -0
- package/android/CMakeLists.txt +24 -0
- package/android/build.gradle +132 -0
- package/android/gradle.properties +5 -0
- package/android/libs/wrapper-1.30.52.aar +0 -0
- package/android/src/main/AndroidManifest.xml +2 -0
- package/android/src/main/cpp/cpp-adapter.cpp +6 -0
- package/android/src/main/java/com/margelo/nitro/pospagseguro/PosPagseguro.kt +251 -0
- package/android/src/main/java/com/margelo/nitro/pospagseguro/PosPagseguroPackage.kt +23 -0
- package/android/src/main/java/com/margelo/nitro/pospagseguro/maps/SubAcquirer.kt +23 -0
- package/android/src/main/java/com/margelo/nitro/pospagseguro/maps/TransactionResult.kt +53 -0
- package/android/src/main/java/com/margelo/nitro/pospagseguro/maps/Userdata.kt +17 -0
- package/ios/PosPagseguro.swift +5 -0
- package/lib/module/PosPagseguro.nitro.js +4 -0
- package/lib/module/PosPagseguro.nitro.js.map +1 -0
- package/lib/module/index.js +7 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/pag_seguro.js +290 -0
- package/lib/module/pag_seguro.js.map +1 -0
- package/lib/module/types/device.js +71 -0
- package/lib/module/types/device.js.map +1 -0
- package/lib/module/types/exceptions.js +16 -0
- package/lib/module/types/exceptions.js.map +1 -0
- package/lib/module/types/payments.js +84 -0
- package/lib/module/types/payments.js.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/PosPagseguro.nitro.d.ts +27 -0
- package/lib/typescript/src/PosPagseguro.nitro.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +7 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/pag_seguro.d.ts +188 -0
- package/lib/typescript/src/pag_seguro.d.ts.map +1 -0
- package/lib/typescript/src/types/device.d.ts +92 -0
- package/lib/typescript/src/types/device.d.ts.map +1 -0
- package/lib/typescript/src/types/exceptions.d.ts +16 -0
- package/lib/typescript/src/types/exceptions.d.ts.map +1 -0
- package/lib/typescript/src/types/payments.d.ts +205 -0
- package/lib/typescript/src/types/payments.d.ts.map +1 -0
- package/nitro.json +16 -0
- package/nitrogen/generated/android/c++/JCapabilities.hpp +100 -0
- package/nitrogen/generated/android/c++/JCardIssuerNationality.hpp +61 -0
- package/nitrogen/generated/android/c++/JCustomError.hpp +61 -0
- package/nitrogen/generated/android/c++/JFunc_void_std__string.hpp +76 -0
- package/nitrogen/generated/android/c++/JHybridPosPagseguroSpec.cpp +248 -0
- package/nitrogen/generated/android/c++/JHybridPosPagseguroSpec.hpp +81 -0
- package/nitrogen/generated/android/c++/JInstallmentTypes.hpp +61 -0
- package/nitrogen/generated/android/c++/JPaymentData.hpp +81 -0
- package/nitrogen/generated/android/c++/JPaymentTypes.hpp +64 -0
- package/nitrogen/generated/android/c++/JSubAcquirer.hpp +101 -0
- package/nitrogen/generated/android/c++/JTransactionResult.hpp +208 -0
- package/nitrogen/generated/android/c++/JUserData.hpp +86 -0
- package/nitrogen/generated/android/c++/JVariant_CustomError_TransactionResult.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_CustomError_TransactionResult.hpp +75 -0
- package/nitrogen/generated/android/c++/JVariant_Double_CustomError.cpp +26 -0
- package/nitrogen/generated/android/c++/JVariant_Double_CustomError.hpp +70 -0
- package/nitrogen/generated/android/c++/JVoidPayData.hpp +72 -0
- package/nitrogen/generated/android/c++/JVoidType.hpp +58 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pospagseguro/Capabilities.kt +37 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pospagseguro/CardIssuerNationality.kt +24 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pospagseguro/CustomError.kt +41 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pospagseguro/Func_void_std__string.kt +80 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pospagseguro/HybridPosPagseguroSpec.kt +132 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pospagseguro/InstallmentTypes.kt +24 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pospagseguro/PaymentData.kt +53 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pospagseguro/PaymentTypes.kt +25 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pospagseguro/SubAcquirer.kt +71 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pospagseguro/TransactionResult.kt +149 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pospagseguro/UserData.kt +59 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pospagseguro/Variant_CustomError_TransactionResult.kt +59 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pospagseguro/Variant_Double_CustomError.kt +59 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pospagseguro/VoidPayData.kt +47 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pospagseguro/VoidType.kt +23 -0
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/pospagseguro/pospagseguroOnLoad.kt +35 -0
- package/nitrogen/generated/android/pospagseguro+autolinking.cmake +83 -0
- package/nitrogen/generated/android/pospagseguro+autolinking.gradle +27 -0
- package/nitrogen/generated/android/pospagseguroOnLoad.cpp +46 -0
- package/nitrogen/generated/android/pospagseguroOnLoad.hpp +25 -0
- package/nitrogen/generated/ios/PosPagseguro+autolinking.rb +60 -0
- package/nitrogen/generated/ios/PosPagseguro-Swift-Cxx-Bridge.cpp +65 -0
- package/nitrogen/generated/ios/PosPagseguro-Swift-Cxx-Bridge.hpp +422 -0
- package/nitrogen/generated/ios/PosPagseguro-Swift-Cxx-Umbrella.hpp +81 -0
- package/nitrogen/generated/ios/c++/HybridPosPagseguroSpecSwift.cpp +11 -0
- package/nitrogen/generated/ios/c++/HybridPosPagseguroSpecSwift.hpp +236 -0
- package/nitrogen/generated/ios/swift/Capabilities.swift +96 -0
- package/nitrogen/generated/ios/swift/CardIssuerNationality.swift +44 -0
- package/nitrogen/generated/ios/swift/CustomError.swift +35 -0
- package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_std__string.swift +47 -0
- package/nitrogen/generated/ios/swift/Func_void_std__variant_CustomError__TransactionResult_.swift +59 -0
- package/nitrogen/generated/ios/swift/Func_void_std__variant_double__CustomError_.swift +59 -0
- package/nitrogen/generated/ios/swift/HybridPosPagseguroSpec.swift +72 -0
- package/nitrogen/generated/ios/swift/HybridPosPagseguroSpec_cxx.swift +434 -0
- package/nitrogen/generated/ios/swift/InstallmentTypes.swift +44 -0
- package/nitrogen/generated/ios/swift/PaymentData.swift +74 -0
- package/nitrogen/generated/ios/swift/PaymentTypes.swift +48 -0
- package/nitrogen/generated/ios/swift/SubAcquirer.swift +85 -0
- package/nitrogen/generated/ios/swift/TransactionResult.swift +674 -0
- package/nitrogen/generated/ios/swift/UserData.swift +169 -0
- package/nitrogen/generated/ios/swift/Variant_CustomError_TransactionResult.swift +18 -0
- package/nitrogen/generated/ios/swift/Variant_Double_CustomError.swift +18 -0
- package/nitrogen/generated/ios/swift/VoidPayData.swift +64 -0
- package/nitrogen/generated/ios/swift/VoidType.swift +40 -0
- package/nitrogen/generated/shared/c++/Capabilities.hpp +76 -0
- package/nitrogen/generated/shared/c++/CardIssuerNationality.hpp +80 -0
- package/nitrogen/generated/shared/c++/CustomError.hpp +87 -0
- package/nitrogen/generated/shared/c++/HybridPosPagseguroSpec.cpp +37 -0
- package/nitrogen/generated/shared/c++/HybridPosPagseguroSpec.hpp +102 -0
- package/nitrogen/generated/shared/c++/InstallmentTypes.hpp +63 -0
- package/nitrogen/generated/shared/c++/PaymentData.hpp +108 -0
- package/nitrogen/generated/shared/c++/PaymentTypes.hpp +69 -0
- package/nitrogen/generated/shared/c++/SubAcquirer.hpp +127 -0
- package/nitrogen/generated/shared/c++/TransactionResult.hpp +234 -0
- package/nitrogen/generated/shared/c++/UserData.hpp +112 -0
- package/nitrogen/generated/shared/c++/VoidPayData.hpp +98 -0
- package/nitrogen/generated/shared/c++/VoidType.hpp +62 -0
- package/package.json +179 -0
- package/src/PosPagseguro.nitro.ts +32 -0
- package/src/index.ts +19 -0
- package/src/pag_seguro.ts +306 -0
- package/src/types/device.ts +97 -0
- package/src/types/exceptions.ts +19 -0
- package/src/types/payments.ts +215 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 CECSMH
|
|
4
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
6
|
+
in the Software without restriction, including without limitation the rights
|
|
7
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
8
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
9
|
+
furnished to do so, subject to the following conditions:
|
|
10
|
+
|
|
11
|
+
The above copyright notice and this permission notice shall be included in all
|
|
12
|
+
copies or substantial portions of the Software.
|
|
13
|
+
|
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
15
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
16
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
17
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
18
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
19
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
20
|
+
SOFTWARE.
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
require "json"
|
|
2
|
+
|
|
3
|
+
package = JSON.parse(File.read(File.join(__dir__, "package.json")))
|
|
4
|
+
|
|
5
|
+
Pod::Spec.new do |s|
|
|
6
|
+
s.name = "PosPagseguro"
|
|
7
|
+
s.version = package["version"]
|
|
8
|
+
s.summary = package["description"]
|
|
9
|
+
s.homepage = package["homepage"]
|
|
10
|
+
s.license = package["license"]
|
|
11
|
+
s.authors = package["author"]
|
|
12
|
+
|
|
13
|
+
s.platforms = { :ios => min_ios_version_supported }
|
|
14
|
+
s.source = { :git => "https://github.com/CECSMH/react-native-pos-pagseguro.git", :tag => "#{s.version}" }
|
|
15
|
+
|
|
16
|
+
s.source_files = [
|
|
17
|
+
"ios/**/*.{swift}",
|
|
18
|
+
"ios/**/*.{m,mm}",
|
|
19
|
+
"cpp/**/*.{hpp,cpp}",
|
|
20
|
+
]
|
|
21
|
+
|
|
22
|
+
s.dependency 'React-jsi'
|
|
23
|
+
s.dependency 'React-callinvoker'
|
|
24
|
+
|
|
25
|
+
load 'nitrogen/generated/ios/PosPagseguro+autolinking.rb'
|
|
26
|
+
add_nitrogen_files(s)
|
|
27
|
+
|
|
28
|
+
install_modules_dependencies(s)
|
|
29
|
+
end
|
package/README.md
ADDED
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
# react-native-pos-pagseguro
|
|
2
|
+
|
|
3
|
+
**PagSeguro POS SDK for React Native** – Integration with PagSeguro terminals (Moderninha, Moderninha2, etc.) using react-native-nitro-modules.
|
|
4
|
+
|
|
5
|
+
Supports credit, debit, voucher, PIX payments, installments, cancellations, receipt printing, and more.
|
|
6
|
+
[](https://badge.fury.io/js/react-native-pos-pagseguro)
|
|
7
|
+
[](https://www.android.com)
|
|
8
|
+
[](https://opensource.org/licenses/MIT)
|
|
9
|
+
|
|
10
|
+
## Features
|
|
11
|
+
|
|
12
|
+
- **Initialize and activate** PagSeguro terminals
|
|
13
|
+
- **Payments:** Credit, Debit, Voucher, PIX
|
|
14
|
+
- **Installments:** (à vista, store installment without interest, buyer installment with interest)
|
|
15
|
+
- **Cancel/refund:** transactions (same-day only)
|
|
16
|
+
- Get last approved transaction
|
|
17
|
+
- **Reprint:** customer or merchant receipt
|
|
18
|
+
- Custom image printing (file path or Base64)
|
|
19
|
+
- Abort ongoing operations
|
|
20
|
+
- Reboot terminal
|
|
21
|
+
- **Device info:** model, serial number, user data, sub-acquirer data
|
|
22
|
+
- **Capability detection:** printer, NFC, chip, magnetic stripe, etc.
|
|
23
|
+
- Progress callbacks during payment flow
|
|
24
|
+
|
|
25
|
+
## Installation
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npm install react-native-pos-pagseguro
|
|
29
|
+
```
|
|
30
|
+
## or
|
|
31
|
+
```bash
|
|
32
|
+
yarn add react-native-pos-pagseguro
|
|
33
|
+
```
|
|
34
|
+
### Post-install steps
|
|
35
|
+
|
|
36
|
+
Since this library uses **react-native-nitro-modules**, you need to rebuild your app after installation:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npx react-native run-android
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
## Requirements
|
|
44
|
+
|
|
45
|
+
- **Platform**: Android only
|
|
46
|
+
- React Native ≥ 0.71
|
|
47
|
+
- react-native-nitro-modules ≥ 0.30 (for older RN versions)
|
|
48
|
+
|
|
49
|
+
## Usage
|
|
50
|
+
|
|
51
|
+
### 1. Initialize the terminal (required first step)
|
|
52
|
+
|
|
53
|
+
```typescript
|
|
54
|
+
import PagSeguro from 'react-native-pos-pagseguro';
|
|
55
|
+
|
|
56
|
+
// Must be called once with your activation code provided by PagSeguro
|
|
57
|
+
try {
|
|
58
|
+
PagSeguro.initialize('YOUR_ACTIVATION_CODE_HERE');
|
|
59
|
+
console.log('Terminal initialized successfully');
|
|
60
|
+
} catch (error) {
|
|
61
|
+
console.error('Initialization failed:', error);
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
### 2. Make a payment
|
|
67
|
+
```typescript
|
|
68
|
+
import PagSeguro, { PaymentTypes, InstallmentTypes } from 'react-native-pos-pagseguro';
|
|
69
|
+
|
|
70
|
+
try {
|
|
71
|
+
const result = await PagSeguro.do_payment({
|
|
72
|
+
amount: 1000, // R$ 10,00 (in cents)
|
|
73
|
+
type: PaymentTypes.CREDIT,
|
|
74
|
+
installment_type: InstallmentTypes.SELLER_INSTALLMENT,
|
|
75
|
+
installments: 3,
|
|
76
|
+
print_receipt: true,
|
|
77
|
+
user_reference: 12345, // optional
|
|
78
|
+
}, (statusMessage) => {
|
|
79
|
+
console.log('Progress:', statusMessage); // e.g., "APROXIME, INSIRA OU PASSE O CARTÃO"
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
console.log('Payment approved!', result.transaction_code, result.nsu);
|
|
83
|
+
} catch (error) {
|
|
84
|
+
console.error('Payment failed:', error.code, error.message);
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
### 3. Cancel a payment (same day only)
|
|
90
|
+
```typescript
|
|
91
|
+
try {
|
|
92
|
+
const cancelResult = await PagSeguro.void_payment({
|
|
93
|
+
transaction_code: '123456789',
|
|
94
|
+
transaction_id: 'ABCDEF123456',
|
|
95
|
+
print_receipt: true,
|
|
96
|
+
}, (statusMessage) => {
|
|
97
|
+
console.log('Progress:', statusMessage); // e.g., "APROXIME, INSIRA OU PASSE O CARTÃO"
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
console.log('Cancellation successful:', cancelResult);
|
|
101
|
+
} catch (error) {
|
|
102
|
+
console.error('Cancellation failed:', error);
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
### 4. Reprint receipts
|
|
108
|
+
```typescript
|
|
109
|
+
try {
|
|
110
|
+
await PagSeguro.reprint_customer_receipt();
|
|
111
|
+
console.log('Customer receipt reprinted');
|
|
112
|
+
} catch (error) {
|
|
113
|
+
console.error('Print failed:', error);
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### 5. Check device capabilities
|
|
118
|
+
```typescript
|
|
119
|
+
if (PagSeguro.capabilities.has_printer()) {
|
|
120
|
+
console.log('This terminal has a thermal printer');
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
if (PagSeguro.capabilities.has_picc()) {
|
|
124
|
+
console.log('Supports contactless (NFC) payments');
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### 6. Get device info
|
|
129
|
+
```typescript
|
|
130
|
+
console.log('Model:', PagSeguro.get_model());
|
|
131
|
+
console.log('Serial:', PagSeguro.get_serial_number());
|
|
132
|
+
console.log('User data:', PagSeguro.get_userdata());
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Error Handling
|
|
136
|
+
|
|
137
|
+
|
|
138
|
+
- `PaymentError` – Payment, validation, or communication issues
|
|
139
|
+
- `PrintError` – Printing or reprinting failures
|
|
140
|
+
- `AbordError` – Failure when trying to abort an operation
|
|
141
|
+
```typescript
|
|
142
|
+
try {
|
|
143
|
+
await PagSeguro.do_payment(data);
|
|
144
|
+
} catch (e) {
|
|
145
|
+
if (e instanceof PaymentError) {
|
|
146
|
+
console.log('Payment error:', e.code, e.message);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## API Reference
|
|
152
|
+
|
|
153
|
+
All types and enums are fully typed. Key exports:
|
|
154
|
+
|
|
155
|
+
- `PaymentData`
|
|
156
|
+
- `TransactionResult`
|
|
157
|
+
- `VoidPayData`
|
|
158
|
+
- `PaymentTypes`
|
|
159
|
+
- `InstallmentTypes`
|
|
160
|
+
- `VoidType`
|
|
161
|
+
- `capabilities` (object with detection methods)
|
|
162
|
+
|
|
163
|
+
## Contributing
|
|
164
|
+
|
|
165
|
+
Contributions are welcome! To contribute:
|
|
166
|
+
|
|
167
|
+
1. Fork the repository.
|
|
168
|
+
2. Create a feature branch (`git checkout -b feature/your-feature`).
|
|
169
|
+
3. Commit your changes (`git commit -m 'Add your feature'`).
|
|
170
|
+
4. Push to the branch (`git push origin feature/your-feature`).
|
|
171
|
+
5. Open a pull request.
|
|
172
|
+
|
|
173
|
+
Please include tests and update documentation as needed.
|
|
174
|
+
|
|
175
|
+
## Support the Project ☕
|
|
176
|
+
|
|
177
|
+
If you've found this library helpful, consider buying me a coffee!
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
Scan the QR code to donate (Lightning⚡):
|
|
182
|
+
|
|
183
|
+

|
|
184
|
+
|
|
185
|
+
Thank you for your support! 🚀
|
|
186
|
+
|
|
187
|
+
## License
|
|
188
|
+
|
|
189
|
+
MIT License. See LICENSE for details.
|
|
190
|
+
|
|
191
|
+
## Support
|
|
192
|
+
|
|
193
|
+
For issues or questions, open an issue on the GitHub repository or contact the maintainers.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
project(pospagseguro)
|
|
2
|
+
cmake_minimum_required(VERSION 3.9.0)
|
|
3
|
+
|
|
4
|
+
set(PACKAGE_NAME pospagseguro)
|
|
5
|
+
set(CMAKE_VERBOSE_MAKEFILE ON)
|
|
6
|
+
set(CMAKE_CXX_STANDARD 20)
|
|
7
|
+
|
|
8
|
+
# Define C++ library and add all sources
|
|
9
|
+
add_library(${PACKAGE_NAME} SHARED src/main/cpp/cpp-adapter.cpp)
|
|
10
|
+
|
|
11
|
+
# Add Nitrogen specs :)
|
|
12
|
+
include(${CMAKE_SOURCE_DIR}/../nitrogen/generated/android/pospagseguro+autolinking.cmake)
|
|
13
|
+
|
|
14
|
+
# Set up local includes
|
|
15
|
+
include_directories("src/main/cpp" "../cpp")
|
|
16
|
+
|
|
17
|
+
find_library(LOG_LIB log)
|
|
18
|
+
|
|
19
|
+
# Link all libraries together
|
|
20
|
+
target_link_libraries(
|
|
21
|
+
${PACKAGE_NAME}
|
|
22
|
+
${LOG_LIB}
|
|
23
|
+
android # <-- Android core
|
|
24
|
+
)
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
buildscript {
|
|
2
|
+
ext.getExtOrDefault = {name ->
|
|
3
|
+
return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties['PosPagseguro_' + name]
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
repositories {
|
|
7
|
+
google()
|
|
8
|
+
mavenCentral()
|
|
9
|
+
maven { url 'https://github.com/pagseguro/PlugPagServiceWrapper/raw/master' }
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
dependencies {
|
|
13
|
+
classpath "com.android.tools.build:gradle:8.7.2"
|
|
14
|
+
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${getExtOrDefault('kotlinVersion')}"
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
def reactNativeArchitectures() {
|
|
19
|
+
def value = rootProject.getProperties().get("reactNativeArchitectures")
|
|
20
|
+
return value ? value.split(",") : ["armeabi-v7a", "x86", "x86_64", "arm64-v8a"]
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
apply plugin: "com.android.library"
|
|
24
|
+
apply plugin: "org.jetbrains.kotlin.android"
|
|
25
|
+
apply plugin: "kotlin-android"
|
|
26
|
+
apply from: '../nitrogen/generated/android/pospagseguro+autolinking.gradle'
|
|
27
|
+
|
|
28
|
+
apply plugin: "com.facebook.react"
|
|
29
|
+
|
|
30
|
+
def getExtOrIntegerDefault(name) {
|
|
31
|
+
return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["PosPagseguro_" + name]).toInteger()
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
android {
|
|
35
|
+
namespace "com.margelo.nitro.pospagseguro"
|
|
36
|
+
|
|
37
|
+
compileSdkVersion getExtOrIntegerDefault("compileSdkVersion")
|
|
38
|
+
|
|
39
|
+
defaultConfig {
|
|
40
|
+
minSdkVersion getExtOrIntegerDefault("minSdkVersion")
|
|
41
|
+
targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")
|
|
42
|
+
|
|
43
|
+
externalNativeBuild {
|
|
44
|
+
cmake {
|
|
45
|
+
cppFlags "-frtti -fexceptions -Wall -fstack-protector-all"
|
|
46
|
+
arguments "-DANDROID_STL=c++_shared", "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON"
|
|
47
|
+
abiFilters (*reactNativeArchitectures())
|
|
48
|
+
|
|
49
|
+
buildTypes {
|
|
50
|
+
debug {
|
|
51
|
+
cppFlags "-O1 -g"
|
|
52
|
+
}
|
|
53
|
+
release {
|
|
54
|
+
cppFlags "-O2"
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
externalNativeBuild {
|
|
62
|
+
cmake {
|
|
63
|
+
path "CMakeLists.txt"
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
packagingOptions {
|
|
68
|
+
excludes = [
|
|
69
|
+
"META-INF",
|
|
70
|
+
"META-INF/**",
|
|
71
|
+
"**/libc++_shared.so",
|
|
72
|
+
"**/libfbjni.so",
|
|
73
|
+
"**/libjsi.so",
|
|
74
|
+
"**/libfolly_json.so",
|
|
75
|
+
"**/libfolly_runtime.so",
|
|
76
|
+
"**/libglog.so",
|
|
77
|
+
"**/libhermes.so",
|
|
78
|
+
"**/libhermes-executor-debug.so",
|
|
79
|
+
"**/libhermes_executor.so",
|
|
80
|
+
"**/libreactnative.so",
|
|
81
|
+
"**/libreactnativejni.so",
|
|
82
|
+
"**/libturbomodulejsijni.so",
|
|
83
|
+
"**/libreact_nativemodule_core.so",
|
|
84
|
+
"**/libjscexecutor.so"
|
|
85
|
+
]
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
buildFeatures {
|
|
89
|
+
buildConfig true
|
|
90
|
+
prefab true
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
buildTypes {
|
|
94
|
+
release {
|
|
95
|
+
minifyEnabled false
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
lintOptions {
|
|
100
|
+
disable "GradleCompatible"
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
compileOptions {
|
|
104
|
+
sourceCompatibility JavaVersion.VERSION_1_8
|
|
105
|
+
targetCompatibility JavaVersion.VERSION_1_8
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
sourceSets {
|
|
109
|
+
main {
|
|
110
|
+
java.srcDirs += [
|
|
111
|
+
"generated/java",
|
|
112
|
+
"generated/jni"
|
|
113
|
+
]
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
repositories {
|
|
119
|
+
mavenCentral()
|
|
120
|
+
google()
|
|
121
|
+
maven { url 'https://github.com/pagseguro/PlugPagServiceWrapper/raw/master' }
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
def kotlin_version = getExtOrDefault("kotlinVersion")
|
|
125
|
+
|
|
126
|
+
dependencies {
|
|
127
|
+
implementation(fileTree(dir: "libs", include: ["*.jar", "*.aar"]))
|
|
128
|
+
implementation "com.facebook.react:react-android"
|
|
129
|
+
|
|
130
|
+
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
131
|
+
implementation project(":react-native-nitro-modules")
|
|
132
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
package com.margelo.nitro.pospagseguro
|
|
2
|
+
|
|
3
|
+
import com.margelo.nitro.core.Promise
|
|
4
|
+
import com.margelo.nitro.NitroModules
|
|
5
|
+
import com.margelo.nitro.core.NullType
|
|
6
|
+
import com.margelo.nitro.pospagseguro.maps.*
|
|
7
|
+
|
|
8
|
+
import com.facebook.proguard.annotations.DoNotStrip
|
|
9
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
10
|
+
|
|
11
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.IPlugPagWrapper
|
|
12
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.PlugPag
|
|
13
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.PlugPagPrinterData
|
|
14
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.PlugPagActivationData
|
|
15
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.PlugPagCommand
|
|
16
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.PlugPagCustomPrinterLayout
|
|
17
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.PlugPagEffectuatePreAutoData
|
|
18
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.PlugPagEventData
|
|
19
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.PlugPagEventListener
|
|
20
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.PlugPagExtras
|
|
21
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.PlugPagInitializationResult
|
|
22
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.PlugPagInstallment
|
|
23
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.PlugPagNFCResult
|
|
24
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.PlugPagNearFieldCardData
|
|
25
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.PlugPagPaymentData
|
|
26
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.PlugPagPreAutoData
|
|
27
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.PlugPagPreAutoKeyingData
|
|
28
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.PlugPagPreAutoQueryData
|
|
29
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.PlugPagPrintResult
|
|
30
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.PlugPagPrinterListener
|
|
31
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.PlugPagReceiptSMSData
|
|
32
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.PlugPagStyleData
|
|
33
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.PlugPagTransactionResult
|
|
34
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.TerminalCapabilities
|
|
35
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.PlugPagVoidData
|
|
36
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.data.result.PlugPagCmdExchangeResult
|
|
37
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.exception.PlugPagException
|
|
38
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.listeners.PlugPagNFCListener
|
|
39
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.listeners.PlugPagAbortListener
|
|
40
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.listeners.PlugPagPaymentListener
|
|
41
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.listeners.PlugPagSetStylesListener
|
|
42
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.listeners.PlugPagActivationListener
|
|
43
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.listeners.PlugPagPrintActionListener
|
|
44
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.listeners.PlugPagIsActivatedListener
|
|
45
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.listeners.PlugPagInstallmentsListener
|
|
46
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.listeners.PlugPagAPDUCmdExchangeListener
|
|
47
|
+
import br.com.uol.pagseguro.plugpagservice.wrapper.listeners.PlugPagLastTransactionListener
|
|
48
|
+
|
|
49
|
+
import android.content.Context
|
|
50
|
+
import android.util.Log
|
|
51
|
+
import android.util.Base64
|
|
52
|
+
import java.io.File
|
|
53
|
+
import java.io.FileOutputStream
|
|
54
|
+
|
|
55
|
+
@DoNotStrip
|
|
56
|
+
class PosPagseguro : HybridPosPagseguroSpec() {
|
|
57
|
+
|
|
58
|
+
private val androidContext: Context get() = NitroModules.applicationContext!!
|
|
59
|
+
|
|
60
|
+
private val plug_pag: IPlugPagWrapper by lazy { PlugPag(androidContext) }
|
|
61
|
+
|
|
62
|
+
override fun getModel(): String { return plug_pag.getModel(); }
|
|
63
|
+
override fun getSerialNumber(): String { return plug_pag.getSerialNumber(); }
|
|
64
|
+
override fun getSubAcquirerData(): SubAcquirer? { return plug_pag.getSubAcquirerData()?.toSubAcquirer()}
|
|
65
|
+
override fun getUserData(): UserData { return plug_pag.getUserData().toUserData() }
|
|
66
|
+
|
|
67
|
+
override fun isAuthenticated(): Boolean { return plug_pag.isAuthenticated(); }
|
|
68
|
+
override fun isServiceBusy(): Boolean { return plug_pag.isServiceBusy(); };
|
|
69
|
+
|
|
70
|
+
override fun reboot(): Unit { plug_pag.reboot(); }
|
|
71
|
+
|
|
72
|
+
override fun reprintCustomerReceipt(): Promise<Variant_Double_CustomError> {
|
|
73
|
+
return Promise.async {
|
|
74
|
+
val r = plug_pag.reprintCustomerReceipt();
|
|
75
|
+
if(r.result == PlugPag.RET_OK) return@async Variant_Double_CustomError.create(r.steps.toDouble());
|
|
76
|
+
else return@async Variant_Double_CustomError.create(CustomError(r.errorCode ?: "PRINTERR", r.message ?: "Ocorreu um erro ao tentar reimprimir via do cliente"));
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
override fun reprintStablishmentReceipt(): Promise<Variant_Double_CustomError> {
|
|
81
|
+
return Promise.async {
|
|
82
|
+
val r = plug_pag.reprintStablishmentReceipt();
|
|
83
|
+
if(r.result == PlugPag.RET_OK) return@async Variant_Double_CustomError.create(r.steps.toDouble());
|
|
84
|
+
else return@async Variant_Double_CustomError.create(CustomError(r.errorCode ?: "PRINTERR", r.message ?: "Ocorreu um erro ao tentar reimprimir via do estabelecimento"));
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
override fun printFromBase64(base_64: String, quality: Double, bottomPad: Double?): Promise<Variant_Double_CustomError> {
|
|
89
|
+
val bytes = Base64.decode(base_64, Base64.DEFAULT)
|
|
90
|
+
|
|
91
|
+
val cached_file = File(androidContext.cacheDir, "temp_file")
|
|
92
|
+
|
|
93
|
+
FileOutputStream(cached_file).use { fos ->
|
|
94
|
+
fos.write(bytes)
|
|
95
|
+
fos.flush()
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return printFromFile(cached_file.absolutePath, quality, bottomPad);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
override fun printFromFile(file_path: String, quality: Double, bottomPad: Double?): Promise<Variant_Double_CustomError> {
|
|
102
|
+
return Promise.async{
|
|
103
|
+
val q = quality.toInt();
|
|
104
|
+
val bp = bottomPad?.toInt() ?: PlugPag.MIN_PRINTER_STEPS
|
|
105
|
+
|
|
106
|
+
val r = plug_pag.printFromFile(PlugPagPrinterData(file_path, q, bp))
|
|
107
|
+
if(r.result == PlugPag.RET_OK) return@async Variant_Double_CustomError.create(r.steps.toDouble());
|
|
108
|
+
else return@async Variant_Double_CustomError.create(CustomError(r.errorCode ?: "PRINTERR", r.message ?: "Ocorreu um erro ao tentar imprimir arquivo"));
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
override fun hasCapability(capability: Capabilities): Boolean { return plug_pag.hasCapability(capability.value) }
|
|
113
|
+
|
|
114
|
+
override fun initialize(activation_code: String): Unit {
|
|
115
|
+
try {
|
|
116
|
+
val r = plug_pag.initializeAndActivatePinpad(PlugPagActivationData(activation_code))
|
|
117
|
+
if (r.result == PlugPag.RET_OK) return Unit
|
|
118
|
+
else throw Error("$r.errorCode: $r.errorMessage");
|
|
119
|
+
} catch (e: Exception) { throw Error("Ocorreu um erro ao inicializar terminal: $e.message"); }
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
override fun abort(): CustomError? {
|
|
123
|
+
var r = plug_pag.abort()
|
|
124
|
+
if (r.result == PlugPag.RET_OK) return null;
|
|
125
|
+
else return CustomError("OPR_ERROR", "Ocorreu um erro ao solicitar cancelamento");
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
override fun doPayment(payment_data: PaymentData, process_callback: (event: String) -> Unit): Promise<Variant_CustomError_TransactionResult> {
|
|
129
|
+
return Promise.async {
|
|
130
|
+
try {
|
|
131
|
+
if (!plug_pag.isAuthenticated()) return@async Variant_CustomError_TransactionResult.create(CustomError("AUTH", "POS não autenticado!"));
|
|
132
|
+
|
|
133
|
+
@Suppress("REDUNDANT_ELSE_IN_WHEN")
|
|
134
|
+
val type = when (payment_data.type) {
|
|
135
|
+
PaymentTypes.CREDIT -> PlugPag.TYPE_CREDITO
|
|
136
|
+
PaymentTypes.DEBIT -> PlugPag.TYPE_DEBITO
|
|
137
|
+
PaymentTypes.PIX -> PlugPag.TYPE_PIX
|
|
138
|
+
PaymentTypes.VOUCHER -> PlugPag.TYPE_VOUCHER
|
|
139
|
+
else -> return@async Variant_CustomError_TransactionResult.create(CustomError("INVALID_PARAM","Tipo de pagamento inválido"))
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
@Suppress("REDUNDANT_ELSE_IN_WHEN")
|
|
143
|
+
val installment_type = when (payment_data.installment_type) {
|
|
144
|
+
InstallmentTypes.NO_INSTALLMENT -> PlugPag.INSTALLMENT_TYPE_A_VISTA
|
|
145
|
+
InstallmentTypes.SELLER_INSTALLMENT -> PlugPag.INSTALLMENT_TYPE_PARC_VENDEDOR
|
|
146
|
+
InstallmentTypes.BUYER_INSTALLMENT -> PlugPag.INSTALLMENT_TYPE_PARC_COMPRADOR
|
|
147
|
+
else -> return@async Variant_CustomError_TransactionResult.create(CustomError("INVALID_PARAM", "Tipo de parcelamento inválido"))
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
val payment_data = PlugPagPaymentData(
|
|
151
|
+
type = type,
|
|
152
|
+
amount = payment_data.amount.toInt(),
|
|
153
|
+
installmentType = installment_type,
|
|
154
|
+
installments = payment_data.installments.toInt(),
|
|
155
|
+
userReference = payment_data.user_reference?.toInt().toString() ?: "",
|
|
156
|
+
printReceipt = payment_data.print_receipt ?: true,
|
|
157
|
+
partialPay = false,
|
|
158
|
+
isCarne = false
|
|
159
|
+
)
|
|
160
|
+
|
|
161
|
+
var password_count = 0;
|
|
162
|
+
|
|
163
|
+
plug_pag.setEventListener(object : PlugPagEventListener {
|
|
164
|
+
override fun onEvent(data: PlugPagEventData) {
|
|
165
|
+
val msg = when (data.eventCode) {
|
|
166
|
+
PlugPagEventData.EVENT_CODE_DIGIT_PASSWORD -> {
|
|
167
|
+
password_count++
|
|
168
|
+
"SENHA: "+("*".repeat(password_count))
|
|
169
|
+
}
|
|
170
|
+
PlugPagEventData.EVENT_CODE_NO_PASSWORD -> {
|
|
171
|
+
password_count = 0
|
|
172
|
+
"DIGITE A SENHA"
|
|
173
|
+
}
|
|
174
|
+
else -> data.customMessage ?: "AGUARDANDO..."
|
|
175
|
+
}
|
|
176
|
+
process_callback(msg);
|
|
177
|
+
}
|
|
178
|
+
})
|
|
179
|
+
|
|
180
|
+
val result = plug_pag.doPayment(paymentData = payment_data)
|
|
181
|
+
|
|
182
|
+
if (result.result == PlugPag.RET_OK) {
|
|
183
|
+
return@async Variant_CustomError_TransactionResult.create(result.toTransactionResult())
|
|
184
|
+
} else {
|
|
185
|
+
plug_pag.abort();
|
|
186
|
+
var code = result.errorCode ?: "OPR_ERROR";
|
|
187
|
+
var msg = result.message ?: "Ocorreu um erro ao tentar executar a transação.";
|
|
188
|
+
return@async Variant_CustomError_TransactionResult.create(CustomError(code, msg))
|
|
189
|
+
}
|
|
190
|
+
} catch (e: PlugPagException) {
|
|
191
|
+
throw Error("Erro ao realizar pagamento: $e.message");
|
|
192
|
+
} catch (e: Exception) {
|
|
193
|
+
throw Error("Erro inesperado: $e.message");
|
|
194
|
+
}
|
|
195
|
+
return@async Variant_CustomError_TransactionResult.create(CustomError("sdad", "dasdad"))
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
override fun voidPayment(void_data: VoidPayData, process_callback: (event: String) -> Unit): Promise<Variant_CustomError_TransactionResult> {
|
|
200
|
+
return Promise.async {
|
|
201
|
+
try {
|
|
202
|
+
plug_pag.setEventListener(object : PlugPagEventListener {
|
|
203
|
+
override fun onEvent(data: PlugPagEventData) {
|
|
204
|
+
val msg = when (data.eventCode) {
|
|
205
|
+
PlugPagEventData.EVENT_CODE_DIGIT_PASSWORD -> {
|
|
206
|
+
|
|
207
|
+
"SENHA: *"
|
|
208
|
+
}
|
|
209
|
+
PlugPagEventData.EVENT_CODE_NO_PASSWORD -> {
|
|
210
|
+
|
|
211
|
+
"DIGITE A SENHA"
|
|
212
|
+
}
|
|
213
|
+
else -> data.customMessage ?: "AGUARDANDO..."
|
|
214
|
+
}
|
|
215
|
+
process_callback(msg);
|
|
216
|
+
}
|
|
217
|
+
})
|
|
218
|
+
val r = plug_pag.voidPayment(PlugPagVoidData(
|
|
219
|
+
transactionCode = void_data.transaction_code,
|
|
220
|
+
transactionId = void_data.transaction_id,
|
|
221
|
+
printReceipt = void_data.print_receipt?: false,
|
|
222
|
+
voidType = when(void_data.void_type) {
|
|
223
|
+
VoidType.PAYMENT -> PlugPag.VOID_PAYMENT
|
|
224
|
+
VoidType.QRCODE -> PlugPag.VOID_QRCODE
|
|
225
|
+
else -> PlugPag.VOID_PAYMENT
|
|
226
|
+
}
|
|
227
|
+
))
|
|
228
|
+
|
|
229
|
+
if (r.result == PlugPag.RET_OK) return@async Variant_CustomError_TransactionResult.create(r.toTransactionResult())
|
|
230
|
+
else {
|
|
231
|
+
var code = r.errorCode ?: "OPR_ERROR";
|
|
232
|
+
var msg = r.message ?: "Ocorreu um erro ao tentar executar a transação.";
|
|
233
|
+
return@async Variant_CustomError_TransactionResult.create(CustomError(code, msg))
|
|
234
|
+
}
|
|
235
|
+
} catch (e: PlugPagException) {
|
|
236
|
+
throw Error("Erro ao realizar pagamento: $e.message");
|
|
237
|
+
} catch (e: Exception) {
|
|
238
|
+
throw Error("Erro inesperado: $e.message");
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
override fun getLastApprovedTransaction(): Variant_CustomError_TransactionResult {
|
|
244
|
+
val r = plug_pag.getLastApprovedTransaction()
|
|
245
|
+
if (r.result == PlugPag.RET_OK) return Variant_CustomError_TransactionResult.create(r.toTransactionResult());
|
|
246
|
+
|
|
247
|
+
var code = r.errorCode ?: "OPR_ERROR";
|
|
248
|
+
var msg = r.message ?: "Ocorreu um erro ao requisitar ultima transação.";
|
|
249
|
+
return Variant_CustomError_TransactionResult.create(CustomError(code, msg));
|
|
250
|
+
}
|
|
251
|
+
}
|