forked from radig/pagseguro
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDOC
157 lines (126 loc) · 4.86 KB
/
DOC
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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
Plugin de integração PagSeguro e CakePHP
Versão 2.0
Observações:
Este plugin foi desenvolvido e testado
CakePHP 2.*
API PagSeguro 2.0
PHP 5.3.+
- Iniciando
O plugin disponibiliza 2 components o Checkout e o Notifications.
##########################
# CheckoutComponent #
##########################
Este compoment viabiliza as solicitações de transação com o PagSeguro.
Carregando o component:
public $components = array('PagSeguro.Checkout');
A primeira coisa a ser feito é setar no core as configurações de:
email, tokem
Este dois dados são obrigatórios caso estes não sejam informados será disparado um fatal error.
Exemplo:
Configure::write('PagSeguro', array(
'email' => '[email protected]', // Email da conta do vendedor
'token' => '3893im3u93i3m9iu39i39iu' // Token gerado pelo PagSeguro
));
O Carregamento destas informações é feita depois do beforeFilter do controller
podendo assim ser modificado em tempo de execução no methodo beforeFilter, setando exatamente o array acima.
Exemplo:
$this->Checkout->config(array(
'email' => '[email protected]', // Email da conta do vendedor
'token' => '3893im3u93i3m9iu39i39iu' // Token gerado pelo PagSeguro
));
METODOS:
Para setar as informações dos produtos é necessário utilizar exatamente estes indeces e seguir o padrão
do PagSeguro: $this->Checkout->set();
Exemplo:
$this->Checkout->set(array(
'itemId1' => '30', // ID de identificação do produto
'itemDescription1' => 'Notebook LG', // Descrição do produto geralmente o nome
'itemAmount1' => '1000.00', // Valor do produto no formato americano
'itemQuantity1' => '1', // Quantidade do produto
'itemWeight1' => '1000' // Pesso do produto em gramas
));
Reparem que o índice do array é composto do nome seguido do número
caso tenho n produtos é necessário acrescentar incrementos de 1:
Exemplo:
$this->Checkout->set(array(
'itemId1' => '30',
'itemDescription1' => 'Notebook LG',
'itemAmount1' => '1000.00',
'itemQuantity1' => '1',
'itemWeight1' => '1000',
'itemId2' => '40',
'itemDescription2' => 'Notebook Sony',
'itemAmount2' => '2000.00',
'itemQuantity2' => '1',
'itemWeight2' => '1200'
));
O segundo methodo é o $this->Checkout->setShipping();
Este recebe um array obtendo as informações do comprador, endereço de cobrança e dados da venda.
Obs: Seguindo o padrão de índice do PagSeguro:
Exemplo:
$this->Checkout->setShipping(array(
'reference' => '10111', // ID da venda
'senderName' => 'Nome do comprador', // Nome do comprador
'senderAreaCode' => '11', // Codigo de área do telefone
'senderPhone' => '98161347', // Telefone
'senderEmail' => '[email protected]', // Email do comprador
'shippingType' => '1',
'shippingAddressStreet' => 'Logradouros do comprador', // Logradouros do comprador
'shippingAddressNumber' => 'Número', // Número do local
'shippingAddressDistrict' => 'Bairro', // bairro
'shippingAddressPostalCode' => 'CEP', // CEP
'shippingAddressCity' => 'São Paulo', // Cidade
'shippingAddressState' => 'SP', // Estado
'shippingAddressCountry' => 'BRA' // Praticamente contante
));
E em terceiro e último $this->Checkout->finalize();
Este metodo finaliza e gera a requisição POST para o servidor do PagSeguro.
Obs: O redirecionamento não finaliza a execução do script.
O retorno em array deste metodo contém o retorno do PagSeguro.
Com Errors ou Code de redirecionamento.
Atenção: Caso aja algum erro, não será executado o redirecionamento para o PagSeguro, possibilitando
o tratamento de erros.
Complemento:
- Aumentar o timeout da requicisão POST em nível de beforeFilter();
Sete:
$this->Checkout->timeout = 20 // 20 é o valor default
- Mudar a codificação 'charset'
Sete:
$this->Checkout->charset = 'ISO-8859-1' // O valor default é UTF-8
Exemplo básico:
class PagesController extends AppController {
var $components = array('PagSeguro.Checkout');
function index() {
$this->autoRender = false;
$this->Checkout->set(array(
'itemId1' => '30',
'itemDescription1' => 'Notebook LG',
'itemAmount1' => '1000.00',
'itemQuantity1' => '1',
'itemWeight1' => '1000'
));
$this->Checkout->setShipping(array(
'reference' => '10111',
'senderName' => 'Joãozinho',
'senderAreaCode' => '11',
'senderPhone' => '99999999',
'senderEmail' => '[email protected]',
'shippingType' => '1',
'shippingAddressStreet' => 'Rua do Joãozinho',
'shippingAddressNumber' => '800',
'shippingAddressDistrict' => 'Vila Joãozinho',
'shippingAddressPostalCode' => '99999999',
'shippingAddressCity' => 'São Paulo',
'shippingAddressState' => 'SP',
'shippingAddressCountry' => 'BRA'
));
$resturn = $this->Checkout->finalize();
if (isset($resturn['Erros'])) {
// Tratamento dos erros
}
}
}
#############################
# NotificationsComponent #
#############################
TODO: Documentar com exemplos