UNPKG

react-native-liqpay

Version:
194 lines (150 loc) 5.52 kB
# react-native-liqpay ## Getting started ```bash npm install react-native-liqpay --save ``` ### Mostly automatic installation (RN >= 0.60) ```bash cd ios && pod install ``` That's all! Ready for use on iOS and Android. ### Mostly automatic installation (RN < 0.60) `$ react-native link react-native-liqpay` --- <details> <summary>Manual installation</summary> #### iOS 1. In XCode, in the project navigator, right click `Libraries` ➜ `Add Files to [your project's name]` 2. Go to `node_modules` ➜ `react-native-liqpay` and add `RNLiqpay.xcodeproj` 3. In XCode, in the project navigator, select your project. From `RNLiqpay.xcodeproj/Producs/`, add `libRNLiqpay.a` to your project's `Build Phases` ➜ `Link Binary With Libraries` 4. Run your project (`Cmd+R`) #### Android 1. Open up `android/app/src/main/java/[...]/MainActivity.java` - Add `import com.reactlibrary.RNReactNativeLiqpayPackage;` to the imports at the top of the file - Add `new RNReactNativeLiqpayPackage()` to the list returned by the `getPackages()` method 2. Append the following lines to `android/settings.gradle`: ```java include ':react-native-liqpay' project(':react-native-liqpay').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-liqpay/android') ``` 3. Insert the following lines inside the dependencies block in `android/app/build.gradle`: ```java compile project(':react-native-liqpay') ``` 4. Insert the following lines inside the dependencies block in `android/app/src/main/AndroidManifest.xml`: ```xml <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <activity android:name="ua.privatbank.paylibliqpay.CheckoutActivity"/> ``` 5. Insert the following lines inside the dependencies block in `android/app/src/main/java/com/[yourappname]/MainApplication.java`: ```java return Arrays.<ReactPackage>asList( new RNLiqpayPackage() ); ``` 6. To avoid problems with compile SDK version insert following inside `android/buid.gradle` ``` subprojects { afterEvaluate { project -> if (project.hasProperty("android")) { android { compileSdkVersion rootProject.ext.compileSdkVersion buildToolsVersion rootProject.ext.buildToolsVersion } } } } ``` 7. Request permissions ```javascript if (Platform.OS === 'android') { try { const granted = await PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.READ_PHONE_STATE); if (granted === PermissionsAndroid.RESULTS.GRANTED) { // open liqpay } } catch (e) { console.log(e); } } else { // open liqpay } ``` </details> ## Usage ### Checkout **Note** Please don't forget that we work in a client environment. So it's **very very** bad pratice to store and use private key in app. You must make data and signature on your backend env. Then you can use [LiqpayCheckoutBase64](#liqpaycheckoutbase64) to make request. <img src="screenshot_android.png" alt="screenshot" width="300" /> <img src="screenshot_ios.png" alt="screenshot" width="300" /> Get the API keys here: https://www.liqpay.ua/ru/admin/business More info on the params: https://www.liqpay.ua/documentation/data_signature Info on LiPay Checkout: https://www.liqpay.ua/documentation/api/aquiring/checkout/doc Example checkout: ```jsx import { LiqpayCheckout } from 'react-native-liqpay'; import { Button, View } from 'react-native'; class Checkout extends React.Component { state = { showCheckout: false, } renderCheckout() { return( <LiqpayCheckout signature="..." privateKey="..." params={{ public_key: '...', action: 'pay', // Possible values: 'pay' - payment, 'hold' - blocking funds on the sender's account, 'subscribe' - regular payment, 'paydonate' - donation, auth - preauthorization of the card version: '3', // API version amount: '10', currency: 'UAH', description: 'description text', order_id: 'order_id_X', // The maximum length is 255 characters product_description: 'product_description', sandbox: '1', // for testing }} onLiqpaySuccess={res => { console.log(res); }} onLiqpayError={error => { console.error(error); }} /> ); } render() { return ( <View> <Button title="Pay" onPress={() => this.showCheckout()} /> {this.state.showCheckout && this.renderCheckout()} </View> ); } } ``` ### LiqpayCheckoutBase64 ```jsx import { LiqpayCheckoutBase64 } from 'react-native-liqpay'; // About data and signature https://www.liqpay.ua/documentation/data_signature // Signature calculator https://www.liqpay.ua/documentation/forming_test_data/ ... <render> <LiqpayCheckoutBase64 signature="sig" paramsBase64="base64encodedJSONobject" onLiqpaySuccess={res => { console.log(res); }} onLiqpayError={error => { console.log(error); }} /> ... ``` ### LiqpayApi _todo_ ### LiqpayApiBase64 _todo_ <a href="https://www.buymeacoffee.com/UqrT9HA" target="_blank"><img src="https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png" alt="Buy Me A Coffee" style="height: auto !important;width: auto !important;" ></a>