react-native-liqpay
v0.4.0
Published
React native wrapper for Liqpay mobile API
Downloads
158
Readme
react-native-liqpay
Getting started
npm install react-native-liqpay --save
Mostly automatic installation (RN >= 0.60)
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
iOS
- In XCode, in the project navigator, right click
Libraries
➜Add Files to [your project's name]
- Go to
node_modules
➜react-native-liqpay
and addRNLiqpay.xcodeproj
- In XCode, in the project navigator, select your project. From
RNLiqpay.xcodeproj/Producs/
, addlibRNLiqpay.a
to your project'sBuild Phases
➜Link Binary With Libraries
- Run your project (
Cmd+R
)
Android
- 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 thegetPackages()
method
- Add
- Append the following lines to
android/settings.gradle
:
include ':react-native-liqpay'
project(':react-native-liqpay').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-liqpay/android')
- Insert the following lines inside the dependencies block in
android/app/build.gradle
:
compile project(':react-native-liqpay')
- Insert the following lines inside the dependencies block in
android/app/src/main/AndroidManifest.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"/>
- Insert the following lines inside the dependencies block in
android/app/src/main/java/com/[yourappname]/MainApplication.java
:
return Arrays.<ReactPackage>asList(
new RNLiqpayPackage()
);
- 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
}
}
}
}
- Request permissions
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
}
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 to make request.
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:
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
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