# MD for: https://www.mercadopago.com.ar/developers/en/docs/partners-guide/partners.md \# Partners ## PCI certified partners For PCI certified partners, it will be necessary to submit the AOC so that the Mercado Pago Risk team can assess the authorization to proceed with backend tokenization. ## Partners without PCI certification Credit card payment tokenization should be done using our \[SDK JS V2\](https://www.mercadopago.com.ar/developers/en/docs/checkout-api-payments/integration-configuration/card/web-integration) through the cardform. MercadoPago.js is responsible for the necessary flows to obtain the required information for creating a payment. \`\`\`html \`\`\` ### Add payment form \`\`\`html * Card number: * Expiration month: * Expiration year: * Cardholder name: * Email: * Security code: * Issuer: * Identification type: * Identification number: * Installments: * Pay * Loading... \`\`\` ### Initialize payment form \`\`\`javascript const cardForm = mp.cardForm({ amount: "100.5", autoMount: true, form: { id: "form-checkout", cardholderName: { id: "form-checkout\_\_cardholderName", placeholder: "Cardholder name", }, cardholderEmail: { id: "form-checkout\_\_cardholderEmail", placeholder: "Email", }, cardNumber: { id: "form-checkout\_\_cardNumber", placeholder: "Card number", }, cardExpirationMonth: { id: "form-checkout\_\_cardExpirationMonth", placeholder: "Expiration month", }, cardExpirationYear: { id: "form-checkout\_\_cardExpirationYear", placeholder: "Expiration year", }, securityCode: { id: "form-checkout\_\_securityCode", placeholder: "Security code", }, installments: { id: "form-checkout\_\_installments", placeholder: "Installments", }, identificationType: { id: "form-checkout\_\_identificationType", placeholder: "Identification type", }, identificationNumber: { id: "form-checkout\_\_identificationNumber", placeholder: "Identification number", }, issuer: { id: "form-checkout\_\_issuer", placeholder: "Issuer bank", }, }, callbacks: { onFormMounted: error => { if (error) return console.warn("Form mounted handling error: ", error); console.log("Form mounted"); }, onSubmit: event => { event.preventDefault(); const { paymentMethodId: payment\_method\_id, issuerId: issuer\_id, cardholderEmail: email, amount, token, installments, identificationNumber, identificationType, } = cardForm.getCardFormData(); /\*fetch("/process\_payment", { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ token, issuer\_id, payment\_method\_id, transaction\_amount: Number(amount), installments: Number (installments), description: "Product description", payer: { email, identification: { type: identificationType, number: identificationNumber, }, }, }), });\*/ alert("Generated card token: " + token); }, onFetching: resource => { console.log("Fetching resource: ", resource); // Animate progress bar const progressBar = document.querySelector(".progress-bar"); progressBar.removeAttribute("value"); return () => { progressBar.setAttribute("value", "0"); }; }, }, }); \`\`\` > NOTE > > Note > > If you are using SDK JS V1, you will need to migrate to \[SDK JS V2\](https://www.mercadopago.com.br/developers/pt/docs/checkout-api-payments/integration-configuration/card/web-integration). > \*\*Practical example for tokenization with JS V2\*\*: \[Tokenization - V2 - JSFiddle\](https://jsfiddle.net/douglascruz/og85yL34/).