Pular para conteúdo

Modal

Source code in "payment_emulation\payment\templates\payment\payment_modal.html
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
{% load static %}


<section id="modal_section" class="fixed w-[100%] h-[100%] top-0 left-0 hidden justify-center items-center bg-gray-900/50">
    <div class="w-[470px] bg-white rounded-md">
        <form method="post" action="{{ action }}" class="flex flex-col gap-4 h-[100%] justify-evenly p-4">
            {% csrf_token %}
            <div class="flex flex-col gap-3">
                <div class="relative flex flex-col">
                    <label for="id_card_number">Número do cartão</label>
                    <input 
                    autocomplete="one-time-code" 
                    class="border rounded p-2 focus:outline-blue-400" type="text" 
                    name="card_number" 
                    id="id_card_number" 
                    required 
                    placeholder="1234 1234 1234 1234" 
                    pattern="^\d{4}( ?\d{4}){3}$">
                    <img class="w-8 absolute right-1 bottom-[11px]" src="{% static "payment/img/generic.svg" %}" alt="">
                </div>
                <div class="flex flex-col">
                    <label for="id_holder">Nome do titular</label>
                    <input 
                    autocomplete="one-time-code" 
                    class="border rounded p-2 focus:outline-blue-400" type="text" 
                    name="holder" 
                    id="id_holder" 
                    required 
                    placeholder="Ex: JHON DOE"
                    pattern="[A-Z ]*">
                </div>
                <div class="flex flex-row gap-3">
                    <div class="flex flex-col">
                        <label for="id_validity">Vencimento</label>
                        <input 
                        class="border w-fit rounded p-2 focus:outline-blue-400" 
                        type="text" 
                        name="validity" 
                        id="id_validity" 
                        required 
                        placeholder="MM/AA" 
                        pattern="^(0[1-9]|1[0-2])\/\d{2}$">
                    </div>
                    <div class="relative w-[250px] flex flex-col">
                        <label for="id_cvv">Código de segurança</label>
                        <input 
                        class="border rounded p-2 focus:outline-blue-400"
                        type="text" 
                        name="cvv" 
                        id="id_cvv" 
                        required 
                        placeholder="123"
                        pattern="^\d{3}$">
                        <img class="w-8 absolute right-1 bottom-[11px]" src="{% static "payment/img/code.svg" %}" alt="">
                    </div>
                </div>
                <div class="flex flex-row gap-2">
                    <select class="border rounded p-2 focus:outline-blue-400" name="cpfcnpj" id="id_cpfcnpj">
                        <option selected value="CPF">CPF</option>
                        <option value="CNPJ">CNPJ</option>
                    </select>
                    <input 
                    class="inline-block border w-full rounded p-2 focus:outline-blue-400" 
                    type="text" 
                    name="cpf" 
                    id="id_cpf" 
                    placeholder="123.456.789-09" 
                    required
                    pattern="^\d{3}\.\d{3}\.\d{3}-\d{2}$">
                    <input 
                    class="hidden border w-full rounded p-2 focus:outline-blue-400" 
                    type="text" 
                    name="cnpj" 
                    id="id_cnpj" 
                    placeholder="12.345.678/0001-99" 
                    required 
                    disabled
                    pattern="^\d{2}\.\d{3}\.\d{3}\/\d{4}-\d{2}$">
                </div>
            </div>
            <div class="self-end flex flex-row gap-4">
                <button id="back_btn" class="border px-4 py-2 rounded-md bg-blue-100 text-blue-500 font-semibold hover:bg-blue-200 duration-200 transition-colors">Voltar</button>
                <button id="pay_btn" class="border px-4 py-2 rounded-md bg-blue-500 text-white font-semibold hover:bg-blue-600 duration-200 transition-colors">Pagar</button>
            </div>
        </form>
    </div>
</section>

Uma forma simples de obter as credenciais da conta e do cartão para o processamento do pagamento é utilizar o modal do formulário de pagamento. Para integrá-lo ao seu projeto, siga os passos abaixo.

1. Incluir o modal em seu template

É importante passar uma URL para a variável de contexto action, que define o endpoint onde o pagamento será processado.

{% include "payment/payment_modal.html" with action="/payment/" %}

2. Incluir o script do modal

Certifique-se de incluir o script no mesmo template em que o modal foi inserido ou, alternativamente, adicione-o em um template global que seja estendido em suas páginas.

<script defer src="{% static "payment/js/paymentModal.js" %}"></script>

3. Criar um botão para a ativar o modal

Para que o botão funcione corretamente, defina o atributo id como modal_activate_btn.

<input type="button" value="pagar" id="modal_activate_btn">
Após seguir todos os passos, ao clicar no botão de ativação, o modal será exibido conforme a imagem abaixo:

modal