react-native-momosdk
v1.4.3
Published
Payment via Momo wallet. Includes authorize token, payment token
Downloads
130
Readme
react-native-momosdk
Module to create e-wallet payment method. That is the way to payment customer's order by their MoMo e-wallet.
Getting started
$ npm install react-native-momosdk --save
Mostly automatic installation
$ react-native link react-native-momosdk
Manual installation
Android
- Open up
android/app/src/main/java/[...]/MainActivity.java
- Add
import com.reactlibrary.RNMomosdkPackage;
to the imports at the top of the file - Add
new RNMomosdkPackage()
to the list returned by thegetPackages()
method
- Append the following lines to
android/settings.gradle
:
include ':react-native-momosdk'
project(':react-native-momosdk').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-momosdk/android')
- Insert the following lines inside the dependencies block in
android/app/build.gradle
:
compile project(':react-native-momosdk')
iOS
- In XCode, in the project navigator, right click
Libraries
➜Add Files to [your project's name]
- Go to
node_modules
➜react-native-momosdk
and addRNMomosdk.xcodeproj
- In XCode, in the project navigator, select your project. Add
libRNMomosdk.a
to your project'sBuild Phases
➜Link Binary With Libraries
- Run your project (
Cmd+R
)<
Config file Plist (CFBundleURLTypes and LSApplicationQueriesSchemes)
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string></string>
<key>CFBundleURLSchemes</key>
<array>
<string>partnerSchemeId</string>
</array>
</dict>
</array>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>momo</string>
</array>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
AppDelegate
#import "RNMomosdk.h"
/*iOS 9 or newest*/
-(BOOL)application:(UIApplication *)app openURL:(nonnull NSURL *)url options:(nonnull NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{
[RNMomosdk handleOpenUrl:url];
return YES;
}
/*iOS 8 or lower*/
-(BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation;{
[RNMomosdk handleOpenUrl:url];
return YES;
}
Usage
import { Platform, DeviceEventEmitter,NativeModules, NativeEventEmitter} from 'react-native';
import RNMomosdk from 'react-native-momosdk';
const EventEmitter = new NativeEventEmitter(NativeModules.RNMomosdk);
const merchantname = "CGV Cinemas";
const merchantcode = "CGV01";
const merchantNameLabel = "Nhà cung cấp";
const billdescription = "Fast and Furious 8";
const amount = 50000;
const enviroment = "0"; //"0": SANBOX , "1": PRODUCTION
componentDidMount(){
EventEmitter.addListener('RCTMoMoNoficationCenterRequestTokenReceived', (response) => {
try{
console.log("<MoMoPay>Listen.Event::" + JSON.stringify(response));
if (response && response.status == 0) {
//SUCCESS: continue to submit momoToken,phonenumber to server
let fromapp = response.fromapp; //ALWAYS:: fromapp==momotransfer
let momoToken = response.data;
let phonenumber = response.phonenumber;
let message = response.message;
} else {
//let message = response.message;
//Has Error: show message here
}
}catch(ex){}
});
EventEmitter.addListener('RCTMoMoNoficationCenterRequestTokenState',(response) => {
console.log("<MoMoPay>Listen.RequestTokenState:: App is not installed or config LSApplicationQueriesSchemes failed");
//response.status = 1: Parameters valid & ready to open MoMo app., 2: canOpenURL failed for URL MoMo app, 3: Parameters invalid
})
}
// TODO: Action to Request Payment MoMo App
onPress = async () => {
let jsonData = {};
jsonData.enviroment = "1"; //"0": SANBOX , "1": PRODUCTION
jsonData.action = "gettoken"; //DO NOT EDIT
jsonData.merchantname = merchantname; //edit your merchantname here
jsonData.merchantcode = merchantcode; //edit your merchantcode here
jsonData.merchantnamelabel = merchantNameLabel;
jsonData.description = billdescription;
jsonData.amount = 5000;//order total amount
jsonData.orderId = "ID20181123192300";
jsonData.orderLabel = "Ma don hang";
jsonData.appScheme = "momocgv20170101";// iOS App Only , match with Schemes Indentify from your Info.plist > key URL types > URL Schemes
if (Platform.OS === 'android'){
let dataPayment = await RNMomosdk.requestPayment(jsonData);
this.momoHandleResponse(dataPayment);
}else{
RNMomosdk.requestPayment(jsonData);
}
}
async momoHandleResponse(response){
try{
if (response && response.status == 0) {
//SUCCESS continue to submit momoToken,phonenumber to server
let fromapp = response.fromapp; //ALWAYS:: fromapp == momotransfer
let momoToken = response.data;
let phonenumber = response.phonenumber;
let message = response.message;
} else {
//let message = response.message;
//Has Error: show message here
}
}catch(ex){}
}