मुख्य सामग्री पर जाएं

React Native SDK एकीकरण

Dodo Payments React Native SDK आपको अपने मूल Android और iOS ऐप्स में सुरक्षित भुगतान अनुभव बनाने की अनुमति देता है। हमारा SDK भुगतान विवरण एकत्र करने के लिए अनुकूलन योग्य UI घटक और स्क्रीन प्रदान करता है।
  • 📦 हमारे SDK को NPM से स्थापित करें
  • 📚 पूर्ण कार्यान्वयन उदाहरणों के लिए हमारे डेमो रिपॉजिटरी को देखें
  • 🎥 Dodo Payments SDK को क्रियान्वित होते हुए देखने के लिए हमारा डेमो वीडियो देखें

विशेषताएँ

सरल सुरक्षा

PCI अनुपालन बनाए रखते हुए संवेदनशील भुगतान डेटा को सुरक्षित रूप से एकत्र करें

कई भुगतान विधियाँ

वैश्विक पहुंच बढ़ाने के लिए विभिन्न भुगतान विधियों को स्वीकार करें

स्थानीय UI

Android और iOS के लिए स्थानीय स्क्रीन और तत्व
वर्तमान में, Apple Pay, Google Pay, Cash App, और UPI React Native SDK में समर्थित नहीं हैं। हम भविष्य के रिलीज़ में इन भुगतान विधियों के लिए समर्थन जोड़ने पर सक्रिय रूप से काम कर रहे हैं।

स्थापना

1

SDK स्थापित करें

अपने पसंदीदा पैकेज प्रबंधक का उपयोग करके Dodo Payments SDK स्थापित करें:
npm install dodopayments-react-native-sdk
2

प्लेटफ़ॉर्म-विशिष्ट सेटअप

अपने iOS फ़ोल्डर में pod install चलाएँ:
cd ios && pod install && npm run ios

क्लाइंट-साइड सेटअप

1

प्रकाशित कुंजी प्राप्त करें

Dodo Payments डैशबोर्ड से अपनी प्रकाशित कुंजी प्राप्त करें। (परीक्षण और लाइव मोड के लिए अलग) https://app.dodopayments.com/developer/others
2

भुगतान प्रदाता सेटअप करें

अपने ऐप को DodoPaymentProvider के साथ लपेटें:
App.tsx
import React from 'react';
import { DodoPaymentProvider } from 'dodopayments-react-native-sdk';
import PaymentScreen from './PaymentScreen';

function App() {
  return (
    <DodoPaymentProvider publishableKey="YOUR_PUBLISHABLE_KEY">
      <PaymentScreen />
    </DodoPaymentProvider>
  );
}

export default App;
आपको अपने Dodo Payments डैशबोर्ड से API कुंजी उत्पन्न करने की आवश्यकता होगी। विस्तृत निर्देशों के लिए हमारे API कुंजी उत्पन्न करने के गाइड को देखें।
3

भुगतान उपयोगिता फ़ंक्शन बनाएं

अपने बैकएंड API से भुगतान पैरामीटर प्राप्त करने के लिए एक उपयोगिता फ़ंक्शन बनाएं:
utils/fetchPaymentParams.ts
const API_URL = 'YOUR_BACKEND_URL'; // Replace with your server URL

const fetchPaymentParams = async () => {
  const response = await fetch(`${API_URL}/create-payment`, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
  });
  
  if (!response.ok) {
    throw new Error('Failed to fetch payment parameters');
  }
  
  return await response.json();
};

export default fetchPaymentParams;
यह फ़ंक्शन मानता है कि आपके पास एक बैकएंड API एंडपॉइंट है जो भुगतान इरादे बनाता है और एक क्लाइंट सीक्रेट लौटाता है। सुनिश्चित करें कि आपका बैकएंड भुगतान निर्माण को संभालने के लिए सही ढंग से कॉन्फ़िगर किया गया है। बैकएंड सेटअप उदाहरणों के लिए हमारे API एकीकरण ट्यूटोरियल को देखें।
4

भुगतान स्क्रीन लागू करें

useCheckout हुक का उपयोग करके अपनी भुगतान स्क्रीन बनाएं। यहाँ एक पूर्ण कार्यान्वयन है:
PaymentScreen.tsx
import React from 'react';
import { View, Text, useColorScheme } from 'react-native';
import { useCheckout, type sessionParams } from 'dodopayments-react-native-sdk';
import fetchPaymentParams from './utils/fetchPaymentParams';

