Stripe Element에서 카드 번호 입력 필드를 세로로 정렬하고 싶습니다.

배경



  • Stripe.js을 사용하여 카드 번호를 입력하는 양식을 생성 할 때 기본적으로 카드 번호, 만료 날짜 및 CVC의 입력 필드가 가로로 정렬됩니다.
  • 디자인상, 필드를 세로로 늘어놓고 싶을 때에 어떻게 폼을 생성하면 좋을지 조사했다.

  • 완성 이미지





    양식 생성


  • 우선 폼의 생성시는 stripe.elements() 의 반환값으로부터 카드 번호·유효 기한·CVC를 입력하는 각 필드를 create 한다.
  • 이 때, element.create() 를 실행하는 시점에서 document 상에 대상으로서 selector 로 지정한 element 가 존재하고 있는 상태인 것을 확인하는 것.
  • 이번 경우는 #card-number-input #card-expiry-input #card-cvc-input 의 3개를 준비해 둔다.
  • 실수로 <div id="card-number-input" /> 같은 div 를 두는 것만으로 좋다.
  • React 등의 document 를 동적으로 조작하는 라이브러리를 사용하는 경우는, 렌더링이 완료하고 나서 실행하는 것.

  • import { loadStripe, StripeElementStyle } from '@stripe/stripe-js';
    
    const style: StripeElementStyle = {
      base: {
        fontSize: '16px',
      },
    };
    
    const stripe = await loadStripe('pk_test_TYooMQauvdEDq54NiTphI7jx');
    const elements = stripe.elements();
    
    const cardNumberElement = elements.create('cardNumber', { style });
    const cardExpiryElement = elements.create('cardExpiry', { style });
    const cardCvcElement = elements.create('cardCvc', { style });
    
    cardNumberElement.mount('#card-number-input');
    cardExpiryElement.mount('#card-expiry-input');
    cardCvcElement.mount('#card-cvc-input');
    
    return cardNumberElement;
    

    이제 입력 필드가 생성됩니다.

    양식 제출


  • 유저가 입력을 완료해 카드 토큰을 취득하고 싶어졌을 때는, 방금전에 폼의 생성에 사용한 cardNumberElementstripe.createToken() 의 인수에 건네주면 OK입니다.
  • await stripe.createToken(cardNumberElement);
    

    이제 토큰을 얻을 수 있으므로 끓여서 구워서 좋아할 수 있습니다.

    좋은 웹페이지 즐겨찾기