@connexup/react-native-square-mobile-payment-sdk 0.1.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 (161) hide show
  1. package/LICENSE +20 -0
  2. package/NativeSquareMobilePaymentSDK.podspec +23 -0
  3. package/README.md +66 -0
  4. package/android/build.gradle +81 -0
  5. package/android/gradle.properties +5 -0
  6. package/android/src/main/AndroidManifest.xml +2 -0
  7. package/android/src/main/java/com/connexup/square/mobilepayment/DateFormatUtils.java +29 -0
  8. package/android/src/main/java/com/connexup/square/mobilepayment/ErrorUtilities.kt +56 -0
  9. package/android/src/main/java/com/connexup/square/mobilepayment/MobilePaymentAuthorization.kt +185 -0
  10. package/android/src/main/java/com/connexup/square/mobilepayment/MobilePaymentException.kt +8 -0
  11. package/android/src/main/java/com/connexup/square/mobilepayment/MobilePaymentPayment.kt +542 -0
  12. package/android/src/main/java/com/connexup/square/mobilepayment/MobilePaymentReader.kt +344 -0
  13. package/android/src/main/java/com/connexup/square/mobilepayment/MobilePaymentSDK.kt +47 -0
  14. package/android/src/main/java/com/connexup/square/mobilepayment/MobilePaymentSDKPackage.kt +77 -0
  15. package/android/src/main/java/com/connexup/square/mobilepayment/MobilePaymentSetting.kt +144 -0
  16. package/android/src/main/java/com/connexup/square/mobilepayment/convert/AdditionalPaymentMethodConvert.kt +46 -0
  17. package/android/src/main/java/com/connexup/square/mobilepayment/convert/AuthorizationStateConvert.kt +26 -0
  18. package/android/src/main/java/com/connexup/square/mobilepayment/convert/CardConvert.kt +53 -0
  19. package/android/src/main/java/com/connexup/square/mobilepayment/convert/CardDetailsConvert.kt +74 -0
  20. package/android/src/main/java/com/connexup/square/mobilepayment/convert/CardEntryMethodConvert.kt +31 -0
  21. package/android/src/main/java/com/connexup/square/mobilepayment/convert/CashPaymentDetailsConvert.kt +18 -0
  22. package/android/src/main/java/com/connexup/square/mobilepayment/convert/CurrencyCodeConvert.kt +204 -0
  23. package/android/src/main/java/com/connexup/square/mobilepayment/convert/DelayActionConvert.kt +33 -0
  24. package/android/src/main/java/com/connexup/square/mobilepayment/convert/DeniedReasonConvert.kt +28 -0
  25. package/android/src/main/java/com/connexup/square/mobilepayment/convert/DigitalWalletDetailsConvert.kt +18 -0
  26. package/android/src/main/java/com/connexup/square/mobilepayment/convert/ErrorDetailsConvert.kt +32 -0
  27. package/android/src/main/java/com/connexup/square/mobilepayment/convert/ExternalPaymentDetailsConvert.kt +25 -0
  28. package/android/src/main/java/com/connexup/square/mobilepayment/convert/LocationConvert.kt +31 -0
  29. package/android/src/main/java/com/connexup/square/mobilepayment/convert/MoneyConvert.kt +31 -0
  30. package/android/src/main/java/com/connexup/square/mobilepayment/convert/OfflineStatusConvert.kt +21 -0
  31. package/android/src/main/java/com/connexup/square/mobilepayment/convert/PaymentConvert.kt +93 -0
  32. package/android/src/main/java/com/connexup/square/mobilepayment/convert/PaymentProcessingFeeConvert.kt +39 -0
  33. package/android/src/main/java/com/connexup/square/mobilepayment/convert/PaymentSettingsConvert.kt +26 -0
  34. package/android/src/main/java/com/connexup/square/mobilepayment/convert/ProcessingModeConvert.kt +28 -0
  35. package/android/src/main/java/com/connexup/square/mobilepayment/convert/ReaderBatteryStatusConvert.kt +19 -0
  36. package/android/src/main/java/com/connexup/square/mobilepayment/convert/ReaderChangeEventConvert.kt +75 -0
  37. package/android/src/main/java/com/connexup/square/mobilepayment/convert/ReaderConnectionTypeConvert.kt +17 -0
  38. package/android/src/main/java/com/connexup/square/mobilepayment/convert/ReaderInfoConvert.kt +51 -0
  39. package/android/src/main/java/com/connexup/square/mobilepayment/convert/ReaderModalConvert.kt +18 -0
  40. package/android/src/main/java/com/connexup/square/mobilepayment/convert/ReaderStateConvert.kt +51 -0
  41. package/android/src/main/java/com/connexup/square/mobilepayment/convert/ReaderStatusConvert.kt +51 -0
  42. package/android/src/main/java/com/connexup/square/mobilepayment/convert/SdkSettingsConvert.kt +30 -0
  43. package/android/src/main/java/com/connexup/square/mobilepayment/convert/SquareAccountDetailsConvert.kt +20 -0
  44. package/android/src/main/java/com/connexup/square/mobilepayment/convert/TrackingConsentStateConvert.kt +17 -0
  45. package/android/src/main/java/com/connexup/square/mobilepayment/convert/WalletBrandConvert.kt +41 -0
  46. package/ios/Converters/AdditionalPaymentMethod+Extension.swift +17 -0
  47. package/ios/Converters/AdditionalPaymentMethodType+Extension.swift +44 -0
  48. package/ios/Converters/AuthorizationState+Extension.swift +22 -0
  49. package/ios/Converters/BatteryLevel+Extension.swift +27 -0
  50. package/ios/Converters/Card+Extension.swift +33 -0
  51. package/ios/Converters/CardBrand+Extension.swift +47 -0
  52. package/ios/Converters/CardCoBrand+Extension.swift +24 -0
  53. package/ios/Converters/CardEntryMethod+Extension.swift +30 -0
  54. package/ios/Converters/CardInputMethods+Extension.swift +35 -0
  55. package/ios/Converters/CardInsertionStatus+Extension.swift +24 -0
  56. package/ios/Converters/CardPaymentDetails+Extensions.swift +31 -0
  57. package/ios/Converters/CardPaymentStatus+Extension.swift +28 -0
  58. package/ios/Converters/Currency+Extension.swift +50 -0
  59. package/ios/Converters/Location+Extension.swift +19 -0
  60. package/ios/Converters/MoneyAmount+Extension.swift +30 -0
  61. package/ios/Converters/Payment+Extension.swift +44 -0
  62. package/ios/Converters/PaymentSettings+Extension.swift +19 -0
  63. package/ios/Converters/PaymentStatus+Extension.swift +53 -0
  64. package/ios/Converters/ProcessingMode+Extension.swift +37 -0
  65. package/ios/Converters/ReaderBatteryStatus+Extension.swift +19 -0
  66. package/ios/Converters/ReaderChange+Extension.swift +41 -0
  67. package/ios/Converters/ReaderConnectionFailureInfo+Extension.swift +20 -0
  68. package/ios/Converters/ReaderConnectionFailureReason+Extension.swift +40 -0
  69. package/ios/Converters/ReaderConnectionFailureRecoverySuggestion+Extension.swift +30 -0
  70. package/ios/Converters/ReaderConnectionInfo+Extension.swift +18 -0
  71. package/ios/Converters/ReaderConnectionStatus+Extension.swift +26 -0
  72. package/ios/Converters/ReaderFirmwareInfo+Extension.swift +19 -0
  73. package/ios/Converters/ReaderInfo+Extension.swift +30 -0
  74. package/ios/Converters/ReaderModel+Extension.swift +28 -0
  75. package/ios/Converters/ReaderState+Extension.swift +30 -0
  76. package/ios/Converters/ReaderStatus+Extension.swift +60 -0
  77. package/ios/Converters/ReaderStatusInfo+Extension.swift +22 -0
  78. package/ios/Converters/SDKSettings+Extension.swift +25 -0
  79. package/ios/Converters/SourceType+Extension.swift +32 -0
  80. package/ios/Converters/TrackingConsentState+Extension.swift +25 -0
  81. package/ios/ErrorUtilities.swift +41 -0
  82. package/ios/MobilePaymentAuthorization.swift +154 -0
  83. package/ios/MobilePaymentDateFormatter.swift +15 -0
  84. package/ios/MobilePaymentPayment.swift +478 -0
  85. package/ios/MobilePaymentReader.swift +248 -0
  86. package/ios/MobilePaymentSDK.swift +36 -0
  87. package/ios/MobilePaymentSetting.swift +86 -0
  88. package/ios/MockReaderUIManage.swift +52 -0
  89. package/ios/Models/NativeErrorInfo.swift +22 -0
  90. package/ios/Models/RCTPaymentMoneyParameter.swift +20 -0
  91. package/ios/Models/RCTPaymentParameters.swift +50 -0
  92. package/ios/Models/RCTPromptParameters.swift +20 -0
  93. package/ios/NotificationKeys.swift +9 -0
  94. package/ios/NotificationUtils.swift +21 -0
  95. package/ios/RCTMobilePaymentAuthorization.h +12 -0
  96. package/ios/RCTMobilePaymentAuthorization.mm +78 -0
  97. package/ios/RCTMobilePaymentPayment.h +12 -0
  98. package/ios/RCTMobilePaymentPayment.mm +116 -0
  99. package/ios/RCTMobilePaymentReader.h +12 -0
  100. package/ios/RCTMobilePaymentReader.mm +114 -0
  101. package/ios/RCTMobilePaymentSetting.h +10 -0
  102. package/ios/RCTMobilePaymentSetting.mm +94 -0
  103. package/ios/UIColor+Extension.swift +81 -0
  104. package/lib/module/authorization/NativeMobilePaymentAuthorization.js +60 -0
  105. package/lib/module/authorization/NativeMobilePaymentAuthorization.js.map +1 -0
  106. package/lib/module/authorization/index.js +44 -0
  107. package/lib/module/authorization/index.js.map +1 -0
  108. package/lib/module/index.js +7 -0
  109. package/lib/module/index.js.map +1 -0
  110. package/lib/module/package.json +1 -0
  111. package/lib/module/payment/NativeMobilePaymentPayment.js +138 -0
  112. package/lib/module/payment/NativeMobilePaymentPayment.js.map +1 -0
  113. package/lib/module/payment/index.js +113 -0
  114. package/lib/module/payment/index.js.map +1 -0
  115. package/lib/module/reader/NativeMobilePaymentReader.js +151 -0
  116. package/lib/module/reader/NativeMobilePaymentReader.js.map +1 -0
  117. package/lib/module/reader/index.js +109 -0
  118. package/lib/module/reader/index.js.map +1 -0
  119. package/lib/module/setting/NativeMobilePaymentSetting.js +5 -0
  120. package/lib/module/setting/NativeMobilePaymentSetting.js.map +1 -0
  121. package/lib/module/setting/index.js +74 -0
  122. package/lib/module/setting/index.js.map +1 -0
  123. package/lib/module/type.js +27 -0
  124. package/lib/module/type.js.map +1 -0
  125. package/lib/module/util.js +32 -0
  126. package/lib/module/util.js.map +1 -0
  127. package/lib/typescript/package.json +1 -0
  128. package/lib/typescript/src/authorization/NativeMobilePaymentAuthorization.d.ts +82 -0
  129. package/lib/typescript/src/authorization/NativeMobilePaymentAuthorization.d.ts.map +1 -0
  130. package/lib/typescript/src/authorization/index.d.ts +14 -0
  131. package/lib/typescript/src/authorization/index.d.ts.map +1 -0
  132. package/lib/typescript/src/index.d.ts +5 -0
  133. package/lib/typescript/src/index.d.ts.map +1 -0
  134. package/lib/typescript/src/payment/NativeMobilePaymentPayment.d.ts +725 -0
  135. package/lib/typescript/src/payment/NativeMobilePaymentPayment.d.ts.map +1 -0
  136. package/lib/typescript/src/payment/index.d.ts +13 -0
  137. package/lib/typescript/src/payment/index.d.ts.map +1 -0
  138. package/lib/typescript/src/reader/NativeMobilePaymentReader.d.ts +318 -0
  139. package/lib/typescript/src/reader/NativeMobilePaymentReader.d.ts.map +1 -0
  140. package/lib/typescript/src/reader/index.d.ts +19 -0
  141. package/lib/typescript/src/reader/index.d.ts.map +1 -0
  142. package/lib/typescript/src/setting/NativeMobilePaymentSetting.d.ts +49 -0
  143. package/lib/typescript/src/setting/NativeMobilePaymentSetting.d.ts.map +1 -0
  144. package/lib/typescript/src/setting/index.d.ts +17 -0
  145. package/lib/typescript/src/setting/index.d.ts.map +1 -0
  146. package/lib/typescript/src/type.d.ts +23 -0
  147. package/lib/typescript/src/type.d.ts.map +1 -0
  148. package/lib/typescript/src/util.d.ts +3 -0
  149. package/lib/typescript/src/util.d.ts.map +1 -0
  150. package/package.json +178 -0
  151. package/src/authorization/NativeMobilePaymentAuthorization.ts +297 -0
  152. package/src/authorization/index.ts +60 -0
  153. package/src/index.ts +4 -0
  154. package/src/payment/NativeMobilePaymentPayment.ts +1220 -0
  155. package/src/payment/index.ts +161 -0
  156. package/src/reader/NativeMobilePaymentReader.ts +463 -0
  157. package/src/reader/index.ts +140 -0
  158. package/src/setting/NativeMobilePaymentSetting.ts +254 -0
  159. package/src/setting/index.ts +91 -0
  160. package/src/type.ts +35 -0
  161. package/src/util.ts +31 -0
