mercadopago-sdk 2.2.1 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/{ruby.yml → ci.yml} +9 -5
- data/.github/workflows/release.yml +45 -0
- data/.ruby-version +1 -1
- data/Gemfile +1 -1
- data/Gemfile.lock +29 -23
- data/README.md +7 -1
- data/Rakefile +1 -0
- data/lib/mercadopago/config/config.rb +1 -1
- data/mercadopago.gemspec +2 -2
- data/tests/test_card.rb +1 -1
- data/tests/test_card_token.rb +2 -2
- data/tests/test_customer.rb +4 -3
- data/tests/test_identification_type.rb +1 -1
- data/tests/test_merchant_order.rb +37 -5
- data/tests/test_payment.rb +140 -6
- data/tests/test_payment_methods.rb +1 -1
- data/tests/test_preapproval.rb +4 -15
- data/tests/test_preference.rb +32 -8
- data/tests/test_refund.rb +16 -60
- data/tests/test_refund_with_custom_headers.rb +16 -60
- data/tests/test_user.rb +1 -1
- data/tests/tests.rb +4 -2
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 94e71f8ec0cdd17293a60086ba6825b04744cd6b567773b289589bbf1994474d
|
4
|
+
data.tar.gz: f64e7346d4b9ae69c61abdd6230227ffa15c87cd2b01995b0456bed34d1de209
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c50127ebb2de9da062100c3b744239de83473f2c1f1ca8ec19c09a70bc46c7a9eebadc75dbb58816a306e474ff9a53880191eed17cba4b0cfdf07963a2437b38
|
7
|
+
data.tar.gz: 84501cb05a223166d6afb6fa7ac3017f67d91cdc2ceb9fcc189a4027b0c7b926858fb1c587d8ed8d41fa3f72cfef3393ac09077dd5c74b608844f0818d170dd7
|
@@ -10,7 +10,7 @@ name: Ruby
|
|
10
10
|
on:
|
11
11
|
push:
|
12
12
|
branches: [ master ]
|
13
|
-
|
13
|
+
pull_request_target:
|
14
14
|
branches: [ master ]
|
15
15
|
|
16
16
|
jobs:
|
@@ -19,14 +19,18 @@ jobs:
|
|
19
19
|
runs-on: ubuntu-latest
|
20
20
|
|
21
21
|
steps:
|
22
|
-
-
|
22
|
+
- name: Checkout code
|
23
|
+
uses: actions/checkout@v3
|
24
|
+
with:
|
25
|
+
ref: ${{ github.event.pull_request.head.ref }}
|
26
|
+
repository: ${{ github.event.pull_request.head.repo.full_name }}
|
27
|
+
|
23
28
|
- name: Set up Ruby
|
24
29
|
# To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
|
25
30
|
# change this to (see https://github.com/ruby/setup-ruby#versioning):
|
26
|
-
|
27
|
-
uses: ruby/setup-ruby@21351ecc0a7c196081abca5dc55b08f085efe09a
|
31
|
+
uses: ruby/setup-ruby@v1
|
28
32
|
with:
|
29
|
-
ruby-version:
|
33
|
+
ruby-version: 3.1.6
|
30
34
|
- name: Install dependencies
|
31
35
|
run: bundle install
|
32
36
|
- name: Rubocop
|
@@ -0,0 +1,45 @@
|
|
1
|
+
name: Release SDK - Publish Gem
|
2
|
+
|
3
|
+
on:
|
4
|
+
release:
|
5
|
+
types: [created]
|
6
|
+
|
7
|
+
jobs:
|
8
|
+
release:
|
9
|
+
runs-on: ubuntu-latest
|
10
|
+
|
11
|
+
permissions:
|
12
|
+
contents: write
|
13
|
+
id-token: write
|
14
|
+
|
15
|
+
steps:
|
16
|
+
- name: Checkout code
|
17
|
+
uses: actions/checkout@v4
|
18
|
+
|
19
|
+
- name: Setup Ruby
|
20
|
+
uses: ruby/setup-ruby@v1
|
21
|
+
with:
|
22
|
+
bundler-cache: true
|
23
|
+
|
24
|
+
- name: Install dependencies
|
25
|
+
run: bundle install
|
26
|
+
|
27
|
+
- name: Validate gemspec
|
28
|
+
run: gem build mercadopago.gemspec
|
29
|
+
|
30
|
+
- name: Build gem
|
31
|
+
shell: bash
|
32
|
+
run: gem build *.gemspec
|
33
|
+
|
34
|
+
- name: Configure RubyGems Credentials
|
35
|
+
uses: rubygems/configure-rubygems-credentials@main
|
36
|
+
with:
|
37
|
+
role-to-assume: ${{ secrets.RUBYGEMS_API_KEY }}
|
38
|
+
|
39
|
+
- name: Publish gem to rubygems.org
|
40
|
+
shell: bash
|
41
|
+
run: gem push *.gem
|
42
|
+
|
43
|
+
- name: Wait for release to propagate
|
44
|
+
run: |
|
45
|
+
gem install rubygems-await
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
3.1.6
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
mercadopago-sdk (2.
|
4
|
+
mercadopago-sdk (2.3.0)
|
5
5
|
json (~> 2.5)
|
6
6
|
rest-client (~> 2.1)
|
7
7
|
|
@@ -10,46 +10,52 @@ GEM
|
|
10
10
|
specs:
|
11
11
|
ast (2.4.2)
|
12
12
|
coderay (1.1.3)
|
13
|
-
domain_name (0.
|
14
|
-
unf (>= 0.0.5, < 1.0.0)
|
13
|
+
domain_name (0.6.20240107)
|
15
14
|
http-accept (1.7.0)
|
16
|
-
http-cookie (1.0.
|
15
|
+
http-cookie (1.0.8)
|
17
16
|
domain_name (~> 0.5)
|
18
|
-
|
19
|
-
|
17
|
+
json (2.9.1)
|
18
|
+
language_server-protocol (3.17.0.3)
|
19
|
+
logger (1.6.5)
|
20
20
|
method_source (1.0.0)
|
21
|
-
mime-types (3.
|
21
|
+
mime-types (3.6.0)
|
22
|
+
logger
|
22
23
|
mime-types-data (~> 3.2015)
|
23
|
-
mime-types-data (3.
|
24
|
+
mime-types-data (3.2025.0107)
|
24
25
|
minitest (5.14.4)
|
25
26
|
netrc (0.11.0)
|
26
|
-
parallel (1.
|
27
|
-
parser (3.
|
27
|
+
parallel (1.26.3)
|
28
|
+
parser (3.3.6.0)
|
28
29
|
ast (~> 2.4.1)
|
30
|
+
racc
|
29
31
|
pry (0.14.1)
|
30
32
|
coderay (~> 1.1)
|
31
33
|
method_source (~> 1.0)
|
32
|
-
|
34
|
+
racc (1.8.1)
|
35
|
+
rainbow (3.1.1)
|
33
36
|
rake (13.0.3)
|
37
|
+
regexp_parser (2.10.0)
|
34
38
|
rest-client (2.1.0)
|
35
39
|
http-accept (>= 1.7.0, < 2.0)
|
36
40
|
http-cookie (>= 1.0.2, < 2.0)
|
37
41
|
mime-types (>= 1.16, < 4.0)
|
38
42
|
netrc (~> 0.8)
|
39
|
-
|
40
|
-
|
41
|
-
|
43
|
+
rubocop (1.70.0)
|
44
|
+
json (~> 2.3)
|
45
|
+
language_server-protocol (>= 3.17.0)
|
42
46
|
parallel (~> 1.10)
|
43
|
-
parser (>=
|
47
|
+
parser (>= 3.3.0.2)
|
44
48
|
rainbow (>= 2.2.2, < 4.0)
|
45
|
-
|
49
|
+
regexp_parser (>= 2.9.3, < 3.0)
|
50
|
+
rubocop-ast (>= 1.36.2, < 2.0)
|
46
51
|
ruby-progressbar (~> 1.7)
|
47
|
-
unicode-display_width (>=
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
52
|
+
unicode-display_width (>= 2.4.0, < 4.0)
|
53
|
+
rubocop-ast (1.37.0)
|
54
|
+
parser (>= 3.3.1.0)
|
55
|
+
ruby-progressbar (1.13.0)
|
56
|
+
unicode-display_width (3.1.4)
|
57
|
+
unicode-emoji (~> 4.0, >= 4.0.4)
|
58
|
+
unicode-emoji (4.0.4)
|
53
59
|
|
54
60
|
PLATFORMS
|
55
61
|
ruby
|
@@ -59,7 +65,7 @@ DEPENDENCIES
|
|
59
65
|
minitest
|
60
66
|
pry (~> 0.14)
|
61
67
|
rake
|
62
|
-
rubocop
|
68
|
+
rubocop (~> 1.70)
|
63
69
|
|
64
70
|
BUNDLED WITH
|
65
71
|
2.2.22
|
data/README.md
CHANGED
@@ -29,6 +29,12 @@ require 'mercadopago'
|
|
29
29
|
|
30
30
|
sdk = Mercadopago::SDK.new('YOUR_ACCESS_TOKEN')
|
31
31
|
|
32
|
+
custom_headers = {
|
33
|
+
'x-idempotency-key': '<SOME_UNIQUE_VALUE>'
|
34
|
+
}
|
35
|
+
|
36
|
+
custom_request_options = Mercadopago::RequestOptions.new(custom_headers: custom_headers)
|
37
|
+
|
32
38
|
payment_data = {
|
33
39
|
transaction_amount: 100,
|
34
40
|
token: 'CARD_TOKEN',
|
@@ -39,7 +45,7 @@ payment_data = {
|
|
39
45
|
email: 'test_user_123456@testuser.com'
|
40
46
|
}
|
41
47
|
}
|
42
|
-
result = sdk.payment.create(payment_data)
|
48
|
+
result = sdk.payment.create(payment_data, custom_request_options)
|
43
49
|
payment = result[:response]
|
44
50
|
|
45
51
|
puts payment
|
data/Rakefile
CHANGED
data/mercadopago.gemspec
CHANGED
@@ -2,8 +2,8 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |gem|
|
4
4
|
gem.name = 'mercadopago-sdk'
|
5
|
-
gem.version = '2.
|
6
|
-
gem.required_ruby_version = '>=
|
5
|
+
gem.version = '2.3.0'
|
6
|
+
gem.required_ruby_version = '>= 3.1.6'
|
7
7
|
gem.author = 'Mercado Pago'
|
8
8
|
gem.description = 'Mercado Pago Ruby SDK'
|
9
9
|
gem.summary = 'Mercado Pago Ruby SDK'
|
data/tests/test_card.rb
CHANGED
@@ -7,7 +7,7 @@ require 'minitest/autorun'
|
|
7
7
|
|
8
8
|
class TestCard < Minitest::Test
|
9
9
|
def test_all
|
10
|
-
sdk = Mercadopago::SDK.new('
|
10
|
+
sdk = Mercadopago::SDK.new(ENV['ACCESS_TOKEN'])
|
11
11
|
|
12
12
|
customer_object = {
|
13
13
|
email: 'test_payer_999944@testuser.com',
|
data/tests/test_card_token.rb
CHANGED
@@ -7,7 +7,7 @@ require 'minitest/autorun'
|
|
7
7
|
|
8
8
|
class CardToken < Minitest::Test
|
9
9
|
def test_method_get_id
|
10
|
-
sdk = Mercadopago::SDK.new('
|
10
|
+
sdk = Mercadopago::SDK.new(ENV['ACCESS_TOKEN'])
|
11
11
|
card_token_object = {
|
12
12
|
card_number: '5031433215406351',
|
13
13
|
expiration_year: 2025,
|
@@ -23,7 +23,7 @@ class CardToken < Minitest::Test
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def test_method_post
|
26
|
-
sdk = Mercadopago::SDK.new('
|
26
|
+
sdk = Mercadopago::SDK.new(ENV['ACCESS_TOKEN'])
|
27
27
|
card_token_object = {
|
28
28
|
card_number: '5031433215406351',
|
29
29
|
expiration_year: 2025,
|
data/tests/test_customer.rb
CHANGED
@@ -7,7 +7,7 @@ require 'minitest/autorun'
|
|
7
7
|
|
8
8
|
class TestCustomer < Minitest::Test
|
9
9
|
def test_all
|
10
|
-
sdk = Mercadopago::SDK.new('
|
10
|
+
sdk = Mercadopago::SDK.new(ENV['ACCESS_TOKEN'])
|
11
11
|
|
12
12
|
customer_object = {
|
13
13
|
email: 'test_payer_999922@testuser.com',
|
@@ -22,8 +22,9 @@ class TestCustomer < Minitest::Test
|
|
22
22
|
number: '29804555'
|
23
23
|
},
|
24
24
|
address: {
|
25
|
-
zip_code: '
|
26
|
-
street_name: 'some street'
|
25
|
+
zip_code: '26515069',
|
26
|
+
street_name: 'some street',
|
27
|
+
street_number: 123
|
27
28
|
},
|
28
29
|
description: 'customer description'
|
29
30
|
}
|
@@ -7,7 +7,7 @@ require 'minitest/autorun'
|
|
7
7
|
|
8
8
|
class TestIdentificationType < Minitest::Test
|
9
9
|
def test_method_get
|
10
|
-
sdk = Mercadopago::SDK.new('
|
10
|
+
sdk = Mercadopago::SDK.new(ENV['ACCESS_TOKEN'])
|
11
11
|
sdk.request_options = Mercadopago::RequestOptions.new(corporation_id: 'abc')
|
12
12
|
result = sdk.identification_type.get
|
13
13
|
|
@@ -7,13 +7,13 @@ require 'minitest/autorun'
|
|
7
7
|
|
8
8
|
class TestMerchantOrden < Minitest::Test
|
9
9
|
def test_method_search
|
10
|
-
sdk = Mercadopago::SDK.new('
|
10
|
+
sdk = Mercadopago::SDK.new(ENV['ACCESS_TOKEN'])
|
11
11
|
result = sdk.merchant_order.search(filters: { id: 123_187_219_6 })
|
12
12
|
assert_equal 200, result[:status]
|
13
13
|
end
|
14
14
|
|
15
15
|
def test_method_post
|
16
|
-
sdk = Mercadopago::SDK.new('
|
16
|
+
sdk = Mercadopago::SDK.new(ENV['ACCESS_TOKEN'])
|
17
17
|
data = {
|
18
18
|
items: [
|
19
19
|
{
|
@@ -48,13 +48,45 @@ class TestMerchantOrden < Minitest::Test
|
|
48
48
|
end
|
49
49
|
|
50
50
|
def test_method_get_id
|
51
|
-
sdk = Mercadopago::SDK.new('
|
52
|
-
|
51
|
+
sdk = Mercadopago::SDK.new(ENV['ACCESS_TOKEN'])
|
52
|
+
|
53
|
+
data = {
|
54
|
+
items: [
|
55
|
+
{
|
56
|
+
title: 'Dummy Item',
|
57
|
+
description: 'Multicolor Item',
|
58
|
+
quantity: 1,
|
59
|
+
currency_id: '',
|
60
|
+
unit_price: 10.0
|
61
|
+
}
|
62
|
+
]
|
63
|
+
}
|
64
|
+
result_prefence = sdk.preference.create(data)
|
65
|
+
merchant_orden_object = {
|
66
|
+
preference_id: result_prefence[:response]['id'],
|
67
|
+
site_id: 'MLB',
|
68
|
+
notification_url: 'https://seller/notification',
|
69
|
+
additional_info: 'Aditional info',
|
70
|
+
external_reference: 1,
|
71
|
+
marketplace: 'NONE',
|
72
|
+
items: [{
|
73
|
+
description: 'Test Update Success',
|
74
|
+
id: '5678',
|
75
|
+
picture_url: 'http://product1.image.png',
|
76
|
+
quantity: 1,
|
77
|
+
title: 'Item 1',
|
78
|
+
currency_id: 'BRL',
|
79
|
+
unit_price: 20.5
|
80
|
+
}]
|
81
|
+
}
|
82
|
+
result_merchant_order = sdk.merchant_order.create(merchant_orden_object)
|
83
|
+
|
84
|
+
result = sdk.merchant_order.get(result_merchant_order[:response]['id'])
|
53
85
|
assert_equal 200, result[:status]
|
54
86
|
end
|
55
87
|
|
56
88
|
def test_method_put
|
57
|
-
sdk = Mercadopago::SDK.new('
|
89
|
+
sdk = Mercadopago::SDK.new(ENV['ACCESS_TOKEN'])
|
58
90
|
data = {
|
59
91
|
items: [
|
60
92
|
{
|
data/tests/test_payment.rb
CHANGED
@@ -7,21 +7,155 @@ require 'minitest/autorun'
|
|
7
7
|
|
8
8
|
class TestPayment < Minitest::Test
|
9
9
|
def test_method_search
|
10
|
-
sdk = Mercadopago::SDK.new('
|
11
|
-
|
10
|
+
sdk = Mercadopago::SDK.new(ENV['ACCESS_TOKEN'])
|
11
|
+
card_token_object = {
|
12
|
+
card_number: '5031433215406351',
|
13
|
+
expiration_year: 2025,
|
14
|
+
expiration_month: 11,
|
15
|
+
security_code: '123',
|
16
|
+
cardholder: {
|
17
|
+
name: 'APRO'
|
18
|
+
}
|
19
|
+
}
|
20
|
+
result_card_token = sdk.card_token.create(card_token_object)
|
21
|
+
|
22
|
+
payment_object = {
|
23
|
+
token: result_card_token[:response]['id'],
|
24
|
+
installments: 1,
|
25
|
+
transaction_amount: 58.80,
|
26
|
+
description: 'Point Mini a maquininha que dá o dinheiro de suas vendas na hora',
|
27
|
+
payment_method_id: 'master',
|
28
|
+
payer: {
|
29
|
+
email: 'test_user_123456@testuser.com',
|
30
|
+
identification: {
|
31
|
+
number: '19119119100',
|
32
|
+
type: 'CPF'
|
33
|
+
}
|
34
|
+
},
|
35
|
+
notification_url: 'https://www.suaurl.com/notificacoes/',
|
36
|
+
binary_mode: false,
|
37
|
+
external_reference: 'MP0001',
|
38
|
+
statement_descriptor: 'MercadoPago',
|
39
|
+
additional_info: {
|
40
|
+
items: [
|
41
|
+
{
|
42
|
+
id: 'PR0001',
|
43
|
+
title: 'Point Mini',
|
44
|
+
description: 'Producto Point para cobros con tarjetas mediante bluetooth',
|
45
|
+
picture_url: 'https://http2.mlstatic.com/resources/frontend/statics/growth-sellers-landings/device-mlb-point-i_medium@2x.png',
|
46
|
+
category_id: 'electronics',
|
47
|
+
quantity: 1,
|
48
|
+
unit_price: 58.80
|
49
|
+
}
|
50
|
+
],
|
51
|
+
payer: {
|
52
|
+
first_name: 'Nome',
|
53
|
+
last_name: 'Sobrenome',
|
54
|
+
address: {
|
55
|
+
zip_code: '06233-200',
|
56
|
+
street_name: 'Av das Nacoes Unidas',
|
57
|
+
street_number: 3003
|
58
|
+
},
|
59
|
+
registration_date: '2019-01-01T12:01:01.000-03:00',
|
60
|
+
phone: {
|
61
|
+
area_code: '011',
|
62
|
+
number: '987654321'
|
63
|
+
}
|
64
|
+
},
|
65
|
+
shipments: {
|
66
|
+
receiver_address: {
|
67
|
+
street_name: 'Av das Nacoes Unidas',
|
68
|
+
street_number: 3003,
|
69
|
+
zip_code: '06233200',
|
70
|
+
city_name: 'Buzios',
|
71
|
+
state_name: 'Rio de Janeiro'
|
72
|
+
}
|
73
|
+
}
|
74
|
+
}
|
75
|
+
}
|
76
|
+
payment = sdk.payment.create(payment_object)
|
12
77
|
|
78
|
+
result = sdk.payment.search(filters: { id: payment[:response]['id'] })
|
79
|
+
|
80
|
+
assert_equal 1, result[:response]['paging']['total']
|
13
81
|
assert_equal 200, result[:status]
|
14
82
|
end
|
15
83
|
|
16
84
|
def test_method_get_id
|
17
|
-
sdk = Mercadopago::SDK.new('
|
18
|
-
result = sdk.payment.get(1_231_872_196)
|
85
|
+
sdk = Mercadopago::SDK.new(ENV['ACCESS_TOKEN'])
|
19
86
|
|
87
|
+
card_token_object = {
|
88
|
+
card_number: '5031433215406351',
|
89
|
+
expiration_year: 2025,
|
90
|
+
expiration_month: 11,
|
91
|
+
security_code: '123',
|
92
|
+
cardholder: {
|
93
|
+
name: 'APRO'
|
94
|
+
}
|
95
|
+
}
|
96
|
+
result_card_token = sdk.card_token.create(card_token_object)
|
97
|
+
|
98
|
+
payment_object = {
|
99
|
+
token: result_card_token[:response]['id'],
|
100
|
+
installments: 1,
|
101
|
+
transaction_amount: 58.80,
|
102
|
+
description: 'Point Mini a maquininha que dá o dinheiro de suas vendas na hora',
|
103
|
+
payment_method_id: 'master',
|
104
|
+
payer: {
|
105
|
+
email: 'test_user_123456@testuser.com',
|
106
|
+
identification: {
|
107
|
+
number: '19119119100',
|
108
|
+
type: 'CPF'
|
109
|
+
}
|
110
|
+
},
|
111
|
+
notification_url: 'https://www.suaurl.com/notificacoes/',
|
112
|
+
binary_mode: false,
|
113
|
+
external_reference: 'MP0001',
|
114
|
+
statement_descriptor: 'MercadoPago',
|
115
|
+
additional_info: {
|
116
|
+
items: [
|
117
|
+
{
|
118
|
+
id: 'PR0001',
|
119
|
+
title: 'Point Mini',
|
120
|
+
description: 'Producto Point para cobros con tarjetas mediante bluetooth',
|
121
|
+
picture_url: 'https://http2.mlstatic.com/resources/frontend/statics/growth-sellers-landings/device-mlb-point-i_medium@2x.png',
|
122
|
+
category_id: 'electronics',
|
123
|
+
quantity: 1,
|
124
|
+
unit_price: 58.80
|
125
|
+
}
|
126
|
+
],
|
127
|
+
payer: {
|
128
|
+
first_name: 'Nome',
|
129
|
+
last_name: 'Sobrenome',
|
130
|
+
address: {
|
131
|
+
zip_code: '06233-200',
|
132
|
+
street_name: 'Av das Nacoes Unidas',
|
133
|
+
street_number: 3003
|
134
|
+
},
|
135
|
+
registration_date: '2019-01-01T12:01:01.000-03:00',
|
136
|
+
phone: {
|
137
|
+
area_code: '011',
|
138
|
+
number: '987654321'
|
139
|
+
}
|
140
|
+
},
|
141
|
+
shipments: {
|
142
|
+
receiver_address: {
|
143
|
+
street_name: 'Av das Nacoes Unidas',
|
144
|
+
street_number: 3003,
|
145
|
+
zip_code: '06233200',
|
146
|
+
city_name: 'Buzios',
|
147
|
+
state_name: 'Rio de Janeiro'
|
148
|
+
}
|
149
|
+
}
|
150
|
+
}
|
151
|
+
}
|
152
|
+
payment = sdk.payment.create(payment_object)
|
153
|
+
result = sdk.payment.get(payment[:response]['id'])
|
20
154
|
assert_equal 200, result[:status]
|
21
155
|
end
|
22
156
|
|
23
157
|
def test_method_post
|
24
|
-
sdk = Mercadopago::SDK.new('
|
158
|
+
sdk = Mercadopago::SDK.new(ENV['ACCESS_TOKEN'])
|
25
159
|
card_token_object = {
|
26
160
|
card_number: '5031433215406351',
|
27
161
|
expiration_year: 2025,
|
@@ -92,7 +226,7 @@ class TestPayment < Minitest::Test
|
|
92
226
|
end
|
93
227
|
|
94
228
|
def test_method_put
|
95
|
-
sdk = Mercadopago::SDK.new('
|
229
|
+
sdk = Mercadopago::SDK.new(ENV['ACCESS_TOKEN'])
|
96
230
|
data = {
|
97
231
|
status: 'approved'
|
98
232
|
}
|
@@ -7,7 +7,7 @@ require 'minitest/autorun'
|
|
7
7
|
|
8
8
|
class TestPaymentMethods < Minitest::Test
|
9
9
|
def test_method_get
|
10
|
-
sdk = Mercadopago::SDK.new('
|
10
|
+
sdk = Mercadopago::SDK.new(ENV['ACCESS_TOKEN'])
|
11
11
|
result = sdk.payment_methods.get
|
12
12
|
assert_equal 200, result[:status]
|
13
13
|
end
|
data/tests/test_preapproval.rb
CHANGED
@@ -54,38 +54,27 @@ class TestPreapproval < Minitest::Test
|
|
54
54
|
update_data = {
|
55
55
|
reason: 'Yoga classes',
|
56
56
|
external_reference: 'YG-12345',
|
57
|
-
payer_email: 'test_user@testuser.com',
|
58
57
|
auto_recurring: {
|
59
|
-
frequency: 2,
|
60
|
-
frequency_type: 'months',
|
61
58
|
transaction_amount: 15,
|
62
|
-
currency_id: 'BRL'
|
63
59
|
},
|
64
|
-
back_url: 'https://www.mercadopago.com.ar'
|
65
|
-
status: 'authorized'
|
60
|
+
back_url: 'https://www.mercadopago.com.ar'
|
66
61
|
}
|
67
62
|
result = sdk.preapproval.update(create_response[:response]['id'], update_data)
|
68
63
|
assert_equal 200, result[:status]
|
69
64
|
end
|
70
65
|
|
71
66
|
def create_preapproval(sdk)
|
72
|
-
result_card_token = sdk.card_token.create(@card_token_object)
|
73
|
-
|
74
67
|
preapproval_data = {
|
75
68
|
reason: 'Yoga classes',
|
76
69
|
external_reference: 'YG-1234',
|
77
|
-
payer_email: '
|
78
|
-
card_token_id: result_card_token[:response]['id'],
|
70
|
+
payer_email: 'test_user_28355466@testuser.com',
|
79
71
|
auto_recurring: {
|
80
72
|
frequency: 1,
|
81
73
|
frequency_type: 'months',
|
82
|
-
|
83
|
-
end_date: "2023-07-20T15:59:52.581Z",
|
84
|
-
transaction_amount: 10,
|
74
|
+
transaction_amount: 100,
|
85
75
|
currency_id: 'BRL'
|
86
76
|
},
|
87
|
-
back_url: 'https://www.mercadopago.com.
|
88
|
-
status: 'authorized'
|
77
|
+
back_url: 'https://www.mercadopago.com.br',
|
89
78
|
}
|
90
79
|
|
91
80
|
sdk.preapproval.create(preapproval_data)
|
data/tests/test_preference.rb
CHANGED
@@ -7,14 +7,25 @@ require 'minitest/autorun'
|
|
7
7
|
|
8
8
|
class TestPreference < Minitest::Test
|
9
9
|
def test_method_get_id
|
10
|
-
sdk = Mercadopago::SDK.new('
|
11
|
-
|
12
|
-
|
10
|
+
sdk = Mercadopago::SDK.new(ENV['ACCESS_TOKEN'])
|
11
|
+
data = {
|
12
|
+
items: [
|
13
|
+
{
|
14
|
+
title: 'Dummy Item',
|
15
|
+
description: 'Multicolor Item',
|
16
|
+
quantity: 1,
|
17
|
+
currency_id: '',
|
18
|
+
unit_price: 10.0
|
19
|
+
}
|
20
|
+
]
|
21
|
+
}
|
22
|
+
preference = sdk.preference.create(data)
|
23
|
+
result = sdk.preference.get(preference[:response]['id'])
|
13
24
|
assert_equal 200, result[:status]
|
14
25
|
end
|
15
26
|
|
16
27
|
def test_method_post
|
17
|
-
sdk = Mercadopago::SDK.new('
|
28
|
+
sdk = Mercadopago::SDK.new(ENV['ACCESS_TOKEN'])
|
18
29
|
data = {
|
19
30
|
items: [
|
20
31
|
{
|
@@ -31,19 +42,32 @@ class TestPreference < Minitest::Test
|
|
31
42
|
end
|
32
43
|
|
33
44
|
def test_method_put
|
34
|
-
sdk = Mercadopago::SDK.new('
|
45
|
+
sdk = Mercadopago::SDK.new(ENV['ACCESS_TOKEN'])
|
46
|
+
|
35
47
|
data = {
|
36
48
|
items: [
|
37
49
|
{
|
38
|
-
title: '
|
39
|
-
description: '
|
50
|
+
title: 'Dummy Item',
|
51
|
+
description: 'Multicolor Item',
|
40
52
|
quantity: 1,
|
41
53
|
currency_id: '',
|
42
54
|
unit_price: 10.0
|
43
55
|
}
|
44
56
|
]
|
45
57
|
}
|
46
|
-
|
58
|
+
preference = sdk.preference.create(data)
|
59
|
+
|
60
|
+
preferenceUpdate = {
|
61
|
+
items: [
|
62
|
+
{
|
63
|
+
title: 'Camiseta Barcelona',
|
64
|
+
description: 'Camiseta Oficial Barcelona',
|
65
|
+
quantity: 2,
|
66
|
+
unit_price: 10.0
|
67
|
+
}
|
68
|
+
]
|
69
|
+
}
|
70
|
+
result = sdk.preference.update(preference[:response]['id'], preferenceUpdate)
|
47
71
|
assert_equal 200, result[:status]
|
48
72
|
end
|
49
73
|
end
|
data/tests/test_refund.rb
CHANGED
@@ -7,14 +7,8 @@ require 'minitest/autorun'
|
|
7
7
|
##
|
8
8
|
# TestRefund
|
9
9
|
class TestRefund < Minitest::Test
|
10
|
-
def
|
11
|
-
sdk = Mercadopago::SDK.new('
|
12
|
-
result = sdk.refund.list(12_678_120_979)
|
13
|
-
assert_equal 200, result[:status]
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_method_post
|
17
|
-
sdk = Mercadopago::SDK.new('APP_USR-558881221729581-091712-44fdc612e60e3e638775d8b4003edd51-471763966')
|
10
|
+
def test_refund_post_and_list
|
11
|
+
sdk = Mercadopago::SDK.new(ENV['ACCESS_TOKEN'])
|
18
12
|
card_token_object = {
|
19
13
|
card_number: '5031433215406351',
|
20
14
|
expiration_year: 2025,
|
@@ -25,64 +19,26 @@ class TestRefund < Minitest::Test
|
|
25
19
|
}
|
26
20
|
}
|
27
21
|
result_card_token = sdk.card_token.create(card_token_object)
|
28
|
-
|
29
22
|
payment_object = {
|
30
|
-
|
23
|
+
transaction_amount: 110,
|
31
24
|
installments: 1,
|
32
|
-
|
33
|
-
description: '
|
25
|
+
capture: true,
|
26
|
+
description: 'Payment test',
|
34
27
|
payment_method_id: 'master',
|
28
|
+
token: result_card_token[:response]['id'],
|
35
29
|
payer: {
|
36
|
-
email: '
|
37
|
-
identification: {
|
38
|
-
number: '19119119100',
|
39
|
-
type: 'CPF'
|
40
|
-
}
|
41
|
-
},
|
42
|
-
notification_url: 'https://www.suaurl.com/notificacoes/',
|
43
|
-
binary_mode: false,
|
44
|
-
external_reference: 'MP0001',
|
45
|
-
statement_descriptor: 'MercadoPago',
|
46
|
-
additional_info: {
|
47
|
-
items: [
|
48
|
-
{
|
49
|
-
id: 'PR0001',
|
50
|
-
title: 'Point Mini',
|
51
|
-
description: 'Producto Point para cobros con tarjetas mediante bluetooth',
|
52
|
-
picture_url: 'https://http2.mlstatic.com/resources/frontend/statics/growth-sellers-landings/device-mlb-point-i_medium@2x.png',
|
53
|
-
category_id: 'electronics',
|
54
|
-
quantity: 1,
|
55
|
-
unit_price: 58.80
|
56
|
-
}
|
57
|
-
],
|
58
|
-
payer: {
|
59
|
-
first_name: 'Nome',
|
60
|
-
last_name: 'Sobrenome',
|
61
|
-
address: {
|
62
|
-
zip_code: '06233-200',
|
63
|
-
street_name: 'Av das Nacoes Unidas',
|
64
|
-
street_number: 3003
|
65
|
-
},
|
66
|
-
registration_date: '2019-01-01T12:01:01.000-03:00',
|
67
|
-
phone: {
|
68
|
-
area_code: '011',
|
69
|
-
number: '987654321'
|
70
|
-
}
|
71
|
-
},
|
72
|
-
shipments: {
|
73
|
-
receiver_address: {
|
74
|
-
street_name: 'Av das Nacoes Unidas',
|
75
|
-
street_number: 3003,
|
76
|
-
zip_code: '06233200',
|
77
|
-
city_name: 'Buzios',
|
78
|
-
state_name: 'Rio de Janeiro'
|
79
|
-
}
|
80
|
-
}
|
30
|
+
email: 'test_user_246340119@testuser.com'
|
81
31
|
}
|
82
32
|
}
|
83
33
|
result_payment = sdk.payment.create(payment_object)
|
84
|
-
|
85
|
-
|
86
|
-
|
34
|
+
sleep(1)
|
35
|
+
|
36
|
+
result_refund = sdk.refund.create(result_payment[:response]['id'])
|
37
|
+
assert_equal 201, result_refund[:status]
|
38
|
+
assert_equal 'approved', result_refund[:response]['status']
|
39
|
+
|
40
|
+
sleep(1)
|
41
|
+
result_list = sdk.refund.list(result_refund[:response]['payment_id'])
|
42
|
+
assert_equal 200, result_list[:status]
|
87
43
|
end
|
88
44
|
end
|
@@ -6,10 +6,10 @@ require 'minitest/autorun'
|
|
6
6
|
require 'securerandom'
|
7
7
|
|
8
8
|
##
|
9
|
-
#
|
10
|
-
class
|
9
|
+
# TestRefundCustom
|
10
|
+
class TestRefundCustom < Minitest::Test
|
11
11
|
def test_method_post_with_custom_headers
|
12
|
-
sdk = Mercadopago::SDK.new('
|
12
|
+
sdk = Mercadopago::SDK.new(ENV['ACCESS_TOKEN'])
|
13
13
|
card_token_object = {
|
14
14
|
card_number: '5031433215406351',
|
15
15
|
expiration_year: 2025,
|
@@ -20,78 +20,34 @@ class TestRefund < Minitest::Test
|
|
20
20
|
}
|
21
21
|
}
|
22
22
|
result_card_token = sdk.card_token.create(card_token_object)
|
23
|
+
sleep(1)
|
23
24
|
|
24
25
|
payment_object = {
|
25
|
-
|
26
|
+
transaction_amount: 20,
|
26
27
|
installments: 1,
|
27
|
-
|
28
|
-
description: '
|
28
|
+
capture: true,
|
29
|
+
description: 'Payment test',
|
29
30
|
payment_method_id: 'master',
|
31
|
+
token: result_card_token[:response]['id'],
|
30
32
|
payer: {
|
31
|
-
email: '
|
32
|
-
identification: {
|
33
|
-
number: '19119119100',
|
34
|
-
type: 'CPF'
|
35
|
-
}
|
36
|
-
},
|
37
|
-
notification_url: 'https://www.suaurl.com/notificacoes/',
|
38
|
-
binary_mode: false,
|
39
|
-
external_reference: 'MP0001',
|
40
|
-
statement_descriptor: 'MercadoPago',
|
41
|
-
additional_info: {
|
42
|
-
items: [
|
43
|
-
{
|
44
|
-
id: 'PR0001',
|
45
|
-
title: 'Point Mini',
|
46
|
-
description: 'Producto Point para cobros con tarjetas mediante bluetooth',
|
47
|
-
picture_url: 'https://http2.mlstatic.com/resources/frontend/statics/growth-sellers-landings/device-mlb-point-i_medium@2x.png',
|
48
|
-
category_id: 'electronics',
|
49
|
-
quantity: 1,
|
50
|
-
unit_price: 58.80
|
51
|
-
}
|
52
|
-
],
|
53
|
-
payer: {
|
54
|
-
first_name: 'Nome',
|
55
|
-
last_name: 'Sobrenome',
|
56
|
-
address: {
|
57
|
-
zip_code: '06233-200',
|
58
|
-
street_name: 'Av das Nacoes Unidas',
|
59
|
-
street_number: 3003
|
60
|
-
},
|
61
|
-
registration_date: '2019-01-01T12:01:01.000-03:00',
|
62
|
-
phone: {
|
63
|
-
area_code: '011',
|
64
|
-
number: '987654321'
|
65
|
-
}
|
66
|
-
},
|
67
|
-
shipments: {
|
68
|
-
receiver_address: {
|
69
|
-
street_name: 'Av das Nacoes Unidas',
|
70
|
-
street_number: 3003,
|
71
|
-
zip_code: '06233200',
|
72
|
-
city_name: 'Buzios',
|
73
|
-
state_name: 'Rio de Janeiro'
|
74
|
-
}
|
75
|
-
}
|
33
|
+
email: 'test_user_24634099@testuser.com'
|
76
34
|
}
|
77
35
|
}
|
78
|
-
|
79
|
-
|
36
|
+
payment = sdk.payment.create(payment_object)
|
37
|
+
sleep(1)
|
38
|
+
payment_id = payment[:response]['id']
|
80
39
|
refund_data = {
|
81
|
-
'amount': 2
|
40
|
+
'amount': 2
|
82
41
|
}
|
83
42
|
uuid = SecureRandom.uuid
|
84
43
|
custom_headers = {
|
85
44
|
'x-idempotency-key': uuid
|
86
45
|
}
|
87
46
|
custom_request_options = Mercadopago::RequestOptions.new(custom_headers: custom_headers)
|
88
|
-
result = sdk.refund.create(payment_id, refund_data: refund_data, request_options: custom_request_options)
|
89
|
-
assert_equal 201, result[:status]
|
90
|
-
assert_equal 'approved', result[:response]['status']
|
91
|
-
|
92
47
|
# calling a request with an existing 'x-idempotency-key', the API should return 200,
|
93
48
|
# instead of create other refund
|
94
|
-
|
95
|
-
assert_equal
|
49
|
+
result_refund_custom = sdk.refund.create(payment_id, refund_data: refund_data, request_options: custom_request_options)
|
50
|
+
assert_equal 201, result_refund_custom[:status]
|
51
|
+
assert_equal 'approved', result_refund_custom[:response]['status']
|
96
52
|
end
|
97
53
|
end
|
data/tests/test_user.rb
CHANGED
@@ -8,7 +8,7 @@ require 'minitest/autorun'
|
|
8
8
|
# Test User
|
9
9
|
class TestUser < Minitest::Test
|
10
10
|
def test_method_get
|
11
|
-
sdk = Mercadopago::SDK.new('
|
11
|
+
sdk = Mercadopago::SDK.new(ENV['ACCESS_TOKEN'])
|
12
12
|
sdk.request_options = Mercadopago::RequestOptions.new(corporation_id: 'abc')
|
13
13
|
result = sdk.user.get(request_options: Mercadopago::RequestOptions.new(connection_timeout: 100.0))
|
14
14
|
|
data/tests/tests.rb
CHANGED
@@ -8,8 +8,10 @@ require_relative './test_merchant_order'
|
|
8
8
|
require_relative './test_payment_methods'
|
9
9
|
require_relative './test_payment'
|
10
10
|
require_relative './test_preference'
|
11
|
-
require_relative './test_refund_with_custom_headers'
|
12
|
-
require_relative './test_refund'
|
13
11
|
require_relative './test_user'
|
14
12
|
require_relative './test_preapproval'
|
15
13
|
require_relative './test_preapproval_plan'
|
14
|
+
|
15
|
+
# TODO Uncomment the following lines when adjusting the tests and refund service
|
16
|
+
# require_relative './test_refund_with_custom_headers'
|
17
|
+
# require_relative './test_refund'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mercadopago-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mercado Pago
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2025-01-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -75,7 +75,8 @@ files:
|
|
75
75
|
- ".editorconfig"
|
76
76
|
- ".github/ISSUE_TEMPLATE/bug_report.md"
|
77
77
|
- ".github/ISSUE_TEMPLATE/feature_request.md"
|
78
|
-
- ".github/workflows/
|
78
|
+
- ".github/workflows/ci.yml"
|
79
|
+
- ".github/workflows/release.yml"
|
79
80
|
- ".gitignore"
|
80
81
|
- ".rubocop.yml"
|
81
82
|
- ".rubocop_todo.yml"
|
@@ -202,14 +203,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
202
203
|
requirements:
|
203
204
|
- - ">="
|
204
205
|
- !ruby/object:Gem::Version
|
205
|
-
version:
|
206
|
+
version: 3.1.6
|
206
207
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
207
208
|
requirements:
|
208
209
|
- - ">="
|
209
210
|
- !ruby/object:Gem::Version
|
210
211
|
version: '0'
|
211
212
|
requirements: []
|
212
|
-
rubygems_version: 3.
|
213
|
+
rubygems_version: 3.3.27
|
213
214
|
signing_key:
|
214
215
|
specification_version: 4
|
215
216
|
summary: Mercado Pago Ruby SDK
|