
Security News
Deno 2.2 Improves Dependency Management and Expands Node.js Compatibility
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
@juspay-tech/hyperswitch-sdk-react-native
Advanced tools
The Hyperswitch React Native SDK allows you to build delightful payment experiences in your native Android and iOS apps using React Native. We provide powerful and customizable UI screens and elements that can be used out-of-the-box to collect your users' payment details.
Get started with our 📚 integration guides and example project, or 📘 browse the SDK reference.
Simplified Security: We make it simple for you to collect sensitive data such as credit card numbers and remain PCI compliant. This means the sensitive data is sent directly to Hyperswitch instead of passing through your server.
Wallets: We provide a seamless integration with Apple Pay and Google Pay.
Payment methods: Accepting more payment methods helps your business expand its global reach and improve checkout conversion.
SCA-Ready: The SDK automatically performs 3D Secure authentication regulation in Europe.
Native UI: We provide native screens and elements to securely collect payment details on Android and iOS.
If you're selling digital products or services within your app, (e.g. subscriptions, in-game currencies, game levels, access to premium content, or unlocking a full version), you must use the app store's in-app purchase APIs. See Apple's and Google's guidelines for more information. For all other scenarios you can use this SDK to process payments via Hyperswitch.
yarn add @juspay-tech/hyperswitch-sdk-react-native
or
npm install @juspay-tech/hyperswitch-sdk-react-native
yarn add react-native-code-push
yarn add react-native-gesture-handler
yarn add react-native-inappbrowser-reborn
yarn add react-native-safe-area-context
yarn add react-native-svg
yarn add @sentry/react-native
yarn add react-native-pager-view
yarn add react-native-screens
yarn add react-native-hyperswitch-kount
yarn add react-native-klarna-inapp-sdk
Note: If you encounter any issues with react-native-klarna-inapp-sdk
, please remove it from the dependencies.
Run pod install in iOS folder
pod install
In the Android Folder inside strings.xml file(android/app/src/main/res/values/strings.xml) add the below line
<string name="CodePushDeploymentKey">HyperswitchRNDemo</string>
In the android/settings.gradle file, add the following line to link react-native-code-push:
include(":react-native-code-push");
project(":react-native-code-push").projectDir = new File(
rootProject.projectDir,
"../node_modules/react-native-code-push/android/app"
);
In the android/settings.gradle file, add the following line to link react-native-code-push:
In the Android folder inside main (android/app/src/main/AndroidManifest.xml) add these below lines to the existing code.
<manifest xmlns:tools="http://schemas.android.com/tools">
<application
tools:replace="android:allowBackup">
<!-- Other existing elements in the <application> tag -->
</application>
</manifest>
For a complete example, visit our docs.
const express = require('express');
const app = express();
// Replace if using a different env file or config
const env = require('dotenv').config({path: './.env'});
const hyper = require('@juspay-tech/hyperswitch-node')(getSecretKey());
// Define a port to listen on
const PORT = process.env.PORT || 4242;
function getSecretKey() {
return process.env.HYPERSWITCH_SECRET_KEY;
}
function getPublishableKey() {
return process.env.HYPERSWITCH_PUBLISHABLE_KEY;
}
app.get('/get-config', async (req, res) => {
try {
res.send({
publishableKey: getPublishableKey(),
});
} catch (err) {
return res.status(400).send({
error: {
message: err.message,
},
});
}
});
app.post('/create-payment', async (req, res) => {
try {
const paymentIntent = await hyper.paymentIntents.create({
amount: 2999,
currency: 'USD',
});
console.log('-- paymentIntent', paymentIntent);
// Send publishable key and PaymentIntent details to client
res.send({
clientSecret: paymentIntent.client_secret,
});
} catch (err) {
return res.status(400).send({
error: {
message: err.message,
},
});
}
});
app.listen(PORT, () => {
console.log(`Hyperswitch Server is running on http://localhost:${PORT}`);
});
HyperProvider
to your React Native appUse HyperProvider
to ensure that you stay PCI compliant by sending payment details directly to Hyperswitch server.
import { HyperProvider } from '@juspay-tech/hyperswitch-sdk-react-native';
HyperProvider
To initialize Hyperswitch in your React Native app, wrap your payment screen with the HyperProvider component. Only the API publishable key in publishableKey is required. The following example shows how to initialize Hyperswitch using the HyperProvider component.
import { HyperProvider } from '@juspay-tech/hyperswitch-sdk-react-native';
function App() {
return (
<HyperProvider publishableKey="YOUR_PUBLISHABLE_KEY">
// Your app code here
</HyperProvider>
);
}
In the checkout of your app, import useHyper()
hook
import { useHyper } from '@juspay-tech/hyperswitch-sdk-react-native';
Make a network request to the backend endpoint you created in the previous step. The clientSecret returned by your endpoint is used to complete the payment.
const fetchPaymentParams = async () => {
const response = await fetch(`${API_URL}/create-payment`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ items: [{ id: 'xl-tshirt' }], country: 'US' }),
});
const val = await response.json();
return val;
};
Call initPaymentSession from the useHyper hook to customise paymentsheet, billing or shipping addresses and initialize paymentsheet
const { initPaymentSession, presentPaymentSheet } = useHyper();
const [paymentSession,setPaymentSession]=React.useState(null);
const initializePaymentSheet = async () => {
const { clientSecret } = await fetchPaymentParams();
const customAppearance = {
colors: {
light: {
primary: "#00FF00",
},
},
};
const params={
merchantDisplayName: "Example, Inc.",
clientSecret: clientSecret,
appearance: customAppearance,
}
const paymentSession = await initPaymentSession(params);
setPaymentSession(_=>paymentSession)
};
useEffect(() => {
initializePaymentSheet();
}, []);
To display the Payment Sheet, integrate a "Pay Now" button within the checkout page, which, when clicked, invokes the presentPaymentSheet()
function. This function will return an asynchronous payment response with various payment status.
const openPaymentSheet = async () => {
console.log("Payment Session Params --> ", paymentSession);
const status = await presentPaymentSheet(paymentSession);
console.log('presentPaymentSheet response: ', status);
const {error, paymentOption} = status;
if (error) {
switch (error.code) {
case 'cancelled':
console.log('cancelled', `PaymentSheet was closed`);
break;
case 'failed':
console.log('failed', `Payment failed`);
break;
default:
console.log('status not captured', 'Please check the integration');
break;
}
console.log(`Error code: ${error.code}`, error.message);
} else if (paymentOption) {
switch (paymentOption.label) {
case 'succeeded':
console.log('succeeded', `Your order is succeeded`);
break;
case 'requires_capture':
console.log('requires_capture', `Your order is requires_capture`);
break;
default:
console.log('status not captured', 'Please check the integration');
break;
}
} else {
console.log('Something went wrong', 'Please check the integration');
}
};
return (
<Screen>
<Button variant="primary" title="Checkout" onPress={openPaymentSheet} />
</Screen>
);
Congratulations! Now that you have integrated the payment sheet.
To test the example app located in the ./example/ directory of your repository, you can follow these steps:
Open a terminal and change to the ./example/ directory:
cd ./example/
Ensure you have all necessary dependencies installed. This usually involves running:
npm install
or if you’re using Yarn:
yarn install
npm start
or if you’re using Yarn:
yarn start
FAQs
Hyperswitch for React Native
The npm package @juspay-tech/hyperswitch-sdk-react-native receives a total of 1 weekly downloads. As such, @juspay-tech/hyperswitch-sdk-react-native popularity was classified as not popular.
We found that @juspay-tech/hyperswitch-sdk-react-native demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 0 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Deno 2.2 enhances Node.js compatibility, improves dependency management, adds OpenTelemetry support, and expands linting and task automation for developers.
Security News
React's CRA deprecation announcement sparked community criticism over framework recommendations, leading to quick updates acknowledging build tools like Vite as valid alternatives.
Security News
Ransomware payment rates hit an all-time low in 2024 as law enforcement crackdowns, stronger defenses, and shifting policies make attacks riskier and less profitable.