mymoip 0.7.0 → 0.8.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 +4 -4
- data/CHANGELOG.md +10 -0
- data/README.md +75 -22
- data/lib/mymoip/bank_debit.rb +22 -0
- data/lib/mymoip/credit_card.rb +20 -6
- data/lib/mymoip/exceptions.rb +2 -0
- data/lib/mymoip/payment.rb +10 -0
- data/lib/mymoip/payments/bank_debit_payment.rb +27 -0
- data/lib/mymoip/{credit_card_payment.rb → payments/credit_card_payment.rb} +1 -1
- data/lib/mymoip/payments/payment_slip_payment.rb +12 -0
- data/lib/mymoip/requests/payment_request.rb +15 -6
- data/lib/mymoip/version.rb +1 -1
- data/test/fixtures/fixture.rb +5 -1
- data/test/fixtures/vcr_cassettes/payment_request_with_payment_slip.yml +32 -0
- data/test/lib/test_bank_debit.rb +36 -0
- data/test/lib/test_bank_debit_payment.rb +32 -0
- data/test/lib/test_creditcard.rb +43 -9
- data/test/lib/test_payment.rb +15 -0
- data/test/lib/test_payment_request.rb +24 -0
- data/test/lib/test_payment_slip_payment.rb +8 -0
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f7770df829260624c7e35e953fec04f41bb89a57
|
4
|
+
data.tar.gz: ba6208e1363b11bc1e2ed072780ece03459404d5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3db1554c59dc131a3a5b8a682103ffd33acf9d36a65c1019b83bb4330bb6085e05b02803d6c458e35258f21e466fd90832c124af0a6f7f81dec82b893fa21e10
|
7
|
+
data.tar.gz: b023b1b7cef15c1be9320016a57e45efe533c2b813b3d3ae5e9bcfd8e8425e4c9a926bcf458c1a8f4098e0a4ce9310a882aabc15b9538de743d5c48174779364
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,15 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
## 0.8.0
|
4
|
+
|
5
|
+
* Perform optional extra validations in CreditCard. (by @hugomaiavieira)
|
6
|
+
* Fix regex for CreditCard#expiration_date validation. (by @hugomaiavieira)
|
7
|
+
* Accept payments by bank debit. (by @hugomaiavieira)
|
8
|
+
* Accept payments by payment slip aka boleto. (by @hugomaiavieira)
|
9
|
+
* Fix missing forward of PaymentRequest#api_call options to Request's
|
10
|
+
implementation. (by @hugomaiavieira)
|
11
|
+
* Accept to set invalid owner_birthday in CreditCard. (by @hugomaiavieira)
|
12
|
+
|
3
13
|
## 0.7.0
|
4
14
|
|
5
15
|
* Allow payments using redirection to Moip's domain. (by @oznek)
|
data/README.md
CHANGED
@@ -85,12 +85,12 @@ purchase = MyMoip::Purchase.new(
|
|
85
85
|
payer: payer_attrs
|
86
86
|
)
|
87
87
|
purchase.checkout! # => true OR false (succesfull state)
|
88
|
-
purchase.code
|
88
|
+
purchase.code # Moip code or nil, depending of the checkout's return
|
89
89
|
```
|
90
90
|
|
91
91
|
## The hard way
|
92
92
|
|
93
|
-
|
93
|
+
### First request: what and from who
|
94
94
|
|
95
95
|
```ruby
|
96
96
|
payer = MyMoip::Payer.new(
|
@@ -119,33 +119,70 @@ transparent_request = MyMoip::TransparentRequest.new('your_logging_id')
|
|
119
119
|
transparent_request.api_call(instruction)
|
120
120
|
```
|
121
121
|
|
122
|
-
|
122
|
+
### Second request: how
|
123
|
+
|
124
|
+
#### Credit card
|
123
125
|
|
124
126
|
```ruby
|
125
127
|
credit_card = MyMoip::CreditCard.new(
|
126
|
-
logo:
|
127
|
-
card_number:
|
128
|
-
expiration_date:
|
129
|
-
security_code:
|
130
|
-
owner_name:
|
131
|
-
owner_birthday:
|
132
|
-
owner_phone:
|
133
|
-
owner_cpf:
|
128
|
+
logo: 'visa',
|
129
|
+
card_number: '4916654211627608',
|
130
|
+
expiration_date: '06/15',
|
131
|
+
security_code: '000',
|
132
|
+
owner_name: 'Juquinha da Rocha',
|
133
|
+
owner_birthday: '03/11/1984',
|
134
|
+
owner_phone: '5130405060',
|
135
|
+
owner_cpf: '52211670695',
|
136
|
+
perform_extra_validation: true # optional: see the next sub section
|
134
137
|
)
|
135
138
|
|
136
|
-
credit_card_payment = MyMoip::CreditCardPayment.new(credit_card,
|
137
|
-
|
138
|
-
payment_request
|
139
|
-
|
140
|
-
|
139
|
+
credit_card_payment = MyMoip::CreditCardPayment.new(credit_card, installments: 1)
|
140
|
+
payment_request = MyMoip::PaymentRequest.new('your_logging_id')
|
141
|
+
payment_request.api_call(credit_card_payment, token: transparent_request.token)
|
142
|
+
```
|
143
|
+
|
144
|
+
##### Credit card extra validation
|
145
|
+
|
146
|
+
There is a already [reported](http://goo.gl/celJIZ) bug that the API don't requires some attributes returning a successful [response](https://gist.github.com/Irio/4032350). To "fix it" you can enable an extra validation with `perform_extra_validation` option. It will require the presence of all credit card attributes.
|
147
|
+
|
148
|
+
|
149
|
+
#### Payment slip (aka boleto)
|
150
|
+
|
151
|
+
```ruby
|
152
|
+
payment_slip_payment = MyMoip::PaymentSlipPayment.new()
|
153
|
+
payment_request = MyMoip::PaymentRequest.new('your_logging_id')
|
154
|
+
payment_request.api_call(payment_slip_payment, token: transparent_request.token)
|
141
155
|
```
|
142
156
|
|
143
|
-
|
157
|
+
#### Bank debit
|
158
|
+
|
159
|
+
```ruby
|
160
|
+
bank_debit = MyMoip::BankDebit.new(bank: :itau)
|
161
|
+
# you can find the available banks on MyMoip::BankDebit::AVAILABLE_BANKS
|
162
|
+
|
163
|
+
bank_debit_payment = MyMoip::BankDebitPayment.new(bank_debit)
|
164
|
+
payment_request = MyMoip::PaymentRequest.new('your_logging_id')
|
165
|
+
payment_request.api_call(bank_debit_payment, token: transparent_request.token)
|
166
|
+
```
|
167
|
+
|
168
|
+
### Success?
|
144
169
|
|
145
170
|
```ruby
|
146
171
|
payment_request.success?
|
147
172
|
```
|
148
173
|
|
174
|
+
### Payment url
|
175
|
+
|
176
|
+
For **payment slip** and **bank debit**, payment request will have a url. This
|
177
|
+
url redirect to:
|
178
|
+
|
179
|
+
- When **payment slip**: the payment slip to user print and pay
|
180
|
+
- When **bank debit**: the bank's specific payment page
|
181
|
+
|
182
|
+
```ruby
|
183
|
+
payment_request.url
|
184
|
+
```
|
185
|
+
|
149
186
|
## More!
|
150
187
|
|
151
188
|
Yes, you should read (and help improve!) the docs.
|
@@ -213,7 +250,7 @@ instruction = MyMoip::Instruction.new(
|
|
213
250
|
### Notification and return URLs
|
214
251
|
|
215
252
|
URLs configured at MoIP account can be overrided by passing new URLs values to the instruction object.
|
216
|
-
A notification URL is used for MoIP NASP notification system, responsible for transaction changes signals,
|
253
|
+
A notification URL is used for MoIP NASP notification system, responsible for transaction changes signals,
|
217
254
|
and a return URL is used to return to your website when a payment is using external websites.
|
218
255
|
|
219
256
|
```ruby
|
@@ -229,7 +266,7 @@ instruction = MyMoip::Instruction.new(
|
|
229
266
|
|
230
267
|
### Payment methods configuration
|
231
268
|
|
232
|
-
If you don't need all the payment methods available, you can choose some by configuring
|
269
|
+
If you don't need all the payment methods available, you can choose some by configuring
|
233
270
|
PaymentMethods and adding it to the instruction:
|
234
271
|
|
235
272
|
```ruby
|
@@ -238,7 +275,7 @@ payment_methods = MyMoip::PaymentMethods.new(
|
|
238
275
|
credit_card: true,
|
239
276
|
debit: true,
|
240
277
|
debit_card: true,
|
241
|
-
financing: true,
|
278
|
+
financing: true,
|
242
279
|
moip_wallet: true
|
243
280
|
)
|
244
281
|
|
@@ -251,7 +288,7 @@ instruction = MyMoip::Instruction.new(
|
|
251
288
|
)
|
252
289
|
```
|
253
290
|
|
254
|
-
### Payment slip (aka boleto) configuration
|
291
|
+
### Payment slip (aka boleto) configuration
|
255
292
|
|
256
293
|
You can optionally configure your payment slip creating a PaymentSlip and adding to the instruction:
|
257
294
|
|
@@ -265,7 +302,7 @@ payment_slip = MyMoip::PaymentSlip.new(
|
|
265
302
|
instruction_line_3: 'This is a test! :)',
|
266
303
|
logo_url: 'https://example.com/logo.png'
|
267
304
|
)
|
268
|
-
|
305
|
+
|
269
306
|
instruction = MyMoip::Instruction.new(
|
270
307
|
id: 'instruction_id_defined_by_you',
|
271
308
|
payment_reason: 'Order in Buy Everything Store',
|
@@ -283,6 +320,22 @@ A payment slip can have the following attributes:
|
|
283
320
|
* instruction_line_1, instruction_line_2, instruction_line_3: lines of instruction (up to 63 characters each), added to the payment slip.
|
284
321
|
* logo_url: an URL pointing to an image which will be added to the body of the payment slip.
|
285
322
|
|
323
|
+
### Logger
|
324
|
+
|
325
|
+
The methods that make api calls to Moip, log request and response informations. The default logger is `Logger.new(STDOUT)`, but you can set the logger you want as `api_call` option. For instance:
|
326
|
+
|
327
|
+
``` ruby
|
328
|
+
request = MyMoip::PaymentRequest.new('some-id')
|
329
|
+
request.api_call(data, token: 'some-token', logger: Rails.logger)
|
330
|
+
```
|
331
|
+
|
332
|
+
You can configure the logger globally too:
|
333
|
+
|
334
|
+
``` ruby
|
335
|
+
MyMoip.logger = Rails.logger
|
336
|
+
```
|
337
|
+
|
338
|
+
|
286
339
|
## Going alive!
|
287
340
|
|
288
341
|
If you are ready to get your application using MyMoip approved by MoIP or already have valid production keys, you can read a specific [documentation](https://github.com/Irio/mymoip/wiki/Going-alive).
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module MyMoip
|
2
|
+
class BankDebit
|
3
|
+
include ActiveModel::Validations
|
4
|
+
|
5
|
+
attr_accessor :bank
|
6
|
+
|
7
|
+
AVAILABLE_BANKS = [:banco_do_brasil, :bradesco, :banrisul, :itau]
|
8
|
+
|
9
|
+
validates :bank, presence: true, inclusion: AVAILABLE_BANKS
|
10
|
+
|
11
|
+
def initialize(attrs)
|
12
|
+
attrs.each do |attr, value|
|
13
|
+
public_send(:"#{attr}=", value)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def bank=(value)
|
18
|
+
value = value.to_sym unless value.nil?
|
19
|
+
@bank = value
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/mymoip/credit_card.rb
CHANGED
@@ -3,7 +3,8 @@ module MyMoip
|
|
3
3
|
include ActiveModel::Validations
|
4
4
|
|
5
5
|
attr_accessor :logo, :card_number, :expiration_date, :security_code,
|
6
|
-
|
6
|
+
:owner_name, :owner_birthday, :owner_phone, :owner_cpf,
|
7
|
+
:perform_extra_validation
|
7
8
|
|
8
9
|
AVAILABLE_LOGOS = [
|
9
10
|
:american_express, :diners, :hipercard, :mastercard, :visa
|
@@ -12,8 +13,13 @@ module MyMoip
|
|
12
13
|
validates_presence_of :logo, :security_code
|
13
14
|
validates_length_of :owner_phone, within: 10..11, allow_nil: true
|
14
15
|
validates_length_of :security_code, within: 3..4
|
15
|
-
validates_format_of :expiration_date, with: /\A(?:(?:0[1-9])|(?:1[
|
16
|
+
validates_format_of :expiration_date, with: /\A(?:(?:0[1-9])|(?:1[0-2]))\/\d{2}\Z/ # %m/%y
|
16
17
|
validates_inclusion_of :logo, in: AVAILABLE_LOGOS
|
18
|
+
validate :owner_birthday_format
|
19
|
+
validates_presence_of :card_number, :expiration_date, :owner_name,
|
20
|
+
:owner_phone, :owner_cpf,
|
21
|
+
if: ->(resource) { resource.perform_extra_validation }
|
22
|
+
|
17
23
|
|
18
24
|
def initialize(attrs)
|
19
25
|
attrs.each do |attr, value|
|
@@ -27,10 +33,9 @@ module MyMoip
|
|
27
33
|
end
|
28
34
|
|
29
35
|
def owner_birthday=(value)
|
30
|
-
unless value.nil?
|
31
|
-
|
32
|
-
|
33
|
-
@owner_birthday = value
|
36
|
+
value = Date.parse(value.to_s) unless value.nil?
|
37
|
+
rescue ArgumentError; ensure
|
38
|
+
@owner_birthday = value
|
34
39
|
end
|
35
40
|
|
36
41
|
def owner_phone=(value)
|
@@ -55,5 +60,14 @@ module MyMoip
|
|
55
60
|
end
|
56
61
|
@owner_cpf = value
|
57
62
|
end
|
63
|
+
|
64
|
+
|
65
|
+
private
|
66
|
+
|
67
|
+
def owner_birthday_format
|
68
|
+
Date.parse(owner_birthday.to_s) unless owner_birthday.nil?
|
69
|
+
rescue ArgumentError
|
70
|
+
errors.add(:owner_birthday)
|
71
|
+
end
|
58
72
|
end
|
59
73
|
end
|
data/lib/mymoip/exceptions.rb
CHANGED
@@ -0,0 +1,27 @@
|
|
1
|
+
module MyMoip
|
2
|
+
class BankDebitPayment < Payment
|
3
|
+
attr_accessor :bank_debit
|
4
|
+
|
5
|
+
def initialize(bank_debit)
|
6
|
+
@bank_debit = bank_debit
|
7
|
+
end
|
8
|
+
|
9
|
+
def to_json
|
10
|
+
raise InvalidBankDebit, "No bank debit information provided." if @bank_debit.nil?
|
11
|
+
raise InvalidBankDebit if @bank_debit.invalid?
|
12
|
+
|
13
|
+
json = {
|
14
|
+
Forma: "DebitoBancario",
|
15
|
+
}
|
16
|
+
|
17
|
+
json[:Instituicao] = {
|
18
|
+
banco_do_brasil: "BancoDoBrasil",
|
19
|
+
bradesco: "Bradesco",
|
20
|
+
banrisul: "Banrisul",
|
21
|
+
itau: "Itau"
|
22
|
+
}.fetch(@bank_debit.bank)
|
23
|
+
|
24
|
+
json
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -1,19 +1,24 @@
|
|
1
1
|
module MyMoip
|
2
2
|
class PaymentRequest < Request
|
3
3
|
|
4
|
-
HTTP_METHOD
|
5
|
-
PATH
|
6
|
-
REQUIRES_AUTH
|
7
|
-
FORMAT
|
4
|
+
HTTP_METHOD = :get
|
5
|
+
PATH = "/rest/pagamento?callback=?"
|
6
|
+
REQUIRES_AUTH = false
|
7
|
+
FORMAT = :json
|
8
|
+
PAYMENT_SLIP_PATH = "/Instrucao.do?token="
|
9
|
+
|
10
|
+
attr_reader :token
|
8
11
|
|
9
12
|
def api_call(data, opts)
|
13
|
+
@token = opts[:token]
|
14
|
+
|
10
15
|
opts[:referer_url] ||= MyMoip.default_referer_url
|
11
16
|
opts[:parser] ||= MyMoip::JsonParser
|
12
17
|
|
13
18
|
json = JSON.generate({
|
14
19
|
pagamentoWidget: {
|
15
20
|
referer: opts[:referer_url],
|
16
|
-
token:
|
21
|
+
token: token,
|
17
22
|
dadosPagamento: data.to_json
|
18
23
|
}
|
19
24
|
})
|
@@ -27,13 +32,17 @@ module MyMoip
|
|
27
32
|
}
|
28
33
|
params[:parser] = opts.delete(:parser) unless opts[:parser].nil?
|
29
34
|
|
30
|
-
super(params)
|
35
|
+
super(params, opts)
|
31
36
|
end
|
32
37
|
|
33
38
|
def success?
|
34
39
|
@response && @response["StatusPagamento"] == "Sucesso"
|
35
40
|
end
|
36
41
|
|
42
|
+
def url
|
43
|
+
MyMoip.api_url + PAYMENT_SLIP_PATH + token if success?
|
44
|
+
end
|
45
|
+
|
37
46
|
def code
|
38
47
|
@response["CodigoMoIP"]
|
39
48
|
rescue NoMethodError => e
|
data/lib/mymoip/version.rb
CHANGED
data/test/fixtures/fixture.rb
CHANGED
@@ -63,7 +63,11 @@ class Fixture
|
|
63
63
|
instruction_line_3: 'Line 3',
|
64
64
|
logo_url: 'http://www.myurl.com/logo.png'
|
65
65
|
}.merge(params)
|
66
|
-
|
67
66
|
MyMoip::PaymentSlip.new(params)
|
68
67
|
end
|
68
|
+
|
69
|
+
def self.bank_debit(params = {})
|
70
|
+
params = { bank: :itau }.merge(params)
|
71
|
+
MyMoip::BankDebit.new(params)
|
72
|
+
end
|
69
73
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://YOUR_MOIP_TOKEN:YOUR_MOIP_KEY@desenvolvedor.moip.com.br/sandbox/rest/pagamento?callback=?&pagamentoWidget=%7B%22pagamentoWidget%22:%7B%22referer%22:%22http://localhost/default%22,%22token%22:%22D2O0U1W2K1P1D1R2C2E3H0N3L5X3A2E4E3X0X030T090T0A1D1V2T8X500E3%22,%22dadosPagamento%22:%7B%22Forma%22:%22BoletoBancario%22%7D%7D%7D
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers: {}
|
10
|
+
response:
|
11
|
+
status:
|
12
|
+
code: 200
|
13
|
+
message: OK
|
14
|
+
headers:
|
15
|
+
Date:
|
16
|
+
- Tue, 24 Sep 2013 13:46:21 GMT
|
17
|
+
Server:
|
18
|
+
- Apache
|
19
|
+
Content-Length:
|
20
|
+
- '92'
|
21
|
+
Vary:
|
22
|
+
- Accept-Encoding
|
23
|
+
Content-Type:
|
24
|
+
- application/json
|
25
|
+
body:
|
26
|
+
encoding: ASCII-8BIT
|
27
|
+
string: !binary |-
|
28
|
+
Pyh7IkNvZGlnbyI6MCwiU3RhdHVzUGFnYW1lbnRvIjoiU3VjZXNzbyIsIk1l
|
29
|
+
bnNhZ2VtIjoiUmVxdWlzaW8gcHJvY2Vzc2FkYSBjb20gc3VjZXNzbyJ9KQ==
|
30
|
+
http_version:
|
31
|
+
recorded_at: Tue, 24 Sep 2013 13:46:22 GMT
|
32
|
+
recorded_with: VCR 2.5.0
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require_relative '../test_helper'
|
2
|
+
|
3
|
+
class TestBankDebit < Test::Unit::TestCase
|
4
|
+
def test_initialization_and_setters
|
5
|
+
subject = MyMoip::BankDebit.new(bank: :itau)
|
6
|
+
assert_equal :itau, subject.bank
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_initialization_and_setters_with_string_keys
|
10
|
+
subject = MyMoip::BankDebit.new('bank' => :itau)
|
11
|
+
assert_equal :itau, subject.bank
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_validate_presence_of_bank_attribute
|
15
|
+
subject = Fixture.bank_debit(bank: nil)
|
16
|
+
assert subject.invalid? && subject.errors[:bank].present?,
|
17
|
+
'should be invalid without a bank name'
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_converts_bank_string_to_symbol
|
21
|
+
subject = Fixture.bank_debit(bank: "itau")
|
22
|
+
assert_equal :itau, subject.bank
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_accepts_any_bank_from_available_banks_constant
|
26
|
+
MyMoip::BankDebit::AVAILABLE_BANKS.each do |bank|
|
27
|
+
subject = Fixture.bank_debit(bank: bank)
|
28
|
+
assert subject.valid?, 'should be valid'
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_dont_accept_bank_out_of_available_banks_constant
|
33
|
+
subject = Fixture.bank_debit(bank: :unavailable_bank)
|
34
|
+
assert subject.invalid? && subject.errors[:bank].present?, 'should not be valid'
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require_relative '../test_helper'
|
2
|
+
|
3
|
+
class TestBankDebitPayment < Test::Unit::TestCase
|
4
|
+
def test_initialization_and_setters
|
5
|
+
bank_debit = Fixture.bank_debit
|
6
|
+
subject = MyMoip::BankDebitPayment.new(bank_debit)
|
7
|
+
assert_equal bank_debit, subject.bank_debit
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_json_format
|
11
|
+
payment = MyMoip::BankDebitPayment.new(Fixture.bank_debit)
|
12
|
+
assert_equal "DebitoBancario", payment.to_json[:Forma]
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_to_json_should_accept_any_bank_from_available_banks_constant
|
16
|
+
MyMoip::BankDebit::AVAILABLE_BANKS.each do |bank|
|
17
|
+
payment = MyMoip::BankDebitPayment.new(Fixture.bank_debit(bank: bank))
|
18
|
+
assert_nothing_raised(KeyError) { payment.to_json }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_to_json_method_raises_an_exception_when_called_without_a_bank_debit
|
23
|
+
subject = MyMoip::BankDebitPayment.new(nil)
|
24
|
+
assert_raise(MyMoip::InvalidBankDebit) { subject.to_json }
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_to_json_method_raises_an_exception_when_called_with_a_invalid_bank_debit
|
28
|
+
subject = MyMoip::BankDebitPayment.new(Fixture.bank_debit)
|
29
|
+
MyMoip::BankDebit.any_instance.stubs(:invalid?).returns(true)
|
30
|
+
assert_raise(MyMoip::InvalidBankDebit) { subject.to_json }
|
31
|
+
end
|
32
|
+
end
|
data/test/lib/test_creditcard.rb
CHANGED
@@ -10,7 +10,8 @@ class TestCreditCard < Test::Unit::TestCase
|
|
10
10
|
owner_name: "Juquinha da Rocha",
|
11
11
|
owner_birthday: Date.new(1984, 11, 3),
|
12
12
|
owner_phone: "5130405060",
|
13
|
-
owner_cpf: "522.116.706-95"
|
13
|
+
owner_cpf: "522.116.706-95",
|
14
|
+
perform_extra_validation: true
|
14
15
|
)
|
15
16
|
|
16
17
|
assert_equal :visa, subject.logo
|
@@ -21,18 +22,20 @@ class TestCreditCard < Test::Unit::TestCase
|
|
21
22
|
assert_equal Date.new(1984, 11, 3), subject.owner_birthday
|
22
23
|
assert_equal "5130405060", subject.owner_phone
|
23
24
|
assert_equal "52211670695", subject.owner_cpf
|
25
|
+
assert_equal true, subject.perform_extra_validation
|
24
26
|
end
|
25
27
|
|
26
28
|
def test_initialization_and_setters_with_string_keys
|
27
29
|
subject = MyMoip::CreditCard.new(
|
28
|
-
'logo'
|
29
|
-
'card_number'
|
30
|
-
'expiration_date'
|
31
|
-
'security_code'
|
32
|
-
'owner_name'
|
33
|
-
'owner_birthday'
|
34
|
-
'owner_phone'
|
35
|
-
'owner_cpf'
|
30
|
+
'logo' => :visa,
|
31
|
+
'card_number' => '4916654211627608',
|
32
|
+
'expiration_date' => '06/15',
|
33
|
+
'security_code' => '000',
|
34
|
+
'owner_name' => 'Juquinha da Rocha',
|
35
|
+
'owner_birthday' => Date.new(1984, 11, 3),
|
36
|
+
'owner_phone' => '5130405060',
|
37
|
+
'owner_cpf' => '522.116.706-95',
|
38
|
+
'perform_extra_validation' => false
|
36
39
|
)
|
37
40
|
|
38
41
|
assert_equal :visa, subject.logo
|
@@ -43,6 +46,7 @@ class TestCreditCard < Test::Unit::TestCase
|
|
43
46
|
assert_equal Date.new(1984, 11, 3), subject.owner_birthday
|
44
47
|
assert_equal "5130405060", subject.owner_phone
|
45
48
|
assert_equal "52211670695", subject.owner_cpf
|
49
|
+
assert_equal false, subject.perform_extra_validation
|
46
50
|
end
|
47
51
|
|
48
52
|
def test_validate_presence_of_logo_attribute
|
@@ -58,6 +62,19 @@ class TestCreditCard < Test::Unit::TestCase
|
|
58
62
|
assert_equal Date.new(1980, 12, 20), subject.owner_birthday
|
59
63
|
end
|
60
64
|
|
65
|
+
def test_owner_birthday_accepts_input_of_invalid_dates
|
66
|
+
subject = Fixture.credit_card
|
67
|
+
subject.owner_birthday = '50/12/1980'
|
68
|
+
assert_equal '50/12/1980', subject.owner_birthday
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_validate_format_of_birthday_date
|
72
|
+
subject = Fixture.credit_card
|
73
|
+
subject.owner_birthday = '50/12/1980'
|
74
|
+
assert subject.invalid? && subject.errors[:owner_birthday].present?,
|
75
|
+
'should be valid'
|
76
|
+
end
|
77
|
+
|
61
78
|
def test_validate_presence_of_security_code_attribute
|
62
79
|
subject = Fixture.credit_card
|
63
80
|
subject.security_code = nil
|
@@ -81,6 +98,23 @@ class TestCreditCard < Test::Unit::TestCase
|
|
81
98
|
'should not accept strings with other than 10 or 11 chars'
|
82
99
|
end
|
83
100
|
|
101
|
+
def test_perform_extra_validation
|
102
|
+
subject = Fixture.credit_card({
|
103
|
+
card_number: nil,
|
104
|
+
expiration_date: nil,
|
105
|
+
owner_name: nil,
|
106
|
+
owner_phone: nil,
|
107
|
+
owner_cpf: nil,
|
108
|
+
perform_extra_validation: true
|
109
|
+
})
|
110
|
+
assert subject.invalid?
|
111
|
+
assert subject.errors[:card_number], "can't be blank"
|
112
|
+
assert subject.errors[:expiration_date], "can't be blank"
|
113
|
+
assert subject.errors[:owner_name], "can't be blank"
|
114
|
+
assert subject.errors[:owner_phone], "can't be blank"
|
115
|
+
assert subject.errors[:owner_cpf], "can't be blank"
|
116
|
+
end
|
117
|
+
|
84
118
|
def test_remove_left_zeros_from_owner_phone
|
85
119
|
subject = Fixture.credit_card
|
86
120
|
subject.owner_phone = '05130405060'
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require_relative '../test_helper'
|
2
|
+
|
3
|
+
class TestPayment < Test::Unit::TestCase
|
4
|
+
def test_payment_method_when_payment_split
|
5
|
+
assert_equal :payment_slip, MyMoip::PaymentSlipPayment.payment_method
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_payment_method_when_bank_debit
|
9
|
+
assert_equal :bank_debit, MyMoip::BankDebitPayment.payment_method
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_payment_method_when_credit_card
|
13
|
+
assert_equal :credit_card, MyMoip::CreditCardPayment.payment_method
|
14
|
+
end
|
15
|
+
end
|
@@ -93,4 +93,28 @@ class TestPaymentRequest < Test::Unit::TestCase
|
|
93
93
|
payment_request = MyMoip::PaymentRequest.new("your_own_id")
|
94
94
|
assert_nil payment_request.code
|
95
95
|
end
|
96
|
+
|
97
|
+
def test_method_to_get_response_url
|
98
|
+
instruction = Fixture.instruction(payer: Fixture.payer)
|
99
|
+
transparent_request = MyMoip::TransparentRequest.new("your_own_id")
|
100
|
+
VCR.use_cassette('transparent_request') do
|
101
|
+
transparent_request.api_call(instruction)
|
102
|
+
end
|
103
|
+
payment_slip_payment = MyMoip::PaymentSlipPayment.new
|
104
|
+
payment_request = MyMoip::PaymentRequest.new("your_own_id")
|
105
|
+
VCR.use_cassette('payment_request_with_payment_slip') do
|
106
|
+
payment_request.api_call(payment_slip_payment, token: transparent_request.token)
|
107
|
+
end
|
108
|
+
assert_equal "https://desenvolvedor.moip.com.br/sandbox/Instrucao.do?token=#{transparent_request.token}", payment_request.url
|
109
|
+
end
|
110
|
+
|
111
|
+
def test_url_method_should_return_nil_with_blank_response
|
112
|
+
instruction = Fixture.instruction(payer: Fixture.payer)
|
113
|
+
transparent_request = MyMoip::TransparentRequest.new("your_own_id")
|
114
|
+
VCR.use_cassette('transparent_request') do
|
115
|
+
transparent_request.api_call(instruction)
|
116
|
+
end
|
117
|
+
payment_request = MyMoip::PaymentRequest.new("your_own_id")
|
118
|
+
assert_nil payment_request.url
|
119
|
+
end
|
96
120
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mymoip
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Irio Irineu Musskopf Junior
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-10-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -152,16 +152,20 @@ files:
|
|
152
152
|
- README.md
|
153
153
|
- Rakefile
|
154
154
|
- lib/mymoip.rb
|
155
|
+
- lib/mymoip/bank_debit.rb
|
155
156
|
- lib/mymoip/commission.rb
|
156
157
|
- lib/mymoip/credit_card.rb
|
157
|
-
- lib/mymoip/credit_card_payment.rb
|
158
158
|
- lib/mymoip/exceptions.rb
|
159
159
|
- lib/mymoip/formatter.rb
|
160
160
|
- lib/mymoip/instruction.rb
|
161
161
|
- lib/mymoip/json_parser.rb
|
162
162
|
- lib/mymoip/payer.rb
|
163
|
+
- lib/mymoip/payment.rb
|
163
164
|
- lib/mymoip/payment_methods.rb
|
164
165
|
- lib/mymoip/payment_slip.rb
|
166
|
+
- lib/mymoip/payments/bank_debit_payment.rb
|
167
|
+
- lib/mymoip/payments/credit_card_payment.rb
|
168
|
+
- lib/mymoip/payments/payment_slip_payment.rb
|
165
169
|
- lib/mymoip/purchase.rb
|
166
170
|
- lib/mymoip/request.rb
|
167
171
|
- lib/mymoip/requests/payment_request.rb
|
@@ -171,8 +175,11 @@ files:
|
|
171
175
|
- mymoip.gemspec
|
172
176
|
- test/fixtures/fixture.rb
|
173
177
|
- test/fixtures/vcr_cassettes/payment_request.yml
|
178
|
+
- test/fixtures/vcr_cassettes/payment_request_with_payment_slip.yml
|
174
179
|
- test/fixtures/vcr_cassettes/transparent_request.yml
|
175
180
|
- test/fixtures/vcr_cassettes/transparent_request_with_commissions.yml
|
181
|
+
- test/lib/test_bank_debit.rb
|
182
|
+
- test/lib/test_bank_debit_payment.rb
|
176
183
|
- test/lib/test_commission.rb
|
177
184
|
- test/lib/test_credit_card_payment.rb
|
178
185
|
- test/lib/test_creditcard.rb
|
@@ -180,9 +187,11 @@ files:
|
|
180
187
|
- test/lib/test_instruction.rb
|
181
188
|
- test/lib/test_mymoip.rb
|
182
189
|
- test/lib/test_payer.rb
|
190
|
+
- test/lib/test_payment.rb
|
183
191
|
- test/lib/test_payment_methods.rb
|
184
192
|
- test/lib/test_payment_request.rb
|
185
193
|
- test/lib/test_payment_slip.rb
|
194
|
+
- test/lib/test_payment_slip_payment.rb
|
186
195
|
- test/lib/test_purchase.rb
|
187
196
|
- test/lib/test_request.rb
|
188
197
|
- test/lib/test_transparent_request.rb
|
@@ -209,15 +218,18 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
209
218
|
version: '0'
|
210
219
|
requirements: []
|
211
220
|
rubyforge_project:
|
212
|
-
rubygems_version: 2.0
|
221
|
+
rubygems_version: 2.1.0
|
213
222
|
signing_key:
|
214
223
|
specification_version: 4
|
215
224
|
summary: MoIP transactions in a gem to call your own.
|
216
225
|
test_files:
|
217
226
|
- test/fixtures/fixture.rb
|
218
227
|
- test/fixtures/vcr_cassettes/payment_request.yml
|
228
|
+
- test/fixtures/vcr_cassettes/payment_request_with_payment_slip.yml
|
219
229
|
- test/fixtures/vcr_cassettes/transparent_request.yml
|
220
230
|
- test/fixtures/vcr_cassettes/transparent_request_with_commissions.yml
|
231
|
+
- test/lib/test_bank_debit.rb
|
232
|
+
- test/lib/test_bank_debit_payment.rb
|
221
233
|
- test/lib/test_commission.rb
|
222
234
|
- test/lib/test_credit_card_payment.rb
|
223
235
|
- test/lib/test_creditcard.rb
|
@@ -225,9 +237,11 @@ test_files:
|
|
225
237
|
- test/lib/test_instruction.rb
|
226
238
|
- test/lib/test_mymoip.rb
|
227
239
|
- test/lib/test_payer.rb
|
240
|
+
- test/lib/test_payment.rb
|
228
241
|
- test/lib/test_payment_methods.rb
|
229
242
|
- test/lib/test_payment_request.rb
|
230
243
|
- test/lib/test_payment_slip.rb
|
244
|
+
- test/lib/test_payment_slip_payment.rb
|
231
245
|
- test/lib/test_purchase.rb
|
232
246
|
- test/lib/test_request.rb
|
233
247
|
- test/lib/test_transparent_request.rb
|