Skip to content

fix(braspag): Send the card security code to the bank on card payments - #868

Merged
leomp12 merged 1 commit into
mainfrom
fix/braspag-sop-cvv
Oct 28, 2026
Merged

leomp12 merged 1 commit into
mainfrom
fix/braspag-sop-cvv

Conversation

@leomp12

@leomp12 leomp12 commented Oct 28, 2026

Copy link
Copy Markdown
Member

Problema

O CVV nunca chegava ao Silent Order Post (SOP), e os tokens de cartão eram gerados sem SecurityCode. O defeito veio do app legado (ecomplus/app-braspag, hosting/card-client.js) e tem duas causas:

  1. Aspa faltando no input anterior (style="display: none;>). Os parsers (jsdom e Chromium) engolem o input seguinte, o do CVV, e o form fica com 4 inputs em vez de 5.
  2. Classe errada. O app usa bp-sop-cardcvvc, que é a classe listada na documentação da Cielo/Braspag. O script oficial do SOP (silentorderpost-1.0.js) lê .bp-sop-cardcvv, a mesma classe usada nos módulos oficiais de WooCommerce e Magento. Por isso, corrigir só a aspa não mudaria nada.

Correção

Aspa corrigida e classe trocada para bp-sop-cardcvv. O cvvrequired: false continua: com o campo presente e válido, o SOP envia o SecurityCode.

Validação

Rodei o silentorderpost-1.0.js oficial (jsdom) sobre o form gerado pelo app, interceptando o XHR:

  • antes: HolderName=…&RawNumber=…&Expiration=…&EnableVerifyCard=true&CardType=creditCard&AccessToken=…
  • depois: …&Expiration=…&SecurityCode=123&EnableVerifyCard=true&…

Ainda não houve teste no sandbox da Cielo. Hoje nenhuma loja do cloud-commerce usa Braspag.

Impacto

Com o CVV indo para o emissor, um CVV errado passa a ser recusado na autorização. Um CVV malformado (menos de 3 dígitos) cai no onInvalid do SOP e o envio do cartão é rejeitado no cliente.

🤖 Generated with Claude Code

https://claude.ai/code/session_011YfvCxVikTh42WGmNu6chf

The CVV input never reached Silent Order Post: a missing quote on the
previous hidden input swallowed it, and its class was `bp-sop-cardcvvc`
(typo from Braspag docs) while the official SOP script reads
`.bp-sop-cardcvv`. Card tokens were created without `SecurityCode`.

Both fixed; verified by running the official `silentorderpost-1.0.js`
on the generated form: the POST now includes `SecurityCode`.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011YfvCxVikTh42WGmNu6chf
@leomp12
leomp12 merged commit a2b13b8 into main Oct 28, 2026
2 checks passed
@leomp12
leomp12 deleted the fix/braspag-sop-cvv branch October 28, 2026 02:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant