vogo-react-native-paytm
v1.0.14
Published
Unofficial React Native wrapper for PayTM
Downloads
6
Readme
vogo-react-native-paytm
This library has been forked from https://github.com/elanic-tech/react-native-paytm Updated it to work with the latest version of react-native and latest PayTM SDK.
Installation
| react-native-paytm | react-native | | :----------------- | :----------- | | 1.0.11 | < 0.60 | | 1.0.12 | >= 0.60 |
npm i --save vogo-react-native-paytm
or
yarn add vogo-react-native-paytm
For RN < 0.60
Link it:
react-native link vogo-react-native-paytm
For RN >= 0.60
Use CocoaPods installation if auto-linking doesn't work.
CocoaPods
Add to your Podfile:
pod 'RNPayTm', :path => '../node_modules/vogo-react-native-paytm'
Install it:
pod install && pod update
If it's not gonna work, then add libPaymentsSDK.a
to "Link Binary With Libraries" Build Phase for the RNPayTm target (in Pods project).
iOS (Manually)
- In XCode, in the project navigator, right click
Libraries
➜Add Files to [your project's name]
- Go to
node_modules/vogo-react-native-paytm
and addRNPayTm.xcodeproj
- In XCode, in the project navigator, select your project. Add
libRNPayTm.a
to your project'sBuild Phases
➜Link Binary With Libraries
- Run your project (
Cmd+R
)
Methods
startPayment(details: PayTmPaymentDetails): void
type PayTmPaymentDetails = {
mode: "Staging" | "Production",
MID: string,
INDUSTRY_TYPE_ID: string,
WEBSITE: string,
CHANNEL_ID: string,
TXN_AMOUNT: string,
ORDER_ID: string,
EMAIL?: string,
MOBILE_NO?: string,
CUST_ID: string,
CHECKSUMHASH: string,
CALLBACK_URL: string,
MERC_UNQ_REF?: string,
SSO_TOKEN?: string,
REQUEST_TYPE?: string
};
Usage
For more details check official documentation: iOS and Android.
Example:
import React from "react";
import { Platform } from "react-native";
import Paytm from "vogo-react-native-paytm";
// Data received from PayTM
const paytmConfig = {
MID: "Value from PayTM dashboard",
WEBSITE: "Value from PayTM dashboard",
CHANNEL_ID: "WAP",
INDUSTRY_TYPE_ID: "Retail",
CALLBACK_URL: "https://securegw.paytm.in/theia/paytmCallback?ORDER_ID="
};
export default class Test extends React.Component {
componentWillMount() {
Paytm.addListener(Paytm.Events.PAYTM_RESPONSE, this.onPayTmResponse);
}
componentWillUnmount() {
Paytm.removeListener(Paytm.Events.PAYTM_RESPONSE, this.onPayTmResponse);
}
onPayTmResponse = resp => {
const { STATUS, status, response } = resp;
if (Platform.OS === "ios") {
if (status === "Success") {
const jsonResponse = JSON.parse(response);
const { STATUS } = jsonResponse;
if (STATUS && STATUS === "TXN_SUCCESS") {
// Payment succeed!
}
}
} else {
if (STATUS && STATUS === "TXN_SUCCESS") {
// Payment succeed!
}
}
};
runTransaction(
amount,
customerId,
orderId,
mobile,
email,
checkSum,
mercUnqRef
) {
const callbackUrl = `${paytmConfig.CALLBACK_URL}${orderId}`;
const details = {
mode: "Staging", // 'Staging' or 'Production'
MID: paytmConfig.MID,
INDUSTRY_TYPE_ID: paytmConfig.INDUSTRY_TYPE_ID,
WEBSITE: paytmConfig.WEBSITE,
CHANNEL_ID: paytmConfig.CHANNEL_ID,
TXN_AMOUNT: `${amount}`, // String
ORDER_ID: orderId, // String
EMAIL: email, // String
MOBILE_NO: mobile, // String
CUST_ID: customerId, // String
CHECKSUMHASH: checkSum, //From your server using PayTM Checksum Utility
CALLBACK_URL: callbackUrl,
MERC_UNQ_REF: mercUnqRef,
SSO_TOKEN: sso_token,
REQUEST_TYPE: request_type // optional
};
Paytm.startPayment(details);
}
}