mercadopago-react-sdk
Version:
Mercado Pago - React SDK
158 lines (141 loc) • 4.51 kB
JSX
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;