Checkout Transparente Pagseguro em PHP, JS e Python - #12 Pagamento com Cartão de Crédito Criptografado II
23/04/2023Nesse tutorial finalizaremos a parte de vendas com cartão criptografado utilizando o Pagseguro e a linguagem de programação Python.
Python com Cartão Criptografado
app/templates/index.html
No arquivo html vamos implementar o valor do publicKey e vamos colocar também o action e o token csrf do formulário:
<form method="post" name="formCard" id="formCard" action="PaymentController/">
{% csrf_token %}
<input type="text" name="publicKey" id="publicKey" value="{{publicKey}}">
app/views.py
Na views vamos passar o publicKey para o html e vamos também implementar a funçao PaymentController:
def home(request):
data = {}
data['publicKey'] = getPublicKey()
return render(request, 'index.html', data)
def paymentController(request):
url = 'https://sandbox.api.pagseguro.com/orders'
headers = {
'Content-Type': 'application/json',
'Authorization' : 'SEU_TOKEN'
}
body = json.dumps({
"reference_id": "ex-00001",
"customer": {
"name": "Jose da Silva",
"email": "email@test.com",
"tax_id": "12345678909",
"phones": [
{
"country": "55",
"area": "11",
"number": "999999999",
"type": "MOBILE"
}
]
},
"items": [
{
"reference_id": "referencia do item",
"name": "nome do item",
"quantity": 1,
"unit_amount": 500
}
],
"shipping": {
"address": {
"street": "Avenida Brigadeiro Faria Lima",
"number": "1384",
"complement": "apto 12",
"locality": "Pinheiros",
"city": "São Paulo",
"region_code": "SP",
"country": "BRA",
"postal_code": "01452002"
}
},
"notification_urls": [
"https://meusite.com/notificacoes"
],
"charges": [
{
"reference_id": "referencia da cobranca",
"description": "descricao da cobranca",
"amount": {
"value": 500,
"currency": "BRL"
},
"payment_method": {
'soft_descriptor':'WEBDESIGN',
"type": "CREDIT_CARD",
"installments": 1,
"capture": True,
"card": {
"encrypted": request.POST['encriptedCard'],
"security_code": "123",
"holder": {
"name": "Jose da Silva"
},
"store": True
}
}
}
]
})
reqs = requests.post(url,headers=headers,data=body)
return HttpResponse(reqs)
app/static/javascript.js
No javascript vamos implementar a função para pegar o valor do cartão criptografado:
(function(win,doc){
'use script';
if(doc.querySelector('#formCard')){
let formCard = doc.querySelector('#formCard');
formCard.addEventListener('submit',(e)=>{
e.preventDefault();
let card = PagSeguro.encryptCard({
publicKey: doc.querySelector('#publicKey').value,
holder: doc.querySelector('#cardHolder').value,
number: doc.querySelector('#cardNumber').value,
expMonth: doc.querySelector('#cardMonth').value,
expYear: doc.querySelector('#cardYear').value,
securityCode: doc.querySelector('#cardCvv').value
});
let encrypted = card.encryptedCard;
doc.querySelector('#encriptedCard').value = encrypted;
formCard.submit();
});
}
})(window,document);
No código acima pegamos o encriptedCard após o envio do formulário, preenchemos o input encriptedCard no html e depois submetemos o formulário final.
Por hoje é só! Fiquem todos com Deus! Sucesso nos códigos e na vida!
Precisa de um professor? webdesignemfoco@gmail.com