pagseguro-transparente 1.0.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 50c23ec1585127452ab5ef5825ab28c1f49d7890
4
- data.tar.gz: 06b91010e1abc25b4134b3e8525abfa3dc63af30
3
+ metadata.gz: e5a03899badf0bd49904ceaeeb35c27721bf53d0
4
+ data.tar.gz: 438e7bf01d5ebabd5d1bf77ce6289539a37d96bd
5
5
  SHA512:
6
- metadata.gz: 19c26ce1724c42fe0021c6719a4b8efe1c33783e878ec3c91649398b8a68fb7648f481ab69d260ddee439b8d5cf5832cd63dff3d23d116b1e76e7521e2b84594
7
- data.tar.gz: 7f135a9e059b7c3d754a083f0d8e95df1657c2f7076dadcbc5a50ef620469f5479258820065d65bada411228055143743bf2b70dbacb39a488253b20153ae72d
6
+ metadata.gz: a993b7e1b3fb21edd4783d9cab6d074fffa81487fd10da0b0a5a25348bdabe099b9bbe167fb8d4a5e72fd60b270d945f432c33d878025b971b74ff037c9fd404
7
+ data.tar.gz: ebefe858aba1e89e7b405868b6cd5836aafb771a276721831905876c9823a91db86e25d5aa68cb20df2b351820a4469b51ab578bb93d86127f90d764367f9c64
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # PagSeguro Transparente
2
2
 
