From 8b469367b436724cc66585631221facdf72ce163 Mon Sep 17 00:00:00 2001 From: Hardik Patel Date: Fri, 26 Nov 2021 23:29:01 +0530 Subject: [PATCH 1/3] #Added Razorpay Checout tsx file --- RazorpayCheckout.tsx | 65 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 RazorpayCheckout.tsx diff --git a/RazorpayCheckout.tsx b/RazorpayCheckout.tsx new file mode 100644 index 00000000..001fdd7d --- /dev/null +++ b/RazorpayCheckout.tsx @@ -0,0 +1,65 @@ +"use strict"; + +import { NativeModules, NativeEventEmitter } from "react-native"; + +const razorpayEvents = new NativeEventEmitter( + NativeModules.RazorpayEventEmitter +); + +const removeSubscriptions = () => { + razorpayEvents.removeAllListeners("Razorpay::PAYMENT_SUCCESS"); + razorpayEvents.removeAllListeners("Razorpay::PAYMENT_ERROR"); + razorpayEvents.removeAllListeners("Razorpay::EXTERNAL_WALLET_SELECTED"); +}; + +interface Wallet { + wallets: string[]; +} + +interface Prefill { + email: string; + contact: string; + name: string; +} + +interface Theme { + color: string; +} + +interface Options { + description: String; + image?: String; + currency: String; + key: String; + amount: String; + external: Wallet; + name?: String; + prefill: Prefill; + theme: Theme; +} + +class RazorpayCheckout { + static open(options: Options, successCallback: any, errorCallback: any) { + return new Promise(function (resolve, reject) { + razorpayEvents.addListener("Razorpay::PAYMENT_SUCCESS", (data) => { + let resolveFn = successCallback || resolve; + resolveFn(data); + removeSubscriptions(); + }); + razorpayEvents.addListener("Razorpay::PAYMENT_ERROR", (data) => { + let rejectFn = errorCallback || reject; + rejectFn(data); + removeSubscriptions(); + }); + NativeModules.RNRazorpayCheckout.open(options); + }); + } + static onExternalWalletSelection(externalWalletCallback) { + razorpayEvents.addListener("Razorpay::EXTERNAL_WALLET_SELECTED", (data) => { + externalWalletCallback(data); + removeSubscriptions(); + }); + } +} + +export default RazorpayCheckout; From 4160c1911600e9ca3fbd96722269cd718c055da7 Mon Sep 17 00:00:00 2001 From: Hardik Patel Date: Fri, 26 Nov 2021 23:37:16 +0530 Subject: [PATCH 2/3] #Added - TypeScript types --- types/RazorpayCheckout.d.ts | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 types/RazorpayCheckout.d.ts diff --git a/types/RazorpayCheckout.d.ts b/types/RazorpayCheckout.d.ts new file mode 100644 index 00000000..e56f36ef --- /dev/null +++ b/types/RazorpayCheckout.d.ts @@ -0,0 +1,31 @@ +export default RazorpayCheckout; +interface Wallet { + wallets: string[]; +} + +interface Prefill { + email: string; + contact: string; + name: string; +} + +interface Theme { + color: string; +} + +interface Options { + description: String; + image?: String; + currency: String; + key: String; + amount: String; + external: Wallet; + name?: String; + prefill: Prefill; + theme: Theme; +} + +declare class RazorpayCheckout { + static open(options: Options, successCallback: any, errorCallback: any): any; + static onExternalWalletSelection(externalWalletCallback: any): void; +} From f52442e84e0c76a03b3c983c67909574c14cd374 Mon Sep 17 00:00:00 2001 From: Hardik Patel Date: Fri, 26 Nov 2021 23:41:35 +0530 Subject: [PATCH 3/3] update change --- RazorpayCheckout.tsx | 65 -------------------------------------------- 1 file changed, 65 deletions(-) delete mode 100644 RazorpayCheckout.tsx diff --git a/RazorpayCheckout.tsx b/RazorpayCheckout.tsx deleted file mode 100644 index 001fdd7d..00000000 --- a/RazorpayCheckout.tsx +++ /dev/null @@ -1,65 +0,0 @@ -"use strict"; - -import { NativeModules, NativeEventEmitter } from "react-native"; - -const razorpayEvents = new NativeEventEmitter( - NativeModules.RazorpayEventEmitter -); - -const removeSubscriptions = () => { - razorpayEvents.removeAllListeners("Razorpay::PAYMENT_SUCCESS"); - razorpayEvents.removeAllListeners("Razorpay::PAYMENT_ERROR"); - razorpayEvents.removeAllListeners("Razorpay::EXTERNAL_WALLET_SELECTED"); -}; - -interface Wallet { - wallets: string[]; -} - -interface Prefill { - email: string; - contact: string; - name: string; -} - -interface Theme { - color: string; -} - -interface Options { - description: String; - image?: String; - currency: String; - key: String; - amount: String; - external: Wallet; - name?: String; - prefill: Prefill; - theme: Theme; -} - -class RazorpayCheckout { - static open(options: Options, successCallback: any, errorCallback: any) { - return new Promise(function (resolve, reject) { - razorpayEvents.addListener("Razorpay::PAYMENT_SUCCESS", (data) => { - let resolveFn = successCallback || resolve; - resolveFn(data); - removeSubscriptions(); - }); - razorpayEvents.addListener("Razorpay::PAYMENT_ERROR", (data) => { - let rejectFn = errorCallback || reject; - rejectFn(data); - removeSubscriptions(); - }); - NativeModules.RNRazorpayCheckout.open(options); - }); - } - static onExternalWalletSelection(externalWalletCallback) { - razorpayEvents.addListener("Razorpay::EXTERNAL_WALLET_SELECTED", (data) => { - externalWalletCallback(data); - removeSubscriptions(); - }); - } -} - -export default RazorpayCheckout;