quadpay-merchant-sdk-react-native
Version:
This library provides the ability to offer QuadPay as a payment in your app!
103 lines (90 loc) • 3.26 kB
JavaScript
import { NativeModules, NativeEventEmitter, Platform } from "react-native";
let QuadPayNativeSDK = NativeModules.QuadPayBridge;
console.log('NativeModules.QuadPayBridge:', QuadPayNativeSDK);
const quadpayNativeEmitter = QuadPayNativeSDK ? new NativeEventEmitter(QuadPayNativeSDK) : null;
class QuadPayClass {
initialize = (merchantId, environment, locale) => {
let env = Platform.select({
ios: environment.toLowerCase(),
android: environment.toUpperCase()
});
QuadPayNativeSDK.initialize(merchantId, env, locale);
};
startVirtualCheckout = (checkoutDetails) => {
QuadPayNativeSDK.startVirtualCheckout(
checkoutDetails.amount,
checkoutDetails.merchantReference,
checkoutDetails.customerFirstName,
checkoutDetails.customerEmail,
checkoutDetails.customerLastName,
checkoutDetails.customerPhoneNumber,
checkoutDetails.customerAddressLine1,
checkoutDetails.customerAddressLine2,
checkoutDetails.customerPostalCode,
checkoutDetails.customerCity,
checkoutDetails.customerState,
checkoutDetails.customerCountry,
checkoutDetails.merchantFeeForPaymentPlan,
checkoutDetails.checkoutFlow,
);
};
startCheckout = (checkoutDetails) => {
QuadPayNativeSDK.startCheckout(
checkoutDetails.amount,
checkoutDetails.merchantReference,
checkoutDetails.customerFirstName,
checkoutDetails.customerEmail,
checkoutDetails.customerLastName,
checkoutDetails.customerPhoneNumber,
checkoutDetails.customerAddressLine1,
checkoutDetails.customerAddressLine2,
checkoutDetails.customerPostalCode,
checkoutDetails.customerCity,
checkoutDetails.customerState,
checkoutDetails.customerCountry,
checkoutDetails.merchantFeeForPaymentPlan,
checkoutDetails.checkoutFlow,
);
};
onCheckoutCancelled(handler) {
if (quadpayNativeEmitter) {
quadpayNativeEmitter.removeAllListeners("checkoutCancelled");
this.checkoutCancelledListener = quadpayNativeEmitter.addListener("checkoutCancelled", handler);
}
}
onCheckoutSuccessful(handler) {
if (quadpayNativeEmitter) {
quadpayNativeEmitter.removeAllListeners("checkoutSuccessful");
this.checkoutSuccessfulListener = quadpayNativeEmitter.addListener("checkoutSuccessful", handler);
}
}
onCheckoutError(handler) {
if (quadpayNativeEmitter) {
quadpayNativeEmitter.removeAllListeners("checkoutError");
this.checkoutErrorListener = quadpayNativeEmitter.addListener("checkoutError", handler);
}
}
removeListeners() {
if (quadpayNativeEmitter) {
if (this.checkoutCancelledListener) {
this.checkoutCancelledListener.remove();
this.checkoutCancelledListener = null;
}
if (this.checkoutSuccessfulListener) {
this.checkoutSuccessfulListener.remove();
this.checkoutSuccessfulListener = null;
}
if (this.checkoutErrorListener) {
this.checkoutErrorListener.remove();
this.checkoutErrorListener = null;
}
}
}
}
let QuadPay = null;
if (QuadPayNativeSDK) {
QuadPay = new QuadPayClass();
} else {
console.error('QuadPayBridge module is not defined');
}
export { QuadPay };