react-native-mesmart 0.7.4 → 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.
Files changed (107) hide show
  1. package/README.md +110 -31
  2. package/android/build.gradle +13 -8
  3. package/android/gradle.properties +6 -5
  4. package/android/src/main/java/com/mesmart/Packages.kt +4 -2
  5. package/android/src/main/java/com/mesmart/Utils.kt +107 -0
  6. package/android/src/main/java/com/pax/PaxImpl.kt +71 -40
  7. package/android/src/main/java/com/pax/PaxModule.kt +52 -29
  8. package/android/src/main/java/com/paystore/PaystoreImpl.kt +53 -0
  9. package/android/src/main/java/com/paystore/PaystoreModule.kt +24 -28
  10. package/android/src/main/java/com/paystore/utils/CredentialsUtils.kt +6 -4
  11. package/android/src/main/java/com/plugpag/PlugpagImpl.kt +66 -45
  12. package/android/src/main/java/com/plugpag/PlugpagModule.kt +49 -39
  13. package/android/src/main/java/com/plugpag/utils/PlugpagUtils.kt +23 -24
  14. package/android/src/main/java/com/stone/StoneImpl.kt +270 -0
  15. package/android/src/main/java/com/stone/StoneModule.kt +121 -0
  16. package/android/src/main/java/com/stone/utils/StoneUtils.kt +282 -0
  17. package/android/src/main/java/com/stone/utils/TransactionObjectMapper.kt +200 -0
  18. package/android/src/main/java/com/sunmi/SunmiImpl.kt +36 -12
  19. package/android/src/main/java/com/sunmi/SunmiModule.kt +49 -36
  20. package/android/src/main/java/com/sunmi/helpers/SunmiPrintHelper.kt +13 -17
  21. package/android/src/main/java/com/sunmi/helpers/SunmiRfidHelper.kt +8 -8
  22. package/android/src/main/java/com/{mesmart → sunmi}/utils/ESCUtil.kt +1 -1
  23. package/lib/commonjs/@types/{index.js → index.d.js} +16 -5
  24. package/lib/commonjs/@types/index.d.js.map +1 -0
  25. package/lib/commonjs/@types/pax.d.js +2 -0
  26. package/lib/commonjs/@types/{pax.js.map → pax.d.js.map} +1 -1
  27. package/lib/commonjs/@types/paystore.d.js +2 -0
  28. package/lib/commonjs/@types/{paystore.js.map → paystore.d.js.map} +1 -1
  29. package/lib/commonjs/@types/plugpag.d.js +36 -0
  30. package/lib/commonjs/@types/plugpag.d.js.map +1 -0
  31. package/lib/commonjs/@types/stone.d.js +6 -0
  32. package/lib/commonjs/@types/{sunmi.js.map → stone.d.js.map} +1 -1
  33. package/lib/commonjs/@types/sunmi.d.js +2 -0
  34. package/lib/{module/@types/pax.js.map → commonjs/@types/sunmi.d.js.map} +1 -1
  35. package/lib/commonjs/index.js +39 -60
  36. package/lib/commonjs/index.js.map +1 -1
  37. package/lib/commonjs/pax.js +25 -0
  38. package/lib/commonjs/pax.js.map +1 -0
  39. package/lib/commonjs/paystore.js +21 -0
  40. package/lib/commonjs/paystore.js.map +1 -0
  41. package/lib/commonjs/sunmi.js +28 -0
  42. package/lib/commonjs/sunmi.js.map +1 -0
  43. package/lib/module/@types/{index.js → index.d.js} +4 -2
  44. package/lib/module/@types/index.d.js.map +1 -0
  45. package/lib/module/@types/pax.d.js +2 -0
  46. package/lib/module/@types/{sunmi.js.map → pax.d.js.map} +1 -1
  47. package/lib/module/@types/paystore.d.js +2 -0
  48. package/lib/module/@types/paystore.d.js.map +1 -0
  49. package/lib/module/@types/plugpag.d.js +30 -0
  50. package/lib/module/@types/{plugpag.js.map → plugpag.d.js.map} +1 -1
  51. package/lib/module/@types/stone.d.js +2 -0
  52. package/lib/module/@types/stone.d.js.map +1 -0
  53. package/lib/module/@types/sunmi.d.js +2 -0
  54. package/lib/module/@types/sunmi.d.js.map +1 -0
  55. package/lib/module/index.js +39 -47
  56. package/lib/module/index.js.map +1 -1
  57. package/lib/module/pax.js +18 -0
  58. package/lib/module/pax.js.map +1 -0
  59. package/lib/module/paystore.js +14 -0
  60. package/lib/module/paystore.js.map +1 -0
  61. package/lib/module/sunmi.js +21 -0
  62. package/lib/module/sunmi.js.map +1 -0
  63. package/lib/typescript/src/index.d.ts +37 -24
  64. package/lib/typescript/src/index.d.ts.map +1 -1
  65. package/lib/typescript/src/pax.d.ts +2 -0
  66. package/lib/typescript/src/pax.d.ts.map +1 -0
  67. package/lib/typescript/src/paystore.d.ts +3 -0
  68. package/lib/typescript/src/paystore.d.ts.map +1 -0
  69. package/lib/typescript/src/sunmi.d.ts +2 -0
  70. package/lib/typescript/src/sunmi.d.ts.map +1 -0
  71. package/package.json +1 -1
  72. package/src/@types/index.d.ts +29 -0
  73. package/src/@types/pax.d.ts +8 -0
  74. package/src/@types/{paystore.ts → paystore.d.ts} +4 -2
  75. package/src/@types/{plugpag.ts → plugpag.d.ts} +16 -23
  76. package/src/@types/stone.d.ts +310 -0
  77. package/src/@types/sunmi.d.ts +13 -0
  78. package/src/index.ts +41 -107
  79. package/src/pax.ts +28 -0
  80. package/src/paystore.ts +32 -0
  81. package/src/sunmi.ts +29 -0
  82. package/android/src/main/java/com/mesmart/utils/Utils.kt +0 -65
  83. package/lib/commonjs/@types/index.js.map +0 -1
  84. package/lib/commonjs/@types/pax.js +0 -2
  85. package/lib/commonjs/@types/paystore.js +0 -2
  86. package/lib/commonjs/@types/plugpag.js +0 -36
  87. package/lib/commonjs/@types/plugpag.js.map +0 -1
  88. package/lib/commonjs/@types/sunmi.js +0 -2
  89. package/lib/module/@types/index.js.map +0 -1
  90. package/lib/module/@types/pax.js +0 -2
  91. package/lib/module/@types/paystore.js +0 -2
  92. package/lib/module/@types/paystore.js.map +0 -1
  93. package/lib/module/@types/plugpag.js +0 -30
  94. package/lib/module/@types/sunmi.js +0 -2
  95. package/lib/typescript/src/@types/index.d.ts +0 -5
  96. package/lib/typescript/src/@types/index.d.ts.map +0 -1
  97. package/lib/typescript/src/@types/pax.d.ts +0 -7
  98. package/lib/typescript/src/@types/pax.d.ts.map +0 -1
  99. package/lib/typescript/src/@types/paystore.d.ts +0 -34
  100. package/lib/typescript/src/@types/paystore.d.ts.map +0 -1
  101. package/lib/typescript/src/@types/plugpag.d.ts +0 -47
  102. package/lib/typescript/src/@types/plugpag.d.ts.map +0 -1
  103. package/lib/typescript/src/@types/sunmi.d.ts +0 -9
  104. package/lib/typescript/src/@types/sunmi.d.ts.map +0 -1
  105. package/src/@types/index.ts +0 -4
  106. package/src/@types/pax.ts +0 -6
  107. package/src/@types/sunmi.ts +0 -13
