pagseguro-oficial 2.1.1 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +7 -5
- data/CHANGELOG.md +0 -1
- data/README.md +6 -1
- data/docs/transparent_checkout.md +201 -0
- data/examples/boleto_transaction_request.rb +94 -0
- data/examples/create_session.rb +13 -0
- data/examples/credit_card_transaction_request.rb +122 -0
- data/examples/installment.rb +20 -9
- data/examples/online_debit_transaction.rb +98 -0
- data/examples/transaction_by_code.rb +62 -0
- data/examples/transaction_by_notification_code.rb +55 -51
- data/lib/pagseguro.rb +17 -1
- data/lib/pagseguro/bank.rb +8 -0
- data/lib/pagseguro/boleto_transaction_request.rb +8 -0
- data/lib/pagseguro/credit_card_transaction_request.rb +39 -0
- data/lib/pagseguro/document.rb +2 -2
- data/lib/pagseguro/errors.rb +11 -5
- data/lib/pagseguro/holder.rb +28 -0
- data/lib/pagseguro/installment.rb +11 -16
- data/lib/pagseguro/installment/collection.rb +25 -0
- data/lib/pagseguro/installment/request_serializer.rb +24 -0
- data/lib/pagseguro/installment/response.rb +29 -4
- data/lib/pagseguro/installment/{serializer.rb → response_serializer.rb} +1 -1
- data/lib/pagseguro/items.rb +3 -0
- data/lib/pagseguro/online_debit_transaction_request.rb +17 -0
- data/lib/pagseguro/payment_method.rb +1 -0
- data/lib/pagseguro/payment_releases.rb +3 -0
- data/lib/pagseguro/sender.rb +4 -0
- data/lib/pagseguro/session.rb +34 -0
- data/lib/pagseguro/session/response.rb +32 -0
- data/lib/pagseguro/session/response_serializer.rb +18 -0
- data/lib/pagseguro/transaction.rb +6 -3
- data/lib/pagseguro/transaction/response.rb +1 -1
- data/lib/pagseguro/transaction_installment.rb +11 -0
- data/lib/pagseguro/transaction_request.rb +143 -0
- data/lib/pagseguro/transaction_request/request_serializer.rb +148 -0
- data/lib/pagseguro/transaction_request/response.rb +32 -0
- data/lib/pagseguro/transaction_request/response_serializer.rb +117 -0
- data/lib/pagseguro/version.rb +1 -1
- data/spec/fixtures/session/success.xml +4 -0
- data/spec/fixtures/transaction_request/success.xml +58 -0
- data/spec/fixtures/transactions/search.xml +40 -0
- data/spec/pagseguro/bank_spec.rb +5 -0
- data/spec/pagseguro/boleto_transaction_request_spec.rb +9 -0
- data/spec/pagseguro/credit_card_transaction_request_spec.rb +36 -0
- data/spec/pagseguro/document_spec.rb +1 -1
- data/spec/pagseguro/errors_spec.rb +5 -2
- data/spec/pagseguro/features/create_session_spec.rb +52 -0
- data/spec/pagseguro/features/create_transaction_request_spec.rb +58 -0
- data/spec/pagseguro/holder_spec.rb +9 -0
- data/spec/pagseguro/installment/collection_spec.rb +43 -0
- data/spec/pagseguro/installment/request_serializer_spec.rb +16 -0
- data/spec/pagseguro/installment/{serializer_spec.rb → response_serializer_spec.rb} +1 -1
- data/spec/pagseguro/installment/response_spec.rb +52 -0
- data/spec/pagseguro/installment_spec.rb +22 -73
- data/spec/pagseguro/online_debit_transaction_request_spec.rb +18 -0
- data/spec/pagseguro/payment_method_spec.rb +1 -0
- data/spec/pagseguro/payment_request/response_spec.rb +0 -11
- data/spec/pagseguro/sender_spec.rb +1 -0
- data/spec/pagseguro/session/response_serializer_spec.rb +12 -0
- data/spec/pagseguro/session/response_spec.rb +52 -0
- data/spec/pagseguro/session_spec.rb +41 -0
- data/spec/pagseguro/transaction/search/search_abandoned_spec.rb +27 -0
- data/spec/pagseguro/transaction/search/search_by_date_spec.rb +26 -0
- data/spec/pagseguro/transaction/search/search_by_reference_spec.rb +26 -0
- data/spec/pagseguro/transaction/search_spec.rb +131 -0
- data/spec/pagseguro/transaction_installment_spec.rb +6 -0
- data/spec/pagseguro/transaction_request/request_serializer_spec.rb +213 -0
- data/spec/pagseguro/transaction_request/response_serializer_spec.rb +52 -0
- data/spec/pagseguro/transaction_request/response_spec.rb +60 -0
- data/spec/pagseguro/transaction_request_spec.rb +125 -0
- data/spec/support/helpers.rb +14 -0
- metadata +79 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 195f2fa2ef3756e03ccdde0b6e0d6dd6f632edf3
|
4
|
+
data.tar.gz: 159f0ddf89ed6d5bd3e25e13d8c292456466be3d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4e648a26a4dedcc676c19a3f2f9158db9672993529d18889af97bf3bcd9314a2428dbca8c8e3232b78b33d63d852791a5d55c2c5aae83d33e040035d9072cbac
|
7
|
+
data.tar.gz: c265b5e829a21f3ecf99e8fcc3efd6cb956f252bc5806c8e23fd8fa64474e5a1eb74600333641bd1d60285fee6201256896ed1036e2ae7f494d2bee93eadc597
|
data/.travis.yml
CHANGED
@@ -1,12 +1,14 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
|
-
- 2.2.
|
4
|
-
- 2.1.
|
3
|
+
- 2.2.2
|
4
|
+
- 2.1.6
|
5
5
|
- 2.0.0
|
6
6
|
- 1.9.3
|
7
7
|
- jruby-19mode
|
8
|
-
|
9
8
|
notifications:
|
10
9
|
email:
|
11
|
-
|
12
|
-
|
10
|
+
- lucas.renan@codeminer42.com
|
11
|
+
- vitor.kusiaki@codeminer42.com
|
12
|
+
- dmitry.rocha@codeminer42.com
|
13
|
+
slack:
|
14
|
+
secure: H7PR+eH28CRGZ7E71EQ2xAjkbLX53eXbJ8nadHgx6W2gggNSB8UPw6gqQg/UC0lCbK6ejQ0wE/pEPfLBnCJkqL8mfBr7ADTqZe2fM/YxXQktdOlldJtZaxUikDwOWZSXdOG+3ITdbv/MQW/wehi8UWzFC+XkhJCudOPW1n+9bqs=
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -26,7 +26,7 @@ A biblioteca PagSeguro em Ruby é um conjunto de classes de domínio que facilit
|
|
26
26
|
- Adicione a biblioteca ao seu Gemfile.
|
27
27
|
|
28
28
|
```ruby
|
29
|
-
gem "pagseguro-oficial", "~> 2.
|
29
|
+
gem "pagseguro-oficial", "~> 2.2.0"
|
30
30
|
```
|
31
31
|
|
32
32
|
- Execute o comando `bundle install`.
|
@@ -294,6 +294,11 @@ PagSeguro.environment = "production" # production ou sandbox
|
|
294
294
|
PagSeguro.encoding = "UTF-8" # UTF-8 ou ISO-8859-1
|
295
295
|
```
|
296
296
|
|
297
|
+
## Checkout Transparente
|
298
|
+
|
299
|
+
Encontre toda a documentação necessária para o checkout transparente aqui:
|
300
|
+
https://github.com/pagseguro/ruby/blob/master/docs/transparent_checkout.md
|
301
|
+
|
297
302
|
## Dúvidas?
|
298
303
|
|
299
304
|
Caso tenha dúvidas ou precise de suporte, acesse nosso [fórum].
|
@@ -0,0 +1,201 @@
|
|
1
|
+
# Checkout Transparente
|
2
|
+
|
3
|
+
Integrando seu sistema de comércio eletrônico com o Checkout Transparente você pode oferecer toda a segurança e comodidade do PagSeguro para os seus clientes no momento da compra, sem precisar sair do seu site ou e-commerce. Com ele é possível disponibilizar em seu site os meios de pagamento Cartão de Crédito, Débito Online e Boleto.
|
4
|
+
|
5
|
+
O Checkout Transparente está disponível para contas do tipo Vendedor e Empresarial. As seções seguintes indicarão como é possível integrar seu sistema de pagamentos ao Checkout Transparente do PagSeguro.
|
6
|
+
|
7
|
+
A API do Checkout Transparente oferece maior controle e flexibilidade sobre o processo de pagamento. Com essa integração o cliente fica no ambiente do seu e-commerce ou site durante todo o processo de compra, sem necessidade de cadastro ou páginas intermediárias de pagamento.
|
8
|
+
Para essa integração o PagSeguro criou alguns serviços que juntos possibilitam construir um checkout integrado, seguro e invisível para o comprador.
|
9
|
+
|
10
|
+
## Integração
|
11
|
+
|
12
|
+
Para fazer a integração do Checkout Transparente, você precisa seguir os seguintes passos:
|
13
|
+
|
14
|
+
- Iniciar uma sessão de pagamento (Todos os meios de pagamento)
|
15
|
+
- Obter a bandeira do cartão de crédito (Apenas para Cartão de Crédito)
|
16
|
+
- Obter o token do cartão de crédito (Apenas para Cartão de Crédito)
|
17
|
+
- Verificar as opções de parcelamento (Apenas para Cartão de Crédito)
|
18
|
+
- Obter a identificação do comprador (Todos os meios de pagamento)
|
19
|
+
- Efetuar o pagamento utilizando a API do Checkout Transparente (Todos os meios de pagamento)
|
20
|
+
|
21
|
+
### Iniciar Sessão de Pagamento
|
22
|
+
|
23
|
+
Para iniciar um Checkout Transparente é necessário ter um ID de sessão válido. Este serviço retorna o ID de sessão que será usado nas chamadas JavaScript.
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
session = PagSeguro::Session.create
|
27
|
+
@session_id = session.id
|
28
|
+
```
|
29
|
+
|
30
|
+
### Integrações no browser
|
31
|
+
|
32
|
+
A API do Checkout Transparente possui funções JavaScript para algumas operações que devem ser executadas no browser do cliente, funções que serão descritas mais adiante. Para essas funções uma API JavaScript deve ser importada no final da página dos meios de pagamento:
|
33
|
+
|
34
|
+
```html
|
35
|
+
produção:
|
36
|
+
<script type="text/javascript" src="https://stc.pagseguro.uol.com.br/pagseguro/api/v2/checkout/pagseguro.directpayment.js"></script>
|
37
|
+
|
38
|
+
sandbox:
|
39
|
+
<script type="text/javascript" src="https://stc.sandbox.pagseguro.uol.com.br/pagseguro/api/v2/checkout/pagseguro.directpayment.js"></script>
|
40
|
+
```
|
41
|
+
|
42
|
+
Esse JavaScript possui um objeto chamado `PagSeguroDirectPayment`, que é a interface de acesso aos métodos. Após importar o arquivo, deve ser executado o método `setSessionId` com o ID de sessão gerado anteriormente.
|
43
|
+
|
44
|
+
```javascript
|
45
|
+
PagSeguroDirectPayment.setSessionId('<%= @session_id %>');
|
46
|
+
```
|
47
|
+
|
48
|
+
Nas funções, os eventos de sucesso e erro ocorrem em chamadas callback no JavaScript que são passadas via JSON. Para isso, basta passar três funções JavaScript com nome 'success', 'error' e 'complete' via JSON na chamada dos métodos. A função 'complete' será chamada independente do retorno e as funções 'success' e 'error' serão chamadas dependendo do retorno, ou seja, se o retorno não possuir erro a função chamada será a 'success' e se possuir erro a função chamada será a 'error'.
|
49
|
+
|
50
|
+
### Obter identificação do comprador
|
51
|
+
|
52
|
+
Para realizar o Checkout Transparente á necessário enviar um identificador do comprador gerado pelo JavaScript. Para isso você deve utilizar o método `getSenderHash`. Esse método não possui parâmetros e retorna um identificador. O identificador é obrigatório para todos os meios de pagamento.
|
53
|
+
|
54
|
+
```javascript
|
55
|
+
PagSeguroDirectPayment.getSenderHash();
|
56
|
+
```
|
57
|
+
|
58
|
+
**Atenção:** Esse método possui algumas dependências e por isso recomendamos que o `getSenderHash` não seja executado no onLoad da página. Você pode executá-lo, por exemplo, quando o cliente clicar no botão de conclusão de pagamento.
|
59
|
+
|
60
|
+
### Obter bandeira do cartão de crédito
|
61
|
+
|
62
|
+
Esse processo é necessário somente para o meio de pagamento **cartão de crédito**. O método `getBrand` é utilizado para verificar qual a bandeira do cartão que está sendo digitado. Esse método recebe por parâmetro o BIN do cartão (seis primeiros dígitos do cartão) e retorna dados como qual a bandeira, o tamanho do CVV, se possui data de expiração e qual algoritmo de validação. A chamada desse serviço não é obrigatória.
|
63
|
+
|
64
|
+
Exemplo:
|
65
|
+
|
66
|
+
```javascript
|
67
|
+
PagSeguroDirectPayment.getBrand({
|
68
|
+
cardBin: $("input#cartao").val(),
|
69
|
+
success: function (response) {
|
70
|
+
//bandeira encontrada
|
71
|
+
},
|
72
|
+
error: function (response) {
|
73
|
+
//tratamento do erro
|
74
|
+
},
|
75
|
+
complete: function (response) {
|
76
|
+
//tratamento comum para todas chamadas
|
77
|
+
}
|
78
|
+
});
|
79
|
+
```
|
80
|
+
|
81
|
+
Retorno:
|
82
|
+
|
83
|
+
```javascript
|
84
|
+
{
|
85
|
+
"brand": {
|
86
|
+
"name":"visa",
|
87
|
+
"bin":411111,
|
88
|
+
"cvvSize":3,
|
89
|
+
"expirable":true,
|
90
|
+
"validationAlgorithm":"LUHN"
|
91
|
+
}
|
92
|
+
}
|
93
|
+
```
|
94
|
+
|
95
|
+
### Obter token do cartão de crédito
|
96
|
+
|
97
|
+
Esse processo é necessário somente para o meio de pagamento **cartão de crédito**. O método `createCardToken` é utilizado para gerar o token que representará o cartão de crédito na chamada para a API do Checkout Transparente. Este método recebe os seguintes dados: número do cartão (obrigatório), CVV (opcional para alguns cartões), data de expiração (opcional para alguns cartões) e a bandeira (opcional).
|
98
|
+
|
99
|
+
Exemplo:
|
100
|
+
|
101
|
+
```javascript
|
102
|
+
var params = {
|
103
|
+
cardNumber: $("input#cartao").val(),
|
104
|
+
cvv: $("input#cvv").val(),
|
105
|
+
expirationMonth: $("input#validadeMes").val(),
|
106
|
+
expirationYear: $("input#validadeAno").val(),
|
107
|
+
success: function (response) {
|
108
|
+
//token gerado, esse deve ser usado na chamada da API do Checkout Transparente
|
109
|
+
},
|
110
|
+
error: function (response) {
|
111
|
+
//tratamento do erro
|
112
|
+
},
|
113
|
+
complete: function (response) {
|
114
|
+
//tratamento comum para todas chamadas
|
115
|
+
}
|
116
|
+
}
|
117
|
+
|
118
|
+
// parâmetro opcional para qualquer chamada
|
119
|
+
if($("input#bandeira").val() !== '') {
|
120
|
+
params.brand = $("input#bandeira").val();
|
121
|
+
}
|
122
|
+
|
123
|
+
PagSeguroDirectPayment.createCardToken(params);
|
124
|
+
```
|
125
|
+
|
126
|
+
Retorno:
|
127
|
+
|
128
|
+
```javascript
|
129
|
+
{
|
130
|
+
"card":{
|
131
|
+
"token":"653fe9044cf149f9b7db562431cb130d"
|
132
|
+
}
|
133
|
+
}
|
134
|
+
```
|
135
|
+
|
136
|
+
### Obter opções de parcelamento
|
137
|
+
|
138
|
+
Esse processo é necessário apenas para o meio de pagamento **cartão de crédito**. Caso queira mostrar as opções de parcelamento para o comprador, você deverá utilizar o método `getInstallments`. Esse método recebe o valor a ser parcelado (obrigatório) e a bandeira que se deseja obter o parcelamento, retornando as configurações de cada parcela sendo: valor total do pagamento (que deve ser enviado junto na API do Checkout Transparente), valor e quantidade da parcela (que também devem ser informados na API do Checkout Transparente) e um indicador se aquela parcela tem juros ou não (caso o vendedor tenha configurado uma promoção no PagSeguro).
|
139
|
+
|
140
|
+
Se não for informado uma bandeira como parâmetro na chamada, o método retornará os dados para todas bandeiras aceitas pelo PagSeguro.
|
141
|
+
|
142
|
+
Exemplo:
|
143
|
+
|
144
|
+
```javascript
|
145
|
+
PagSeguroDirectPayment.getInstallments({
|
146
|
+
amount: $("input#valorPagto").val(),
|
147
|
+
brand: $("input#bandeira").val(),
|
148
|
+
success: function (response) {
|
149
|
+
//opções de parcelamento disponíveis
|
150
|
+
},
|
151
|
+
error: function (response) {
|
152
|
+
//tratamento do erro
|
153
|
+
},
|
154
|
+
complete: function (response) {
|
155
|
+
//tratamento comum para todas chamadas
|
156
|
+
}
|
157
|
+
});
|
158
|
+
```
|
159
|
+
|
160
|
+
Retorno:
|
161
|
+
|
162
|
+
```javascript
|
163
|
+
{
|
164
|
+
"error":false,
|
165
|
+
"installments":{
|
166
|
+
"visa":
|
167
|
+
[
|
168
|
+
{
|
169
|
+
"quantity":1,
|
170
|
+
"totalAmount":16,
|
171
|
+
"installmentAmount":16,
|
172
|
+
"interestFree":true
|
173
|
+
},
|
174
|
+
{
|
175
|
+
"quantity":2,
|
176
|
+
"totalAmount":16.48,
|
177
|
+
"installmentAmount":8.24,
|
178
|
+
"interestFree":false
|
179
|
+
},
|
180
|
+
{
|
181
|
+
"quantity":3,
|
182
|
+
"totalAmount":16.64,
|
183
|
+
"installmentAmount":5.55,
|
184
|
+
"interestFree":false
|
185
|
+
}
|
186
|
+
]
|
187
|
+
}
|
188
|
+
}
|
189
|
+
```
|
190
|
+
|
191
|
+
## API do Checkout Transparente
|
192
|
+
|
193
|
+
Este serviço envia os dados do comprador e do pagamento para realizar a cobrança.
|
194
|
+
|
195
|
+
A criação das transações podem ser feitas utilizando três métodos de pagamento:
|
196
|
+
|
197
|
+
[Boleto Bancário](https://github.com/pagseguro/ruby/blob/master/examples/boleto_transaction_request.rb)
|
198
|
+
|
199
|
+
[Cartão de Crédito](https://github.com/pagseguro/ruby/blob/master/examples/credit_card_transaction_request.rb)
|
200
|
+
|
201
|
+
[Transferência Eletrônica](https://github.com/pagseguro/ruby/blob/master/examples/online_debit_transaction.rb)
|
@@ -0,0 +1,94 @@
|
|
1
|
+
require_relative "boot"
|
2
|
+
|
3
|
+
payment = PagSeguro::BoletoTransactionRequest.new
|
4
|
+
payment.notification_url = "http://www.meusite.com.br/notification"
|
5
|
+
payment.payment_mode = "default"
|
6
|
+
|
7
|
+
payment.items << {
|
8
|
+
id: 1234,
|
9
|
+
description: %[Televisão 19" Sony],
|
10
|
+
amount: 459.50,
|
11
|
+
weight: 0
|
12
|
+
}
|
13
|
+
|
14
|
+
payment.reference = "REF1234-boleto"
|
15
|
+
payment.sender = {
|
16
|
+
hash: "7e215170790948f45e26175c2192c77e88c0e4c361a5860b99d2e9a97af982e6",
|
17
|
+
name: "Joao Comprador",
|
18
|
+
email: "joao@sandbox.pagseguro.com.br",
|
19
|
+
cpf: "75073461100",
|
20
|
+
phone: {
|
21
|
+
area_code: 11,
|
22
|
+
number: "12345678"
|
23
|
+
}
|
24
|
+
}
|
25
|
+
|
26
|
+
payment.shipping = {
|
27
|
+
type_name: "sedex",
|
28
|
+
address: {
|
29
|
+
street: "Av. Brig. Faria Lima",
|
30
|
+
number: "1384",
|
31
|
+
complement: "5º andar",
|
32
|
+
city: "São Paulo",
|
33
|
+
state: "SP",
|
34
|
+
district: "Jardim Paulistano",
|
35
|
+
postal_code: "01452002"
|
36
|
+
}
|
37
|
+
}
|
38
|
+
|
39
|
+
|
40
|
+
# Add extras params to request
|
41
|
+
# payment.extra_params << { paramName: 'paramValue' }
|
42
|
+
# payment.extra_params << { senderBirthDate: '07/05/1981' }
|
43
|
+
|
44
|
+
puts "=> REQUEST"
|
45
|
+
puts PagSeguro::TransactionRequest::RequestSerializer.new(payment).to_params
|
46
|
+
puts
|
47
|
+
|
48
|
+
payment.create
|
49
|
+
|
50
|
+
if payment.errors.any?
|
51
|
+
puts "=> ERRORS"
|
52
|
+
puts payment.errors.join("\n")
|
53
|
+
else
|
54
|
+
puts "=> Transaction"
|
55
|
+
puts " code: #{payment.code}"
|
56
|
+
puts " reference: #{payment.reference}"
|
57
|
+
puts " type: #{payment.type_id}"
|
58
|
+
puts " payment link: #{payment.payment_link}"
|
59
|
+
puts " status: #{payment.status}"
|
60
|
+
puts " payment method type: #{payment.payment_method}"
|
61
|
+
puts " created at: #{payment.created_at}"
|
62
|
+
puts " updated at: #{payment.updated_at}"
|
63
|
+
puts " gross amount: #{payment.gross_amount.to_f}"
|
64
|
+
puts " discount amount: #{payment.discount_amount.to_f}"
|
65
|
+
puts " net amount: #{payment.net_amount.to_f}"
|
66
|
+
puts " extra amount: #{payment.extra_amount.to_f}"
|
67
|
+
puts " installment count: #{payment.installment_count}"
|
68
|
+
|
69
|
+
puts " => Items"
|
70
|
+
puts " items count: #{payment.items.size}"
|
71
|
+
payment.items.each do |item|
|
72
|
+
puts " item id: #{item.id}"
|
73
|
+
puts " description: #{item.description}"
|
74
|
+
puts " quantity: #{item.quantity}"
|
75
|
+
puts " amount: #{item.amount.to_f}"
|
76
|
+
end
|
77
|
+
|
78
|
+
puts " => Sender"
|
79
|
+
puts " name: #{payment.sender.name}"
|
80
|
+
puts " email: #{payment.sender.email}"
|
81
|
+
puts " phone: (#{payment.sender.phone.area_code}) #{payment.sender.phone.number}"
|
82
|
+
puts " document: #{payment.sender.document}"
|
83
|
+
|
84
|
+
puts " => Shipping"
|
85
|
+
puts " street: #{payment.shipping.address.street}, #{payment.shipping.address.number}"
|
86
|
+
puts " complement: #{payment.shipping.address.complement}"
|
87
|
+
puts " postal code: #{payment.shipping.address.postal_code}"
|
88
|
+
puts " district: #{payment.shipping.address.district}"
|
89
|
+
puts " city: #{payment.shipping.address.city}"
|
90
|
+
puts " state: #{payment.shipping.address.state}"
|
91
|
+
puts " country: #{payment.shipping.address.country}"
|
92
|
+
puts " type: #{payment.shipping.type_name}"
|
93
|
+
puts " cost: #{payment.shipping.cost}"
|
94
|
+
end
|
@@ -0,0 +1,122 @@
|
|
1
|
+
require_relative "boot"
|
2
|
+
|
3
|
+
payment = PagSeguro::CreditCardTransactionRequest.new
|
4
|
+
payment.notification_url = "http://www.meusite.com.br/notification"
|
5
|
+
payment.payment_mode = "gateway"
|
6
|
+
|
7
|
+
payment.items << {
|
8
|
+
id: 1234,
|
9
|
+
description: %[Televisão 19" Sony],
|
10
|
+
amount: 459.50,
|
11
|
+
weight: 0
|
12
|
+
}
|
13
|
+
|
14
|
+
payment.reference = "REF1234-credit-card"
|
15
|
+
payment.sender = {
|
16
|
+
hash: "f8d95a0747cdddf277a111ec1bab1d68628e095243b7a56382ec01f260216313",
|
17
|
+
name: "Joao Comprador",
|
18
|
+
email: "joao@sandbox.pagseguro.com.br",
|
19
|
+
cpf: "75073461100",
|
20
|
+
phone: {
|
21
|
+
area_code: 11,
|
22
|
+
number: "12345678"
|
23
|
+
}
|
24
|
+
}
|
25
|
+
|
26
|
+
payment.shipping = {
|
27
|
+
type_name: "sedex",
|
28
|
+
address: {
|
29
|
+
street: "Av. Brig. Faria Lima",
|
30
|
+
number: "1384",
|
31
|
+
complement: "5º andar",
|
32
|
+
city: "São Paulo",
|
33
|
+
state: "SP",
|
34
|
+
district: "Jardim Paulistano",
|
35
|
+
postal_code: "01452002"
|
36
|
+
}
|
37
|
+
}
|
38
|
+
|
39
|
+
payment.billing_address = {
|
40
|
+
street: "Av. Brig. Faria Lima",
|
41
|
+
number: "1384",
|
42
|
+
complement: "5º andar",
|
43
|
+
city: "São Paulo",
|
44
|
+
state: "SP",
|
45
|
+
district: "Jardim Paulistano",
|
46
|
+
postal_code: "01452002"
|
47
|
+
}
|
48
|
+
|
49
|
+
payment.credit_card_token = "41c1f784216748ccae689fcd854aaca1"
|
50
|
+
payment.holder = {
|
51
|
+
name: "João Comprador",
|
52
|
+
birth_date: "07/05/1981",
|
53
|
+
document: {
|
54
|
+
type: "CPF",
|
55
|
+
value: "00000000191"
|
56
|
+
},
|
57
|
+
phone: {
|
58
|
+
area_code: 11,
|
59
|
+
number: "123456789"
|
60
|
+
}
|
61
|
+
}
|
62
|
+
|
63
|
+
payment.installment = {
|
64
|
+
value: 459.50,
|
65
|
+
quantity: 1
|
66
|
+
}
|
67
|
+
|
68
|
+
# Add extras params to request
|
69
|
+
# payment.extra_params << { paramName: 'paramValue' }
|
70
|
+
# payment.extra_params << { senderBirthDate: '07/05/1981' }
|
71
|
+
|
72
|
+
puts "=> REQUEST"
|
73
|
+
puts PagSeguro::TransactionRequest::RequestSerializer.new(payment).to_params
|
74
|
+
puts
|
75
|
+
|
76
|
+
payment.create
|
77
|
+
|
78
|
+
if payment.errors.any?
|
79
|
+
puts "=> ERRORS"
|
80
|
+
puts payment.errors.join("\n")
|
81
|
+
else
|
82
|
+
puts "=> Transaction"
|
83
|
+
puts " code: #{payment.code}"
|
84
|
+
puts " reference: #{payment.reference}"
|
85
|
+
puts " type: #{payment.type_id}"
|
86
|
+
puts " payment link: #{payment.payment_link}"
|
87
|
+
puts " status: #{payment.status}"
|
88
|
+
puts " payment method type: #{payment.payment_method}"
|
89
|
+
puts " created at: #{payment.created_at}"
|
90
|
+
puts " updated at: #{payment.updated_at}"
|
91
|
+
puts " gross amount: #{payment.gross_amount.to_f}"
|
92
|
+
puts " discount amount: #{payment.discount_amount.to_f}"
|
93
|
+
puts " net amount: #{payment.net_amount.to_f}"
|
94
|
+
puts " extra amount: #{payment.extra_amount.to_f}"
|
95
|
+
puts " installment count: #{payment.installment_count}"
|
96
|
+
|
97
|
+
puts " => Items"
|
98
|
+
puts " items count: #{payment.items.size}"
|
99
|
+
payment.items.each do |item|
|
100
|
+
puts " item id: #{item.id}"
|
101
|
+
puts " description: #{item.description}"
|
102
|
+
puts " quantity: #{item.quantity}"
|
103
|
+
puts " amount: #{item.amount.to_f}"
|
104
|
+
end
|
105
|
+
|
106
|
+
puts " => Sender"
|
107
|
+
puts " name: #{payment.sender.name}"
|
108
|
+
puts " email: #{payment.sender.email}"
|
109
|
+
puts " phone: (#{payment.sender.phone.area_code}) #{payment.sender.phone.number}"
|
110
|
+
puts " document: #{payment.sender.document}: #{payment.sender.document}"
|
111
|
+
|
112
|
+
puts " => Shipping"
|
113
|
+
puts " street: #{payment.shipping.address.street}, #{payment.shipping.address.number}"
|
114
|
+
puts " complement: #{payment.shipping.address.complement}"
|
115
|
+
puts " postal code: #{payment.shipping.address.postal_code}"
|
116
|
+
puts " district: #{payment.shipping.address.district}"
|
117
|
+
puts " city: #{payment.shipping.address.city}"
|
118
|
+
puts " state: #{payment.shipping.address.state}"
|
119
|
+
puts " country: #{payment.shipping.address.country}"
|
120
|
+
puts " type: #{payment.shipping.type_name}"
|
121
|
+
puts " cost: #{payment.shipping.cost}"
|
122
|
+
end
|