UNPKG

mercadopago-react-sdk

Version:
158 lines (141 loc) 4.51 kB
import React from "react"; import { FormControl, Form, CardsList, Container, Button, InstallmentsItem, } from "./components"; import useCard from "./hooks/useCard"; import "./MercadoPagoSDK.css"; import cvvImage from "./assets/cvv.svg"; import cards from "./utils/cards"; const MercadoPagoSDK = ({ public_key }) => { const { cardNumber, setCardNumber, cardExpirationMonth, setCardExpirationMonth, cardExpirationYear, setCardExpirationYear, securityCode, setSecurityCode, cardholderName, identificationNumber, cardholderEmail, handleInputChange, cardName, onlyNumberKey, } = useCard(public_key); const card = cards.filter(({ name }) => name.includes(cardName)); return ( <Container> <Form id="form-checkout"> <div className="header-form"> <h3 className="form-title">Tarjeta de crédito o débito</h3> <CardsList /> </div> <div className="form-group"> <div className="card_number__wrapper"> <FormControl type="text" label="Número de tarjeta" name="cardNumber" value={cardNumber .replace(/\s/g, "") .replace(/\D/g, "") .replace(/([0-9]{4})/g, "$1 ") .trim()} onChange={({ target }) => setCardNumber(target.value)} onKeyDown={onlyNumberKey} id="form-checkout__cardNumber" /> {cardName.trim().length > 0 && ( <img src={card[0].url} alt={`${card[0].name}`} draggable={false} /> )} </div> <select name="issuer" id="form-checkout__issuer" disabled={true} className="checkout__issuer" ></select> <div className="rows"> <FormControl type="text" label="Mes de vencimiento" value={cardExpirationMonth} name="cardExpirationMonth" id="form-checkout__cardExpirationMonth" maxLength={2} onChange={({ target }) => setCardExpirationMonth(target.value)} onKeyDown={onlyNumberKey} /> <FormControl type="text" label="Año de vencimiento" value={cardExpirationYear} name="cardExpirationYear" maxLength={2} id="form-checkout__cardExpirationYear" onChange={({ target }) => setCardExpirationYear(target.value)} onKeyDown={onlyNumberKey} /> <div className="security_code-wrapper"> <FormControl type="text" label="Código de seguridad" name="securityCode" value={securityCode} onChange={({ target }) => setSecurityCode(target.value)} id="form-checkout__securityCode" onKeyDown={onlyNumberKey} /> <img src={cvvImage} alt="CVV" draggable={false} /> </div> </div> <FormControl type="text" label="Nombre del titular que aparece en la tarjeta" value={cardholderName} name="cardholderName" onChange={handleInputChange} id="form-checkout__cardholderName" /> <InstallmentsItem cardName={cardName} /> <div className="identification__wrapper"> <FormControl type="text" label="Documento del titular" value={identificationNumber} name="identificationNumber" onChange={handleInputChange} id="form-checkout__identificationNumber" style={{ paddingLeft: "5rem" }} /> <select name="identificationType" id="form-checkout__identificationType" ></select> </div> </div> <h4 className="form-subtitle">Completa tu información</h4> <FormControl type="email" label="E-mail" value={cardholderEmail} name="cardholderEmail" onChange={handleInputChange} id="form-checkout__cardholderEmail" /> <Button /> </Form> </Container> ); }; export default MercadoPagoSDK;