react-amwal-pay 0.1.8 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +147 -128
- package/ReactAmwalPay.podspec +23 -23
- package/android/build.gradle +93 -93
- package/ios/ReactAmwalPay.m +14 -14
- package/ios/ReactAmwalPay.swift +111 -111
- package/lib/module/AmwalPaySDK.js +8 -8
- package/lib/module/AmwalPaySDK.js.map +1 -1
- package/lib/module/NativeReactAmwalPay.js.map +1 -1
- package/lib/module/index.js +4 -2
- package/lib/module/index.js.map +1 -1
- package/lib/module/network/NetworkClient.js.map +1 -1
- package/lib/module/utils/SecureHashUtil.js.map +1 -1
- package/lib/module/utils/UuidUtil.js +29 -0
- package/lib/module/utils/UuidUtil.js.map +1 -0
- package/lib/typescript/src/NativeReactAmwalPay.d.ts +2 -0
- package/lib/typescript/src/NativeReactAmwalPay.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +2 -1
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/utils/UuidUtil.d.ts +18 -0
- package/lib/typescript/src/utils/UuidUtil.d.ts.map +1 -0
- package/package.json +173 -173
- package/src/AmwalPaySDK.ts +97 -97
- package/src/NativeReactAmwalPay.ts +2 -0
- package/src/index.tsx +3 -0
- package/src/network/NetworkClient.ts +83 -83
- package/src/utils/SecureHashUtil.ts +44 -44
- package/src/utils/UuidUtil.ts +26 -0
package/ios/ReactAmwalPay.swift
CHANGED
|
@@ -1,111 +1,111 @@
|
|
|
1
|
-
import Foundation
|
|
2
|
-
import amwalsdk
|
|
3
|
-
import React
|
|
4
|
-
|
|
5
|
-
@objc(ReactAmwalPay)
|
|
6
|
-
class ReactAmwalPay: RCTEventEmitter {
|
|
7
|
-
private var hasListeners = false
|
|
8
|
-
|
|
9
|
-
private func mapEnvironment(environment: String) -> Config.Environment {
|
|
10
|
-
switch environment {
|
|
11
|
-
case "PROD": return .PROD
|
|
12
|
-
case "UAT": return .UAT
|
|
13
|
-
case "SIT": return .SIT
|
|
14
|
-
default: return .PROD
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
private func mapCurrency(currency: String) -> Config.Currency {
|
|
19
|
-
switch currency {
|
|
20
|
-
case "OMR": return .OMR
|
|
21
|
-
default: return .OMR
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
private func mapTransactionType(transactionType: String) -> Config.TransactionType {
|
|
26
|
-
switch transactionType {
|
|
27
|
-
case "CARD_WALLET": return .cardWallet
|
|
28
|
-
case "NFC": return .nfc
|
|
29
|
-
case "APPLE_PAY": return .applePay
|
|
30
|
-
default: return .cardWallet
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
private func mapLocale(locale: String) -> Config.Locale {
|
|
35
|
-
switch locale {
|
|
36
|
-
case "en": return .en
|
|
37
|
-
case "ar": return .ar
|
|
38
|
-
default: return .en
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
private var onResponseCallback: RCTResponseSenderBlock?
|
|
43
|
-
private var onCustomerIdCallback: RCTResponseSenderBlock?
|
|
44
|
-
private func prepareConfig(config: [String: Any]) -> Config {
|
|
45
|
-
return Config(
|
|
46
|
-
environment: mapEnvironment(environment: config["environment"] as? String ?? "PROD"),
|
|
47
|
-
sessionToken: config["sessionToken"] as? String ?? "",
|
|
48
|
-
currency: mapCurrency(currency: config["currency"] as? String ?? "OMR"),
|
|
49
|
-
amount: config["amount"] as? String ?? "",
|
|
50
|
-
merchantId: config["merchantId"] as? String ?? "",
|
|
51
|
-
terminalId: config["terminalId"] as? String ?? "",
|
|
52
|
-
customerId: config["customerId"] as? String,
|
|
53
|
-
locale: mapLocale(locale: config["locale"] as? String ?? "en"),
|
|
54
|
-
transactionType: mapTransactionType(transactionType: config["transactionType"] as? String ?? "CARD_WALLET")
|
|
55
|
-
)
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
@objc
|
|
59
|
-
func initiate(_ config: [String: Any],
|
|
60
|
-
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
61
|
-
rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
62
|
-
DispatchQueue.main.async {
|
|
63
|
-
do {
|
|
64
|
-
let sdkConfig = self.prepareConfig(config: config)
|
|
65
|
-
let sdk = AmwalSDK()
|
|
66
|
-
|
|
67
|
-
guard let rootVC = UIApplication.shared.keyWindow?.rootViewController else {
|
|
68
|
-
reject("NO_ROOT_VC", "No root view controller found", nil)
|
|
69
|
-
return
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
let sdkVC = try sdk.createViewController(
|
|
73
|
-
config: sdkConfig,
|
|
74
|
-
onResponse: { [weak self] response in
|
|
75
|
-
self?.onResponseCallback?([[
|
|
76
|
-
"status": response != nil ? "success" : "error",
|
|
77
|
-
"message": response != nil ? "Transaction completed" : "Transaction failed",
|
|
78
|
-
"data": response ?? ""
|
|
79
|
-
]])
|
|
80
|
-
},
|
|
81
|
-
onCustomerId: { [weak self] customerId in
|
|
82
|
-
self?.onCustomerIdCallback?([customerId])
|
|
83
|
-
}
|
|
84
|
-
)
|
|
85
|
-
|
|
86
|
-
// Present modally (critical missing piece)
|
|
87
|
-
rootVC.present(sdkVC, animated: true)
|
|
88
|
-
|
|
89
|
-
resolve(true)
|
|
90
|
-
} catch {
|
|
91
|
-
print("Presentation failed: \(error.localizedDescription)")
|
|
92
|
-
reject("PRESENTATION_ERROR", error.localizedDescription, error)
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
@objc
|
|
98
|
-
func onResponse(_ callback: @escaping RCTResponseSenderBlock) {
|
|
99
|
-
onResponseCallback = callback
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
@objc
|
|
103
|
-
func onCustomerId(_ callback: @escaping RCTResponseSenderBlock) {
|
|
104
|
-
onCustomerIdCallback = callback
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
override static func requiresMainQueueSetup() -> Bool {
|
|
109
|
-
return true
|
|
110
|
-
}
|
|
111
|
-
}
|
|
1
|
+
import Foundation
|
|
2
|
+
import amwalsdk
|
|
3
|
+
import React
|
|
4
|
+
|
|
5
|
+
@objc(ReactAmwalPay)
|
|
6
|
+
class ReactAmwalPay: RCTEventEmitter {
|
|
7
|
+
private var hasListeners = false
|
|
8
|
+
|
|
9
|
+
private func mapEnvironment(environment: String) -> Config.Environment {
|
|
10
|
+
switch environment {
|
|
11
|
+
case "PROD": return .PROD
|
|
12
|
+
case "UAT": return .UAT
|
|
13
|
+
case "SIT": return .SIT
|
|
14
|
+
default: return .PROD
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
private func mapCurrency(currency: String) -> Config.Currency {
|
|
19
|
+
switch currency {
|
|
20
|
+
case "OMR": return .OMR
|
|
21
|
+
default: return .OMR
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
private func mapTransactionType(transactionType: String) -> Config.TransactionType {
|
|
26
|
+
switch transactionType {
|
|
27
|
+
case "CARD_WALLET": return .cardWallet
|
|
28
|
+
case "NFC": return .nfc
|
|
29
|
+
case "APPLE_PAY": return .applePay
|
|
30
|
+
default: return .cardWallet
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
private func mapLocale(locale: String) -> Config.Locale {
|
|
35
|
+
switch locale {
|
|
36
|
+
case "en": return .en
|
|
37
|
+
case "ar": return .ar
|
|
38
|
+
default: return .en
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
private var onResponseCallback: RCTResponseSenderBlock?
|
|
43
|
+
private var onCustomerIdCallback: RCTResponseSenderBlock?
|
|
44
|
+
private func prepareConfig(config: [String: Any]) -> Config {
|
|
45
|
+
return Config(
|
|
46
|
+
environment: mapEnvironment(environment: config["environment"] as? String ?? "PROD"),
|
|
47
|
+
sessionToken: config["sessionToken"] as? String ?? "",
|
|
48
|
+
currency: mapCurrency(currency: config["currency"] as? String ?? "OMR"),
|
|
49
|
+
amount: config["amount"] as? String ?? "",
|
|
50
|
+
merchantId: config["merchantId"] as? String ?? "",
|
|
51
|
+
terminalId: config["terminalId"] as? String ?? "",
|
|
52
|
+
customerId: config["customerId"] as? String,
|
|
53
|
+
locale: mapLocale(locale: config["locale"] as? String ?? "en"),
|
|
54
|
+
transactionType: mapTransactionType(transactionType: config["transactionType"] as? String ?? "CARD_WALLET")
|
|
55
|
+
)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
@objc
|
|
59
|
+
func initiate(_ config: [String: Any],
|
|
60
|
+
resolver resolve: @escaping RCTPromiseResolveBlock,
|
|
61
|
+
rejecter reject: @escaping RCTPromiseRejectBlock) {
|
|
62
|
+
DispatchQueue.main.async {
|
|
63
|
+
do {
|
|
64
|
+
let sdkConfig = self.prepareConfig(config: config)
|
|
65
|
+
let sdk = AmwalSDK()
|
|
66
|
+
|
|
67
|
+
guard let rootVC = UIApplication.shared.keyWindow?.rootViewController else {
|
|
68
|
+
reject("NO_ROOT_VC", "No root view controller found", nil)
|
|
69
|
+
return
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
let sdkVC = try sdk.createViewController(
|
|
73
|
+
config: sdkConfig,
|
|
74
|
+
onResponse: { [weak self] response in
|
|
75
|
+
self?.onResponseCallback?([[
|
|
76
|
+
"status": response != nil ? "success" : "error",
|
|
77
|
+
"message": response != nil ? "Transaction completed" : "Transaction failed",
|
|
78
|
+
"data": response ?? ""
|
|
79
|
+
]])
|
|
80
|
+
},
|
|
81
|
+
onCustomerId: { [weak self] customerId in
|
|
82
|
+
self?.onCustomerIdCallback?([customerId])
|
|
83
|
+
}
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
// Present modally (critical missing piece)
|
|
87
|
+
rootVC.present(sdkVC, animated: true)
|
|
88
|
+
|
|
89
|
+
resolve(true)
|
|
90
|
+
} catch {
|
|
91
|
+
print("Presentation failed: \(error.localizedDescription)")
|
|
92
|
+
reject("PRESENTATION_ERROR", error.localizedDescription, error)
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
@objc
|
|
98
|
+
func onResponse(_ callback: @escaping RCTResponseSenderBlock) {
|
|
99
|
+
onResponseCallback = callback
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
@objc
|
|
103
|
+
func onCustomerId(_ callback: @escaping RCTResponseSenderBlock) {
|
|
104
|
+
onCustomerIdCallback = callback
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
override static func requiresMainQueueSetup() -> Bool {
|
|
109
|
+
return true
|
|
110
|
+
}
|
|
111
|
+
}
|
|
@@ -15,9 +15,9 @@ class AmwalPaySDK {
|
|
|
15
15
|
return AmwalPaySDK.instance;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
/**
|
|
19
|
-
* Initiates the payment process by first fetching a session token and then starting the payment flow
|
|
20
|
-
* @param config The payment configuration
|
|
18
|
+
/**
|
|
19
|
+
* Initiates the payment process by first fetching a session token and then starting the payment flow
|
|
20
|
+
* @param config The payment configuration
|
|
21
21
|
*/
|
|
22
22
|
async startPayment(config) {
|
|
23
23
|
try {
|
|
@@ -51,9 +51,9 @@ class AmwalPaySDK {
|
|
|
51
51
|
this.removeEventListeners();
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
/**
|
|
55
|
-
* Sets up event listeners for AmwalPay events
|
|
56
|
-
* @param config The payment configuration containing callback functions
|
|
54
|
+
/**
|
|
55
|
+
* Sets up event listeners for AmwalPay events
|
|
56
|
+
* @param config The payment configuration containing callback functions
|
|
57
57
|
*/
|
|
58
58
|
setupEventListeners(config) {
|
|
59
59
|
// Remove any existing listeners
|
|
@@ -68,8 +68,8 @@ class AmwalPaySDK {
|
|
|
68
68
|
});
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
/**
|
|
72
|
-
* Removes all event listeners
|
|
71
|
+
/**
|
|
72
|
+
* Removes all event listeners
|
|
73
73
|
*/
|
|
74
74
|
removeEventListeners() {
|
|
75
75
|
this.onResponseSubscription?.remove();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["initiate","onCustomerId","onResponse","NetworkClient","AmwalPaySDK","onResponseSubscription","onCustomerIdSubscription","constructor","getInstance","instance","startPayment","config","setupEventListeners","networkClient","sessionToken","fetchSessionToken","environment","merchantId","customerId","secureHash","completeConfig","error","console","dispose","removeEventListeners","response","log","remove"],"sourceRoot":"
|
|
1
|
+
{"version":3,"names":["initiate","onCustomerId","onResponse","NetworkClient","AmwalPaySDK","onResponseSubscription","onCustomerIdSubscription","constructor","getInstance","instance","startPayment","config","setupEventListeners","networkClient","sessionToken","fetchSessionToken","environment","merchantId","customerId","secureHash","completeConfig","error","console","dispose","removeEventListeners","response","log","remove"],"sourceRoot":"../../src","sources":["AmwalPaySDK.ts"],"mappings":";;AAAA,SAASA,QAAQ,EAAEC,YAAY,EAAEC,UAAU,QAA6B,YAAS;AACjF,OAAOC,aAAa,MAAM,4BAAyB;AAInD,MAAMC,WAAW,CAAC;EAGRC,sBAAsB,GAA2B,IAAI;EAErDC,wBAAwB,GAA2B,IAAI;EAEvDC,WAAWA,CAAA,EAAG;IACpB;EAAA;EAIF,OAAOC,WAAWA,CAAA,EAAgB;IAChC,IAAI,CAACJ,WAAW,CAACK,QAAQ,EAAE;MACzBL,WAAW,CAACK,QAAQ,GAAG,IAAIL,WAAW,CAAC,CAAC;IAC1C;IACA,OAAOA,WAAW,CAACK,QAAQ;EAC7B;;EAEA;AACF;AACA;AACA;EACE,MAAMC,YAAYA,CAACC,MAA4C,EAAiB;IAC9E,IAAI;MACF;MACA,IAAI,CAACC,mBAAmB,CAACD,MAAM,CAAC;;MAEhC;MACA,MAAME,aAAa,GAAGV,aAAa,CAACK,WAAW,CAAC,CAAC;;MAEjD;MACA,MAAMM,YAAY,GAAG,MAAMD,aAAa,CAACE,iBAAiB,CACxDJ,MAAM,CAACK,WAAW,EAClBL,MAAM,CAACM,UAAU,EACjBN,MAAM,CAACO,UAAU,EACjBP,MAAM,CAACQ,UACT,CAAC;MAED,IAAI,CAACL,YAAY,EAAE;QACjB;QACA;MACF;;MAEA;MACA,MAAMM,cAA8B,GAAG;QACrC,GAAGT,MAAM;QACTG;MACF,CAAC;;MAED;MACAd,QAAQ,CAACoB,cAAc,CAAC;IAC1B,CAAC,CAAC,OAAOC,KAAK,EAAE;MACdC,OAAO,CAACD,KAAK,CAAC,yBAAyB,EAAEA,KAAK,CAAC;IACjD;EACF;EAEAE,OAAOA,CAAA,EAAS;IACd;IACA,IAAI,CAACC,oBAAoB,CAAC,CAAC;EAC7B;;EAEA;AACF;AACA;AACA;EACUZ,mBAAmBA,CAACD,MAA4C,EAAQ;IAC9E;IACA,IAAI,CAACa,oBAAoB,CAAC,CAAC;IAE3B,IAAI,CAACnB,sBAAsB,GAAGH,UAAU,CAAEuB,QAAQ,IAAK;MACrDH,OAAO,CAACI,GAAG,CAAC,4BAA4B,EAAED,QAAQ,CAAC;MACnDd,MAAM,CAACT,UAAU,CAACuB,QAAQ,CAAC;IAC7B,CAAC,CAAC;IAEF,IAAI,CAACnB,wBAAwB,GAAGL,YAAY,CAAEiB,UAAU,IAAK;MAC3DI,OAAO,CAACI,GAAG,CAAC,sBAAsB,EAAER,UAAU,CAAC;MAC/CP,MAAM,CAACV,YAAY,CAACiB,UAAU,CAAC;IACjC,CAAC,CAAC;EACJ;;EAEA;AACF;AACA;EACUM,oBAAoBA,CAAA,EAAS;IACnC,IAAI,CAACnB,sBAAsB,EAAEsB,MAAM,CAAC,CAAC;IACrC,IAAI,CAACrB,wBAAwB,EAAEqB,MAAM,CAAC,CAAC;IACvC,IAAI,CAACtB,sBAAsB,GAAG,IAAI;IAClC,IAAI,CAACC,wBAAwB,GAAG,IAAI;EACtC;AACF;AAEA,eAAeF,WAAW","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TurboModuleRegistry","Environment","Currency","TransactionType","getEnforcing"],"sourceRoot":"
|
|
1
|
+
{"version":3,"names":["TurboModuleRegistry","Environment","Currency","TransactionType","getEnforcing"],"sourceRoot":"../../src","sources":["NativeReactAmwalPay.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AAGlD,WAAYC,WAAW,0BAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAXA,WAAW;EAAA,OAAXA,WAAW;AAAA;AAMvB,WAAYC,QAAQ,0BAARA,QAAQ;EAARA,QAAQ;EAAA,OAARA,QAAQ;AAAA;AAIpB,WAAYC,eAAe,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA;;AAY3B;;AAiBA;;AAsBA,eAAeH,mBAAmB,CAACI,YAAY,CAAO,eAAe,CAAC","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import ReactAmwalPay, { Environment, Currency, TransactionType } from "./NativeReactAmwalPay.js";
|
|
4
4
|
import AmwalPaySDK from "./AmwalPaySDK.js";
|
|
5
|
+
import { UuidUtil } from "./utils/UuidUtil.js";
|
|
5
6
|
// Create an event emitter for the native module
|
|
6
7
|
|
|
7
8
|
export function initiate(config) {
|
|
@@ -15,7 +16,8 @@ export function initiate(config) {
|
|
|
15
16
|
locale: config.locale,
|
|
16
17
|
customerId: config.customerId,
|
|
17
18
|
transactionType: config.transactionType,
|
|
18
|
-
sessionToken: config.sessionToken
|
|
19
|
+
sessionToken: config.sessionToken,
|
|
20
|
+
transactionId: config.transactionId ?? UuidUtil.generateTransactionId()
|
|
19
21
|
};
|
|
20
22
|
|
|
21
23
|
// Call the native module
|
|
@@ -27,5 +29,5 @@ export function onResponse(callback) {
|
|
|
27
29
|
export function onCustomerId(callback) {
|
|
28
30
|
return ReactAmwalPay.onCustomerId(callback);
|
|
29
31
|
}
|
|
30
|
-
export { Environment, Currency, TransactionType, AmwalPaySDK };
|
|
32
|
+
export { Environment, Currency, TransactionType, AmwalPaySDK, UuidUtil };
|
|
31
33
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["ReactAmwalPay","Environment","Currency","TransactionType","AmwalPaySDK","initiate","config","nativeConfig","environment","secureHash","currency","amount","merchantId","terminalId","locale","customerId","transactionType","sessionToken","onResponse","callback","onCustomerId"],"sourceRoot":"
|
|
1
|
+
{"version":3,"names":["ReactAmwalPay","Environment","Currency","TransactionType","AmwalPaySDK","UuidUtil","initiate","config","nativeConfig","environment","secureHash","currency","amount","merchantId","terminalId","locale","customerId","transactionType","sessionToken","transactionId","generateTransactionId","onResponse","callback","onCustomerId"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,OAAOA,aAAa,IAClBC,WAAW,EACXC,QAAQ,EACRC,eAAe,QAIV,0BAAuB;AAC9B,OAAOC,WAAW,MAAM,kBAAe;AACvC,SAASC,QAAQ,QAAQ,qBAAkB;AAG3C;;AAEA,OAAO,SAASC,QAAQA,CAACC,MAAsB,EAAQ;EACrD,MAAMC,YAAkC,GAAG;IACzCC,WAAW,EAAEF,MAAM,CAACE,WAAW;IAC/BC,UAAU,EAAEH,MAAM,CAACG,UAAU;IAC7BC,QAAQ,EAAEJ,MAAM,CAACI,QAAQ;IACzBC,MAAM,EAAEL,MAAM,CAACK,MAAM;IACrBC,UAAU,EAAEN,MAAM,CAACM,UAAU;IAC7BC,UAAU,EAAEP,MAAM,CAACO,UAAU;IAC7BC,MAAM,EAAER,MAAM,CAACQ,MAAM;IACrBC,UAAU,EAAET,MAAM,CAACS,UAAU;IAC7BC,eAAe,EAAEV,MAAM,CAACU,eAAe;IACvCC,YAAY,EAAEX,MAAM,CAACW,YAAY;IACjCC,aAAa,EAAEZ,MAAM,CAACY,aAAa,IAAId,QAAQ,CAACe,qBAAqB,CAAC;EACxE,CAAC;;EAED;EACApB,aAAa,CAACM,QAAQ,CAACE,YAAY,CAAC;AACtC;AAEA,OAAO,SAASa,UAAUA,CAACC,QAA8C,EAAoB;EAC3F,OAAOtB,aAAa,CAACqB,UAAU,CAACC,QAAQ,CAAC;AAC3C;AACA,OAAO,SAASC,YAAYA,CAACD,QAAsC,EAAoB;EACrF,OAAOtB,aAAa,CAACuB,YAAY,CAACD,QAAQ,CAAC;AAC7C;AAEA,SACErB,WAAW,EACXC,QAAQ,EACRC,eAAe,EAGfC,WAAW,EACXC,QAAQ","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Alert","Environment","SecureHashUtil","NetworkClient","constructor","getInstance","instance","getWebhookUrl","env","SIT","UAT","PROD","fetchSessionToken","merchantId","customerId","secureHashValue","webhookUrl","dataMap","secureHash","clearSecureHash","response","fetch","method","headers","body","JSON","stringify","responseData","json","ok","success","data","sessionToken","errorMessage","errorList","join","showErrorDialog","error","message","alert","text"],"sourceRoot":"
|
|
1
|
+
{"version":3,"names":["Alert","Environment","SecureHashUtil","NetworkClient","constructor","getInstance","instance","getWebhookUrl","env","SIT","UAT","PROD","fetchSessionToken","merchantId","customerId","secureHashValue","webhookUrl","dataMap","secureHash","clearSecureHash","response","fetch","method","headers","body","JSON","stringify","responseData","json","ok","success","data","sessionToken","errorMessage","errorList","join","showErrorDialog","error","message","alert","text"],"sourceRoot":"../../../src","sources":["network/NetworkClient.ts"],"mappings":";;AAAA,SAASA,KAAK,QAAQ,cAAc;AACpC,SAASC,WAAW,QAAQ,2BAAwB;AACpD,OAAOC,cAAc,MAAM,4BAAyB;AAEpD,MAAMC,aAAa,CAAC;EAGVC,WAAWA,CAAA,EAAG,CAAC;EAEvB,OAAOC,WAAWA,CAAA,EAAkB;IAClC,IAAI,CAACF,aAAa,CAACG,QAAQ,EAAE;MAC3BH,aAAa,CAACG,QAAQ,GAAG,IAAIH,aAAa,CAAC,CAAC;IAC9C;IACA,OAAOA,aAAa,CAACG,QAAQ;EAC/B;EAEQC,aAAaA,CAACC,GAAgB,EAAU;IAC9C,QAAQA,GAAG;MACT,KAAKP,WAAW,CAACQ,GAAG;QAClB,OAAO,iCAAiC;MAC1C,KAAKR,WAAW,CAACS,GAAG;QAClB,OAAO,iCAAiC;MAC1C,KAAKT,WAAW,CAACU,IAAI;QACnB,OAAO,8BAA8B;MACvC;QACE,OAAO,iCAAiC;IAC5C;EACF;EAEA,MAAMC,iBAAiBA,CACrBJ,GAAgB,EAChBK,UAAkB,EAClBC,UAAyB,EACzBC,eAAuB,EACC;IACxB,IAAI;MACF,MAAMC,UAAU,GAAG,IAAI,CAACT,aAAa,CAACC,GAAG,CAAC;MAE1C,MAAMS,OAAO,GAAG;QACdJ,UAAU;QACVC;MACF,CAAC;MAED,MAAMI,UAAU,GAAGhB,cAAc,CAACiB,eAAe,CAACJ,eAAe,EAAEE,OAAO,CAAC;MAE3E,MAAMG,QAAQ,GAAG,MAAMC,KAAK,CAAC,GAAGL,UAAU,+BAA+B,EAAE;QACzEM,MAAM,EAAE,MAAM;QACdC,OAAO,EAAE;UACP,QAAQ,EAAE,YAAY;UACtB,iBAAiB,EAAE,gBAAgB;UACnC,cAAc,EAAE;QAClB,CAAC;QACDC,IAAI,EAAEC,IAAI,CAACC,SAAS,CAAC;UACnBb,UAAU;UACVE,eAAe,EAAEG,UAAU;UAC3BJ;QACF,CAAC;MACH,CAAC,CAAC;MAEF,MAAMa,YAAY,GAAG,MAAMP,QAAQ,CAACQ,IAAI,CAAC,CAAC;MAE1C,IAAIR,QAAQ,CAACS,EAAE,IAAIF,YAAY,CAACG,OAAO,EAAE;QACvC,OAAOH,YAAY,CAACI,IAAI,CAACC,YAAY;MACvC,CAAC,MAAM;QACL,MAAMC,YAAY,GAAGN,YAAY,CAACO,SAAS,EAAEC,IAAI,CAAC,GAAG,CAAC,IAAI,eAAe;QACzE,IAAI,CAACC,eAAe,CAACH,YAAY,CAAC;QAClC,OAAO,IAAI;MACb;IACF,CAAC,CAAC,OAAOI,KAAK,EAAE;MACd,IAAI,CAACD,eAAe,CAAC,sBAAsB,CAAC;MAC5C,OAAO,IAAI;IACb;EACF;EAEQA,eAAeA,CAACE,OAAe,EAAQ;IAC7CtC,KAAK,CAACuC,KAAK,CACT,OAAO,EACPD,OAAO,EACP,CAAC;MAAEE,IAAI,EAAE;IAAK,CAAC,CACjB,CAAC;EACH;AACF;AAEA,eAAerC,aAAa","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["HmacSHA256","Hex","SecureHashUtil","clearSecureHash","secretKey","data","secureHashValue","concatenatedString","composeData","generateSecureHash","requestParameters","Object","entries","sort","keyA","keyB","localeCompare","filter","_","value","map","key","join","message","keyBytes","match","byte","parseInt","Error","keyHex","toString","padStart","hash","parse","toUpperCase","e","console","error"],"sourceRoot":"
|
|
1
|
+
{"version":3,"names":["HmacSHA256","Hex","SecureHashUtil","clearSecureHash","secretKey","data","secureHashValue","concatenatedString","composeData","generateSecureHash","requestParameters","Object","entries","sort","keyA","keyB","localeCompare","filter","_","value","map","key","join","message","keyBytes","match","byte","parseInt","Error","keyHex","toString","padStart","hash","parse","toUpperCase","e","console","error"],"sourceRoot":"../../../src","sources":["utils/SecureHashUtil.ts"],"mappings":";;AAAA,OAAOA,UAAU,MAAM,uBAAuB;AAC9C,OAAOC,GAAG,MAAM,mBAAmB;AAInC,MAAMC,cAAc,CAAC;EACnB,OAAOC,eAAeA,CAACC,SAAiB,EAAEC,IAAa,EAAU;IAC/D,OAAOA,IAAI,CAACC,eAAe;IAC3B,MAAMC,kBAAkB,GAAG,IAAI,CAACC,WAAW,CAACH,IAAI,CAAC;IACjD,OAAO,IAAI,CAACI,kBAAkB,CAACF,kBAAkB,EAAEH,SAAS,CAAC;EAC/D;EAEA,OAAeI,WAAWA,CAACE,iBAA0B,EAAU;IAC7D,OAAOC,MAAM,CAACC,OAAO,CAACF,iBAAiB,CAAC,CACrCG,IAAI,CAAC,CAAC,CAACC,IAAI,CAAC,EAAE,CAACC,IAAI,CAAC,KAAKD,IAAI,CAACE,aAAa,CAACD,IAAI,CAAC,CAAC,CAClDE,MAAM,CAAC,CAAC,CAACC,CAAC,EAAEC,KAAK,CAAC,KAAKA,KAAK,IAAI,IAAI,IAAIA,KAAK,KAAK,EAAE,CAAC,CACrDC,GAAG,CAAC,CAAC,CAACC,GAAG,EAAEF,KAAK,CAAC,KAAK,GAAGE,GAAG,IAAIF,KAAK,EAAE,CAAC,CACxCG,IAAI,CAAC,GAAG,CAAC;EACd;EAEA,OAAeb,kBAAkBA,CAACc,OAAe,EAAEnB,SAAiB,EAAU;IAC5E,IAAI;MACF;MACA,MAAMoB,QAAQ,GAAGpB,SAAS,CAACqB,KAAK,CAAC,OAAO,CAAC,EAAEL,GAAG,CAACM,IAAI,IAAIC,QAAQ,CAACD,IAAI,EAAE,EAAE,CAAC,CAAC;MAE1E,IAAI,CAACF,QAAQ,EAAE;QACb,MAAM,IAAII,KAAK,CAAC,2BAA2B,CAAC;MAC9C;;MAEA;MACA,MAAMC,MAAM,GAAGL,QAAQ,CAACJ,GAAG,CAACM,IAAI,IAAIA,IAAI,CAACI,QAAQ,CAAC,EAAE,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAACT,IAAI,CAAC,EAAE,CAAC;;MAEhF;MACA,MAAMU,IAAI,GAAGhC,UAAU,CAACuB,OAAO,EAAEtB,GAAG,CAACgC,KAAK,CAACJ,MAAM,CAAC,CAAC;;MAEnD;MACA,OAAOG,IAAI,CAACF,QAAQ,CAAC7B,GAAG,CAAC,CAACiC,WAAW,CAAC,CAAC;IACzC,CAAC,CAAC,OAAOC,CAAC,EAAE;MACVC,OAAO,CAACC,KAAK,CAAC,+BAA+B,EAAEF,CAAC,CAAC;MACjD,OAAO,EAAE;IACX;EACF;AACF;AAEA,eAAejC,cAAc","ignoreList":[]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* UUID utility for generating unique transaction IDs
|
|
5
|
+
* Similar to Dart's Uuid().v1() but using standard UUID v4 format
|
|
6
|
+
*/
|
|
7
|
+
export class UuidUtil {
|
|
8
|
+
/**
|
|
9
|
+
* Generates a UUID v4 string (random-based)
|
|
10
|
+
* This provides similar functionality to Dart's Uuid().v1()
|
|
11
|
+
* @returns A lowercase UUID string
|
|
12
|
+
*/
|
|
13
|
+
static generateV4() {
|
|
14
|
+
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
|
|
15
|
+
const r = Math.random() * 16 | 0;
|
|
16
|
+
const v = c === 'x' ? r : r & 0x3 | 0x8;
|
|
17
|
+
return v.toString(16);
|
|
18
|
+
}).toLowerCase();
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Generates a transaction ID for Amwal payments
|
|
23
|
+
* @returns A lowercase UUID string suitable for transaction identification
|
|
24
|
+
*/
|
|
25
|
+
static generateTransactionId() {
|
|
26
|
+
return UuidUtil.generateV4();
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=UuidUtil.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["UuidUtil","generateV4","replace","c","r","Math","random","v","toString","toLowerCase","generateTransactionId"],"sourceRoot":"../../../src","sources":["utils/UuidUtil.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA,OAAO,MAAMA,QAAQ,CAAC;EACpB;AACF;AACA;AACA;AACA;EACE,OAAOC,UAAUA,CAAA,EAAW;IAC1B,OAAO,sCAAsC,CAACC,OAAO,CAAC,OAAO,EAAGC,CAAC,IAAK;MACpE,MAAMC,CAAC,GAAIC,IAAI,CAACC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAI,CAAC;MAClC,MAAMC,CAAC,GAAGJ,CAAC,KAAK,GAAG,GAAGC,CAAC,GAAIA,CAAC,GAAG,GAAG,GAAI,GAAG;MACzC,OAAOG,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;IACvB,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;EAClB;;EAEA;AACF;AACA;AACA;EACE,OAAOC,qBAAqBA,CAAA,EAAW;IACrC,OAAOV,QAAQ,CAACC,UAAU,CAAC,CAAC;EAC9B;AACF","ignoreList":[]}
|
|
@@ -29,6 +29,7 @@ export interface AmwalPayConfig {
|
|
|
29
29
|
customerId: string | null;
|
|
30
30
|
transactionType: TransactionType;
|
|
31
31
|
sessionToken?: string;
|
|
32
|
+
transactionId?: string;
|
|
32
33
|
onResponse: (response: AmwalPayResponse) => void;
|
|
33
34
|
onCustomerId: (customerId: string) => void;
|
|
34
35
|
}
|
|
@@ -43,6 +44,7 @@ export interface AmwalPayNativeConfig {
|
|
|
43
44
|
customerId: string | null;
|
|
44
45
|
transactionType: string;
|
|
45
46
|
sessionToken?: string;
|
|
47
|
+
transactionId?: string;
|
|
46
48
|
}
|
|
47
49
|
export interface Spec extends TurboModule {
|
|
48
50
|
initiate(config: AmwalPayNativeConfig): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NativeReactAmwalPay.d.ts","sourceRoot":"","sources":["../../../src/NativeReactAmwalPay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AAE9E,oBAAY,WAAW;IACrB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,IAAI,SAAS;CACd;AAED,oBAAY,QAAQ;IAClB,GAAG,QAAQ;CACZ;AAED,oBAAY,eAAe;IACzB,GAAG,QAAO;IACV,WAAW,gBAAe;IAC1B,SAAS,cAAa;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAGD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,eAAe,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACjD,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAGD,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"NativeReactAmwalPay.d.ts","sourceRoot":"","sources":["../../../src/NativeReactAmwalPay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AAE9E,oBAAY,WAAW;IACrB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,IAAI,SAAS;CACd;AAED,oBAAY,QAAQ;IAClB,GAAG,QAAQ;CACZ;AAED,oBAAY,eAAe;IACzB,GAAG,QAAO;IACV,WAAW,gBAAe;IAC1B,SAAS,cAAa;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAGD,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,eAAe,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACjD,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAGD,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,IAAK,SAAQ,WAAW;IAEvC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC7C,UAAU,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC;IAC3C,YAAY,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;CACpC;;AAED,wBAAuE"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { Environment, Currency, TransactionType, type AmwalPayResponse, type AmwalPayConfig } from './NativeReactAmwalPay';
|
|
2
2
|
import AmwalPaySDK from './AmwalPaySDK';
|
|
3
|
+
import { UuidUtil } from './utils/UuidUtil';
|
|
3
4
|
import type { EventSubscription } from 'react-native';
|
|
4
5
|
export declare function initiate(config: AmwalPayConfig): void;
|
|
5
6
|
export declare function onResponse(callback: (response: AmwalPayResponse) => void): EventSubscription;
|
|
6
7
|
export declare function onCustomerId(callback: (customerId: string) => void): EventSubscription;
|
|
7
|
-
export { Environment, Currency, TransactionType, type AmwalPayResponse, type AmwalPayConfig, AmwalPaySDK, };
|
|
8
|
+
export { Environment, Currency, TransactionType, type AmwalPayResponse, type AmwalPayConfig, AmwalPaySDK, UuidUtil, };
|
|
8
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAsB,EACpB,WAAW,EACX,QAAQ,EACR,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,cAAc,EAEpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAItD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAsB,EACpB,WAAW,EACX,QAAQ,EACR,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,cAAc,EAEpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAItD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAiBrD;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,GAAE,iBAAiB,CAE3F;AACD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,GAAE,iBAAiB,CAErF;AAED,OAAO,EACL,WAAW,EACX,QAAQ,EACR,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,WAAW,EACX,QAAQ,GACT,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UUID utility for generating unique transaction IDs
|
|
3
|
+
* Similar to Dart's Uuid().v1() but using standard UUID v4 format
|
|
4
|
+
*/
|
|
5
|
+
export declare class UuidUtil {
|
|
6
|
+
/**
|
|
7
|
+
* Generates a UUID v4 string (random-based)
|
|
8
|
+
* This provides similar functionality to Dart's Uuid().v1()
|
|
9
|
+
* @returns A lowercase UUID string
|
|
10
|
+
*/
|
|
11
|
+
static generateV4(): string;
|
|
12
|
+
/**
|
|
13
|
+
* Generates a transaction ID for Amwal payments
|
|
14
|
+
* @returns A lowercase UUID string suitable for transaction identification
|
|
15
|
+
*/
|
|
16
|
+
static generateTransactionId(): string;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=UuidUtil.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UuidUtil.d.ts","sourceRoot":"","sources":["../../../../src/utils/UuidUtil.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,QAAQ;IACnB;;;;OAIG;IACH,MAAM,CAAC,UAAU,IAAI,MAAM;IAQ3B;;;OAGG;IACH,MAAM,CAAC,qBAAqB,IAAI,MAAM;CAGvC"}
|