@deuna/react-native-sdk 2.0.5 → 2.1.0-beta.2
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/DeunaWalletsModule.podspec +19 -0
- package/README.md +141 -2
- package/android/build.gradle +43 -0
- package/android/src/main/AndroidManifest.xml +8 -0
- package/android/src/main/java/com/deuna/wallets/DeunaWalletsModule.kt +103 -0
- package/app.plugin.js +1 -0
- package/expo-module.config.json +10 -0
- package/ios/DeunaWalletsModule.swift +56 -0
- package/lib/module/DeunaSDK.js +44 -3
- package/lib/module/DeunaSDK.js.map +1 -1
- package/lib/module/components/DeunaWebView.js +3 -0
- package/lib/module/components/DeunaWebView.js.map +1 -1
- package/lib/module/components/DeunaWidget.js +1 -0
- package/lib/module/components/DeunaWidget.js.map +1 -1
- package/lib/module/controllers/BaseWebViewController.js +17 -4
- package/lib/module/controllers/BaseWebViewController.js.map +1 -1
- package/lib/module/controllers/ElementsWidgetController.js +9 -1
- package/lib/module/controllers/ElementsWidgetController.js.map +1 -1
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/plugin/index.js +25 -0
- package/lib/module/plugin/index.js.map +1 -0
- package/lib/module/plugin/withAndroidGooglePay.js +20 -0
- package/lib/module/plugin/withAndroidGooglePay.js.map +1 -0
- package/lib/module/plugin/withIosApplePay.js +10 -0
- package/lib/module/plugin/withIosApplePay.js.map +1 -0
- package/lib/module/plugin/withIosFmtFix.js +34 -0
- package/lib/module/plugin/withIosFmtFix.js.map +1 -0
- package/lib/module/types/base.js +16 -0
- package/lib/module/types/base.js.map +1 -1
- package/lib/module/types/envs.js +12 -0
- package/lib/module/types/envs.js.map +1 -1
- package/lib/module/wallets/WalletModule.js +218 -0
- package/lib/module/wallets/WalletModule.js.map +1 -0
- package/lib/module/wallets/index.js +4 -0
- package/lib/module/wallets/index.js.map +1 -0
- package/lib/module/wallets/tokenize/applePay.js +24 -0
- package/lib/module/wallets/tokenize/applePay.js.map +1 -0
- package/lib/module/wallets/tokenize/googlePay.js +24 -0
- package/lib/module/wallets/tokenize/googlePay.js.map +1 -0
- package/lib/module/wallets/tokenize/index.js +12 -0
- package/lib/module/wallets/tokenize/index.js.map +1 -0
- package/lib/module/wallets/types.js +4 -0
- package/lib/module/wallets/types.js.map +1 -0
- package/lib/module/wallets/vaultApi.js +121 -0
- package/lib/module/wallets/vaultApi.js.map +1 -0
- package/lib/typescript/deuna-sdk-react-native/src/DeunaSDK.d.ts +12 -3
- package/lib/typescript/deuna-sdk-react-native/src/DeunaSDK.d.ts.map +1 -1
- package/lib/typescript/deuna-sdk-react-native/src/components/DeunaWebView.d.ts +1 -0
- package/lib/typescript/deuna-sdk-react-native/src/components/DeunaWebView.d.ts.map +1 -1
- package/lib/typescript/deuna-sdk-react-native/src/controllers/BaseWebViewController.d.ts +7 -0
- package/lib/typescript/deuna-sdk-react-native/src/controllers/BaseWebViewController.d.ts.map +1 -1
- package/lib/typescript/deuna-sdk-react-native/src/controllers/ElementsWidgetController.d.ts.map +1 -1
- package/lib/typescript/deuna-sdk-react-native/src/index.d.ts +1 -0
- package/lib/typescript/deuna-sdk-react-native/src/index.d.ts.map +1 -1
- package/lib/typescript/deuna-sdk-react-native/src/plugin/index.d.ts +8 -0
- package/lib/typescript/deuna-sdk-react-native/src/plugin/index.d.ts.map +1 -0
- package/lib/typescript/deuna-sdk-react-native/src/plugin/withAndroidGooglePay.d.ts +3 -0
- package/lib/typescript/deuna-sdk-react-native/src/plugin/withAndroidGooglePay.d.ts.map +1 -0
- package/lib/typescript/deuna-sdk-react-native/src/plugin/withIosApplePay.d.ts +5 -0
- package/lib/typescript/deuna-sdk-react-native/src/plugin/withIosApplePay.d.ts.map +1 -0
- package/lib/typescript/deuna-sdk-react-native/src/plugin/withIosFmtFix.d.ts +3 -0
- package/lib/typescript/deuna-sdk-react-native/src/plugin/withIosFmtFix.d.ts.map +1 -0
- package/lib/typescript/deuna-sdk-react-native/src/types/base.d.ts +78 -14
- package/lib/typescript/deuna-sdk-react-native/src/types/base.d.ts.map +1 -1
- package/lib/typescript/deuna-sdk-react-native/src/types/envs.d.ts +12 -0
- package/lib/typescript/deuna-sdk-react-native/src/types/envs.d.ts.map +1 -1
- package/lib/typescript/deuna-sdk-react-native/src/types/helpers/urlConfig.d.ts +1 -1
- package/lib/typescript/deuna-sdk-react-native/src/types/helpers/urlConfig.d.ts.map +1 -1
- package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/callbacks.d.ts +11 -0
- package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/callbacks.d.ts.map +1 -1
- package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/initWidgetBase.d.ts +3 -3
- package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/initWidgetBase.d.ts.map +1 -1
- package/lib/typescript/deuna-sdk-react-native/src/wallets/WalletModule.d.ts +29 -0
- package/lib/typescript/deuna-sdk-react-native/src/wallets/WalletModule.d.ts.map +1 -0
- package/lib/typescript/deuna-sdk-react-native/src/wallets/index.d.ts +3 -0
- package/lib/typescript/deuna-sdk-react-native/src/wallets/index.d.ts.map +1 -0
- package/lib/typescript/deuna-sdk-react-native/src/wallets/tokenize/applePay.d.ts +2 -0
- package/lib/typescript/deuna-sdk-react-native/src/wallets/tokenize/applePay.d.ts.map +1 -0
- package/lib/typescript/deuna-sdk-react-native/src/wallets/tokenize/googlePay.d.ts +2 -0
- package/lib/typescript/deuna-sdk-react-native/src/wallets/tokenize/googlePay.d.ts.map +1 -0
- package/lib/typescript/deuna-sdk-react-native/src/wallets/tokenize/index.d.ts +3 -0
- package/lib/typescript/deuna-sdk-react-native/src/wallets/tokenize/index.d.ts.map +1 -0
- package/lib/typescript/deuna-sdk-react-native/src/wallets/types.d.ts +15 -0
- package/lib/typescript/deuna-sdk-react-native/src/wallets/types.d.ts.map +1 -0
- package/lib/typescript/deuna-sdk-react-native/src/wallets/vaultApi.d.ts +38 -0
- package/lib/typescript/deuna-sdk-react-native/src/wallets/vaultApi.d.ts.map +1 -0
- package/package.json +14 -2
- package/react-native.config.js +8 -0
- package/src/DeunaSDK.ts +65 -4
- package/src/components/DeunaWebView.tsx +4 -0
- package/src/components/DeunaWidget.tsx +2 -0
- package/src/controllers/BaseWebViewController.ts +15 -4
- package/src/controllers/ElementsWidgetController.ts +16 -1
- package/src/index.tsx +1 -0
- package/src/plugin/index.ts +29 -0
- package/src/plugin/withAndroidGooglePay.ts +15 -0
- package/src/plugin/withIosApplePay.ts +10 -0
- package/src/plugin/withIosFmtFix.ts +49 -0
- package/src/types/base.ts +92 -14
- package/src/types/envs.ts +14 -0
- package/src/types/helpers/urlConfig.ts +1 -1
- package/src/types/interfaces/callbacks.ts +15 -0
- package/src/types/interfaces/initWidgetBase.ts +3 -3
- package/src/wallets/WalletModule.ts +255 -0
- package/src/wallets/index.ts +13 -0
- package/src/wallets/tokenize/applePay.ts +22 -0
- package/src/wallets/tokenize/googlePay.ts +27 -0
- package/src/wallets/tokenize/index.ts +12 -0
- package/src/wallets/types.ts +17 -0
- package/src/wallets/vaultApi.ts +229 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require "json"
|
|
2
|
+
|
|
3
|
+
package = JSON.parse(File.read(File.join(__dir__, "package.json")))
|
|
4
|
+
|
|
5
|
+
Pod::Spec.new do |s|
|
|
6
|
+
s.name = "DeunaWalletsModule"
|
|
7
|
+
s.version = package["version"]
|
|
8
|
+
s.summary = "Native wallet support (Apple Pay / Google Pay) for @deuna/react-native-sdk"
|
|
9
|
+
s.homepage = package["homepage"]
|
|
10
|
+
s.license = package["license"]
|
|
11
|
+
s.authors = package["author"]
|
|
12
|
+
s.platforms = { :ios => "13.0" }
|
|
13
|
+
s.source = { :git => package["repository"]["url"], :tag => "v#{s.version}" }
|
|
14
|
+
s.source_files = "ios/**/*.swift"
|
|
15
|
+
s.swift_versions = ["5.0"]
|
|
16
|
+
|
|
17
|
+
s.dependency "ExpoModulesCore"
|
|
18
|
+
s.dependency "DeunaSDK", "~> 2.11.2"
|
|
19
|
+
end
|
package/README.md
CHANGED
|
@@ -13,9 +13,148 @@ React Native SDK
|
|
|
13
13
|
|
|
14
14
|
👉 **[Read the full migration guide in CHANGELOG.md](./CHANGELOG.md)**
|
|
15
15
|
|
|
16
|
-
##
|
|
16
|
+
## Installation
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm install @deuna/react-native-sdk
|
|
20
|
+
# or
|
|
21
|
+
yarn add @deuna/react-native-sdk
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Then run pod install for iOS:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
cd ios && pod install
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
The native wallet module auto-links via `expo-module.config.json` (Expo) and `react-native.config.js` (RN CLI). No extra steps needed for basic usage.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Native Wallet Support (Apple Pay / Google Pay)
|
|
35
|
+
|
|
36
|
+
`getWalletsAvailable` and `initElements` let you present native payment sheets without a WebView.
|
|
37
|
+
|
|
38
|
+
### Basic usage
|
|
39
|
+
|
|
40
|
+
```typescript
|
|
41
|
+
import { getWalletsAvailable, initElements } from '@deuna/react-native-sdk';
|
|
42
|
+
|
|
43
|
+
// 1. Check which wallets are available on the device
|
|
44
|
+
const providers = await getWalletsAvailable({
|
|
45
|
+
orderToken: 'your-order-token',
|
|
46
|
+
publicApiKey: 'your-api-key',
|
|
47
|
+
environment: 'production',
|
|
48
|
+
});
|
|
49
|
+
// e.g. ['apple_pay'] on iPhone, ['google_pay'] on Android
|
|
50
|
+
|
|
51
|
+
// 2. Launch the payment sheet
|
|
52
|
+
const result = await initElements({
|
|
53
|
+
orderToken: 'your-order-token',
|
|
54
|
+
publicApiKey: 'your-api-key',
|
|
55
|
+
environment: 'production',
|
|
56
|
+
walletProvider: 'apple_pay',
|
|
57
|
+
});
|
|
58
|
+
// result === undefined → payment success
|
|
59
|
+
// result === 'closed' → user dismissed
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Event listeners
|
|
63
|
+
|
|
64
|
+
```typescript
|
|
65
|
+
import {
|
|
66
|
+
addWalletSuccessListener,
|
|
67
|
+
addWalletErrorListener,
|
|
68
|
+
addWalletClosedListener,
|
|
69
|
+
} from '@deuna/react-native-sdk';
|
|
70
|
+
|
|
71
|
+
const sub = addWalletSuccessListener((data) => console.log('paid', data));
|
|
72
|
+
// cleanup
|
|
73
|
+
sub?.remove();
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Production setup (required for App Store / Play Store)
|
|
79
|
+
|
|
80
|
+
`getWalletsAvailable` returns an empty list until the platform entitlements/manifest are configured. This is a one-time setup per app — **not needed for development or sandbox testing**.
|
|
81
|
+
|
|
82
|
+
### Expo (managed or bare workflow)
|
|
17
83
|
|
|
18
|
-
|
|
84
|
+
Add the config plugin to `app.json`:
|
|
85
|
+
|
|
86
|
+
```json
|
|
87
|
+
{
|
|
88
|
+
"expo": {
|
|
89
|
+
"plugins": [
|
|
90
|
+
[
|
|
91
|
+
"@deuna/react-native-sdk/app.plugin",
|
|
92
|
+
{
|
|
93
|
+
"merchantIdentifiers": ["merchant.com.yourapp"],
|
|
94
|
+
"googlePay": true
|
|
95
|
+
}
|
|
96
|
+
]
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Then run:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
npx expo prebuild
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
| Option | Type | Description |
|
|
109
|
+
|---|---|---|
|
|
110
|
+
| `merchantIdentifiers` | `string[]` | Apple Pay merchant IDs registered in your Apple Developer account |
|
|
111
|
+
| `googlePay` | `boolean` | Add Google Pay meta-data to `AndroidManifest.xml` (default: `true`) |
|
|
112
|
+
|
|
113
|
+
The plugin also automatically patches your Podfile to fix a build error with Xcode 16 / Clang 16+ (see below).
|
|
114
|
+
|
|
115
|
+
### React Native CLI (no Expo)
|
|
116
|
+
|
|
117
|
+
**iOS** — add the Apple Pay entitlement in Xcode:
|
|
118
|
+
|
|
119
|
+
1. Open `ios/YourApp.xcworkspace` in Xcode
|
|
120
|
+
2. Select your target → **Signing & Capabilities**
|
|
121
|
+
3. Click **+ Capability** → add **Apple Pay**
|
|
122
|
+
4. Add your merchant identifier(s)
|
|
123
|
+
|
|
124
|
+
**Android** — add to `android/app/src/main/AndroidManifest.xml` inside `<application>`:
|
|
125
|
+
|
|
126
|
+
```xml
|
|
127
|
+
<meta-data
|
|
128
|
+
android:name="com.google.android.gms.wallet.api.enabled"
|
|
129
|
+
android:value="1" />
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Xcode 16 / Clang 16+ build fix
|
|
135
|
+
|
|
136
|
+
If you see `call to consteval function ... is not a constant expression` errors from `fmt` when building for iOS, add this to your `Podfile` inside the `post_install` block:
|
|
137
|
+
|
|
138
|
+
```ruby
|
|
139
|
+
post_install do |installer|
|
|
140
|
+
# ... existing post_install code ...
|
|
141
|
+
|
|
142
|
+
# Fix fmt consteval build error with Xcode 16 / Clang 16+
|
|
143
|
+
installer.pods_project.targets.each do |target|
|
|
144
|
+
if target.name == 'fmt'
|
|
145
|
+
target.build_configurations.each do |config|
|
|
146
|
+
config.build_settings['CLANG_CXX_LANGUAGE_STANDARD'] = 'c++17'
|
|
147
|
+
end
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
**Expo users:** the `app.plugin` handles this automatically — no manual step needed.
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## Usage
|
|
19
158
|
|
|
20
159
|
|
|
21
160
|
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
buildscript {
|
|
2
|
+
ext.kotlin_version = '1.9.0'
|
|
3
|
+
repositories {
|
|
4
|
+
google()
|
|
5
|
+
mavenCentral()
|
|
6
|
+
}
|
|
7
|
+
dependencies {
|
|
8
|
+
classpath 'com.android.tools.build:gradle:8.1.0'
|
|
9
|
+
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
apply plugin: 'com.android.library'
|
|
14
|
+
apply plugin: 'kotlin-android'
|
|
15
|
+
|
|
16
|
+
android {
|
|
17
|
+
compileSdk 34
|
|
18
|
+
namespace 'com.deuna.wallets'
|
|
19
|
+
|
|
20
|
+
defaultConfig {
|
|
21
|
+
minSdk 22
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
compileOptions {
|
|
25
|
+
sourceCompatibility JavaVersion.VERSION_17
|
|
26
|
+
targetCompatibility JavaVersion.VERSION_17
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
kotlinOptions {
|
|
30
|
+
jvmTarget = '17'
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
repositories {
|
|
35
|
+
google()
|
|
36
|
+
mavenCentral()
|
|
37
|
+
maven { url 'https://jitpack.io' }
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
dependencies {
|
|
41
|
+
implementation 'com.github.deuna-developers:deuna-sdk-android:2.11.5'
|
|
42
|
+
compileOnly project(':expo-modules-core')
|
|
43
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
|
2
|
+
<application>
|
|
3
|
+
<activity
|
|
4
|
+
android:name="com.deuna.maven.wallets.google_pay.WalletPaymentActivity"
|
|
5
|
+
android:theme="@android:style/Theme.Translucent.NoTitleBar"
|
|
6
|
+
android:exported="false" />
|
|
7
|
+
</application>
|
|
8
|
+
</manifest>
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
package com.deuna.wallets
|
|
2
|
+
|
|
3
|
+
import android.os.Handler
|
|
4
|
+
import android.os.Looper
|
|
5
|
+
import com.deuna.maven.wallets.DeunaWalletLauncher
|
|
6
|
+
import com.deuna.maven.wallets.WalletLaunchResult
|
|
7
|
+
import expo.modules.kotlin.Promise
|
|
8
|
+
import expo.modules.kotlin.modules.Module
|
|
9
|
+
import expo.modules.kotlin.modules.ModuleDefinition
|
|
10
|
+
import org.json.JSONArray
|
|
11
|
+
import org.json.JSONObject
|
|
12
|
+
import java.util.concurrent.Executors
|
|
13
|
+
|
|
14
|
+
@Suppress("UNCHECKED_CAST")
|
|
15
|
+
private fun deepConvert(value: Any?): Any? = when (value) {
|
|
16
|
+
is JSONObject -> {
|
|
17
|
+
val map = mutableMapOf<String, Any?>()
|
|
18
|
+
value.keys().forEach { key -> map[key] = deepConvert(value.get(key)) }
|
|
19
|
+
map
|
|
20
|
+
}
|
|
21
|
+
is JSONArray -> (0 until value.length()).map { deepConvert(value.get(it)) }
|
|
22
|
+
is Map<*, *> -> (value as Map<String, Any?>).mapValues { deepConvert(it.value) }
|
|
23
|
+
is List<*> -> value.map { deepConvert(it) }
|
|
24
|
+
else -> value
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
class DeunaWalletsModule : Module() {
|
|
28
|
+
|
|
29
|
+
private val mainHandler = Handler(Looper.getMainLooper())
|
|
30
|
+
private val workers = Executors.newSingleThreadExecutor()
|
|
31
|
+
|
|
32
|
+
override fun definition() = ModuleDefinition {
|
|
33
|
+
Name("DeunaWallets")
|
|
34
|
+
Events("onWalletSuccess", "onWalletError", "onWalletClosed")
|
|
35
|
+
|
|
36
|
+
// Pure device-side check — no network calls.
|
|
37
|
+
// TypeScript is responsible for fetching the provider list from the vault API.
|
|
38
|
+
|
|
39
|
+
AsyncFunction("checkAvailableProviders") { params: Map<String, Any>, promise: Promise ->
|
|
40
|
+
val providers = (params["providers"] as? List<*>)?.filterIsInstance<String>() ?: emptyList()
|
|
41
|
+
val envString = params["environment"] as? String ?: "production"
|
|
42
|
+
|
|
43
|
+
val context = appContext.reactContext
|
|
44
|
+
?: run { promise.reject("NO_CONTEXT", "React context not available", null); return@AsyncFunction }
|
|
45
|
+
|
|
46
|
+
workers.execute {
|
|
47
|
+
val available = providers.filter { provider ->
|
|
48
|
+
DeunaWalletLauncher.isAvailable(context, provider, envString)
|
|
49
|
+
}
|
|
50
|
+
mainHandler.post { promise.resolve(available) }
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Launches the payment sheet. Returns raw payment data — no tokenization.
|
|
55
|
+
// TypeScript is responsible for the tokenization API call.
|
|
56
|
+
// Resolves payment map on success, "closed" on user dismiss, rejects on error.
|
|
57
|
+
|
|
58
|
+
AsyncFunction("launchWallet") { params: Map<String, Any>, promise: Promise ->
|
|
59
|
+
val providerString = params["provider"] as? String
|
|
60
|
+
@Suppress("UNCHECKED_CAST")
|
|
61
|
+
val credentials = params["credentials"] as? Map<String, Any>
|
|
62
|
+
val envString = params["environment"] as? String ?: "production"
|
|
63
|
+
|
|
64
|
+
if (providerString == null || credentials == null) {
|
|
65
|
+
promise.reject("INVALID_PARAMS", "provider and credentials are required", null)
|
|
66
|
+
return@AsyncFunction
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
val activity = appContext.currentActivity
|
|
70
|
+
?: run { promise.reject("NO_ACTIVITY", "No active Activity found", null); return@AsyncFunction }
|
|
71
|
+
|
|
72
|
+
var settled = false
|
|
73
|
+
|
|
74
|
+
mainHandler.post {
|
|
75
|
+
DeunaWalletLauncher.launch(
|
|
76
|
+
context = activity,
|
|
77
|
+
provider = providerString,
|
|
78
|
+
credentials = credentials,
|
|
79
|
+
environment = envString,
|
|
80
|
+
) { result ->
|
|
81
|
+
if (settled) return@launch
|
|
82
|
+
settled = true
|
|
83
|
+
when (result) {
|
|
84
|
+
is WalletLaunchResult.Success -> {
|
|
85
|
+
@Suppress("UNCHECKED_CAST")
|
|
86
|
+
val converted = deepConvert(result.rawData) as Map<String, Any?>
|
|
87
|
+
sendEvent("onWalletSuccess", mapOf("data" to converted))
|
|
88
|
+
promise.resolve(converted)
|
|
89
|
+
}
|
|
90
|
+
is WalletLaunchResult.Error -> {
|
|
91
|
+
sendEvent("onWalletError", mapOf("code" to result.code, "message" to result.message))
|
|
92
|
+
promise.reject(result.code, result.message, null)
|
|
93
|
+
}
|
|
94
|
+
WalletLaunchResult.Closed -> {
|
|
95
|
+
sendEvent("onWalletClosed", mapOf("action" to "userAction"))
|
|
96
|
+
promise.resolve("closed")
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
package/app.plugin.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
module.exports = require('./lib/module/plugin/index').default;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import ExpoModulesCore
|
|
2
|
+
import DeunaSDK
|
|
3
|
+
|
|
4
|
+
public class DeunaWalletsModule: Module {
|
|
5
|
+
|
|
6
|
+
public func definition() -> ModuleDefinition {
|
|
7
|
+
Name("DeunaWallets")
|
|
8
|
+
Events("onWalletSuccess", "onWalletError", "onWalletClosed")
|
|
9
|
+
|
|
10
|
+
// MARK: - checkAvailableProviders
|
|
11
|
+
// Pure device-side check — no network calls.
|
|
12
|
+
// TypeScript is responsible for fetching the provider list from the vault API.
|
|
13
|
+
|
|
14
|
+
AsyncFunction("checkAvailableProviders") { (params: [String: Any], promise: Promise) in
|
|
15
|
+
let providers = params["providers"] as? [String] ?? []
|
|
16
|
+
let available = providers.filter { DeunaWalletLauncher.isAvailable(provider: $0) }
|
|
17
|
+
promise.resolve(available)
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
// MARK: - launchWallet
|
|
21
|
+
// Launches the payment sheet. Returns raw payment data — no tokenization.
|
|
22
|
+
// TypeScript is responsible for the tokenization API call.
|
|
23
|
+
// Resolves payment dict on success, "closed" on user dismiss, rejects on error.
|
|
24
|
+
|
|
25
|
+
AsyncFunction("launchWallet") { (params: [String: Any], promise: Promise) in
|
|
26
|
+
guard
|
|
27
|
+
let provider = params["provider"] as? String,
|
|
28
|
+
let credentials = params["credentials"] as? [String: Any]
|
|
29
|
+
else {
|
|
30
|
+
promise.reject("INVALID_PARAMS", "provider and credentials are required")
|
|
31
|
+
return
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
var settled = false
|
|
35
|
+
|
|
36
|
+
DeunaWalletLauncher.launch(
|
|
37
|
+
provider: provider,
|
|
38
|
+
credentials: credentials
|
|
39
|
+
) { [weak self] result in
|
|
40
|
+
guard !settled else { return }
|
|
41
|
+
settled = true
|
|
42
|
+
switch result {
|
|
43
|
+
case .success(let data):
|
|
44
|
+
self?.sendEvent("onWalletSuccess", ["data": data])
|
|
45
|
+
promise.resolve(data)
|
|
46
|
+
case .error(let code, let msg):
|
|
47
|
+
self?.sendEvent("onWalletError", ["code": code, "message": msg])
|
|
48
|
+
promise.reject(code, msg)
|
|
49
|
+
case .closed:
|
|
50
|
+
self?.sendEvent("onWalletClosed", ["action": "userAction"])
|
|
51
|
+
promise.resolve("closed")
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
package/lib/module/DeunaSDK.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { BaseDeuna } from "./types/index.js";
|
|
4
|
+
import { getWalletsAvailable as getWalletsAvailableNative, initElements as initElementsNative } from "./wallets/index.js";
|
|
4
5
|
import { PaymentWidgetController } from "./controllers/PaymentWidgetController.js";
|
|
5
6
|
import { buildDeunaWidgetController } from "./helpers/buildDeunaWidgetController.js";
|
|
6
7
|
import { ElementsWidgetController } from "./controllers/ElementsWidgetController.js";
|
|
@@ -78,11 +79,51 @@ export class DeunaSDK extends BaseDeuna {
|
|
|
78
79
|
}
|
|
79
80
|
|
|
80
81
|
/**
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
82
|
+
* Returns wallet providers available on the current device.
|
|
83
|
+
*
|
|
84
|
+
* - Pass `WalletElementConfig` to use explicit credentials (no vault fetch).
|
|
85
|
+
* - Pass `{ orderToken?, userInfo? }` to resolve credentials from the DEUNA vault API.
|
|
86
|
+
*/
|
|
87
|
+
async getWalletsAvailable(params = {}) {
|
|
88
|
+
return getWalletsAvailableNative(this.config.publicApiKey, this.config.environment ?? 'production', params);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Shows the elements widget or launches a native wallet payment sheet.
|
|
93
|
+
* Pass `types: [{ name: 'APPLE_PAY' }]` or `types: [{ name: 'GOOGLE_PAY' }]` to trigger
|
|
94
|
+
* the native payment sheet. Optionally include `walletConfig` with explicit credentials.
|
|
84
95
|
*/
|
|
85
96
|
async initElements(props) {
|
|
97
|
+
const WALLET_TYPE_TO_PROVIDER = {
|
|
98
|
+
APPLE_PAY: 'apple_pay',
|
|
99
|
+
GOOGLE_PAY: 'google_pay'
|
|
100
|
+
};
|
|
101
|
+
const firstType = props.types?.[0]?.name;
|
|
102
|
+
const walletProvider = firstType ? WALLET_TYPE_TO_PROVIDER[firstType] : undefined;
|
|
103
|
+
if (walletProvider) {
|
|
104
|
+
initElementsNative({
|
|
105
|
+
walletProvider,
|
|
106
|
+
orderToken: props.orderToken ?? '',
|
|
107
|
+
publicApiKey: this.config.publicApiKey,
|
|
108
|
+
environment: this.config.environment ?? 'production',
|
|
109
|
+
userInfo: props.userInfo
|
|
110
|
+
}, props.walletConfig).then(result => {
|
|
111
|
+
if (result === 'closed') {
|
|
112
|
+
props.callbacks?.onClosed?.('userAction');
|
|
113
|
+
} else {
|
|
114
|
+
props.callbacks?.onSuccess?.(result ?? {});
|
|
115
|
+
}
|
|
116
|
+
}).catch(err => {
|
|
117
|
+
props.callbacks?.onError?.({
|
|
118
|
+
type: err.code ?? 'WALLET_ERROR',
|
|
119
|
+
metadata: {
|
|
120
|
+
code: err.code ?? 'WALLET_ERROR',
|
|
121
|
+
message: err.message ?? 'Wallet payment failed'
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
86
127
|
this.setWidgetController({
|
|
87
128
|
controller: buildDeunaWidgetController(this.config, {
|
|
88
129
|
widget: 'elements',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BaseDeuna","PaymentWidgetController","buildDeunaWidgetController","ElementsWidgetController","DownloadType","Mode","DeviceFingerprintController","DEVICE_FINGERPRINT_URL","DOMAINS_MUST_BE_USE_IN_APP_BROWSER","getSubmitStrategy","WebViewManager","ExternalUrlBrowser","ExternalUrlHelper","DefaultInAppBrowserAdapter","DeunaSDK","constructor","config","onDestroyed","externalUrlHelper","inAppBrowserAdapter","listeners","Set","deunaWidgetManager","deviceFingerprintController","submitStrategy","getSessionId","params","publicApiKey","environment","url","notifyListeners","deviceFingerprint","generateDeviceFingerprint","dispose","initialize","setWidgetController","controller","mode","MODAL","delegate","buildDelegate","initPaymentWidget","props","widget","sdkInstance","
|
|
1
|
+
{"version":3,"names":["BaseDeuna","getWalletsAvailable","getWalletsAvailableNative","initElements","initElementsNative","PaymentWidgetController","buildDeunaWidgetController","ElementsWidgetController","DownloadType","Mode","DeviceFingerprintController","DEVICE_FINGERPRINT_URL","DOMAINS_MUST_BE_USE_IN_APP_BROWSER","getSubmitStrategy","WebViewManager","ExternalUrlBrowser","ExternalUrlHelper","DefaultInAppBrowserAdapter","DeunaSDK","constructor","config","onDestroyed","externalUrlHelper","inAppBrowserAdapter","listeners","Set","deunaWidgetManager","deviceFingerprintController","submitStrategy","getSessionId","params","publicApiKey","environment","url","notifyListeners","deviceFingerprint","generateDeviceFingerprint","dispose","initialize","setWidgetController","controller","mode","MODAL","delegate","buildDelegate","initPaymentWidget","props","widget","sdkInstance","WALLET_TYPE_TO_PROVIDER","APPLE_PAY","GOOGLE_PAY","firstType","types","name","walletProvider","undefined","orderToken","userInfo","walletConfig","then","result","callbacks","onClosed","onSuccess","catch","err","onError","type","code","metadata","message","initNextAction","initVoucherWidget","isValid","submit","getStateFn","getWidgetState","setCustomStyle","style","refetchOrder","close","isInitialized","resetInAppBrowserReopenGuard","onClosedCallback","closedAction","waitForClose","destroy","deunaSDK","error","console","addListener","listener","add","removeListener","delete","forEach","notifyDownloadFile","onDownloadFile","URL","data","onCloseExternalUrl","externalUrlWebViewController","closeWebView","onOpenExternalUrl","options","hostMatch","match","host","browser","WEB_VIEW","domain","includes","IN_APP_BROWSER","canOpenInAppBrowserUrl","bypassReopenGuard","userInitiated","openUrl","onFileDownload","onCloseButtonPressed"],"sourceRoot":"../../src","sources":["DeunaSDK.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -22,11 +22,14 @@ export const DeunaWebView = props => {
|
|
|
22
22
|
props.onLoad?.();
|
|
23
23
|
},
|
|
24
24
|
startInLoadingState: true,
|
|
25
|
+
paymentRequestEnabled: true,
|
|
26
|
+
enableApplePay: true,
|
|
25
27
|
renderLoading: () => /*#__PURE__*/_jsx(WebViewLoader, {}),
|
|
26
28
|
javaScriptEnabled: true,
|
|
27
29
|
onError: props.onError,
|
|
28
30
|
setSupportMultipleWindows: false,
|
|
29
31
|
javaScriptCanOpenWindowsAutomatically: false,
|
|
32
|
+
onOpenWindow: event => props.onOpenWindow?.(event.nativeEvent.targetUrl),
|
|
30
33
|
onShouldStartLoadWithRequest: props.onShouldStartLoadWithRequest
|
|
31
34
|
})
|
|
32
35
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StyleSheet","View","WebView","WebViewLoader","jsx","_jsx","DeunaWebView","props","style","styles","container","children","ref","webView","onWebView","source","uri","url","userAgent","undefined","onMessage","onLoad","startInLoadingState","renderLoading","javaScriptEnabled","onError","setSupportMultipleWindows","javaScriptCanOpenWindowsAutomatically","onShouldStartLoadWithRequest","create","flex"],"sourceRoot":"../../../src","sources":["components/DeunaWebView.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,OAAOC,OAAO,MAAM,sBAAsB;AAC1C,SAASC,aAAa,QAAQ,oBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA;
|
|
1
|
+
{"version":3,"names":["StyleSheet","View","WebView","WebViewLoader","jsx","_jsx","DeunaWebView","props","style","styles","container","children","ref","webView","onWebView","source","uri","url","userAgent","undefined","onMessage","onLoad","startInLoadingState","paymentRequestEnabled","enableApplePay","renderLoading","javaScriptEnabled","onError","setSupportMultipleWindows","javaScriptCanOpenWindowsAutomatically","onOpenWindow","event","nativeEvent","targetUrl","onShouldStartLoadWithRequest","create","flex"],"sourceRoot":"../../../src","sources":["components/DeunaWebView.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,OAAOC,OAAO,MAAM,sBAAsB;AAC1C,SAASC,aAAa,QAAQ,oBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAahD,OAAO,MAAMC,YAAY,GAAIC,KAAwB,IAAK;EACxD,oBACEF,IAAA,CAACJ,IAAI;IAACO,KAAK,EAAEC,MAAM,CAACC,SAAU;IAAAC,QAAA,eAC5BN,IAAA,CAACH,OAAO;MACNU,GAAG,EAAGC,OAAO,IAAK;QAChB,IAAIA,OAAO,IAAIN,KAAK,CAACO,SAAS,EAAE;UAC9BP,KAAK,CAACO,SAAS,CAACD,OAAO,CAAC;QAC1B;MACF,CAAE;MACFE,MAAM,EAAE;QAAEC,GAAG,EAAET,KAAK,CAACU;MAAI,CAAE;MAC3BC,SAAS,EAAEX,KAAK,CAACW,SAAS,IAAIC,SAAU;MACxCC,SAAS,EAAEb,KAAK,CAACa,SAAU;MAC3BC,MAAM,EAAEA,CAAA,KAAM;QACZd,KAAK,CAACc,MAAM,GAAG,CAAC;MAClB,CAAE;MACFC,mBAAmB;MACnBC,qBAAqB;MACrBC,cAAc;MACdC,aAAa,EAAEA,CAAA,kBAAMpB,IAAA,CAACF,aAAa,IAAE,CAAE;MACvCuB,iBAAiB,EAAE,IAAK;MACxBC,OAAO,EAAEpB,KAAK,CAACoB,OAAQ;MACvBC,yBAAyB,EAAE,KAAM;MACjCC,qCAAqC,EAAE,KAAM;MAC7CC,YAAY,EAAGC,KAAK,IAAKxB,KAAK,CAACuB,YAAY,GAAGC,KAAK,CAACC,WAAW,CAACC,SAAS,CAAE;MAC3EC,4BAA4B,EAAE3B,KAAK,CAAC2B;IAA6B,CAClE;EAAC,CACE,CAAC;AAEX,CAAC;AAED,MAAMzB,MAAM,GAAGT,UAAU,CAACmC,MAAM,CAAC;EAAEzB,SAAS,EAAE;IAAE0B,IAAI,EAAE;EAAE;AAAE,CAAC,CAAC","ignoreList":[]}
|
|
@@ -103,6 +103,7 @@ const DeunaWidgetContainer = props => {
|
|
|
103
103
|
onMessage: controller?.onMessage,
|
|
104
104
|
onLoad: controller?.onLoad,
|
|
105
105
|
onError: controller?.onError,
|
|
106
|
+
onOpenWindow: controller?.onOpenWindow,
|
|
106
107
|
onShouldStartLoadWithRequest: controller?.onShouldStartLoadWithRequest
|
|
107
108
|
}), /*#__PURE__*/_jsx(DeviceFingerprintWebView, {
|
|
108
109
|
instance: instanceRef.current
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Modal","SafeAreaView","StyleSheet","View","useEffect","useRef","useState","DeunaWebView","Mode","DeviceFingerprintWebView","ExternalUrlWebView","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","DeunaWidget","props","instance","instanceRef","showPaymentStrategy","setShowPaymentStrategy","current","listener","submitStrategy","addListener","removeListener","children","DeunaWidgetContainer","deunaSDK","isVisible","setIsVisible","deunaWidgetManager","isInitialized","controller","dispose","onClose","closedAction","close","viewManager","isModal","mode","MODAL","isEmbedded","EMBEDDED","presentationStyle","animationType","onRequestClose","style","styles","container","url","userAgent","onWebView","setWebView","onMessage","onLoad","onError","onShouldStartLoadWithRequest","create","flex"],"sourceRoot":"../../../src","sources":["components/DeunaWidget.tsx"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["Modal","SafeAreaView","StyleSheet","View","useEffect","useRef","useState","DeunaWebView","Mode","DeviceFingerprintWebView","ExternalUrlWebView","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","DeunaWidget","props","instance","instanceRef","showPaymentStrategy","setShowPaymentStrategy","current","listener","submitStrategy","addListener","removeListener","children","DeunaWidgetContainer","deunaSDK","isVisible","setIsVisible","deunaWidgetManager","isInitialized","controller","dispose","onClose","closedAction","close","viewManager","isModal","mode","MODAL","isEmbedded","EMBEDDED","presentationStyle","animationType","onRequestClose","style","styles","container","url","userAgent","onWebView","setWebView","onMessage","onLoad","onError","onShouldStartLoadWithRequest","onOpenWindow","create","flex"],"sourceRoot":"../../../src","sources":["components/DeunaWidget.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -66,6 +66,23 @@ export class BaseWebViewController {
|
|
|
66
66
|
return true;
|
|
67
67
|
};
|
|
68
68
|
|
|
69
|
+
/**
|
|
70
|
+
* Called when window.open() is triggered inside the WebView (native event,
|
|
71
|
+
* no JS injection needed). window.open returns null to the page, which causes
|
|
72
|
+
* payment libraries like pay.js to fall back to the Payment Request API.
|
|
73
|
+
* Non-payment URLs (APM redirects, etc.) are forwarded as external URLs.
|
|
74
|
+
*/
|
|
75
|
+
onOpenWindow = targetUrl => {
|
|
76
|
+
if (!targetUrl) return;
|
|
77
|
+
// Google Pay opens via the Payment Request API (paymentRequestEnabled=true).
|
|
78
|
+
// Intercepting pay.google.com here would open it in a WebView, which Google
|
|
79
|
+
// Pay blocks. Drop it and let the native Payment Request handler take over.
|
|
80
|
+
if (targetUrl.includes('pay.google.com')) return;
|
|
81
|
+
this.delegate?.onOpenExternalUrl?.(targetUrl, {
|
|
82
|
+
userInitiated: true
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
|
|
69
86
|
/**
|
|
70
87
|
* Release the web view resources
|
|
71
88
|
*/
|
|
@@ -188,10 +205,6 @@ export class DeunaWebViewController extends BaseWebViewController {
|
|
|
188
205
|
document.addEventListener('keydown', function() {
|
|
189
206
|
window.__deunaLastUserInteractionAt = Date.now();
|
|
190
207
|
}, true);
|
|
191
|
-
window.open = function(url, target, features) {
|
|
192
|
-
var isUserInitiated = Date.now() - (window.__deunaLastUserInteractionAt || 0) < 1500;
|
|
193
|
-
window.ReactNativeWebView.postMessage(JSON.stringify({ type: '${WebViewEventType.openExternalUrl}', url, userInitiated: isUserInitiated }));
|
|
194
|
-
};
|
|
195
208
|
window.ReactNativeWebView.postMessage(JSON.stringify({
|
|
196
209
|
type: '${WebViewEventType.userAgentResolved}',
|
|
197
210
|
userAgent: navigator.userAgent || null
|