moip2 0.1.4 → 1.0.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/.rubocop.yml +644 -0
- data/.travis.yml +14 -3
- data/CONTRIBUTING.md +42 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +25 -6
- data/Guardfile +1 -2
- data/README.md +373 -74
- data/Rakefile +2 -2
- data/changelog.md +36 -0
- data/lib/moip2/accounts_api.rb +27 -0
- data/lib/moip2/api.rb +25 -2
- data/lib/moip2/auth/basic.rb +2 -5
- data/lib/moip2/auth/oauth.rb +0 -3
- data/lib/moip2/client.rb +45 -31
- data/lib/moip2/connect_api.rb +41 -0
- data/lib/moip2/customer_api.rb +16 -2
- data/lib/moip2/exceptions/invalid_enviroment_error.rb +0 -2
- data/lib/moip2/invoice_api.rb +8 -3
- data/lib/moip2/keys_api.rb +14 -14
- data/lib/moip2/multi_order_api.rb +1 -3
- data/lib/moip2/multi_payment_api.rb +1 -1
- data/lib/moip2/notifications_api.rb +33 -0
- data/lib/moip2/order_api.rb +18 -3
- data/lib/moip2/payment_api.rb +11 -1
- data/lib/moip2/refund_api.rb +5 -4
- data/lib/moip2/resource/account.rb +12 -0
- data/lib/moip2/resource/connect.rb +9 -0
- data/lib/moip2/resource/credit_card.rb +12 -0
- data/lib/moip2/resource/customer.rb +0 -4
- data/lib/moip2/resource/invoice.rb +0 -2
- data/lib/moip2/resource/keys.rb +1 -3
- data/lib/moip2/resource/multi_order.rb +2 -6
- data/lib/moip2/resource/multi_payment.rb +1 -3
- data/lib/moip2/resource/notification.rb +12 -0
- data/lib/moip2/resource/order.rb +0 -4
- data/lib/moip2/resource/payment.rb +0 -4
- data/lib/moip2/resource/refund.rb +1 -2
- data/lib/moip2/resource/webhooks.rb +11 -13
- data/lib/moip2/response.rb +7 -7
- data/lib/moip2/util/filters_encoder.rb +28 -0
- data/lib/moip2/version.rb +1 -1
- data/lib/moip2/webhooks_api.rb +16 -16
- data/lib/moip2.rb +10 -5
- data/moip2.gemspec +21 -7
- data/spec/moip2/accounts_api_spec.rb +189 -0
- data/spec/moip2/api_spec.rb +22 -4
- data/spec/moip2/auth/basic_spec.rb +8 -4
- data/spec/moip2/auth/oauth_spec.rb +4 -4
- data/spec/moip2/client_spec.rb +20 -27
- data/spec/moip2/connect_api_spec.rb +68 -0
- data/spec/moip2/customer_api_spec.rb +147 -72
- data/spec/moip2/invoice_spec.rb +51 -32
- data/spec/moip2/keys_spec.rb +16 -18
- data/spec/moip2/multi_order_api_spec.rb +99 -108
- data/spec/moip2/multi_payment_api_spec.rb +8 -11
- data/spec/moip2/notifications_api_spec.rb +104 -0
- data/spec/moip2/order_api_spec.rb +100 -20
- data/spec/moip2/payment_api_spec.rb +77 -17
- data/spec/moip2/refund_api_spec.rb +2 -4
- data/spec/moip2/resource/order_spec.rb +24 -28
- data/spec/moip2/response_spec.rb +0 -8
- data/spec/moip2/webhooks_spec.rb +18 -21
- data/spec/moip2_spec.rb +6 -13
- data/spec/spec_helper.rb +24 -10
- data/vcr_cassettes/_create_invoice.yml +42 -0
- data/vcr_cassettes/_get_invoice.yml +41 -0
- data/vcr_cassettes/account_doesnt_exist.yml +44 -0
- data/vcr_cassettes/account_exists.yml +46 -0
- data/vcr_cassettes/accounts_show_existent.yml +50 -0
- data/vcr_cassettes/accounts_show_nonexistent.yml +42 -0
- data/vcr_cassettes/cancel_payment.yml +43 -0
- data/vcr_cassettes/capture_payment.yml +42 -0
- data/vcr_cassettes/create_account_success_company.yml +87 -0
- data/vcr_cassettes/create_account_success_standalone.yml +74 -0
- data/vcr_cassettes/create_credit_card_customer.yml +41 -0
- data/vcr_cassettes/create_invoice.yml +10 -16
- data/vcr_cassettes/create_notification.yml +38 -0
- data/vcr_cassettes/create_notification_app.yml +38 -0
- data/vcr_cassettes/delete_credit_card_customer.yml +40 -0
- data/vcr_cassettes/delete_nonexistent_credit_card_customer.yml +40 -0
- data/vcr_cassettes/delete_nonexistent_notification.yml +40 -0
- data/vcr_cassettes/delete_notification.yml +36 -0
- data/vcr_cassettes/find_all_orders_filters.yml +56 -0
- data/vcr_cassettes/find_all_orders_limit.yml +48 -0
- data/vcr_cassettes/find_all_orders_multi_filters.yml +57 -0
- data/vcr_cassettes/find_all_orders_no_filter.yml +56 -0
- data/vcr_cassettes/generate_oauth_token.yml +42 -0
- data/vcr_cassettes/get_invoice.yml +10 -15
- data/vcr_cassettes/get_keys.yml +1 -1
- data/vcr_cassettes/get_notification.yml +38 -0
- data/vcr_cassettes/get_notifications_list.yml +38 -0
- data/vcr_cassettes/get_payment.yml +42 -0
- data/vcr_cassettes/get_payment_not_found.yml +40 -0
- data/vcr_cassettes/get_webhooks.yml +1 -1
- data/vcr_cassettes/list_invoices.yml +2 -2
- data/vcr_cassettes/refresh_oauth_token.yml +40 -0
- data/vcr_cassettes/update_invoice.yml +1 -1
- metadata +69 -7
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
# Contributing
|
2
|
+
:clap::tada: Thank you for taking the time to contribute! :tada::clap:
|
3
|
+
|
4
|
+
We really value your willingness to contribute to this project. In order to higher the chances of your contribution being accepted, please refer to the following guidelines!
|
5
|
+
|
6
|
+
## Steps
|
7
|
+
|
8
|
+
1. Fork it!
|
9
|
+
2. Create your feature branch: `git checkout -b feature/xyz develop`
|
10
|
+
3. Commit your changes according to our commit message standards: `git commit -am 'feat(xyz) Added new functionality'`
|
11
|
+
4. Push to your repo: `git push origin feature/xyz`
|
12
|
+
5. Submit a pull request to `develop`
|
13
|
+
|
14
|
+
## Workflow
|
15
|
+
This repo uses Gitflow as its branch management system. You can learn more about Gitflow [here](https://www.atlassian.com/git/tutorials/comparing-workflows#gitflow-workflow).
|
16
|
+
A few quick tips:
|
17
|
+
* All feature branches should be based on `develop` and have the format `feature/branch_name`.
|
18
|
+
* Minor bug fixes should be based on `master` and have the format `hotfix/branch_name`.
|
19
|
+
|
20
|
+
### Commit Conventions
|
21
|
+
In order to make the changelog generation easier we recommend the use of messages based on [Conventional Commits](https://conventionalcommits.org/).
|
22
|
+
|
23
|
+
Examples:
|
24
|
+
```
|
25
|
+
feat(orders): added `XYZ` helper function
|
26
|
+
|
27
|
+
commit description
|
28
|
+
|
29
|
+
footer notes
|
30
|
+
```
|
31
|
+
|
32
|
+
```
|
33
|
+
refactor(orders): refactored `ABC` helper function
|
34
|
+
|
35
|
+
The behaviour of `ABC` was inconsistent and (...)
|
36
|
+
|
37
|
+
BREAKING CHANGE: return type of `ABC` is now `String`
|
38
|
+
```
|
39
|
+
|
40
|
+
```
|
41
|
+
docs: updated documentation in Request.php
|
42
|
+
```
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
moip2 (0.1.
|
4
|
+
moip2 (0.1.5)
|
5
5
|
httparty
|
6
6
|
recursive-open-struct
|
7
7
|
|
@@ -9,6 +9,7 @@ GEM
|
|
9
9
|
remote: https://rubygems.org/
|
10
10
|
specs:
|
11
11
|
addressable (2.3.8)
|
12
|
+
ast (2.3.0)
|
12
13
|
celluloid (0.16.0)
|
13
14
|
timers (~> 4.0.0)
|
14
15
|
codeclimate-test-reporter (0.4.7)
|
@@ -35,8 +36,7 @@ GEM
|
|
35
36
|
guard-compat (~> 1.1)
|
36
37
|
rspec (>= 2.99.0, < 4.0)
|
37
38
|
hitimes (1.2.2)
|
38
|
-
httparty (0.
|
39
|
-
json (~> 1.8)
|
39
|
+
httparty (0.14.0)
|
40
40
|
multi_xml (>= 0.5.2)
|
41
41
|
json (1.8.3)
|
42
42
|
listen (2.10.0)
|
@@ -45,20 +45,26 @@ GEM
|
|
45
45
|
rb-inotify (>= 0.9)
|
46
46
|
lumberjack (1.0.9)
|
47
47
|
method_source (0.8.2)
|
48
|
-
multi_xml (0.
|
48
|
+
multi_xml (0.6.0)
|
49
49
|
nenv (0.2.0)
|
50
50
|
notiffany (0.0.6)
|
51
51
|
nenv (~> 0.1)
|
52
52
|
shellany (~> 0.0)
|
53
|
+
parallel (1.11.2)
|
54
|
+
parser (2.4.0.0)
|
55
|
+
ast (~> 2.2)
|
56
|
+
powerpack (0.1.1)
|
53
57
|
pry (0.10.1)
|
54
58
|
coderay (~> 1.1.0)
|
55
59
|
method_source (~> 0.8.1)
|
56
60
|
slop (~> 3.4)
|
61
|
+
rainbow (2.2.2)
|
62
|
+
rake
|
57
63
|
rake (10.4.2)
|
58
64
|
rb-fsevent (0.9.5)
|
59
65
|
rb-inotify (0.9.5)
|
60
66
|
ffi (>= 0.5.0)
|
61
|
-
recursive-open-struct (0.
|
67
|
+
recursive-open-struct (1.0.2)
|
62
68
|
rspec (3.3.0)
|
63
69
|
rspec-core (~> 3.3.0)
|
64
70
|
rspec-expectations (~> 3.3.0)
|
@@ -72,6 +78,14 @@ GEM
|
|
72
78
|
diff-lcs (>= 1.2.0, < 2.0)
|
73
79
|
rspec-support (~> 3.3.0)
|
74
80
|
rspec-support (3.3.0)
|
81
|
+
rubocop (0.49.1)
|
82
|
+
parallel (~> 1.10)
|
83
|
+
parser (>= 2.3.3.1, < 3.0)
|
84
|
+
powerpack (~> 0.1)
|
85
|
+
rainbow (>= 1.99.1, < 3.0)
|
86
|
+
ruby-progressbar (~> 1.7)
|
87
|
+
unicode-display_width (~> 1.0, >= 1.0.1)
|
88
|
+
ruby-progressbar (1.8.1)
|
75
89
|
safe_yaml (1.0.4)
|
76
90
|
shellany (0.0.1)
|
77
91
|
simplecov (0.10.0)
|
@@ -83,6 +97,7 @@ GEM
|
|
83
97
|
thor (0.19.1)
|
84
98
|
timers (4.0.1)
|
85
99
|
hitimes
|
100
|
+
unicode-display_width (1.3.0)
|
86
101
|
vcr (2.9.3)
|
87
102
|
webmock (1.21.0)
|
88
103
|
addressable (>= 2.3.6)
|
@@ -92,11 +107,15 @@ PLATFORMS
|
|
92
107
|
ruby
|
93
108
|
|
94
109
|
DEPENDENCIES
|
95
|
-
bundler
|
110
|
+
bundler
|
96
111
|
codeclimate-test-reporter
|
97
112
|
guard-rspec
|
98
113
|
moip2!
|
99
114
|
rake
|
100
115
|
rspec
|
116
|
+
rubocop (= 0.49.1)
|
101
117
|
vcr
|
102
118
|
webmock
|
119
|
+
|
120
|
+
BUNDLED WITH
|
121
|
+
1.15.1
|
data/Guardfile
CHANGED
data/README.md
CHANGED
@@ -1,10 +1,70 @@
|
|
1
|
+
<img src="https://gist.githubusercontent.com/joaolucasl/00f53024cecf16410d5c3212aae92c17/raw/1789a2131ee389aeb44e3a9d5333f59cfeebc089/moip-icon.png" align="right" />
|
2
|
+
|
1
3
|
# Moip v2 Ruby SDK
|
4
|
+
> O jeito mais simples e rápido de integrar o Moip a sua aplicação Ruby
|
2
5
|
|
3
6
|
[](https://travis-ci.org/moip/moip-sdk-ruby)
|
4
7
|
[](https://codeclimate.com/github/moip/moip-sdk-ruby)
|
5
8
|
[](https://codeclimate.com/github/moip/moip-sdk-ruby/coverage)
|
6
9
|
|
7
|
-
|
10
|
+
**Índice**
|
11
|
+
|
12
|
+
- [Instalação](#instalação)
|
13
|
+
- [Configurando a autenticação](#configurando-a-autenticação)
|
14
|
+
- [Por BasicAuth](#por-basicauth)
|
15
|
+
- [Por OAuth](#por-oauth)
|
16
|
+
- [Configurando o ambiente](#configurando-o-ambiente)
|
17
|
+
- [Exemplos de Uso](#clientes):
|
18
|
+
- [Clientes](#clientes)
|
19
|
+
- [Criação](#criação)
|
20
|
+
- [Consulta](#consulta)
|
21
|
+
- [Adicionar cartão de crédito](#adicionar-cartão-de-crédito)
|
22
|
+
- [Deletar cartão de crédito](#deletar-cartão-de-crédito)
|
23
|
+
- [Pedidos](#pedidos)
|
24
|
+
- [Criação](#criação-1)
|
25
|
+
- [Consulta](#consulta-1)
|
26
|
+
- [Pedido Específico](#pedido-específico)
|
27
|
+
- [Todos os Pedidos](#todos-os-pedidos)
|
28
|
+
- [Sem Filtro](#sem-filtro)
|
29
|
+
- [Com Filtros](#com-filtros)
|
30
|
+
- [Com Paginação](#com-paginação)
|
31
|
+
- [Pagamentos](#pagamentos)
|
32
|
+
- [Criação](#criação-2)
|
33
|
+
- [Cartão de Crédito](#cartão-de-crédito)
|
34
|
+
- [Com Hash](#com-hash)
|
35
|
+
- [Com Dados do Cartão](#com-dados-do-cartão)
|
36
|
+
- [Com Boleto](#com-boleto)
|
37
|
+
- [Consulta](#consulta-2)
|
38
|
+
- [Capturar pagamento pré-autorizado](#capturar-pagamento-pré-autorizado)
|
39
|
+
- [Cancelar pagamento pré-autorizado](#cancelar-pagamento-pré-autorizado)
|
40
|
+
- [Reembolsos](#reembolsos)
|
41
|
+
- [Criação](#criação-3)
|
42
|
+
- [Valor Total](#valor-total)
|
43
|
+
- [Valor Parcial](#valor-parcial)
|
44
|
+
- [Consulta](#consulta-3)
|
45
|
+
- [Multipedidos](#multipedidos)
|
46
|
+
- [Criação](#criação-4)
|
47
|
+
- [Consulta](#consulta-4)
|
48
|
+
- [Multipagamentos](#multipagamentos)
|
49
|
+
- [Criação](#criação-5)
|
50
|
+
- [Consulta](#consulta-5)
|
51
|
+
- [Conta Moip](#conta-moip)
|
52
|
+
- [Criação](#criação-6)
|
53
|
+
- [Consulta](#consulta-6)
|
54
|
+
- [Verifica se usuário já possui Conta Moip](#verifica-se-usuário-já-possui-conta-moip)
|
55
|
+
- [OAuth (Moip Connect)](#oauth-(moip-connect))
|
56
|
+
- [Solicitar permissões de acesso ao usuário](#solicitar-permissões-de-acesso-ao-usuário)
|
57
|
+
- [Gerar Token OAuth](#gerar-token-oauth)
|
58
|
+
- [Atualizar Token OAuth](#atualizar-token-oauth)
|
59
|
+
- [Preferências de Notificação](#preferências-de-notificação)
|
60
|
+
- [Criação](#criação-7)
|
61
|
+
- [Consulta](#consulta-7)
|
62
|
+
- [Exclusão](#exclusão)
|
63
|
+
- [Listagem](#listagem)
|
64
|
+
- [Tratamento de Exceções](#tratamento-de-exceções)
|
65
|
+
- [Documentação](#documentação)
|
66
|
+
- [Licença](#licença)
|
67
|
+
|
8
68
|
|
9
69
|
## Instalação
|
10
70
|
|
@@ -14,91 +74,145 @@ Adicione a seguinte linha no seu Gemfile:
|
|
14
74
|
gem "moip2"
|
15
75
|
```
|
16
76
|
|
17
|
-
## Configurando
|
18
|
-
|
77
|
+
## Configurando a autenticação
|
78
|
+
### Por BasicAuth
|
19
79
|
```ruby
|
20
80
|
auth = Moip2::Auth::Basic.new("TOKEN", "SECRET")
|
21
81
|
```
|
22
|
-
|
82
|
+
### Por OAuth
|
23
83
|
```ruby
|
24
84
|
auth = Moip2::Auth::OAuth.new("TOKEN_OAUTH")
|
25
85
|
```
|
26
86
|
|
27
|
-
|
87
|
+
## Configurando o ambiente
|
88
|
+
Após definir o tipo de autenticação, é necessário gerar o client, informando em qual ambiente você quer executar suas ações:
|
28
89
|
```ruby
|
29
90
|
client = Moip2::Client.new(:sandbox/:production, auth)
|
30
91
|
```
|
31
92
|
|
32
|
-
|
93
|
+
Após isso, é necessário instanciar um ponto de acesso a partir do qual você utilizará as funções da API:
|
94
|
+
|
33
95
|
```ruby
|
34
96
|
api = Moip2::Api.new(client)
|
35
97
|
```
|
36
98
|
|
37
|
-
##
|
99
|
+
## Clientes
|
100
|
+
### Criação
|
101
|
+
```ruby
|
102
|
+
customer = api.customer.create({
|
103
|
+
ownId: "meu_id_de_cliente",
|
104
|
+
fullname: "Jose Silva",
|
105
|
+
email: "josedasilva@email.com",
|
106
|
+
phone: {
|
107
|
+
#...
|
108
|
+
},
|
109
|
+
birthDate: "1988-12-30",
|
110
|
+
taxDocument: {
|
111
|
+
#...
|
112
|
+
},
|
113
|
+
shippingAddress: {
|
114
|
+
#...
|
115
|
+
},
|
116
|
+
fundingInstrument: {
|
117
|
+
# Campo opcional. Consulte a documentação da API.
|
118
|
+
}
|
119
|
+
})
|
120
|
+
```
|
121
|
+
### Consulta
|
122
|
+
```ruby
|
123
|
+
customer = api.customer.show("CUS-V41BR451L")
|
124
|
+
```
|
38
125
|
|
126
|
+
### Adicionar cartão de crédito
|
39
127
|
```ruby
|
40
|
-
|
128
|
+
credit_card = api.customer.add_credit_card("CUSTOMER-ID",
|
41
129
|
{
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
130
|
+
method: "CREDIT_CARD",
|
131
|
+
creditCard: {
|
132
|
+
expirationMonth: "05",
|
133
|
+
expirationYear: "22",
|
134
|
+
number: "5555666677778884",
|
135
|
+
cvc: "123",
|
136
|
+
holder: {
|
137
|
+
fullname: "Jose Portador da Silva",
|
138
|
+
birthdate: "1988-12-30",
|
139
|
+
taxDocument: {
|
140
|
+
type: "CPF",
|
141
|
+
number: "33333333333",
|
142
|
+
},
|
143
|
+
phone: {
|
144
|
+
countryCode: "55",
|
145
|
+
areaCode: "11",
|
146
|
+
number: "66778899",
|
147
|
+
},
|
148
|
+
},
|
149
|
+
},
|
56
150
|
}
|
57
151
|
)
|
58
152
|
```
|
59
153
|
|
60
|
-
###
|
154
|
+
### Deletar cartão de crédito
|
155
|
+
|
156
|
+
> Retorna uma Exception do tipo `NotFoundError` caso não encontre o cartão de crédito para deletar
|
157
|
+
|
158
|
+
```ruby
|
159
|
+
api.customer.delete_credit_card!("CREDIT-CARD-ID")
|
160
|
+
```
|
161
|
+
|
162
|
+
> Retorna `false` caso não encontre o cartão de crédito para deletar
|
163
|
+
|
164
|
+
```ruby
|
165
|
+
api.customer.delete_credit_card("CREDIT-CARD-ID")
|
166
|
+
```
|
61
167
|
|
62
|
-
|
168
|
+
## Pedidos
|
169
|
+
### Criação
|
63
170
|
|
64
171
|
```ruby
|
65
|
-
order = api.order.create(
|
172
|
+
order = api.order.create({
|
173
|
+
own_id: "ruby_sdk_1",
|
174
|
+
items: [
|
66
175
|
{
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
quantity: 1,
|
72
|
-
detail: "Mais info...",
|
73
|
-
price: 1000
|
74
|
-
}
|
75
|
-
],
|
76
|
-
customer: {
|
77
|
-
own_id: "ruby_sdk_customer_1",
|
78
|
-
fullname: "Jose da Silva",
|
79
|
-
email: "sandbox_v2_1401147277@email.com",
|
80
|
-
birthdate: "1988-12-30",
|
81
|
-
tax_document: { number: "33333333333", type: "CPF" },
|
82
|
-
phone: { country_code: "55", area_code: "11", number: "66778899" },
|
83
|
-
shipping_address:
|
84
|
-
{
|
85
|
-
street: "Avenida Faria Lima",
|
86
|
-
street_number: 2927,
|
87
|
-
complement: 8,
|
88
|
-
district: "Itaim",
|
89
|
-
city: "Sao Paulo",
|
90
|
-
state: "SP",
|
91
|
-
country: "BRA",
|
92
|
-
zip_code: "01234000"
|
93
|
-
}
|
94
|
-
}
|
176
|
+
product: "Nome do produto",
|
177
|
+
quantity: 1,
|
178
|
+
detail: "Mais info...",
|
179
|
+
price: 1000
|
95
180
|
}
|
96
|
-
|
181
|
+
],
|
182
|
+
customer: {
|
183
|
+
own_id: "ruby_sdk_customer_1",
|
184
|
+
fullname: "Jose da Silva",
|
185
|
+
email: "sandbox_v2_1401147277@email.com",
|
186
|
+
}
|
187
|
+
})
|
188
|
+
```
|
189
|
+
### Consulta
|
190
|
+
#### Pedido Específico
|
191
|
+
```ruby
|
192
|
+
order = api.order.show("ORD-V41BR451L")
|
193
|
+
```
|
194
|
+
|
195
|
+
#### Todos os Pedidos
|
196
|
+
##### Sem Filtro
|
197
|
+
```ruby
|
198
|
+
orders = api.order.find_all()
|
199
|
+
```
|
200
|
+
|
201
|
+
##### Com Filtros
|
202
|
+
```ruby
|
203
|
+
orders = api.order.find_all(filters: { status: { in: ["PAID", "WAITING"] }, amount: { bt: [500, 1000] } })
|
97
204
|
```
|
98
205
|
|
99
|
-
|
206
|
+
##### Com Paginação
|
207
|
+
```ruby
|
208
|
+
orders = api.order.find_all(limit: 10, offset: 50)
|
209
|
+
```
|
100
210
|
|
101
|
-
|
211
|
+
## Pagamentos
|
212
|
+
|
213
|
+
### Criação
|
214
|
+
#### Cartão de Crédito
|
215
|
+
##### Com Hash
|
102
216
|
|
103
217
|
```ruby
|
104
218
|
api.payment.create(order.id,
|
@@ -107,7 +221,7 @@ api.payment.create(order.id,
|
|
107
221
|
funding_instrument: {
|
108
222
|
method: "CREDIT_CARD",
|
109
223
|
credit_card: {
|
110
|
-
hash: "valor do
|
224
|
+
hash: "valor do cartão criptografado vindo do JS",
|
111
225
|
holder: {
|
112
226
|
fullname: "Jose Portador da Silva",
|
113
227
|
birthdate: "1988-10-10",
|
@@ -122,7 +236,8 @@ api.payment.create(order.id,
|
|
122
236
|
)
|
123
237
|
```
|
124
238
|
|
125
|
-
|
239
|
+
##### Com Dados do Cartão
|
240
|
+
> Esses método requer certificação PCI. [Consulte a documentação.](https://documentao-moip.readme.io/v2.0/reference#criar-pagamento)
|
126
241
|
|
127
242
|
```ruby
|
128
243
|
api.payment.create(order.id,
|
@@ -133,20 +248,10 @@ api.payment.create(order.id,
|
|
133
248
|
credit_card: {
|
134
249
|
expiration_month: 04,
|
135
250
|
expiration_year: 18,
|
136
|
-
number: "
|
251
|
+
number: "4002892240028922",
|
137
252
|
cvc: "123",
|
138
253
|
holder: {
|
139
|
-
|
140
|
-
birthdate: "1988-10-10",
|
141
|
-
tax_document: {
|
142
|
-
type: "CPF",
|
143
|
-
number: "22222222222"
|
144
|
-
},
|
145
|
-
phone: {
|
146
|
-
country_code: "55",
|
147
|
-
area_code: "11",
|
148
|
-
number: "55667788"
|
149
|
-
}
|
254
|
+
# ...
|
150
255
|
}
|
151
256
|
}
|
152
257
|
}
|
@@ -154,26 +259,220 @@ api.payment.create(order.id,
|
|
154
259
|
)
|
155
260
|
```
|
156
261
|
|
157
|
-
|
262
|
+
#### Com Boleto
|
158
263
|
|
159
264
|
```ruby
|
160
|
-
api.payment.create(
|
265
|
+
api.payment.create(order.id,
|
161
266
|
{
|
267
|
+
# ...
|
162
268
|
funding_instrument: {
|
163
269
|
method: "BOLETO",
|
164
270
|
boleto: {
|
165
|
-
expiration_date: "
|
271
|
+
expiration_date: "2017-09-30",
|
166
272
|
instruction_lines: {
|
167
273
|
first: "Primeira linha do boleto",
|
168
274
|
second: "Segunda linha do boleto",
|
169
275
|
third: "Terceira linha do boleto"
|
170
276
|
},
|
171
|
-
logo_uri: "https://"
|
277
|
+
logo_uri: "https://sualoja.com.br/logo.jpg"
|
172
278
|
}
|
173
279
|
}
|
174
280
|
}
|
175
281
|
)
|
176
282
|
```
|
283
|
+
|
284
|
+
### Consulta
|
285
|
+
```ruby
|
286
|
+
pagamento = api.payment.show("PAY-CRUP19YU2VE1")
|
287
|
+
```
|
288
|
+
|
289
|
+
### Capturar pagamento pré-autorizado
|
290
|
+
```ruby
|
291
|
+
api.payment.capture("PAY-KT5OSI01X8QU")
|
292
|
+
```
|
293
|
+
|
294
|
+
### Cancelar pagamento pré-autorizado
|
295
|
+
```ruby
|
296
|
+
api.payment.void("PAY-IXNGCU456GG4")
|
297
|
+
```
|
298
|
+
|
299
|
+
## Reembolsos
|
300
|
+
### Criação
|
301
|
+
#### Valor Total
|
302
|
+
```ruby
|
303
|
+
reembolso = api.refund.create("ORD-V41BR451L")
|
304
|
+
```
|
305
|
+
#### Valor Parcial
|
306
|
+
```ruby
|
307
|
+
reembolso = api.refund.create("ORD-V41BR451L", amount: 2000)
|
308
|
+
```
|
309
|
+
|
310
|
+
### Consulta
|
311
|
+
```ruby
|
312
|
+
reembolso = api.refund.show("REF-V41BR451L")
|
313
|
+
```
|
314
|
+
|
315
|
+
## Multipedidos
|
316
|
+
### Criação
|
317
|
+
```ruby
|
318
|
+
multi = api.multi_order.create(
|
319
|
+
{
|
320
|
+
ownId: "meu_multiorder_id",
|
321
|
+
orders: [
|
322
|
+
{
|
323
|
+
# Objeto Order 1
|
324
|
+
},
|
325
|
+
{
|
326
|
+
# Objeto Order 2
|
327
|
+
}
|
328
|
+
]
|
329
|
+
}
|
330
|
+
)
|
331
|
+
```
|
332
|
+
### Consulta
|
333
|
+
```ruby
|
334
|
+
multi = api.multi_order.show("MOR-V41BR451L")
|
335
|
+
```
|
336
|
+
### Nota
|
337
|
+
> 1. Essa função depende de permissões das contas associadas ao recebimento. [Consulte a documentação.](https://documentao-moip.readme.io/v2.0/reference#multipedidos)
|
338
|
+
> 2. Para reembolsos de multipedidos, é necessario reembolsar os pedidos individualmente. [Consulte a documentação.](https://documentao-moip.readme.io/v2.0/reference#multipedidos)
|
339
|
+
|
340
|
+
## Multipagamentos
|
341
|
+
### Criação
|
342
|
+
```ruby
|
343
|
+
multi_pag = api.multi_payment.create("MOR-V41BR451L",
|
344
|
+
{
|
345
|
+
installmentCount: 1,
|
346
|
+
fundingInstrument: {
|
347
|
+
# ...
|
348
|
+
}
|
349
|
+
}
|
350
|
+
)
|
351
|
+
```
|
352
|
+
### Consulta
|
353
|
+
```ruby
|
354
|
+
multi_pag = api.multi_payment.show("MPY-V41BR451L")
|
355
|
+
```
|
356
|
+
|
357
|
+
## Conta Moip
|
358
|
+
### Criação
|
359
|
+
```ruby
|
360
|
+
account = api.accounts.create(
|
361
|
+
{
|
362
|
+
email: {
|
363
|
+
address: "dev.moip@labs.moip.com.br",
|
364
|
+
},
|
365
|
+
person: {
|
366
|
+
name: "Joaquim José",
|
367
|
+
lastName: "Silva Silva",
|
368
|
+
taxDocument: {
|
369
|
+
type: "CPF",
|
370
|
+
number: "572.619.050-54",
|
371
|
+
},
|
372
|
+
identityDocument: {
|
373
|
+
type: "RG",
|
374
|
+
number: "35.868.057-8",
|
375
|
+
issuer: "SSP",
|
376
|
+
issueDate: "2000-12-12",
|
377
|
+
},
|
378
|
+
birthDate: "1990-01-01",
|
379
|
+
phone: {
|
380
|
+
countryCode: "55",
|
381
|
+
areaCode: "11",
|
382
|
+
number: "965213244",
|
383
|
+
},
|
384
|
+
address: {
|
385
|
+
street: "Av. Brigadeiro Faria Lima",
|
386
|
+
streetNumber: "2927",
|
387
|
+
district: "Itaim",
|
388
|
+
zipCode: "01234-000",
|
389
|
+
city: "S\u00E3o Paulo",
|
390
|
+
state: "SP",
|
391
|
+
country: "BRA",
|
392
|
+
},
|
393
|
+
},
|
394
|
+
type: "MERCHANT"
|
395
|
+
}
|
396
|
+
)
|
397
|
+
```
|
398
|
+
|
399
|
+
### Consulta
|
400
|
+
```ruby
|
401
|
+
account = api.accounts.show("MPA-12312312312")
|
402
|
+
```
|
403
|
+
|
404
|
+
### Verifica se usuário já possui Conta Moip
|
405
|
+
```ruby
|
406
|
+
api.accounts.exists?("123.456.789.10")
|
407
|
+
```
|
408
|
+
|
409
|
+
## OAuth (Moip Connect)
|
410
|
+
### Solicitar permissões de acesso ao usuário
|
411
|
+
```ruby
|
412
|
+
api.connect.authorize_url("APP-ID","http://localhost/moip/callback","RECEIVE_FUNDS,REFUND")
|
413
|
+
```
|
414
|
+
|
415
|
+
### Gerar token OAuth
|
416
|
+
```ruby
|
417
|
+
api.connect.authorize(
|
418
|
+
client_id: "APP-YRYCCJ5P603B",
|
419
|
+
client_secret: "363cdf8ab70a4c5aa08017564c08efbe",
|
420
|
+
code: "4efde1f89d9acc3b12124ccfded146518465e423",
|
421
|
+
redirect_uri: "http://localhost/moip/callback",
|
422
|
+
grant_type: "authorization_code"
|
423
|
+
)
|
424
|
+
```
|
425
|
+
|
426
|
+
### Atualizar token OAuth
|
427
|
+
```ruby
|
428
|
+
api.connect.authorize(
|
429
|
+
refresh_token: "1d5dc51e71674683b4ed79cd7a988fa1_v2",
|
430
|
+
grant_type: "refresh_token"
|
431
|
+
)
|
432
|
+
```
|
433
|
+
|
434
|
+
## Preferências de notificação
|
435
|
+
|
436
|
+
### Criação
|
437
|
+
```ruby
|
438
|
+
api.notifications.create(
|
439
|
+
events: ["ORDER.*", "PAYMENT.AUTHORIZED", "PAYMENT.CANCELLED"],
|
440
|
+
target: "http://requestb.in/1dhjesw1",
|
441
|
+
media: "WEBHOOK"
|
442
|
+
)
|
443
|
+
```
|
444
|
+
|
445
|
+
### Consulta
|
446
|
+
```ruby
|
447
|
+
api.notifications.show("NOTIFICATION-ID")
|
448
|
+
```
|
449
|
+
|
450
|
+
### Exclusão
|
451
|
+
> Caso o notification não seja encontrado uma exceção do tipo `NotFoundError` será lançada, veja como tratar [aqui](#tratamento-de-exceções).
|
452
|
+
|
453
|
+
```ruby
|
454
|
+
api.notifications.delete("NOTIFICATION-ID")
|
455
|
+
```
|
456
|
+
|
457
|
+
### Listagem
|
458
|
+
```ruby
|
459
|
+
api.notifications.find_all
|
460
|
+
```
|
461
|
+
|
462
|
+
## Tratamento de Exceções
|
463
|
+
|
464
|
+
Caso algum recurso não seja encontrado uma exceção do tipo `NotFoundError` será lançada.
|
465
|
+
|
466
|
+
```ruby
|
467
|
+
begin
|
468
|
+
api.payment.create(
|
469
|
+
# ...
|
470
|
+
)
|
471
|
+
rescue NotFoundError => e
|
472
|
+
puts e.message
|
473
|
+
end
|
474
|
+
```
|
475
|
+
|
177
476
|
## Documentação
|
178
477
|
|
179
478
|
[Documentação oficial](https://moip.com.br/referencia-api/)
|
data/Rakefile
CHANGED