UNPKG

authorizenet-react

Version:

React components for Authorize.Net payments

187 lines (152 loc) â€ĸ 4.29 kB
# React Authorize.Net A lightweight React library for integrating Authorize.Net payments into your React applications. This library provides React components and hooks for accepting payments through Authorize.Net with minimal dependencies. ## Features - đŸĒļ Lightweight with zero dependencies - âš›ī¸ React hooks for easy integration - 🔒 Secure token generation - 🎨 Customizable styling - 📱 Responsive design - đŸ’Ē TypeScript support - đŸ–ŧī¸ Multiple payment form options (Card Element and Hosted Form) ## Installation ```bash npm install authorizenet-react ``` ## Peer Dependencies This library requires the following peer dependencies: ```json { "react": "^16.8.0 || ^17.0.0 || ^18.0.0", "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } ``` ## Usage ### Card Element ```jsx import { AuthorizeNetProvider, Card, useAuthorizeNet } from 'react-authorize-net'; // Wrap your app with AuthorizeNetProvider function App() { return ( <AuthorizeNetProvider apiLoginId="YOUR_API_LOGIN_ID" clientKey="YOUR_CLIENT_KEY" environment="sandbox" // or "production" > <CheckoutForm /> </AuthorizeNetProvider> ); } // Create a checkout form component function CheckoutForm() { const { createToken } = useAuthorizeNet(); const handleSubmit = async (event) => { event.preventDefault(); try { const { token, descriptor } = await createToken(); // Send token to your server console.log('Payment token:', token); console.log('Descriptor:', descriptor); } catch (error) { console.error('Error:', error); } }; return ( <form onSubmit={handleSubmit}> <CardElement options={{ style: { base: { fontSize: '16px', color: '#424770', '::placeholder': { color: '#aab7c4' } }, invalid: { color: '#9e2146' } } }} onChange={({ complete, error }) => { if (complete) { console.log('Card details complete'); } if (error) { console.error('Error:', error); } }} /> <button type="submit">Pay</button> </form> ); } ``` ## API Reference ### AuthorizeNetProvider The provider component that wraps your application: ```jsx <AuthorizeNetProvider apiLoginId="YOUR_API_LOGIN_ID" clientKey="YOUR_CLIENT_KEY" environment="sandbox" // or "production" className="custom-class" // optional > {/* Your app */} </AuthorizeNetProvider> ``` #### Props - `apiLoginId` (string, required): Your Authorize.Net API Login ID - `clientKey` (string, required): Your Authorize.Net Client Key - `environment` (string, optional): "sandbox" or "production", defaults to "sandbox" - `className` (string, optional): Custom CSS class for the provider wrapper ### CardElement A React component that creates a card input field: ```jsx <Card options={{ style: { base: { fontSize: '16px', color: '#424770', '::placeholder': { color: '#aab7c4' } }, invalid: { color: '#9e2146' } } }} onChange={({ complete, error }) => { // Handle changes }} className="custom-class" /> ``` #### Props - `options` (object, optional): Styling options for the card element - `onChange` (function, optional): Callback for form state changes - `className` (string, optional): Custom CSS class for the card element ### useAuthorizeNet A hook for accessing the Authorize.Net context: ```jsx const { createToken, isScriptLoaded } = useAuthorizeNet(); // Create a payment token const handlePayment = async () => { try { const { token, descriptor } = await createToken(); // Use the token } catch (error) { // Handle error } }; ``` #### Returns - `createToken`: Function to generate a payment token - `isScriptLoaded`: Boolean indicating if the Authorize.Net script is loaded - `setCardData`: Function to set card data manually (advanced usage) - `apiLoginId`: The API Login ID provided to the provider - `clientKey`: The Client Key provided to the provider - `environment`: The environment setting ("sandbox" or "production") ## License MIT