const PaymentScreen = () => {
  const { initPaymentSession, presentPaymentSheet } = useCheckout();
  const [error, setError] = React.useState('');
  const [message, setMessage] = React.useState('');
  const [loading, setLoading] = React.useState(false);
  const [showSuccessScreen, setShowSuccessScreen] = React.useState(false);
  const isDarkMode = useColorScheme() === 'dark';

  const processPayment = async () => {
    setLoading(true);
    setMessage('');
    setError('');

    try {
      // 1. Get payment parameters from your backend
      const key = await fetchPaymentParams();
      
      // 2. Initialize payment session
      const paymentSheetParamsResult = await initPaymentSession({
        clientSecret: key.clientSecret,
      });
      
      // 3. Configure and present payment sheet
      const params: sessionParams = {
        ...(paymentSheetParamsResult as sessionParams),
        configuration: {
          appearance: {
            themes: isDarkMode ? 'dark' : 'light',
            primaryButton: {
              colors: {
                light: {
                  background: 'green',
                  componentBorder: 'green',
                  placeholderText: 'yellow',
                },
                dark: {
                  background: 'green',
                  componentBorder: 'green',
                  placeholderText: 'yellow',
                },
              },
              shapes: {
                borderRadius: 30,
                borderWidth: 3,
              },
            },
          },
          mode: 'test', // DEFAULTS TO TEST MODE
        },
      };

      const paymentSheetResponse = await presentPaymentSheet(params);

      // 4. Handle payment result
      switch (paymentSheetResponse?.status) {
        case 'cancelled':
          setError('Payment cancelled by user.');
          break;
        case 'succeeded':
          setMessage('');
          setShowSuccessScreen(true);
          break;
        case 'failed':
          setError('Payment failed : \n' + paymentSheetResponse?.message);
          break;
        default:
          setError(paymentSheetResponse?.message);
          setMessage('');
      }
    } catch (err) {
      setError('Failed to process payment');
    } finally {
      setLoading(false);
    }
  };

  return (
    <View>
      <Button 
        onPress={processPayment}
        disabled={loading}
        title={loading ? 'Processing...' : 'Pay Now'}
      />
      {error && <Text style={{ color: 'red' }}>{error}</Text>}
      {message && <Text style={{ color: 'green' }}>{message}</Text>}
      {showSuccessScreen && (
        <PaymentSuccessScreen
          amount={total}
          onContinue={() => setShowSuccessScreen(false)}
        />
      )}
    </View>
  );
};

export default PaymentScreen;
स्टाइलिंग, त्रुटि हैंडलिंग, और अनुकूलन विकल्पों के साथ पूर्ण उदाहरणों के लिए, हमारे डेमो रिपॉजिटरी देखें:

कॉन्फ़िगरेशन विकल्प

सत्र पैरामीटर

clientSecret
string
आवश्यक
आपके भुगतान इरादे से क्लाइंट सीक्रेट, जो एक बार के भुगतान या सदस्यता API से प्राप्त होता है।
mode
string
आवश्यक
भुगतान सत्र का मोड (परीक्षण या लाइव)।
configuration.appearance
object
भुगतान शीट की उपस्थिति के लिए अनुकूलन विकल्प
configuration.appearance.themes
string
थीम मोड: 'light' या 'dark'

उपस्थिति अनुकूलन

आप initPaymentSession() को कॉल करते समय उपस्थिति पैरामीटर के माध्यम से रंग, फ़ॉन्ट और अधिक को संशोधित करके अपने ऐप के डिज़ाइन के अनुसार React Native Unified Checkout को अनुकूलित कर सकते हैं।

रंग अनुकूलन

प्रत्येक रंग श्रेणी UI में एक या अधिक घटकों के रंग को निर्धारित करती है। उदाहरण के लिए, primary भुगतान बटन के रंग को परिभाषित करता है।
रंग श्रेणीउपयोग
primaryभुगतान बटन और चयनित वस्तुओं के लिए प्राथमिक रंग
backgroundभुगतान पृष्ठ का पृष्ठभूमि रंग
componentBackgroundइनपुट, टैब, और अन्य घटकों के लिए पृष्ठभूमि रंग
componentBorderइनपुट, टैब, और अन्य घटकों के लिए बाहरी सीमा रंग
componentDividerघटकों के लिए आंतरिक सीमा रंग (साझा सीमाएँ)
primaryTextशीर्षक पाठ का रंग
secondaryTextइनपुट फ़ील्ड के लिए लेबल पाठ का रंग
componentTextइनपुट पाठ का रंग (जैसे, कार्ड संख्या, ज़िप कोड)
placeholderTextइनपुट फ़ील्ड के लिए प्लेसहोल्डर पाठ का रंग
iconआइकनों के लिए रंग (जैसे, बंद बटन)
errorत्रुटि संदेशों और विनाशकारी क्रियाओं के लिए रंग
हल्का और गहरा मोड समर्थन के साथ उदाहरण कॉन्फ़िगरेशन:
const appearance = {
  colors: {
    light: {
      primary: '#F8F8F2',
      background: '#ffffff',
      componentBackground: '#E6DB74',
      componentBorder: '#FD971F',
      componentDivider: '#FD971F',
      primaryText: '#F8F8F2',
      secondaryText: '#75715E',
      componentText: '#AE81FF',
      placeholderText: '#E69F66',
      icon: '#F92672',
      error: '#FF0000',
    },
    dark: {
      primary: '#00ff0099',
      background: '#ff0000',
      componentBackground: '#ff0080',
      componentBorder: '#62ff08',
      componentDivider: '#d6de00',
      primaryText: '#5181fc',
      secondaryText: '#ff7b00',
      componentText: '#00ffff',
      placeholderText: '#00ffff',
      icon: '#f0f0f0',
      error: '#0f0f0f',
    },
  },
};