@@ -0,0 +1,30 @@
1
+ //
2
+ // ReaderConnectionFailureRecoverySuggestion+Extension.swift
3
+
4
+ //
5
+ // Created by chancetio on 2023/9/12.
6
+ //
7
+
8
+ import Foundation
9
+ import SquareMobilePaymentsSDK
10
+
11
+ extension ReaderConnectionFailureRecoverySuggestion {
12
+ var jsonValue: String {
13
+ switch self {
14
+ case .noSuggestion:
15
+ return "NO_SUGGESTION"
16
+ case .retry:
17
+ return "RETRY"
18
+ case .activateAccount:
19
+ return "ACTIVATE_ACCOUNT"
20
+ case .contactSupport:
21
+ return "CONTACT_SUPPORT"
22
+ case .reviewTapToPayGuidelines:
23
+ return "REVIEW_TAP_TO_PAY_GUIDELINES"
24
+ case .enablePasscodeToUseTapToPay:
25
+ return "ENABLE_PASSCODE_TO_USE_TAP_TO_PAY"
26
+ @unknown default:
27
+ return "UNKNOWN"
28
+ }
29
+ }
30
+ }
@@ -0,0 +1,18 @@
1
+ //
2
+ // ReaderConnectionInfo+Extension.swift
3
+
4
+ //
5
+ // Created by chancetio on 2023/9/12.
6
+ //
7
+
8
+ import Foundation
9
+ import SquareMobilePaymentsSDK
10
+
11
+ extension ReaderConnectionInfo {
12
+ var jsonDictionary: [String: Any] {
13
+ var result: [String: Any] = [:]
14
+ result["state"] = self.state.jsonValue
15
+ result["failureInfo"] = self.failureInfo?.jsonDictionary
16
+ return result
17
+ }
18
+ }
@@ -0,0 +1,26 @@
1
+ //
2
+ // ReaderConnectionStatus+Extension.swift
3
+
4
+ //
5
+ // Created by chancetio on 2023/9/12.
6
+ //
7
+
8
+ import Foundation
9
+ import SquareMobilePaymentsSDK
10
+
11
+ extension ReaderConnectionState {
12
+ var jsonValue: String {
13
+ switch self {
14
+ case .notConnected:
15
+ return "NOT_CONNECTED"
16
+ case .connecting:
17
+ return "CONNECTING"
18
+ case .connected:
19
+ return "CONNECTED"
20
+ case .failedToConnect:
21
+ return "FAILED_TO_CONNECT"
22
+ @unknown default:
23
+ return "UNKNOWN"
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,19 @@
1
+ //
2
+ // FirmwareInfo+Extension.swift
3
+
4
+ //
5
+ // Created by chancetio on 2023/9/12.
6
+ //
7
+
8
+ import Foundation
9
+ import SquareMobilePaymentsSDK
10
+
11
+ extension ReaderFirmwareInfo {
12
+ var jsonDictionary: [String: Any] {
13
+ var result: [String: Any] = [:]
14
+ result["version"] = self.version
15
+ result["updatePercentage"] = self.updatePercentage
16
+ result["failureReason"] = self.failureReason?.localizedDescription
17
+ return result
18
+ }
19
+ }
@@ -0,0 +1,30 @@
1
+ //
2
+ // ReaderInfo+Extension.swift
3
+
4
+ //
5
+ // Created by chancetio on 2023/9/12.
6
+ //
7
+
8
+ import Foundation
9
+ import SquareMobilePaymentsSDK
10
+
11
+ extension ReaderInfo {
12
+ var jsonDictionary: [String: Any] {
13
+ var result: [String: Any] = [:]
14
+ result["id"] = String(self.id)
15
+ result["name"] = self.name
16
+ result["serialNumber"] = self.serialNumber
17
+ result["model"] = self.model.jsonValue
18
+ result["supportedInputMethods"] = self.supportedInputMethods.jsonValue
19
+ result["connectionInfo"] = self.connectionInfo.jsonDictionary
20
+ result["firmwareInfo"] = self.firmwareInfo?.jsonDictionary
21
+ result["state"] = self.state.jsonValue
22
+ result["status"] = self.statusInfo.jsonDictionary
23
+ result["batteryStatus"] = self.batteryStatus?.jsonDictionary
24
+ result["isBlinkable"] = self.isBlinkable
25
+ result["isForgettable"] = self.isForgettable
26
+ result["isConnectionRetryable"] = self.isConnectionRetryable
27
+ result["cardInsertionStatus"] = self.cardInsertionStatus.jsonValue
28
+ return result
29
+ }
30
+ }
@@ -0,0 +1,28 @@
1
+ //
2
+ // ReaderModel+Extension.swift
3
+
4
+ //
5
+ // Created by chancetio on 2023/9/12.
6
+ //
7
+
8
+ import Foundation
9
+ import SquareMobilePaymentsSDK
10
+
11
+ extension ReaderModel {
12
+ var jsonValue: String {
13
+ switch self {
14
+ case .magstripe:
15
+ return "MAGSTRIPE"
16
+ case .contactlessAndChip:
17
+ return "CONTACTLESS_AND_CHIP"
18
+ case .stand:
19
+ return "STAND"
20
+ case .tapToPay:
21
+ return "TAP_TO_PAY"
22
+ case .unknown:
23
+ return "UNKNOWN"
24
+ @unknown default:
25
+ return "UNKNOWN"
26
+ }
27
+ }
28
+ }
@@ -0,0 +1,30 @@
1
+ //
2
+ // ReaderState+Extension.swift
3
+
4
+ //
5
+ // Created by chancetio on 2023/9/12.
6
+ //
7
+
8
+ import Foundation
9
+ import SquareMobilePaymentsSDK
10
+
11
+ extension ReaderState {
12
+ var jsonValue: String {
13
+ switch self {
14
+ case .disconnected:
15
+ return "DISCONNECTED"
16
+ case .connecting:
17
+ return "CONNECTING"
18
+ case .ready:
19
+ return "READY"
20
+ case .updatingFirmware:
21
+ return "UPDATING_FIRMWARE"
22
+ case .failedToConnect:
23
+ return "FAILED_TO_CONNECT"
24
+ case .disabled:
25
+ return "DISABLED"
26
+ @unknown default:
27
+ return "UNKNOWN"
28
+ }
29
+ }
30
+ }
@@ -0,0 +1,60 @@
1
+ //
2
+ // TrackingConsentState+Extension.swift
3
+ // LocationHub
4
+ //
5
+ // Created by chancetio on 2025/10/16.
6
+ //
7
+ import Foundation
8
+ import SquareMobilePaymentsSDK
9
+
10
+ extension ReaderStatus {
11
+ var jsonValue: String {
12
+ switch self {
13
+ case .connectingToDevice:
14
+ return "CONNECTING_TO_DEVICE"
15
+ case .connectingToSquare:
16
+ return "CONNECTING_TO_SQUARE"
17
+ case .readerUnavailable:
18
+ return "READER_UNAVAILABLE"
19
+ case .faulty:
20
+ return "FAULTY"
21
+ case .ready:
22
+ return "READY"
23
+ @unknown default:
24
+ return "UNKNOWN"
25
+ }
26
+ }
27
+ }
28
+
29
+ extension ReaderUnavailableReason {
30
+ var jsonValue: String? {
31
+ switch self {
32
+ case .blockingFirmwareUpdate:
33
+ return "BLOCKING_UPDATE"
34
+ case .bluetoothDisabled:
35
+ return "BLUETOOTH_DISABLED"
36
+ case .bluetoothFailure:
37
+ return "BLUETOOTH_FAILURE"
38
+ case .tapToPayError:
39
+ return "TAP_TO_PAY_ERROR"
40
+ case .tapToPayIsNotLinked:
41
+ return "TAP_TO_PAY_IS_NOT_LINKED"
42
+ case .secureConnectionNetworkFailure:
43
+ return "SECURE_CONNECTION_NETWORK_FAILURE"
44
+ case .readerTimeout:
45
+ return "READER_TIMEOUT"
46
+ case .maxReadersConnected:
47
+ return "MAX_READERS_CONNECTED"
48
+ case .internalError:
49
+ return "INTERNAL_ERROR"
50
+ case .secureConnectionToSquareFailure:
51
+ return "SECURE_CONNECTION_TO_SQUARE_FAILURE"
52
+ case .notConnectedToInternet:
53
+ return "NOT_CONNECTED_TO_INTERNET"
54
+ case .revokedByDevice:
55
+ return "REVOKED_BY_DEVICE"
56
+ @unknown default:
57
+ return "UNKNOWN"
58
+ }
59
+ }
60
+ }
@@ -0,0 +1,22 @@
1
+ //
2
+ // ReaderStatusInfo+Extension.swift
3
+
4
+ //
5
+ // Created by chancetio on 2025/10/16.
6
+ //
7
+
8
+ import Foundation
9
+ import SquareMobilePaymentsSDK
10
+
11
+ extension ReaderStatusInfo {
12
+ var jsonDictionary: [String: Any] {
13
+ var result: [String: Any] = [:]
14
+ result["status"] = self.status.jsonValue
15
+ if let unavailableReasonInfo = self.unavailableReasonInfo {
16
+ result["unavailableReason"] = unavailableReasonInfo.reason.jsonValue
17
+ result["title"] = unavailableReasonInfo.title
18
+ result["description"] = unavailableReasonInfo.detail
19
+ }
20
+ return result
21
+ }
22
+ }
@@ -0,0 +1,25 @@
1
+ //
2
+ // SDKSettings.swift
3
+
4
+ //
5
+ // Created by chancetio on 2024/6/18.
6
+ //
7
+
8
+ import Foundation
9
+ import SquareMobilePaymentsSDK
10
+
11
+ extension SDKSettings {
12
+ var jsonDictionary: [String: Any] {
13
+ var result: [String: Any] = [:]
14
+ switch self.environment {
15
+ case .production:
16
+ result["environment"] = "PRODUCTION"
17
+ case .sandbox:
18
+ result["environment"] = "SANDBOX"
19
+ @unknown default:
20
+ result["environment"] = "UNKNOWN"
21
+ }
22
+ result["version"] = self.version
23
+ return result
24
+ }
25
+ }
@@ -0,0 +1,32 @@
1
+ //
2
+ // SourceTypeExtension.swift
3
+
4
+ //
5
+ // Created by chancetio on 2024/4/22.
6
+ //
7
+
8
+ import Foundation
9
+ import SquareMobilePaymentsSDK
10
+
11
+ extension SourceType {
12
+ var jsonValue: String {
13
+ switch self {
14
+ case .card:
15
+ return "CARD"
16
+ case .cash:
17
+ return "CASH"
18
+ case .external:
19
+ return "EXTERNAL"
20
+ case .wallet:
21
+ return "WALLET"
22
+ case .bankAccount:
23
+ return "BANK_ACCOUNT"
24
+ case .squareAccount:
25
+ return "SQUARE_ACCOUNT"
26
+ case .unknown:
27
+ return "UNKNOWN"
28
+ @unknown default:
29
+ return "UNKNOWN"
30
+ }
31
+ }
32
+ }
@@ -0,0 +1,25 @@
1
+ //
2
+ // TrackingConsentState+Extension.swift
3
+ // LocationHub
4
+ //
5
+ // Created by chancetio on 2025/10/16.
6
+ //
7
+ import Foundation
8
+ import SquareMobilePaymentsSDK
9
+
10
+ extension TrackingConsentState {
11
+ var jsonValue: String {
12
+ switch self {
13
+ case .pending:
14
+ return "PENDING"
15
+ case .granted:
16
+ return "GRANTED"
17
+ case .denied:
18
+ return "DENIED"
19
+ case .notRequired:
20
+ return "NOT_REQUIRED"
21
+ @unknown default:
22
+ return "UNKNOWN"
23
+ }
24
+ }
25
+ }
@@ -0,0 +1,41 @@
1
+ //
2
+ // RNMobilePaymentErrorUtilities.swift
3
+ //
4
+ // Created by chancetio on 2023/9/12.
5
+ //
6
+ import Foundation
7
+
8
+ enum ErrorUtilities {
9
+ static let UNKNOWN_ERROR = "UNKNOWN_ERROR"
10
+ static let PARAMS_ERROR = "PARAMS_ERROR"
11
+
12
+ static func createNativeModuleError(code: String?, message: String?) -> String? {
13
+ return serializeErrorToJson(code: code, message: message, debugCode: nil, debugMessage: nil)
14
+ }
15
+
16
+ static func serializeErrorToJson(code: String?, error: NSError) -> String? {
17
+ let debugCode = error.userInfo["com.squareup.MobilePaymentsSDK.ErrorDebugCode"] as? String
18
+ let debugMessage = error.userInfo["com.squareup.MobilePaymentsSDK.ErrorDebugMessage"] as? String
19
+ return serializeErrorToJson(code: code, message: error.localizedDescription, debugCode: debugCode, debugMessage: debugMessage)
20
+ }
21
+
22
+ private static func serializeErrorToJson(code: String?,
23
+ message: String?,
24
+ debugCode: String?,
25
+ debugMessage: String?) -> String?
26
+ {
27
+ var errObject: [String: String] = [:]
28
+ errObject["code"] = code
29
+ errObject["message"] = message
30
+ errObject["debugCode"] = debugCode
31
+ errObject["debugMessage"] = debugMessage
32
+
33
+ let jsonData = try? JSONSerialization.data(withJSONObject: errObject, options: .prettyPrinted)
34
+
35
+ guard let jsonData = jsonData else {
36
+ return "{'message': 'failed to serialize error'}"
37
+ }
38
+
39
+ return String(data: jsonData, encoding: .utf8)
40
+ }
41
+ }
@@ -0,0 +1,154 @@
1
+ //
2
+ // MobilePaymentAuthorization.swift
3
+ //
4
+ // Created by chancetio on 2023/9/12.
5
+ //
6
+ import Foundation
7
+ import SquareMobilePaymentsSDK
8
+
9
+ let AuthorizationErrorNoNetwork = "AUTHORIZATION_ERROR_NO_NETWORK"
10
+ let AuthorizationErrorAlreadyAuthorized = "AUTHORIZATION_ERROR_ALREADY_AUTHORIZED"
11
+ let AuthorizationErrorAlreadyInProgress = "AUTHORIZATION_ERROR_ALREADY_IN_PROGRESS"
12
+ let AuthorizationErrorDeauthorizationInProgress = "AUTHORIZATION_ERROR_DEAUTHORIZATION_IN_PROGRESS"
13
+ let AuthorizationErrorAuthorizationCodeAlreadyRedeemed = "AUTHORIZATION_ERROR_AUTHORIZATION_CODE_ALREADY_REDEEMED"
14
+ let AuthorizationErrorExpiredAuthorizationCode = "AUTHORIZATION_ERROR_EXPIRED_AUTHORIZATION_CODE"
15
+ let AuthorizationErrorInvalidAuthorizationCode = "AUTHORIZATION_ERROR_INVALID_AUTHORIZATION_CODE"
16
+ let AuthorizationErrorInvalidAccessToken = "AUTHORIZATION_ERROR_INVALID_ACCESS_TOKEN"
17
+ let AuthorizationErrorEmptyAccessToken = "AUTHORIZATION_ERROR_EMPTY_ACCESS_TOKEN"
18
+ let AuthorizationErrorInvalidLocationID = "AUTHORIZATION_ERROR_INVALID_LOCATION_ID"
19
+ let AuthorizationErrorLocationNotActivatedForCardProcessing = "AUTHORIZATION_ERROR_LOCATION_NOT_ACTIVATED_FOR_CARD_PROCESSING"
20
+ let AuthorizationErrorEmptyLocationID = "AUTHORIZATION_ERROR_EMPTY_LOCATION_ID"
21
+ let AuthorizationErrorUnsupportedCountry = "AUTHORIZATION_ERROR_UNSUPPORTED_COUNTRY"
22
+ let AuthorizationErrorDeviceTimeDoesNotMatchServerTime = "AUTHORIZATION_ERROR_DEVICE_TIME_DOES_NOT_MATCH_SERVER_TIME"
23
+ let AuthorizationErrorUnexpected = "AUTHORIZATION_ERROR_UNEXPECTED"
24
+
25
+ @objc public protocol RCTMobilePaymentAuthorizationEventEmitter {
26
+ func onAuthorizationStateDidChange(_ value: String)
27
+ }
28
+
29
+ @objcMembers
30
+ public class MobilePaymentAuthorization: NSObject {
31
+ private lazy var observer = MobilePaymentAuthorizationObserver(owner: self)
32
+
33
+ public weak var emitter: RCTMobilePaymentAuthorizationEventEmitter?
34
+
35
+ deinit {
36
+ print("deinit")
37
+ invalidate()
38
+ }
39
+
40
+ public func initialize() {
41
+ print("auth initialize")
42
+ NotificationUtils.addObserver(self, selector: #selector(onSDKInitialize), name: MobilePaymentNotificationKeys.sdkInitialized.rawValue)
43
+ if MobilePaymentSDK.shared.isInitialized {
44
+ print("auth onSDKInitialize")
45
+ onSDKInitialize()
46
+ }
47
+ }
48
+
49
+ public func invalidate() {
50
+ print("auth invalidate")
51
+ NotificationUtils.removeObserver(self)
52
+ if MobilePaymentSDK.shared.isInitialized {
53
+ MobilePaymentsSDK.shared.authorizationManager.remove(observer)
54
+ }
55
+ }
56
+
57
+ @objc
58
+ private func onSDKInitialize() {
59
+ MobilePaymentsSDK.shared.authorizationManager.remove(observer)
60
+ MobilePaymentsSDK.shared.authorizationManager.add(observer)
61
+ }
62
+
63
+ public func authorize(accessToken: String, locationId: String, completion: @escaping (_ error: NativeErrorInfo?) -> Void) {
64
+ DispatchQueue.main.async {
65
+ MobilePaymentsSDK.shared.authorizationManager.authorize(withAccessToken: accessToken, locationID: locationId) { [weak self] error in
66
+ guard let self = self else {
67
+ return
68
+ }
69
+ if let error = error {
70
+ let errorCode = self.authorizationErrorCode(nativeErrorCode: (error as NSError).code)
71
+ completion(NativeErrorInfo(code: errorCode, message: ErrorUtilities.serializeErrorToJson(code: errorCode, error: error as NSError), error: error))
72
+ return
73
+ }
74
+ completion(nil)
75
+ }
76
+ }
77
+ }
78
+
79
+ public func deauthorize(completion: @escaping (_ error: NativeErrorInfo?) -> Void) {
80
+ DispatchQueue.main.async {
81
+ if MobilePaymentsSDK.shared.authorizationManager.state == .notAuthorized {
82
+ completion(nil)
83
+ return
84
+ }
85
+ MobilePaymentsSDK.shared.authorizationManager.deauthorize { [weak self] in
86
+ guard self != nil else {
87
+ return
88
+ }
89
+ completion(nil)
90
+ }
91
+ }
92
+ }
93
+
94
+ public func state() -> String {
95
+ return MobilePaymentsSDK.shared.authorizationManager.state.jsonValue
96
+ }
97
+
98
+ public func location() -> [String: Any]? {
99
+ return MobilePaymentsSDK.shared.authorizationManager.location?.jsonDictionary
100
+ }
101
+
102
+ private func authorizationErrorCode(nativeErrorCode: Int) -> String {
103
+ if let error = AuthorizationError(rawValue: nativeErrorCode) {
104
+ switch error {
105
+ case .alreadyAuthorized:
106
+ return AuthorizationErrorAlreadyAuthorized
107
+ case .alreadyInProgress:
108
+ return AuthorizationErrorAlreadyInProgress
109
+ case .authorizationCodeAlreadyRedeemed:
110
+ return AuthorizationErrorAuthorizationCodeAlreadyRedeemed
111
+ case .deauthorizationInProgress:
112
+ return AuthorizationErrorDeauthorizationInProgress
113
+ case .deviceTimeDoesNotMatchServerTime:
114
+ return AuthorizationErrorDeviceTimeDoesNotMatchServerTime
115
+ case .emptyLocationID:
116
+ return AuthorizationErrorEmptyLocationID
117
+ case .emptyAccessToken:
118
+ return AuthorizationErrorEmptyAccessToken
119
+ case .expiredAuthorizationCode:
120
+ return AuthorizationErrorExpiredAuthorizationCode
121
+ case .invalidAuthorizationCode:
122
+ return AuthorizationErrorInvalidAuthorizationCode
123
+ case .invalidAccessToken:
124
+ return AuthorizationErrorInvalidAccessToken
125
+ case .invalidLocationID:
126
+ return AuthorizationErrorInvalidLocationID
127
+ case .locationNotActivatedForCardProcessing:
128
+ return AuthorizationErrorLocationNotActivatedForCardProcessing
129
+ case .noNetwork:
130
+ return AuthorizationErrorNoNetwork
131
+ case .unsupportedCountry:
132
+ return AuthorizationErrorUnsupportedCountry
133
+ case .unexpected:
134
+ return AuthorizationErrorUnexpected
135
+ @unknown default:
136
+ return ErrorUtilities.UNKNOWN_ERROR
137
+ }
138
+ } else {
139
+ return ErrorUtilities.UNKNOWN_ERROR
140
+ }
141
+ }
142
+ }
143
+
144
+ class MobilePaymentAuthorizationObserver: AuthorizationStateObserver {
145
+ weak var owner: MobilePaymentAuthorization?
146
+
147
+ init(owner: MobilePaymentAuthorization) {
148
+ self.owner = owner
149
+ }
150
+
151
+ func authorizationStateDidChange(_ authorizationState: AuthorizationState) {
152
+ owner?.emitter?.onAuthorizationStateDidChange(authorizationState.jsonValue)
153
+ }
154
+ }
@@ -0,0 +1,15 @@
1
+ //
2
+ // MobilePaymentDateFormatter.swift
3
+ //
4
+ // Created by chancetio on 2023/9/13.
5
+ //
6
+
7
+ import Foundation
8
+
9
+ enum MobilePaymentDateFormatter {
10
+ private static let dateFormatter = ISO8601DateFormatter()
11
+
12
+ static func iso8601String(from date: Date) -> String {
13
+ return dateFormatter.string(from: date)
14
+ }
15
+ }