반응 네이티브 앱에 Stripe Payment를 추가하는 방법

안녕하세요 여러분, 오늘은 Stripe를 통한 리액트 네이티브 앱의 결제 통합 절차를 공유하고자 합니다.
  • Registration
  • Installation
  • Configuration
  • Card Component
  • Create a Payment Indent
  • Submit the Payment
  • Test Cards

  • 등록

    First, you have to create your account on the Stripe 대시보드.
    테스트 모드의 스트라이프 대시보드는 다음과 같습니다.


    설치

    For server-side installation, you can refer to this link
    react-native 측의 경우 터미널에서 이 명령을 실행하십시오.

    yarn add @stripe/stripe-react-native
    


    필요한 기본 종속성을 설치하려면 ios 폴더에서 이 명령을 실행합니다. Android는 추가 단계가 필요하지 않습니다.

    pod install
    


    구성

    Now wrap your <App/> in <StripeProvider> tag and pass your account publishable key to it. You can find this key in the Home tab on the Stripe dashboard.

    import { StripeProvider } from '@stripe/stripe-react-native';
    
    function App() {
      return (
        <StripeProvider
          publishableKey="pk_test_TYooMQauvdEDq54NiTphI7jx"
          urlScheme="your-url-scheme" // required for 3D Secure and bank redirects
          merchantIdentifier="merchant.com.{{YOUR_APP_NAME}}" // required for Apple Pay
        >
          // Your app code here
        </StripeProvider>
      );
    }
    

    카드 구성 요소

    Stripe has multiple elements 중에서 선택하세요. 카드 요소를 선택합니다. 카드 세부 정보를 안전하게 수집하는 빌트인 UI 구성 요소입니다.

    import { CardField, useStripe } from '@stripe/stripe-react-native';
    
    function PaymentScreen() {
      // ...
      return (
        <View>
          <CardField
            postalCodeEnabled={false}
            placeholder={{
              number: '4242 4242 4242 4242',
            }}
            onCardChange={(cardDetails) => {
              console.log('cardDetails', cardDetails);
            }}
          />
        </View>
      );
    }
    

    onCardChange 콜백은 카드에 대한 민감하지 않은 정보를 반환합니다. 이 정보를 사용하여 결제 버튼을 활성화/비활성화하거나 오류 메시지를 표시할 수 있습니다.



    결제 인덴트 생성

    After this, we create a payment intent to collect payment from the user.
    But to create a Payment Intent we need an API because the server-side is saved as opposed to the client. Please follow these
    steps 결제 의도 API를 생성합니다.

    이제 이 API에서 클라이언트 암호를 가져옵니다.

    function PaymentScreen() {
      const fetchPaymentIntentClientSecret = async () => {
        const response = await fetch(`${API_URL}/create-payment-intent`, {
          method: 'POST',
          headers: {
            'Content-Type': 'application/json',
          },
          body: JSON.stringify({
            currency: 'usd',
          }),
        });
        const {clientSecret} = await response.json();
        return clientSecret;
      };
    
      const handlePayPress = async () => {
        if (!card) {
          return;
        }
    
        // Fetch the intent client secret from the backend.
        const clientSecret = await fetchPaymentIntentClientSecret();
      };
    
      return (
        <View>
          <CardField
            onCardChange={(cardDetails) => console.log('cardDetails', cardDetails)}
          />
          <Button onPress={handlePayPress} title="Pay" disabled={loading} />
        </View>
      );
    }
    


    지불 제출

    Next, we'll send the client secret and user details to the confirmPayment method, which you can access with the useConfirmPayment hook.

    const {confirmPayment, loading} = useConfirmPayment();
    const handlePayPress = async () => {
        // Gather the customer's billing information (for example, email)
        const billingDetails: BillingDetails = {
          email: '[email protected]',
        };
    
        // Fetch the intent client secret from the backend
        const clientSecret = await fetchPaymentIntentClientSecret();
    
        // Confirm the payment with the card details
        const {paymentIntent, error} = await confirmPayment(clientSecret, {
          type: 'Card',
          billingDetails,
        });
    
        if (error) {
          console.log('Payment confirmation error', error);
        } else if (paymentIntent) {
          console.log('Success from promise', paymentIntent);
        }
      };
    

    After that, you can check the statuses of payments on the Stripe dashboard.



    테스트 카드

    There is a list 다양한 브랜드의 테스트 카드로 결제를 테스트할 수 있습니다.

    읽어 주셔서 감사합니다!
    부담없이 접속하세요

    좋은 웹페이지 즐겨찾기