आकार अनुकूलन

आप भुगतान इंटरफ़ेस में उपयोग किए जाने वाले सीमा त्रिज्या, सीमा चौड़ाई, और छाया को अनुकूलित कर सकते हैं:
const appearance = {
  shapes: {
    borderRadius: 10, // Border radius for input fields, tabs, and components
    borderWidth: 1,   // Border width for components
  },
};

घटक-विशिष्ट अनुकूलन

आप प्राथमिक बटन (भुगतान बटन) जैसे विशिष्ट UI घटकों को अनुकूलित कर सकते हैं। ये सेटिंग्स वैश्विक उपस्थिति सेटिंग्स पर प्राथमिकता लेती हैं:
const appearance = {
  primaryButton: {
    colors: {
      background: '#000000',
      text: '#ffffff',
      border: '#ff00ff',
    },
    shapes: {
      borderRadius: 10,
      borderWidth: 1.5,
    },
  },
};
इन अनुकूलनों को लागू करने के लिए, उन्हें अपने भुगतान सत्र कॉन्फ़िगरेशन में शामिल करें:
const params: sessionParams = {
  ...paymentSheetParams,
  configuration: {
    appearance: {
      themes: isDarkMode ? 'dark' : 'light',
      ...appearance, // Include your custom appearance settings
    },
  },
};

त्रुटि हैंडलिंग

अपने चेकआउट फ़ंक्शन में विभिन्न भुगतान राज्यों को संभालें:
const handlePaymentResult = (paymentSheetResponse) => {
  switch (paymentSheetResponse?.status) {
    case 'cancelled':
      // User cancelled the payment
      console.log('Payment cancelled by user');
      break;
    case 'succeeded':
      // Payment completed successfully
      console.log('Payment succeeded');
      // Navigate to success screen or update UI
      break;
    case 'failed':
      // Payment failed
      console.log('Payment failed:', paymentSheetResponse?.message);
      // Show error message to user
      break;
    default:
      console.log('Unknown payment status:', paymentSheetResponse?.status);
  }
};
  • नेटवर्क कनेक्टिविटी समस्याएँ: स्थिर इंटरनेट कनेक्शन सुनिश्चित करें
  • अमान्य क्लाइंट सीक्रेट: सत्यापित करें कि बैकएंड मान्य भुगतान इरादे उत्पन्न कर रहा है
  • गुम सहायक निर्भरताएँ: सभी आवश्यक निर्भरताएँ स्थापित करें
  • प्लेटफ़ॉर्म-विशिष्ट सेटअप: iOS और Android कॉन्फ़िगरेशन चरण पूरे करें
  • API त्रुटियाँ: विस्तृत त्रुटि हैंडलिंग के लिए हमारे त्रुटि कोड संदर्भ की जांच करें
  • विकास में डिबग लॉगिंग सक्षम करें
  • अपने बैकएंड के लिए नेटवर्क अनुरोधों की जांच करें
  • सत्यापित करें कि API कुंजी सही ढंग से कॉन्फ़िगर की गई हैं
  • iOS और Android प्लेटफार्मों पर परीक्षण करें
  • सामान्य समस्याओं के लिए हमारे तकनीकी सामान्य प्रश्न की समीक्षा करें
  • परीक्षण बनाम लाइव मोड का सही ढंग से उपयोग करें

परीक्षण भुगतान विधियाँ

विकास में वास्तविक भुगतान संसाधित किए बिना अपने एकीकरण को सत्यापित करने के लिए परीक्षण कार्ड नंबरों का उपयोग करें। हमारे परीक्षण प्रक्रिया और उपलब्ध परीक्षण वातावरण के बारे में अधिक जानें।