@@ -0,0 +1,270 @@
1
+ package com.stone
2
+
3
+ import br.com.stone.posandroid.providers.PosPrintReceiptProvider
4
+ import br.com.stone.posandroid.providers.PosTransactionProvider
5
+ import com.facebook.react.bridge.Arguments
6
+ import com.facebook.react.bridge.Promise
7
+ import com.facebook.react.bridge.ReactApplicationContext
8
+ import com.facebook.react.bridge.ReactContext
9
+ import com.facebook.react.bridge.WritableMap
10
+ import com.facebook.react.modules.core.DeviceEventManagerModule
11
+ import com.mesmart.Utils
12
+ import com.stone.utils.StoneUtils
13
+ import com.stone.utils.TransactionObjectMapper
14
+ import stone.application.StoneStart
15
+ import stone.application.enums.Action
16
+ import stone.application.enums.InstalmentTransactionEnum
17
+ import stone.application.enums.ReceiptType
18
+ import stone.application.interfaces.StoneActionCallback
19
+ import stone.application.interfaces.StoneCallbackInterface
20
+ import stone.database.transaction.TransactionObject
21
+ import stone.providers.BaseTransactionProvider
22
+ import stone.providers.CancellationProvider
23
+ import stone.providers.CaptureTransactionProvider
24
+ import stone.utils.Stone
25
+ import stone.utils.keys.StoneKeyType
26
+
27
+ class StoneImpl(
28
+ private val reactContext: ReactApplicationContext
29
+ ) {
30
+ private var transaction: TransactionObject? = null
31
+ private var paymentProvider: BaseTransactionProvider? = null
32
+ var stoneCode = ""
33
+ var isActivated = false
34
+
35
+ private fun sendEvent(
36
+ reactContext: ReactContext,
37
+ params: WritableMap?
38
+ ) {
39
+ reactContext
40
+ .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
41
+ .emit("onStoneEventData", params)
42
+ }
43
+
44
+ private fun checkStone() {
45
+ if (!isActivated)
46
+ throw Exception("Stone não foi ativado.")
47
+ }
48
+
49
+ fun activate(providerId: String, authorization: String, appName: String) {
50
+ if (isActivated)
51
+ throw Exception("Stone já foi ativado.")
52
+
53
+ val userList = StoneStart.init(reactContext, mapOf(
54
+ StoneKeyType.QRCODE_PROVIDERID to providerId,
55
+ StoneKeyType.QRCODE_AUTHORIZATION to authorization,
56
+ ))
57
+ Stone.setAppName(appName)
58
+
59
+ val userWithStoneCode = userList?.find { it.stoneCode.isNotEmpty() }
60
+ if (userList != null && userWithStoneCode != null)
61
+ stoneCode = userWithStoneCode.stoneCode
62
+
63
+ isActivated = true
64
+ }
65
+
66
+ fun pay(value: String, paymentMethod: String, isCapture: Boolean, promise: Promise) {
67
+ checkStone()
68
+
69
+ transaction = TransactionObject()
70
+ transaction!!.amount = value
71
+ transaction!!.instalmentTransaction = InstalmentTransactionEnum.getAt(0)
72
+ transaction!!.typeOfTransaction = StoneUtils.resolveTransactionType(paymentMethod)
73
+ transaction!!.isCapture = isCapture
74
+
75
+ paymentProvider = PosTransactionProvider(
76
+ reactContext,
77
+ transaction,
78
+ Stone.getUserModel(0)
79
+ )
80
+ paymentProvider?.useDefaultUI(true)
81
+ paymentProvider?.setConnectionCallback(object: StoneActionCallback {
82
+ override fun onSuccess() {
83
+ sendEvent(
84
+ reactContext,
85
+ Arguments.createMap().apply {
86
+ putString("type", "onSuccess")
87
+ putString("status", StoneUtils.resolveTransactionStatus(paymentProvider?.transactionStatus))
88
+ putString("statusEnum", paymentProvider?.transactionStatus?.name.orEmpty())
89
+ putString("authorizationCode", paymentProvider?.authorizationCode.orEmpty())
90
+ putString("action", StoneUtils.resolveActionCode(transaction?.actionCode))
91
+ putString("actionCode", transaction?.actionCode.orEmpty())
92
+ putString("messageFromAuthorize", paymentProvider?.messageFromAuthorize.orEmpty())
93
+ }
94
+ )
95
+
96
+ transaction?.let {
97
+ promise.resolve(
98
+ TransactionObjectMapper.toWritableMap(it)
99
+ )
100
+ }
101
+
102
+ paymentProvider = null
103
+ transaction = null
104
+ }
105
+
106
+ override fun onError() {
107
+ sendEvent(
108
+ reactContext,
109
+ Arguments.createMap().apply {
110
+ putString("type", "onError")
111
+ putString("status", StoneUtils.resolveTransactionStatus(paymentProvider?.transactionStatus))
112
+ putString("statusEnum", paymentProvider?.transactionStatus?.name.orEmpty())
113
+ putString("messageFromAuthorize", paymentProvider?.messageFromAuthorize.orEmpty())
114
+ putString("action", StoneUtils.resolveActionCode(transaction?.actionCode))
115
+ putString("actionCode", transaction?.actionCode.orEmpty())
116
+ putArray("listOfErrors",
117
+ StoneUtils.convertErrorsEnumToReadableArray(
118
+ paymentProvider?.listOfErrors,
119
+ true
120
+ )
121
+ )
122
+ putArray("listOfErrorsEnum",
123
+ StoneUtils.convertErrorsEnumToReadableArray(
124
+ paymentProvider?.listOfErrors,
125
+ false)
126
+ )
127
+ }
128
+ )
129
+
130
+ transaction?.let {
131
+ promise.resolve(
132
+ TransactionObjectMapper.toWritableMap(it)
133
+ )
134
+ }
135
+
136
+ paymentProvider = null
137
+ transaction = null
138
+ }
139
+
140
+ override fun onStatusChanged(action: Action?) {
141
+ sendEvent(
142
+ reactContext,
143
+ Arguments.createMap().apply {
144
+ putString("type", "onStatusChanged")
145
+ putString("action", StoneUtils.resolveTransactionAction(action))
146
+ putString("actionEnum", action?.name.orEmpty())
147
+ if (action == Action.TRANSACTION_WAITING_QRCODE_SCAN)
148
+ putString("qrCode", Utils.bitmapToBase64(transaction?.qrCode))
149
+ }
150
+ )
151
+ }
152
+ })
153
+ paymentProvider?.execute()
154
+ }
155
+
156
+ fun abortPayment() {
157
+ checkStone()
158
+ paymentProvider?.abortPayment()
159
+ }
160
+
161
+ fun printVia(transaction: TransactionObject, type: ReceiptType, promise: Promise) {
162
+ checkStone()
163
+
164
+ val provider = PosPrintReceiptProvider(
165
+ reactContext,
166
+ transaction,
167
+ type
168
+ )
169
+ provider.connectionCallback = object: StoneCallbackInterface {
170
+ override fun onSuccess() {
171
+ promise.resolve(null)
172
+ }
173
+
174
+ override fun onError() {
175
+ promise.reject(
176
+ "listOfErrors: ${
177
+ StoneUtils.convertErrorsEnumToReadableArray(provider.listOfErrors, true)
178
+ }\n" +
179
+ "listOfErrorsEnums: ${provider.listOfErrors}"
180
+ )
181
+ }
182
+ }
183
+ provider.execute()
184
+ }
185
+
186
+ fun captureTransaction(transaction: TransactionObject, promise: Promise) {
187
+ checkStone()
188
+
189
+ val provider = CaptureTransactionProvider(reactContext, transaction)
190
+ provider.connectionCallback = object: StoneCallbackInterface {
191
+ override fun onSuccess() {
192
+ promise.resolve(
193
+ Arguments.createMap().apply {
194
+ putString("responseCode", provider.responseCodeEnum.name)
195
+ putString("messageFromAuthorize", provider.messageFromAuthorize.orEmpty())
196
+ putMap("transaction",
197
+ TransactionObjectMapper.toWritableMap(
198
+ provider.transactionObject
199
+ )
200
+ )
201
+ }
202
+ )
203
+ }
204
+
205
+ override fun onError() {
206
+ promise.reject(
207
+ "Falha ao tentar capturar transação.\n" +
208
+ "responseCode: ${
209
+ try {
210
+ provider.responseCodeEnum
211
+ } catch (e: Exception) {
212
+ null
213
+ }
214
+ }\n" +
215
+ "messageFromAuthorize: ${provider.messageFromAuthorize}\n" +
216
+ "listOfErrors: ${
217
+ StoneUtils.convertErrorsEnumToReadableArray(provider.listOfErrors, true)
218
+ }\n" +
219
+ "listOfErrorsEnum: ${provider.listOfErrors}"
220
+ )
221
+ }
222
+ }
223
+ provider.execute()
224
+ }
225
+
226
+ fun cancelTransaction(transaction: TransactionObject, promise: Promise) {
227
+ checkStone()
228
+
229
+ val provider = CancellationProvider(reactContext, transaction)
230
+ provider.connectionCallback = object: StoneCallbackInterface {
231
+ override fun onSuccess() {
232
+ promise.resolve(
233
+ Arguments.createMap().apply {
234
+ putString("action", StoneUtils.resolveActionCode(provider.Cancellation().actionCode))
235
+ putString("actionCode", provider.Cancellation().actionCode.orEmpty())
236
+ putString("responseCode", provider.responseCodeEnum.name)
237
+ putString("messageFromAuthorize", provider.messageFromAuthorize.orEmpty())
238
+ putMap(
239
+ "transaction",
240
+ TransactionObjectMapper.toWritableMap(
241
+ transaction
242
+ )
243
+ )
244
+ }
245
+ )
246
+ }
247
+
248
+ override fun onError() {
249
+ promise.reject(
250
+ "Falha ao tentar cancelar transação.\n" +
251
+ "action: ${StoneUtils.resolveActionCode(provider.Cancellation().actionCode)}\n" +
252
+ "actionCode: ${provider.Cancellation().actionCode}\n" +
253
+ "responseCode: ${
254
+ try {
255
+ provider.responseCodeEnum
256
+ } catch (e: Exception) {
257
+ null
258
+ }
259
+ }\n" +
260
+ "messageFromAuthorize: ${provider.messageFromAuthorize}\n" +
261
+ "listOfErrors: ${
262
+ StoneUtils.convertErrorsEnumToReadableArray(provider.listOfErrors, true)
263
+ }\n" +
264
+ "listOfErrorsEnum: ${provider.listOfErrors}"
265
+ )
266
+ }
267
+ }
268
+ provider.execute()
269
+ }
270
+ }
@@ -0,0 +1,121 @@
1
+ package com.stone
2
+
3
+ import com.facebook.react.bridge.Promise
4
+ import com.facebook.react.bridge.ReactApplicationContext
5
+ import com.facebook.react.bridge.ReactContextBaseJavaModule
6
+ import com.facebook.react.bridge.ReactMethod
7
+ import com.facebook.react.bridge.ReadableMap
8
+ import com.stone.utils.TransactionObjectMapper
9
+ import stone.application.enums.ReceiptType
10
+
11
+ class StoneModule(
12
+ reactContext: ReactApplicationContext
13
+ ) : ReactContextBaseJavaModule(reactContext) {
14
+ private var stone: StoneImpl = StoneImpl(reactContext)
15
+
16
+ override fun getName(): String {
17
+ return "Stone"
18
+ }
19
+
20
+ @ReactMethod
21
+ fun init(keys: ReadableMap, appName: String, promise: Promise) {
22
+ try {
23
+ val providerId = keys.getString("providerId").orEmpty()
24
+ val authorization = keys.getString("authorization").orEmpty()
25
+
26
+ if (providerId.isEmpty())
27
+ throw Exception("providerId não pode ser vazio!")
28
+ if (authorization.isEmpty())
29
+ throw Exception("authorization não pode ser vazio!")
30
+ if (appName.isEmpty())
31
+ throw Exception("appName não pode ser vazio!")
32
+
33
+ stone.activate(providerId, authorization, appName)
34
+ promise.resolve(null)
35
+ } catch (e: Exception) {
36
+ e.printStackTrace()
37
+ promise.reject(e)
38
+ }
39
+ }
40
+
41
+ @ReactMethod
42
+ fun isActivated(promise: Promise) {
43
+ try {
44
+ promise.resolve(stone.isActivated)
45
+ } catch (e: Exception) {
46
+ e.printStackTrace()
47
+ promise.reject(e)
48
+ }
49
+ }
50
+
51
+ @ReactMethod
52
+ fun getStoneCode(promise: Promise) {
53
+ try {
54
+ promise.resolve(stone.stoneCode)
55
+ } catch (e: Exception) {
56
+ e.printStackTrace()
57
+ promise.reject(e)
58
+ }
59
+ }
60
+
61
+ @ReactMethod
62
+ fun pay(value: String, paymentMethod: String, isCapture: Boolean, promise: Promise) {
63
+ try {
64
+ stone.pay(value, paymentMethod, isCapture, promise)
65
+ } catch (e: Exception) {
66
+ e.printStackTrace()
67
+ promise.reject(e)
68
+ }
69
+ }
70
+
71
+ @ReactMethod
72
+ fun abortPayment(promise: Promise) {
73
+ try {
74
+ stone.abortPayment()
75
+ promise.resolve(null)
76
+ } catch (e: Exception) {
77
+ e.printStackTrace()
78
+ promise.reject(e)
79
+ }
80
+ }
81
+
82
+ @ReactMethod
83
+ fun printVia(data: ReadableMap, type: String, promise: Promise) {
84
+ try {
85
+ stone.printVia(
86
+ TransactionObjectMapper.fromReadableMap(data),
87
+ ReceiptType.valueOf(type.uppercase()),
88
+ promise
89
+ )
90
+ } catch (e: Exception) {
91
+ e.printStackTrace()
92
+ promise.reject(e)
93
+ }
94
+ }
95
+
96
+ @ReactMethod
97
+ fun captureTransaction(data: ReadableMap, promise: Promise) {
98
+ try {
99
+ stone.captureTransaction(
100
+ TransactionObjectMapper.fromReadableMap(data),
101
+ promise
102
+ )
103
+ } catch (e: Exception) {
104
+ e.printStackTrace()
105
+ promise.reject(e)
106
+ }
107
+ }
108
+
109
+ @ReactMethod
110
+ fun cancelTransaction(data: ReadableMap, promise: Promise) {
111
+ try {
112
+ stone.cancelTransaction(
113
+ TransactionObjectMapper.fromReadableMap(data),
114
+ promise
115
+ )
116
+ } catch (e: Exception) {
117
+ e.printStackTrace()
118
+ promise.reject(e)
119
+ }
120
+ }
121
+ }
@@ -0,0 +1,282 @@
1
+ package com.stone.utils
2
+
3
+ import com.facebook.react.bridge.ReadableArray
4
+ import com.facebook.react.bridge.WritableNativeArray
5
+ import stone.application.enums.Action
6
+ import stone.application.enums.ErrorsEnum
7
+ import stone.application.enums.TransactionStatusEnum
8
+ import stone.application.enums.TypeOfTransactionEnum
9
+
10
+ object StoneUtils {
11
+ fun resolveTransactionType(str: String): TypeOfTransactionEnum? {
12
+ return when(str) {
13
+ "debitCard" -> TypeOfTransactionEnum.DEBIT
14
+ "creditCard" -> TypeOfTransactionEnum.CREDIT
15
+ "voucher" -> TypeOfTransactionEnum.VOUCHER
16
+ "pix" -> TypeOfTransactionEnum.PIX
17
+ else -> null
18
+ }
19
+ }
20
+
21
+ fun resolveTransactionStatus(transactionStatus: TransactionStatusEnum?): String {
22
+ return when (transactionStatus) {
23
+ TransactionStatusEnum.UNKNOWN -> "Ocorreu um erro antes de ser enviada para o autorizador"
24
+ TransactionStatusEnum.APPROVED -> "Transação aprovada com sucesso"
25
+ TransactionStatusEnum.DECLINED -> "Transação negada"
26
+ TransactionStatusEnum.DECLINED_BY_CARD -> "Transação negada pelo cartão"
27
+ TransactionStatusEnum.CANCELLED -> "Transação cancelada"
28
+ TransactionStatusEnum.REJECTED -> "Transação rejeitada"
29
+ TransactionStatusEnum.WITH_ERROR -> "Transação não completada com sucesso"
30
+ TransactionStatusEnum.PENDING_REVERSAL -> "Transação foi interrompida por algum motivo"
31
+ TransactionStatusEnum.PENDING -> "O provider de transação está em andamento"
32
+ TransactionStatusEnum.REVERSED -> "A transação foi cancelada automaticamente devido à algum erro ou interrupção no fluxo de pagamento"
33
+ null -> ""
34
+ else -> ""
35
+ }
36
+ }
37
+
38
+ fun resolveTransactionAction(action: Action?): String {
39
+ return when (action) {
40
+ Action.TRANSACTION_WAITING_CARD -> "Aproxime ou insira o cartão de pagamento"
41
+ Action.TRANSACTION_WAITING_SWIPE_CARD -> ""
42
+ Action.TRANSACTION_WAITING_QRCODE_SCAN -> "Aguardando pagamento do QRCode"
43
+ Action.TRANSACTION_WAITING_PASSWORD -> "Informe a senha do seu cartão"
44
+ Action.TRANSACTION_SENDING -> "Aguardando resposta da operadora"
45
+ Action.TRANSACTION_REMOVE_CARD -> "Por favor, remova o seu cartão"
46
+ Action.REVERSING_TRANSACTION_WITH_ERROR -> ""
47
+ Action.TRANSACTION_CARD_REMOVED -> "Cartão removido"
48
+ Action.TRANSACTION_TYPE_SELECTION -> ""
49
+ Action.TRANSACTION_REQUIRES_CARDHOLDER_TO_CHECK_DEVICE -> ""
50
+ Action.SWITCH_INTERFACE -> ""
51
+ null -> ""
52
+ else -> ""
53
+ }
54
+ }
55
+
56
+ fun convertErrorsEnumToReadableArray(errors: List<ErrorsEnum>?, convertErrorToString: Boolean): ReadableArray {
57
+ val writableArray = WritableNativeArray()
58
+ errors?.forEach { error ->
59
+ writableArray.pushString(
60
+ if (convertErrorToString)
61
+ resolveTransactionErrors(error)
62
+ else error.name
63
+ )
64
+ }
65
+ return writableArray
66
+ }
67
+
68
+ fun resolveActionCode(actionCode: String?): String {
69
+ return when (actionCode) {
70
+ "1000" -> "Não aprovado"
71
+ "1001" -> "Cartão vencido"
72
+ "1002" -> "Suspeita de fraude"
73
+ "1003" -> "Estabelecimento entrar em contato com adquirente"
74
+ "1004" -> "Cartão com restrição"
75
+ "1005" -> "Estabelecimento entrar em contato com departamento de segurança do adquirente"
76
+ "1006" -> "Tentativas de senha excedidas"
77
+ "1007" -> "Consultar o emissor"
78
+ "1008" -> "Consultar as condições especiais do emissor"
79
+ "1009" -> "Estabelecimento inválido"
80
+ "1010" -> "Valor inválido"
81
+ "1011" -> "Cartão inválido"
82
+ "1012" -> "Senha necessária"
83
+ "1014" -> "Nenhuma conta do tipo selecionado"
84
+ "1015" -> "Função selecionada não suportada"
85
+ "1016" -> "Saldo insuficiente"
86
+ "1017" -> "Senha inválida"
87
+ "1019" -> "Transação não permitida para o portador"
88
+ "1020" -> "Transação não permitida para o terminal"
89
+ "1021" -> "Limite de valor para saque excedido"
90
+ "1022" -> "Violação de segurança"
91
+ "1023" -> "Limite de quantidade de saques excedido"
92
+ "1024" -> "Violação da lei"
93
+ "1025" -> "Cartão bloqueado"
94
+ "1026" -> "Dados de senha inválidos"
95
+ "1027" -> "Erro no tamanho da senha"
96
+ "1028" -> "Erro de sincronia de chave de senha"
97
+ "1029" -> "Suspeita de cartão falso"
98
+ "1030" -> "Moeda inaceitável para o emissor"
99
+ "1032" -> "Cartão perdido ou roubado"
100
+ "1035" -> "Conta encerrada"
101
+ "1036" -> "Conta poupança encerrada ou bloqueada para encerramento"
102
+ "1037" -> "Conta de crédito encerrada ou bloqueada para encerramento"
103
+ "1039" -> "Conta corrente encerrada ou bloqueada para encerramento"
104
+ "1041" -> "Status ruim para conta de origem"
105
+ "1042" -> "Status ruim para conta de destino"
106
+ "1045" -> "Código de segurança inválido"
107
+ "1047" -> "Troca de senha necessária"
108
+ "1048" -> "Nova senha inválida"
109
+ "1057" -> "Data de pagamento inválida"
110
+ "1060" -> "Transação não completou normalmente no terminal"
111
+ "1061" -> "Transação não suportada pelo emissor"
112
+ "1062" -> "Saque fácil não disponível"
113
+ "1063" -> "Limite de saque fácil excedido"
114
+ "1064" -> "Negado offline pelo terminal"
115
+ "1065" -> "Negado, não foi possível processar offline"
116
+ "2000" -> "Não aprovado"
117
+ "2001" -> "Cartão vencido"
118
+ "2002" -> "Suspeita de fraude"
119
+ "2003" -> "Estabelecimento entrar em contato com emissor"
120
+ "2004" -> "Cartão com restrição"
121
+ "2005" -> "Estabelecimento entrar em contato com departamento de segurança do adquirente"
122
+ "2006" -> "Tentativas de senha excedidas"
123
+ "2007" -> "Condições especiais"
124
+ "2008" -> "Cartão perdido"
125
+ "2009" -> "Cartão roubado"
126
+ "2010" -> "Suspeita de cartão falso"
127
+ "2011" -> "Limite de quantidade de saques excedido"
128
+ "2012" -> "Limite de valor para saque excedido"
129
+ "9100" -> "Erro no formato da mensagem"
130
+ "9102" -> "Transação inválida"
131
+ "9103" -> "Tente novamente"
132
+ "9105" -> "Adquirente não suportado pelo switch"
133
+ "9107" -> "Emissor fora de operação"
134
+ "9108" -> "Não foi possível enviar a transação para o destinatário"
135
+ "9109" -> "Erro no sistema"
136
+ "9110" -> "Emissor se desconectou"
137
+ "9111" -> "Emissor não respondeu em tempo"
138
+ "9112" -> "Emissor indisponível"
139
+ "9113" -> "Transmissão duplicada"
140
+ "9114" -> "Não foi possível encontrar a transação original"
141
+ "9116" -> "MAC incorreto"
142
+ "9117" -> "Erro de sincronização de chave de MAC"
143
+ "9118" -> "Nenhuma chave de comunicação disponível"
144
+ "9119" -> "Erro de sincronização de chave de encriptação"
145
+ "9120" -> "Erro de segurança de software/hardware, tente novamente"
146
+ "9121" -> "Erro de segurança de software/hardware"
147
+ "9122" -> "Número da mensagem fora de sequência"
148
+ "9123" -> "Requisição em progresso"
149
+ "9124" -> "Código de segurança inválido"
150
+ "9125" -> "Erro no banco de dados"
151
+ "9132" -> "Erro nos dados de recorrência"
152
+ "9133" -> "Atualização não permitida"
153
+ "9350" -> "Violação de acordo comercial"
154
+ "9999" -> "Erro não especificado"
155
+ "UNPR" -> "Não Foi possível processar – Não foi possível processar a mensagem. Tente novamente."
156
+ "IMSG" -> "Mensagem Invalida – A mensagem enviada possui um formato inválido."
157
+ "PARS" -> "Erro na leitura da mensagem – Algum campo obrigatório não está sendo enviado"
158
+ "SECU" -> "Segurança – Algum erro no processo de segurança. A chave de criptografia pode não estar presente no terminal."
159
+ "INTP" -> "SAK Invalido – O SAK enviado não foi reconhecido"
160
+ "RCPP" -> "Destinatário Invalido – O local para onde a mensagem foi enviada está inválida"
161
+ "DPMG" -> "Mensagem Duplicada – Esta mensagem já foi recebida pela Stone."
162
+ "VERS" -> "Protocolo – A versão do protocolo enviada não é suportada."
163
+ "MSGT" -> "Tipo da Mensagem – o Message Type enviado não é reconhecido."
164
+ else -> "Código de ação desconhecido"
165
+ }
166
+ }
167
+
168
+ private fun resolveTransactionErrors(error: ErrorsEnum?): String {
169
+ return when (error) {
170
+ ErrorsEnum.CARD_BLOCKED -> "Cartão bloqueado"
171
+ ErrorsEnum.CONNECTION_NOT_FOUND -> "Sem conexão com a internet, ligue a internet."
172
+ ErrorsEnum.DEVICE_NOT_COMPATIBLE -> "Dispositivo incompatível ou dependência não encontrada"
173
+ ErrorsEnum.UNEXPECTED_STATUS_COMMAND -> "Status inesperado do comando"
174
+ ErrorsEnum.GENERIC_ERROR -> "Erro genérico"
175
+ ErrorsEnum.IO_ERROR_WITH_PINPAD -> "Erro de comunicação com o pinpad"
176
+ ErrorsEnum.PINPAD_CONNECTION_NOT_FOUND -> "Conexão com o pinpad não encontrada"
177
+ ErrorsEnum.TABLES_NOT_FOUND -> ""
178
+ ErrorsEnum.NEED_LOAD_TABLES -> ""
179
+ ErrorsEnum.TIME_OUT -> "Tempo de operação esgotado"
180
+ ErrorsEnum.OPERATION_CANCELLED_BY_USER -> "Operação cancelada"
181
+ ErrorsEnum.CARD_REMOVED_BY_USER -> "Cartão removido"
182
+ ErrorsEnum.CANT_READ_CARD_HOLDER_INFORMATION -> "Não foi possível ler as informações do portador do cartão"
183
+ ErrorsEnum.INVALID_TRANSACTION -> "Transação inválida"
184
+ ErrorsEnum.PASS_TARGE_WITH_CHIP -> "Passe a tarja do cartão com chip"
185
+ ErrorsEnum.NULL_RESPONSE -> "Resposta nula recebida"
186
+ ErrorsEnum.ERROR_RESPONSE_COMMAND -> "Erro na resposta do comando"
187
+ ErrorsEnum.ACCEPTOR_REJECTION -> "Transação rejeitada pelo credenciador"
188
+ ErrorsEnum.EMAIL_MESSAGE_ERROR -> "Erro ao enviar mensagem de e-mail"
189
+ ErrorsEnum.INVALID_EMAIL_CLIENT -> "Cliente de e-mail inválido"
190
+ ErrorsEnum.EMAIL_EMPTY -> "E-mail vazio"
191
+ ErrorsEnum.EMAIL_RECIPIENT_EMPTY -> "Destinatário do e-mail vazio"
192
+ ErrorsEnum.INVALID_STONE_CODE_OR_UNKNOWN -> "Stone Code inválido ou desconhecido"
193
+ ErrorsEnum.TRANSACTION_NOT_FOUND -> "Transação não encontrada"
194
+ ErrorsEnum.INVALID_TRANSACTION_STATUS -> "Status de transação inválido"
195
+ ErrorsEnum.INVALID_STONECODE -> "Stone Code inválido"
196
+ ErrorsEnum.USERMODEL_NOT_FOUND -> "Modelo de usuário não encontrado"
197
+ ErrorsEnum.NO_PRINT_SUPPORT -> "Impressão não suportada"
198
+ ErrorsEnum.CANT_READ_CHIP_CARD -> "Não foi possível ler o cartão com chip"
199
+ ErrorsEnum.PINPAD_WITHOUT_KEY -> "Pinpad sem chave"
200
+ ErrorsEnum.PINPAD_WITHOUT_STONE_KEY -> "Pinpad sem chave Stone"
201
+ ErrorsEnum.PINPAD_ALREADY_CONNECTED -> "Pinpad já conectado"
202
+ ErrorsEnum.CONNECTIVITY_ERROR -> "Erro de conectividade"
203
+ ErrorsEnum.SWIPE_INCORRECT -> "Leitura incorreta, tente novamente"
204
+ ErrorsEnum.TOO_MANY_CARDS -> "Muitos cartões detectados"
205
+ ErrorsEnum.UNKNOWN_ERROR -> "Erro desconhecido"
206
+ ErrorsEnum.INTERNAL_ERROR -> "Erro interno"
207
+ ErrorsEnum.EMV_GENERIC_ERROR -> "Erro genérico de EMV"
208
+ ErrorsEnum.SWITCH_INTERFACE -> "Ocorreu um erro na leitura. Tente novamente inserindo o cartão"
209
+ ErrorsEnum.EMV_FAILED_CARD_CONN_ERROR -> "Falha ao comunicar com o cartão"
210
+ ErrorsEnum.EMV_NO_APP_ERROR -> "Método de pagamento não encontrado no cartão"
211
+ ErrorsEnum.EMV_INITIALIZATION_ERROR -> "Erro ao iniciar o fluxo de pagamento"
212
+ ErrorsEnum.EMV_CAPK_ERROR -> "Erro na configuração da chave pública"
213
+ ErrorsEnum.EMV_TLV_ERROR -> "Erro no formato dos dados de configuração"
214
+ ErrorsEnum.EMV_NO_CAPK_ERROR -> "Chave pública não presente"
215
+ ErrorsEnum.EMV_AID_ERROR -> "Erro ao configurar a aplicação de crédito/débito"
216
+ ErrorsEnum.PRINTER_GENERIC_ERROR -> "Erro genérico de impressão"
217
+ ErrorsEnum.PRINTER_BUSY_ERROR -> "Impressora ocupada"
218
+ ErrorsEnum.PRINTER_INIT_ERROR -> "Erro na inicialização da impressora"
219
+ ErrorsEnum.PRINTER_LOW_ENERGY_ERROR -> "Baixa energia na impressora"
220
+ ErrorsEnum.PRINTER_OUT_OF_PAPER_ERROR -> "Impressora sem papel"
221
+ ErrorsEnum.PRINTER_UNSUPPORTED_FORMAT_ERROR -> "Formato não suportado pela impressora"
222
+ ErrorsEnum.PRINTER_INVALID_DATA_ERROR -> "Dados inválidos para impressão"
223
+ ErrorsEnum.PRINTER_OVERHEATING_ERROR -> "Impressora superaquecida"
224
+ ErrorsEnum.PED_PASS_GENERIC_ERROR -> "Erro genérico na criptografia do PIN"
225
+ ErrorsEnum.PED_PASS_KEY_ERROR -> "Erro na chave de criptografia"
226
+ ErrorsEnum.PED_PASS_USER_CANCELED_ERROR -> "Operação cancelada pelo usuário"
227
+ ErrorsEnum.PED_PASS_NO_PIN_INPUT_ERROR -> "Nenhum PIN digitado"
228
+ ErrorsEnum.PED_PASS_TIMEOUT_ERROR -> "Tempo esgotado para entrada de PIN"
229
+ ErrorsEnum.PED_PASS_INIT_ERROR -> "Erro na inicialização do processo de criptografia do PIN"
230
+ ErrorsEnum.PED_PASS_CRYPT_ERROR -> "Erro de criptografia do PIN"
231
+ ErrorsEnum.PED_PASS_NO_KEY_FOUND_ERROR -> "Chave de criptografia não encontrada"
232
+ ErrorsEnum.TRANS_GENERIC_ERROR -> "Erro genérico de transação"
233
+ ErrorsEnum.TRANS_APP_BLOCKED_ERROR -> "Aplicação bloqueada"
234
+ ErrorsEnum.TRANS_SELECT_TYPE_USER_CANCELED_ERROR -> "Tipo de transação cancelado pelo usuário"
235
+ ErrorsEnum.TRANS_INVALID_AMOUNT_ERROR -> "Valor inválido para a transação"
236
+ ErrorsEnum.TRANS_PASS_MAG_BUT_IS_ICC_ERROR -> "Passe a tarja, mas é ICC"
237
+ ErrorsEnum.TRANS_NO_TRANS_TYPE_ERROR -> "Tipo de transação não especificado"
238
+ ErrorsEnum.TRANS_WRONG_TRANS_TYPE_ERROR -> "Tipo de transação incorreto"
239
+ ErrorsEnum.TRANS_APP_INVALID_ERROR -> "Aplicação inválida para o fluxo"
240
+ ErrorsEnum.TRANS_CVV_NOT_PROVIDED_ERROR -> "CVV não fornecido, mas é obrigatório"
241
+ ErrorsEnum.TRANS_CVV_INVALID_ERROR -> "CVV inválido"
242
+ ErrorsEnum.TRANS_APP_INVALID_INDEX_ERROR -> "Erro de índice de aplicação inválido"
243
+ ErrorsEnum.TRANS_ONLINE_PROCESS_ERROR_ERROR -> "Erro ao processar dados online"
244
+ ErrorsEnum.CARD_GENERIC_ERROR -> "Erro genérico do cartão"
245
+ ErrorsEnum.CARD_READ_ERROR -> "Erro na leitura do cartão"
246
+ ErrorsEnum.CARD_READ_TIMEOUT_ERROR -> "Nenhum cartão encontrado, operação cancelada"
247
+ ErrorsEnum.CARD_READ_CANCELED_ERROR -> "Leitura do cartão cancelada"
248
+ ErrorsEnum.CARD_UNSUPPORTED_ERROR -> "Cartão não suportado"
249
+ ErrorsEnum.CARD_READ_MULTI_ERROR -> "Múltiplos cartões detectados"
250
+ ErrorsEnum.TRANSACTION_FALLBACK_STARTED -> "Fallback de transação iniciado"
251
+ ErrorsEnum.TRANSACTION_FALLBACK_TIMEOUT -> "Tempo esgotado para fallback de transação"
252
+ ErrorsEnum.TRANSACTION_FALLBACK_INVALID_CARD_MODE -> "Modo de cartão inválido para fallback"
253
+ ErrorsEnum.NO_ACTIVE_APPLICATION -> "Nenhuma aplicação ativa disponível"
254
+ ErrorsEnum.MULTI_INSTANCES_OF_PROVIDER_RUNNING -> "Múltiplas instâncias do provedor em execução"
255
+ ErrorsEnum.UNKNOWN_TYPE_OF_USER -> "Tipo de usuário desconhecido"
256
+ ErrorsEnum.TRANSACTION_OBJECT_NULL_ERROR -> "Objeto de transação nulo"
257
+ ErrorsEnum.INVALID_AMOUNT -> "Valor inválido"
258
+ ErrorsEnum.APPNAME_NOT_SET -> "Nome do aplicativo não definido"
259
+ ErrorsEnum.SDK_VERSION_OUTDATED -> "Versão do SDK desatualizada"
260
+ ErrorsEnum.PINPAD_CLOSED_CONNECTION -> "Conexão com o pinpad fechada"
261
+ ErrorsEnum.NOT_STONE_POS_OR_POS_MISCONFIGURED -> "POS não é da Stone ou está mal configurado"
262
+ ErrorsEnum.COULD_NOT_ACTIVATE_ALL_STONE_CODES -> "Não foi possível ativar todos os Stone Codes"
263
+ ErrorsEnum.COULD_NOT_ACTIVATE_WITH_ACCEPTOR_CONFIGURATION_UPDATE_DATA_NULL -> "Não foi possível ativar com dados de atualização de configuração nulos"
264
+ ErrorsEnum.NO_MIFARE_SUPPORT -> "Suporte a MIFARE não disponível"
265
+ ErrorsEnum.MIFARE_ABORTED -> "Operação MIFARE abortada"
266
+ ErrorsEnum.MIFARE_DETECT_TIMEOUT -> "Tempo esgotado para detectar MIFARE"
267
+ ErrorsEnum.MIFARE_WRONG_CARD_TYPE -> "Tipo de cartão MIFARE incorreto"
268
+ ErrorsEnum.MIFARE_INVALID_KEY -> "Chave MIFARE inválida"
269
+ ErrorsEnum.MIFARE_NOT_AUTHENTICATED -> "MIFARE não autenticado"
270
+ ErrorsEnum.MIFARE_INVALID_SECTOR_NUMBER -> "Número de setor MIFARE inválido"
271
+ ErrorsEnum.MIFARE_INVALID_BLOCK_NUMBER -> "Número de bloco MIFARE inválido"
272
+ ErrorsEnum.MIFARE_INVALID_BLOCK_FORMAT -> "Formato de bloco MIFARE inválido"
273
+ ErrorsEnum.MIFARE_MULTI_CARD_DETECTED -> "Múltiplos cartões MIFARE detectados"
274
+ ErrorsEnum.DATA_CONTAINER_CONSTRAINT_ERROR -> "Erro de restrição do contêiner de dados"
275
+ ErrorsEnum.DATA_CONTAINER_INTEGRATION_ERROR -> "Erro de integração do contêiner de dados"
276
+ ErrorsEnum.QRCODE_NOT_GENERATED -> "Houve algum erro ao gerar o QRCode"
277
+ ErrorsEnum.QRCODE_EXPIRED -> "O QRcode expirou"
278
+ null -> "null"
279
+ else -> "Erro desconhecido"
280
+ }
281
+ }
282
+ }