The Wepin SDK is designed for use in both Web environments. This package is exclusively available for use in web environments.
⚠️ Notice:
This package is only available for web environments and cannot be used in Android or iOS hybrid apps (Webview).
If you are using this package in a Server Side Rendering (SSR) environment, make sure to load the package only on the Client Side Rendering (CSR) side.
Please refer to the following code for implementation:
const initWepinSDK = async () => {
const { WepinSDK } = await import('@wepin/sdk-js')
const wepinSDK = new WepinSDK({
appKey: '',
appId: '',
})
await wepinSDK.init()
}
After signing up for Wepin Workspace, go to the development tools menu and enter the information for each app platform to receive your App ID and App Key.
To install the Wepin Widget SDK, you can use npm, yarn, or a CDN: Using npm:
npm install @wepin/sdk-js
Using yarn:
yarn add @wepin/sdk-js
Using CDN: You can also include the library directly via CDN by adding the following script tag to your HTML file:
<script src="https://cdn.jsdelivr.net/npm/@wepin/sdk-js/dist/umd/wepin-widget-sdk.umd.js"></script>
Using npm or yarn:
import { WepinSDK } from '@wepin/sdk-js'
Using CDN:
const { WepinSDK } = window.WepinWidgetSDK
Create a new instance of WepinSDK
and initialize it with your application's ID and key:
const wepinSdk = new WepinSDK({
appId: 'your-wepin-app-id',
appKey: 'your-wepin-app-key',
})
await wepinSdk.init(attributes?)
attributes
<IWepinSDKAttributes> optional
type
: This determines how the widget is displayed when Wepin is initiated. The default value is 'hide'
and currently, only 'hide' is supported.defaultLanguage
: - defaultLanguage
: The language to be displayed on the widget (default: 'en'
)
Currently, only ko
, en
, and ja
are supported.defaultCurrency
: The currency to be displayed on the widget (default: 'USD'
)
Currently, only 'KRW'
,'USD'
and 'JPY'
are supported.loginProviders
: optional An array of login providers to configure the widget.
v0.0.3
)await wepinSdk.init({
type: 'hide',
defaultLanguage: 'ko',
defaultCurrency: 'KRW',
})
// google, apple login
await wepinSdk.init({
type: 'hide',
defaultLanguage: 'ko',
defaultCurrency: 'KRW',
loginProviders: ['google', 'apple'],
})
// only email login
await wepinSdk.init({
type: 'hide',
defaultLanguage: 'ko',
defaultCurrency: 'KRW',
loginProviders: [],
})
wepinSdk.isInitialized()
The isInitialized()
method checks Wepin SDK is initialized.
wepinSdk.changeLanguage({ language, currency })
Change the language and currency of the widget.
language
<string> - The language to be displayed on the widget. Currently, only 'ko'
, 'en'
and 'ja'
are supported.currency
<string> - The currency to be displayed on the widget. Currently, only 'KRW'
, 'USD'
and 'JPY'
are supported.wepinSdk.changeLanguage({
currency: 'KRW',
language: 'ko',
})
Methods can be used after initialization of Wepin SDK.
await wepinSdk.getStatus()
Returns lifecycle of wepin.
'not_initialized
': if wepin is not initialized'initializing'
: if wepin is initializing'initialized'
: if wepin is initialized'before_login'
: if wepin is initialized but the user is not logged in'login'
: if the user is logged in'login_before_register'
: if the user is logged in but the user is NOT registered in wepinconst status = await wepinSdk.getStatus()
await wepinSdk.openWidget()
The openWidget()
method displays the Wepin widget. If a user is not logged in, the widget will not open. Therefore, you must log in to Wepin before using this method. To log in to Wepin, use the loginWithUI
method or the loginWepin
method from the @wepin/login-js.
await wepinSdk.openWidget()
wepinSdk.closeWidget()
The closeWidget()
method closes Wepin widget.
wepinSdk.closeWidget()
await wepinSdk.loginWithUI({email}?)
The loginWithUI()
method returns the information of the user who is logged in. If no user is logged in, the Wepin widget will display a login page. To perform a login without the widget, use the loginWepin()
method from @wepin/login-js
instead.
email
<string> optional
email
parameter allows users to log in using the specified email address, providing access to the login service.//without email
const userInfo = await wepinSdk.loginWithUI()
//with email
const userInfo = await wepinSdk.loginWithUI({ email })
{
"status": "success",
"userInfo": {
"userId": "120349034824234234",
"email": "abc@gmail.com",
"provider": "google",
"use2FA": true
}
}
await wepinSdk.register()
Register the user with Wepin.
After joining and logging in, the Register page of the Wepin widget opens and registers (wipe and account creation) the Wepin service.
Available only if the life cycle of the WepinSDK is login_before_register
.
After calling the loginWepin()
method in @wepin/login-js
, if the loginStatus value in the userStatus is not 'complete', this method must be called.
const userInfo = await wepinSdk.register()
await wepinSdk.registerUserEmail(param)
The registerUserEmail function registers an email for accounts from OAuth providers that do not already have an email associated with them.
Supported in version 0.0.18
and later
await wepinSdk.registerUserEmail({
provider: 'google',
idToken: 'google-idToken',
})
await wepinSdk.getLoginSession(prevToken)
The getLoginSession
method retrieves and refreshes the Firebase authentication token. If a previous token is provided, it updates the stored token before returning the latest authentication details.
const prevToken = await wepinSdk.getLoginSession()
const newToken = await wepinSdk.getLoginSession(prevToken)
await wepinSdk.logout()
The logout()
method performs a wepin logout.
await wepinSdk.getAccounts()
await wepinSdk.getAccounts(options?)
The getAccounts()
method returns user accounts. It is recommended to use getAccounts()
method without argument to get all user accounts. It can be only usable after widget login.
const result = await wepinSdk.getAccounts({
networks: ['Ethereum'],
withEoa: true,
})
[
{
"address": "0x0000001111112222223333334444445555556666",
"network": "Ethereum"
},
{
"address": "0x0000001111112222223333334444445555556666",
"network": "Ethereum",
"contract": "0x777777888888999999000000111111222222333333"
},
{
"address": "0x4444445555556666000000111111222222333333",
"network": "Ethereum",
"isAA": true
}
]
await wepinSdk.getBalance(accounts)
await wepinSdk.getBalance()
It returns the account's balance information. It can be only usable after widget login. It use getBalance()
method without argument to get all user accounts.
const result = await wepinSdk.getBalance([
{
address: '0x0000001111112222223333334444445555556666',
network: 'Ethereum',
},
])
[
{
"network": "Ethereum",
"address": "0x0000001111112222223333334444445555556666",
"symbol": "ETH",
"balance": "1.1",
"tokens": [
{
"contract": "0x123...213",
"symbol": "TEST",
"balance": "10"
}
]
}
]
await wepinSdk.send({account, txData?})
It returns the sent transaction id information. It can be only usable after widget login.
const result = await wepinSdk.send({
account: {
address: '0x0000001111112222223333334444445555556666',
network: 'Ethereum',
},
txData: {
to: '0x9999991111112222223333334444445555556666',
amount: '0.1',
},
})
{
"txId": "0x76bafd4b700ed959999d08ab76f95d7b6ab2249c0446921c62a6336a70b84f32"
}
await wepinSdk.finalize()
The finalize()
method finalizes the Wepin SDK.
await wepinSdk.finalize()
Registering WepinSDK events allows you to trigger responses based on changes in the user's connection status. WepinSDK triggers specific events such as wepinLifeCycleChange
, send_in_process
, send_complete
, and more. Generally, this is not a mandatory step and is only performed when necessary.
WepinSDK defines the following events to monitor state changes.
Event Name | WEPIN_SDK_EVENTS | Event Text | Description |
---|---|---|---|
wepinLifeCycleChange |
WEPIN_SDK_EVENTS.WEPIN_LIFECYCLE_CHANGE |
“wepinLifeCycleChange” | Triggered when the lifeCycle of WepinSDK changes |
send_in_process |
WEPIN_SDK_EVENTS.SEND_IN_PROGRESS |
send_in_progress | Triggered when a send is in progress |
send_complete |
WEPIN_SDK_EVENTS.SEND_COMPLETE |
send_complete | Triggered when a send is complete |
import { WEPIN_SDK_EVENTS, WepinLifeCycle, IWepinUser, WepinSDK } from "@wepin/sdk-js";
const subscribeWepinEvents = (wepinSDK: WepinSDK) => {
wepinSDK.on(
WEPIN_SDK_EVENTS.WEPIN_LIFECYCLE_CHANGE,
(lifecycle: WepinLifeCycle, userInfo?: IWepinUser) => {
console.log('wepinLifeCycleChange', lifecycle)
if (lifecycle == 'login' || lifecycle === 'login_before_register') {
console.log('userInfo', userInfo)
}
}
)
wepinSDK.on(WEPIN_SDK_EVENTS.SEND_IN_PROGRESS, () => {
console.log('send_in_progress')
})
wepinSDK.on(
WEPIN_SDK_EVENTS.SEND_COMPLETE,
(success: boolean, message?: string) => {
if (success) {
console.log('send_complete: success', message)
} else {
console.log('send_complete: failure', message)
}
}
)
}