Headless SDK
Customize the payment experience using Headless functions
1. Initialize the Hyperswitch SDK
Initialize Hyperswitch Headless SDK onto your app with your publishable key. To get a Publishable Key please find it here.
import { HyperProvider } from "@juspay-tech/hyperswitch-react-native ";
function App() {
return (
<HyperProvider publishableKey="YOUR_PUBLISHABLE_KEY">
// Your app code here
</HyperProvider>
);
}
2. Create a Payment Intent
Make a request to the endpoint on your server to create a new Payment. The clientSecret returned by your endpoint is used to initialize the payment session.
Important: Make sure to never share your API key with your client application as this could potentially compromise your security
3. Initialize your Payment Session
Initialize a Payment Session by passing the clientSecret to the initPaymentSession
import { useHyper } from "@juspay-tech/react-native-hyperswitch";
const { initPaymentSession } = useHyper();
const [paymentSession,setPaymentSession] = React.useState(null);
const initializeHeadless = async() => {
const { clientSecret } = await fetchPaymentParams();
const params = {clientSecret:clientSecret}
const paymentSession = await initPaymentSession(params);
setPaymentSession(_ => paymentSession)
};
useEffect(() => {
initializeHeadless();
}, []);
| options (Required) | Description |
|---|---|
paymentIntentlientSecret (string) |
Required. Required to use as the identifier of the payment. |
4. Craft a customized payments experience
Using the paymentSession object, the default customer payment method data can be fetched, using which you can craft your own payments experience. The paymentSession object also exposes a confirmWithCustomerDefaultPaymentMethod function, using which you can confirm and handle the payment session.
import { useHyper } from "@juspay-tech/react-native-hyperswitch";
const { getCustomerSavedPaymentMethods,
getCustomerDefaultSavedPaymentMethodData,
confirmWithCustomerDefaultPaymentMethod } = useHyper();
const [defaultPaymentMethodData,setDefaultPaymentMethodData]=React.useState(null)
React.useEffect(()=>{
const getPaymentMethods = async() => {
const paymentMethodSession
= await getCustomerSavedPaymentMethods(paymentSession);
const customer_default_saved_payment_method_data
= await getCustomerLastUsedSavedPaymentMethodData(paymentMethodSession);
setDefaultPaymentMethodData(_=>customer_default_saved_payment_method_data)
}
getPaymentMethods()
},[])
let confirmDefaultPaymentMethod = () => {
const status = await confirmWithCustomerLastUsedPaymentMethod(paymentMethodSession);
// handle status of payment
if (status != null) {
const message = status.message;
console.log(message)
}
}
return (
//build the ui using defaultPaymentMethodData
//on click of pay use confirmDefaultPaymentMethod()
)
Payload for confirmWithCustomerLastUsedPaymentMethod(callback)
| options (Required) | Description |
|---|---|
callback (function) | Callback to get confirm response. |