3
- Gem para a utilização do novo checkout transparente do Pagseguro.
3
+ Gem para a utilização do novo [checkout transparente](https://pagseguro.uol.com.br/receba-pagamentos.jhtml#checkout-transparent) do Pagseguro. Essa forma de checkout permite que a compra seja realizada completamente em sua loja. Até o momento, para ter acesso a esse novo checkout é necessário entrar em contato com o PagSeguro para ter acesso a documentação.
4
4
 
5
5
  [![Build Status](https://travis-ci.org/eventick/pagseguro-transparente.svg?branch=master)](https://travis-ci.org/eventick/pagseguro-transparente)
6
6
  [![Coverage Status](https://coveralls.io/repos/eventick/pagseguro-transparente/badge.png)](https://coveralls.io/r/eventick/pagseguro-transparente)
@@ -17,15 +17,15 @@ PagSeguro é a solução completa para pagamentos online, que garante a seguran
17
17
  Ruby >= 1.9.3
18
18
  Rails >= 3.0
19
19
 
20
- ##Como usar
20
+ ## Como usar
21
21
 
22
22
  Adicione a biblioteca ao arquivo Gemfile:
23
23
  ~~~.ruby
24
- gem "pagseguro-transparente", "~> 0.2.3"
24
+ gem "pagseguro-transparente", "~> 1.0.1"
25
25
  ~~~
26
- * Ainda não publicada, é preciso baixar direto do Github.
27
26
 
28
- Criar um initializer em config/initializer/pagseguro.rb
27
+
28
+ Criar um initializer em ```config/initializer/pagseguro.rb```
29
29
  ~~~.ruby
30
30
  PagSeguro.configure do |config|
31
31
  config.email = "exemplo@pagseguro.com.br"
@@ -33,42 +33,142 @@ PagSeguro.configure do |config|
33
33
  end
34
34
  ~~~
35
35
 
36
- ##Criando uma nova sessão
36
+ ## Etapas do checkout transparente
37
+ * Iniciar uma sessão de pagamento
38
+ * Obter os meios de pagamento*
39
+ * Obter a bandeira do cartão de crédito* (Cartão e crédito)
40
+ * Obter o token do cartão de crédito* (Cartão de crédito)
41
+ * Verificar as opções de parcelamento* (Cartão de crédito)
42
+ * Obter a identificação do comprador
43
+ * Efetuar o pagamento utilizando a API do Checkout Transparente
44
+
45
+ ```* Lib Javascript fornecidade pelo PagSeguro```
46
+
47
+ ## Iniciando uma nova sessão
37
48
  ~~~.ruby
38
49
  pagseguro_session = PagSeguro::Session.new
39
- @pagseguro_session_id = pagseguro_session.create.id
50
+ pagseguro_session_id = pagseguro_session.create.id
40
51
  ~~~
41
52
 
42
- ##Criando uma transação
43
- ~~~.ruby
44
- payment = PagSeguro::Payment.new(notification_url: 'www.eventick.com.br', payment_method: 'boleto', reference: '1')
45
- items = [PagSeguro::Item.new(id: 1, description: 'Ingresso Teste', amount: 2, quantity: 1)]
46
- payment.items = items
53
+ ## Criando uma transação
47
54
 
55
+ ### Cartão de crédito
56
+ ~~~.ruby
57
+ payment = PagSeguro::Payment.new(notification_url: 'www.eventick.com.br/notify', payment_method: 'creditCard', reference: '1')
58
+ ~~~
48
59
 
49
- phone = PagSeguro::Phone.new('81', '97550129')
50
- document = PagSeguro::Document.new('01735536300')
60
+ #### Adicionando items
61
+ ~~~.ruby
62
+ items = [PagSeguro::Item.new(id: 1, description: 'Ticket 1', amount: 2, quantity: 1), PagSeguro::Item.new(id: 2, description: 'Ticket 2', amount: 2, quantity: 1)]
63
+ payment.items = items
64
+ ~~~
51
65
 
52
- sender = PagSeguro::Sender.new(email: 'cirdes@gmail.com', name: 'Cirdes Henrique', hash_id: )
66
+ #### Adicionando comprador
67
+ ~~~.ruby
68
+ phone = PagSeguro::Phone.new('11', '999999999')
69
+ document = PagSeguro::Document.new('111111111111')
70
+ sender = PagSeguro::Sender.new(email: 'cirdes@eventick.com.br', name: 'Cirdes Henrique', hash_id: identificao_do_comprador )
53
71
  sender.phone = phone
54
72
  sender.document = document
55
-
56
73
  payment.sender = sender
74
+ ~~~.ruby
57
75
 
58
- address = PagSeguro::Address.new(postal_code: '52050040', street: 'Rua Teles Junior', number: '475', complement: '301', district: 'rosarinho', city: 'Recife', state: 'PE')
76
+ #### Adicionando endereço do comprador ou endereço de cobrança para cartão de crédito
77
+ ~~~.ruby
78
+ address = PagSeguro::Address.new(postal_code: '01318002', street: 'AV BRIGADEIRO LUIS ANTONIO', number: '1892', complement: '112', district: 'Bela Vista', city: 'São Paulo', state: 'SP')
59
79
  shipping = PagSeguro::Shipping.new
60
80
  shipping.address = address
61
-
62
81
  payment.shipping = shipping
82
+ ~~~
83
+
84
+ #### Adicionando informações do cartão
85
+ ~~~.ruby
86
+ credit_card = PagSeguro::CreditCard.new(creditcard_token)
87
+ credit_card.installment = PagSeguro::Installment.new(installment_quantity, installment_value)
88
+ credit_card.holder = PagSeguro::Holder.new(creditcard_name, creditcard_birthday)
89
+ document = PagSeguro::Document.new('111111111111')
90
+ credit_card.holder.document = document
91
+ phone = PagSeguro::Phone.new('11', '999999999')
92
+ credit_card.holder.phone = phone
93
+ address = PagSeguro::Address.new(postal_code: zipcode, street: street, number: number, complement: extra, district: neighbourhood, city: city, state: state )
94
+ credit_card.billing_address = mount_address
95
+ payment.credit_card = credit_card
96
+ ~~~
97
+
98
+ #### Efetuando a transação
99
+ ~~~.ruby
100
+ transaction = payment.transaction
101
+ ~~~
102
+
103
+ Ao efetuar a transação, será retornado um objeto ```PagSeguro::Transaction``` que você poderá usar para atualizar o status da compra.
104
+
105
+ ### Boleto
106
+ Com o retorno da transação você pegará a url para imprimir o boleto.
107
+
108
+ ~~~.ruby
109
+ payment = PagSeguro::Payment.new(notification_url: 'www.eventick.com.br/notify', payment_method: 'boleto', reference: '1')
110
+ transaction = payment.transaction
111
+ transaction.payment_link
112
+ ~~~
113
+
114
+ ### Débito bancário
115
+ Você recebá a URL para redirecionar o usuário ao banco.
116
+ Valores possívels para os bancos são: ```bradesco``` ```itau``` ```bancodobrasil``` ```banrisul``` ```hsbc```
117
+ ~~~.ruby
118
+ payment = PagSeguro::Payment.new(notification_url: 'www.eventick.com.br/notify', payment_method: 'eft', reference: '1')
119
+ payment.bank = PagSeguro::Bank.new('bradesco')
120
+
121
+ transaction = payment.transaction
122
+ transaction.payment_link
123
+ ~~~
124
+
125
+ ## Recebendo uma notificação de mundaça de status da transação
126
+ A documentação da API de Notificações podem ser encontrada no (site)[https://pagseguro.uol.com.br/v3/guia-de-integracao/api-de-notificacoes.html] do PagSeguro. As notificações utilizam a versão V3 da API do PagSeguro.
127
+
128
+ A notification_url informada como parâmetro da transação, irá receber um POST do PagSeguro informando que existe um atualização no status da transação. Para consultar o status da transação podemos utilizar o PagSeguroTransparent.
129
+
130
+ ~~~.ruby
131
+ transaction = PagSeguro::Notification.new(notification_code, 'transaction').transaction
132
+ ~~~
133
+
134
+ É possível verificar se a transação é uma transação válida, sem erros ou consultar os erros retornados pelo PagSeguro.
135
+ ~~~.ruby
136
+ transaction.valid?
137
+ transaction.errors
138
+ ~~~
63
139
 
64
- response = payment.register
140
+ ## API de Consulta
141
+ A documentação da API de Consulta podem ser encontrada no (site)[https://pagseguro.uol.com.br/v3/guia-de-integracao/consulta-de-transacoes-por-codigo.html] do PagSeguro. As consultas utilizam a versão V3 da API do PagSeguro.
65
142
 
66
- response.payment_link
143
+ ~~~.ruby
144
+ transaction = PagSeguro::Query.new(order_identifier).transaction
67
145
  ~~~
68
146
 
69
- Você deve redirecionar o usário para a url retornada para compras com boleto e débito bancário.
147
+ ## PagSeguro::Transaction
148
+ A API de notificação, a API de consulta e de pagamento retornam um objeto da classe ```PagSeguro::Transaction. Transaction``` responde aos seguintes métodos:
149
+
150
+ ~~~.ruby
151
+ date, last_event_date, code,reference, type, status, status_name, cancellation_source, payment_method, payment_link, gross_amount, discount_amount, escrow_end_date, net_amount, extra_amount, installment_count, items, sender, shipping, valid?, errors, fee_amount
152
+ ~~~
70
153
 
71
- This is a working in progress!
154
+ ## Suporte a múltipas contas
155
+ É possível utilizar mais de uma conta do PagSeguro ao efetuar suas transações. A utilização de uma segunda conta pode ser útil caso alguma das contas tenha alguma customização que fazem sentido para apenas alguns tipos de compras.
156
+
157
+ ~~~.ruby
158
+ PagSeguro.configure do |config|
159
+ config.email = 'email1@eventick.com.br'
160
+ config.token = 'token1'
161
+ config.alt_email = 'email2@eventick.com.br'
162
+ config.alt_token = 'token2'
163
+ end
164
+ ~~~
165
+
166
+ Em todos as chamadas a API é possível especificar qual conta deve ser utilizada. Caso o valor seja diferente de 'alternative' a conta principal será utilizada.
167
+
168
+ ~~~.ruby
169
+ payment.transaction('alternative')
170
+ PagSeguro::Notification.new(notification_code, 'transaction').transaction('alternative')
171
+ ~~~
72
172
 
73
173
  ## Contributing
74
174
 
@@ -83,7 +83,7 @@ module PagSeguro
83
83
  end
84
84
 
85
85
  def sender
86
- Sender.new(transaction['sender'])
86
+ Sender.new(transaction['sender']) if transaction['sender']
87
87
  end
88
88
 
89
89
  def shipping
@@ -1,3 +1,3 @@
1
1
  module PagSeguro
2
- VERSION = "1.0.1"
2
+ VERSION = "1.1.0"
3
3
  end
@@ -3,7 +3,18 @@ require "spec_helper"
3
3
  describe PagSeguro::Transaction do
4
4
  let(:xml) { MultiXml.parse(xml_file) }
5
5
 
6
- let(:xml_file) {
6
+ let(:sender) do
7
+ "<sender>
8
+ <name>José Comprador</name>
9
+ <email>comprador@uol.com.br</email>
10
+ <phone>
11
+ <areaCode>11</areaCode>
12
+ <number>56273440</number>
13
+ </phone>
14
+ </sender>"
15
+ end
16
+
17
+ let(:xml_file) do
7
18
  "<transaction>
8
19
  <date>2011-02-05T15:46:12.000-02:00</date>
9
20
  <lastEventDate>2011-02-15T17:39:14.000-03:00</lastEventDate>
@@ -24,8 +35,9 @@ describe PagSeguro::Transaction do
24
35
  <installmentCount>1</installmentCount>
25
36
  <escrowEndDate>2011-02-05T15:46:12.000-02:00</escrowEndDate>
26
37
  <cancellationSource>INTERNAL</cancellationSource>
38
+ #{sender}
27
39
  </transaction>"
28
- }
40
+ end
29
41
 
30
42
  let(:response) { PagSeguro::Transaction.new(xml) }
31
43
 
@@ -63,6 +75,12 @@ describe PagSeguro::Transaction do
63
75
  it { expect(subject).to respond_to(:fee_amount) }
64
76
  end
65
77
 
78
+ context "response without sender" do
79
+ let(:sender) { "" }
80
+
81
+ its(:sender) { should be_nil }
82
+ end
83
+
66
84
  context "unsuccessfull transaction" do
67
85
  context "one error only" do
68
86
  let(:xml_file) {
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pagseguro-transparente
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cirdes Henrique
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-03-16 00:00:00.000000000 Z
12
+ date: 2015-07-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activemodel