npm package: @magic-change/react-native-zolozkit
Description: zolozkit for react native
Author: zoloz
Latest version: 0.1.20

# react-native-zolozkit

ZOLOZ provides an SDK and APIs for you to implement integration with your native mobile application. This article provides you an overview of the app SDK-mode integration by React Native. 

For more information about the ZOLOZ SDK, see: [App SDK-mode integration](https://docs.zoloz.com/zoloz/saas/integration/neug2p)

## Installation

```sh
npm install react-native-zolozkit
```

### Add zolozkit for iOS 

You should add the SDK dependency in Podfile(*usually ios/Podfile*).

```pod
pod 'zolozkit', :source => 'https://github.com/zoloz-pte-ltd/zoloz-demo-ios'
```

### Add other dependencies for android

If your project support for AndroidX, you need add the `localbroadcastmanager` dependencies in 'android/app/build.gradle' file. 

```gradle
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
```

## Usage

### 1. import `ZolozKit` in React Native

```js
import { NativeModules} from "react-native";
 const { ZolozKit } = NativeModules;
```

### 2. Get meta information

Use the ZolozKit and its method getMetaInfo to get the meta information about the ZOLOZ SDK and the user's device. The meta information is used to initialize a transaction later. 

```js
ZolozKit.getMetaInfo((metainfo) => {
    console.log(metainfo)
});
```

### 3. Initialize a transaction

Send a request that contains the meta information to your (merchant) server to initialize a transaction. Then your (merchant) server needs to call the initialize API to obtain the client configuration and return it to your (merchant) application.

### 4. Start the transaction flow

 Start the transaction flow by calling the start method with the `clientcfg` that is from Step 3. You also need to override the callback functions to handle the transaction result. 

```js
const {  ZLZ_LOCAL_KEY, ZLZ_CHAMELEON_KEY, ZLZ_PUB_KEY } = ZolozKit.getConstants();
clientCfg = "the clientcfg from the third step"
ZolozKit.start(clientCfg, {
    // add some biz params for zoloz sdk , like local.
    // [ZLZ_LOCAL_KEY]: "zh-CN"
}, (result) => {
    alert(result, [{text: 'OK', onPress: () => console.log('OK Pressed!')},])
    console.log(result);
}) 
```

The transaction result contains a result code that indicates the transaction flow status. If the end user has completed the flow, the result value is true. 

## License


MIT License

Copyright (c) 2020 ZOLOZ-PTE-LTD

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.