fintecture 0.1.8 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +17 -16
  3. data/.rspec +3 -3
  4. data/.travis.yml +7 -7
  5. data/CODE_OF_CONDUCT.md +74 -74
  6. data/Gemfile +8 -6
  7. data/Gemfile.lock +22 -3
  8. data/LICENSE.txt +674 -674
  9. data/README.md +404 -121
  10. data/Rakefile +8 -6
  11. data/bin/console +15 -14
  12. data/bin/setup +8 -8
  13. data/exemples/ais.rb +53 -0
  14. data/exemples/config_ais.json +8 -0
  15. data/exemples/config_pis.json +6 -0
  16. data/exemples/pis.rb +148 -0
  17. data/exemples/ressources.rb +23 -0
  18. data/fintecture.gemspec +44 -43
  19. data/lib/fintecture/ais_client.rb +94 -0
  20. data/lib/fintecture/api/ais/account_holders.rb +61 -0
  21. data/lib/fintecture/api/ais/accounts.rb +63 -0
  22. data/lib/fintecture/api/ais/authorize.rb +72 -0
  23. data/lib/fintecture/api/ais/authorize_decoupled.rb +68 -0
  24. data/lib/fintecture/api/ais/connect.rb +65 -0
  25. data/lib/fintecture/api/ais/delete_customer.rb +53 -0
  26. data/lib/fintecture/api/ais/transactions.rb +64 -0
  27. data/lib/fintecture/{authentication.rb → api/auth/authentication.rb} +78 -76
  28. data/lib/fintecture/api/pis/connect.rb +77 -0
  29. data/lib/fintecture/api/pis/initiate.rb +52 -0
  30. data/lib/fintecture/api/pis/payments.rb +48 -0
  31. data/lib/fintecture/api/pis/refund.rb +67 -0
  32. data/lib/fintecture/api/pis/request_to_pay.rb +63 -0
  33. data/lib/fintecture/api/pis/settlements.rb +48 -0
  34. data/lib/fintecture/api/ressources/applications.rb +57 -0
  35. data/lib/fintecture/api/ressources/providers.rb +61 -0
  36. data/lib/fintecture/api/ressources/test_accounts.rb +60 -0
  37. data/lib/fintecture/base_url.rb +26 -0
  38. data/lib/fintecture/endpoints/ais.rb +17 -0
  39. data/lib/fintecture/{api/endpoints → endpoints}/authentication.rb +13 -13
  40. data/lib/fintecture/endpoints/pis.rb +16 -0
  41. data/lib/fintecture/endpoints/ressources.rb +13 -0
  42. data/lib/fintecture/exceptions.rb +72 -4
  43. data/lib/fintecture/faraday/authentication/connection.rb +140 -74
  44. data/lib/fintecture/pis_client.rb +100 -0
  45. data/lib/fintecture/utils/constants.rb +11 -14
  46. data/lib/fintecture/utils/crypto.rb +75 -76
  47. data/lib/fintecture/utils/date.rb +15 -15
  48. data/lib/fintecture/utils/validation.rb +32 -17
  49. data/lib/fintecture/version.rb +5 -3
  50. data/lib/fintecture.rb +65 -82
  51. metadata +35 -13
  52. data/lib/fintecture/api/base_url.rb +0 -28
  53. data/lib/fintecture/api/endpoints/pis.rb +0 -13
  54. data/lib/fintecture/connect.rb +0 -173
  55. data/lib/fintecture/pis.rb +0 -61
data/README.md CHANGED
@@ -1,121 +1,404 @@
1
- # Fintecture
2
-
3
- Fintecture is connected with most European banks and enables a user to initiate a payment directly from their bank account. This results to a bank transfer sent from the user's bank account directly to your bank account, skipping all intermediaries. Within the SEPA region, transfers take between 10 seconds to 1 business day to arrive on your bank account. No hidden fees. Check out [our website](https://fintecture.com/).
4
-
5
- ## Installation
6
-
7
- Add this line to your application's Gemfile:
8
-
9
- ```ruby
10
- gem 'fintecture'
11
- ```
12
-
13
-
14
- And then execute:
15
-
16
- $ bundle
17
-
18
- Or install it yourself as:
19
-
20
- $ gem install fintecture
21
-
22
- ## Usage
23
-
24
- Get started by subscribing to a free developer account. Join today to get access to our sandbox by registering on the [developer console](https://console.fintecture.com) by creating your first sets of API Keys. When creating an account, specify you are an ECOMMERCE. When you’re ready to deploy to production, just go through the Activation Form in your console. Once the Fintecture Team activates your account, you’ll be ready to start receiving real bank transfers directly on the bank account specified during activation.
25
-
26
- Initialize your client credentials
27
-
28
- ```ruby
29
- Fintecture.app_id = 'your_app_id'
30
- Fintecture.app_secret = 'your_app_secret'
31
- Fintecture.private_key = %q(your_private_key)
32
- ```
33
-
34
-
35
- #### Environments
36
-
37
- By default `sandbox` is the initial environment, but you can change to sandbox by doing
38
-
39
- ```ruby
40
- Fintecture.environment = 'sandbox'
41
- ```
42
-
43
- You can also see the available environments
44
-
45
- Fintecture::ENVIRONMENTS
46
- => ["sandbox", "production"]
47
-
48
- ### Authentication
49
-
50
-
51
- #### Access token
52
-
53
- ```ruby
54
- Fintecture::Pis.get_access_token
55
- ```
56
-
57
- ### Connect
58
-
59
- #### Get connect URL
60
- ```ruby
61
- payment_attrs = {
62
- amount: 123,
63
- currency: 'EUR',
64
- communication: 'Thanks Mom!',
65
- customer_full_name: 'John Doe',
66
- customer_email: 'john.doe@email.com',
67
- customer_ip: '127.0.0.1',
68
- redirect_uri: 'http://example.com/callback',
69
- origin_uri: 'http://example.com/checkout?session=123',
70
- state: 'somestate',
71
- psu_type: 'retail',
72
- country: 'fr'
73
- }
74
- tokens = Fintecture::Pis.get_access_token
75
- connect_response = Fintecture::Connect.get_pis_connect tokens['access_token'], payment_attrs
76
- url = connect_response[:url]
77
-
78
- ```
79
- Explanation of each field:
80
-
81
- * amount: **[mandatory]** The amount of the payment initiation request. Min 1.00 and Max is variable based on bank's policy.
82
- * currency: **[mandatory]** The currency of the payment initiation request. Currently, only EUR and GBP is supported.
83
- * communication: **[optional]** A message sent to the beneficiary of the payment and visible on his bank statement. In the context of ecommerce payment collection, the order reference is inputted here (with an optional prefer ex: REF#23444)
84
- * customer_full_name: **[mandatory]** The full name of the payer
85
- * customer_email: **[mandatory]** The email of the payer
86
- * customer_ip: **[mandatory]** The ip address of the payer
87
- * redirect_uri: **[mandatory]** The callback URL to which the customer is redirected after authentication with his bank
88
- * origin_uri: **[optional]** A URL to which the customer will be redirected if he wants to exit Fintecture Connect
89
- * state: **[optional]** A state parameter which is sent back on callback
90
- * retail: **[optional]** Possible values are **retail** and **corporate** (retail by default)
91
- * country: **[optional]** Loads a specific collection of providers filter by country
92
-
93
- #### Verify payment
94
-
95
- ```ruby
96
-
97
- payment_response = Fintecture::Pis.get_payments tokens['access_token'], params[:session_id]
98
- payment_response_body = JSON.parse payment_response.body
99
-
100
- verified = (payment_response_body['meta']['status'] === 'payment_created')
101
- ```
102
-
103
- If the payment was success, the status of the response (_payment_response_body['meta']['status']_) should be **payment_created**
104
-
105
- ## Development
106
-
107
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
108
-
109
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
110
-
111
- ## Contributing
112
-
113
- Bug reports and pull requests are welcome on GitHub at https://github.com/Fintecture/fintecture-sdk-ruby. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
114
-
115
- ## License
116
-
117
- The gem is available as open source under the terms of the [GPL-3.0 License](http://www.gnu.org/licenses/gpl-3.0.txt).
118
-
119
- ## Code of Conduct
120
-
121
- Everyone interacting in the Fintecture project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/Fintecture/fintecture-sdk-ruby/blob/master/CODE_OF_CONDUCT.md).
1
+ # Fintecture
2
+
3
+ Fintecture is connected with most European banks and enables a user to initiate a payment directly from their bank account. This results to a bank transfer sent from the user's bank account directly to your bank account, skipping all intermediaries. Within the SEPA region, transfers take between 10 seconds to 1 business day to arrive on your bank account. No hidden fees. Check out [our website](https://fintecture.com/).
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'fintecture'
11
+ ```
12
+
13
+
14
+ And then execute:
15
+
16
+ $ bundle
17
+
18
+ Or install it yourself as:
19
+
20
+ $ gem install fintecture
21
+
22
+ ## Usage
23
+
24
+ Get started by subscribing to a free developer account. Join today to get access to our sandbox by registering on the [developer console](https://console.fintecture.com) by creating your first sets of API Keys. When creating an account, specify you are an ECOMMERCE. When you’re ready to deploy to production, just go through the Activation Form in your console. Once the Fintecture Team activates your account, you’ll be ready to start receiving real bank transfers directly on the bank account specified during activation.
25
+
26
+ By default `sandbox` is the initial environment, but you can change to sandbox by doing
27
+
28
+ Initialize your PIS client
29
+
30
+ ```ruby
31
+ pis_client = Fintecture::PisClient.new({
32
+ environment: 'sandbox', # => ["sandbox", "test", "production"]
33
+ app_id: 'your_app_id',
34
+ app_secret: 'your_app_secret',
35
+ private_key: %q(your_private_key)
36
+ })
37
+ ```
38
+
39
+
40
+
41
+ Initialize your AIS client
42
+
43
+ ```ruby
44
+ ais_client = Fintecture::AisClient.new({
45
+ environment: 'sandbox', # => ["sandbox", "test", "production"]
46
+ app_id: 'your_app_id',
47
+ app_secret: 'your_app_secret',
48
+ private_key: %q(your_private_key)
49
+ })
50
+ ```
51
+
52
+
53
+
54
+ ## PIS
55
+ PIS client properties
56
+ ```ruby
57
+ pis_client.app_id
58
+ pis_client.app_secret
59
+ pis_client.private_key
60
+ pis_client.environment
61
+ pis_client.token
62
+ pis_client.token_expires_in
63
+ ```
64
+
65
+ #### Access token
66
+ This method return the token and store it in the client for future requests
67
+ ```ruby
68
+ pis_client.generate_token
69
+ ```
70
+
71
+
72
+ #### POST /connect
73
+ Documentation => https://docs.fintecture.com/v2/#post-post-post-connect
74
+ - An example of the JSON payload in the right column in "Request Body" section
75
+ - An exemple of response in the right column in "Request Body" section
76
+ - The definitions of each field in the "Body Parameters" section
77
+
78
+ ```ruby
79
+ # connect (payload, state, redirect_uri = nil, origin_uri = nil)
80
+ # payload: {}
81
+ # state: string
82
+ # redirect_uri: string
83
+ # origin_uri: string
84
+
85
+ response = pis_client.connect payload, "my-state", "https://www.my-redirect-uri.fr", "https://www.my-origine-uri.fr"
86
+ ```
87
+
88
+
89
+ #### POST /initiate
90
+ Documentation => https://docs.fintecture.com/v2/#post-post-post-initiate
91
+ - An example of the JSON payload in the right column in "Request Body" section
92
+ - An exemple of response in the right column in "Request Body" section
93
+ - The definitions of each field in the "Body Parameters" section
94
+
95
+ ```ruby
96
+ # initiate (payload, provider_id, redirect_uri, state = nil)
97
+ # payload: {}
98
+ # provider_id: string
99
+ # redirect_uri: string
100
+ # state: string
101
+
102
+ response = pis_client.initiate payload, "cmcifrpp", "https://www.my-redirect-uri.fr", "my-state"
103
+ ```
104
+
105
+ #### GET /payments
106
+ Documentation => https://docs.fintecture.com/v2/#get-get-get-payments
107
+ - An exemple of response in the right column in "Request Body" section
108
+
109
+ ```ruby
110
+ # payments (session_id = nil)
111
+ # session_id: string
112
+
113
+ response = pis_client.payments "7f47d3675f5d4964bc416b43af63b06e"
114
+ OR
115
+ response = pis_client.payments
116
+ ```
117
+ This endpoint returns the details of all transfers or of a specific transfer
118
+
119
+ #### POST /refund
120
+ Documentation => https://docs.fintecture.com/v2/#post-post-post-refund
121
+ - An exemple of response in the right column in "Request Body" section
122
+
123
+ ```ruby
124
+ # refund (session_id, amount = nil)
125
+ # session_id: string
126
+ # amount: number
127
+
128
+ response = pis_client.refund "7f47d3675f5d4964bc416b43af63b06e", 5.75
129
+ ```
130
+ If the amount is not specified, refund the total
131
+
132
+ #### POST /request-to-pay
133
+ Documentation => https://docs.fintecture.com/v2/#post-post-post-request-to-pay
134
+ - An example of the JSON payload in the right column in "Request Body" section
135
+ - An exemple of response in the right column in "Request Body" section
136
+ - The definitions of each field in the "Body Parameters" section
137
+ - The definition of x_language field in the "Header Parameters" section
138
+
139
+ ```ruby
140
+ # refund (payload, x_language, redirect_uri = nil)
141
+ # payload: {}
142
+ # x_language: string
143
+ # redirect_uri: string
144
+
145
+ response = pis_client.request_to_pay payload, 'fr', "https://www.my-redirect-uri.fr"
146
+ ```
147
+
148
+ #### GET /settlements
149
+ Documentation => https://docs.fintecture.com/v2/#get-get-get-settlements
150
+ - An exemple of response in the right column in "Request Body" section
151
+
152
+ ```ruby
153
+ # settlements (settlement_id = nil)
154
+ # settlement_id: string
155
+
156
+ response = pis_client.settlements
157
+ OR
158
+ response = pis_client.settlements "127335fdeb073e0eb2313ba0bd71ad44"
159
+ ```
160
+
161
+ ## AIS
162
+ AIS client properties
163
+ ```ruby
164
+ ais_client.app_id
165
+ ais_client.app_secret
166
+ ais_client.private_key
167
+ ais_client.environment
168
+ ais_client.token
169
+ ais_client.refresh_token
170
+ ais_client.token_expires_in
171
+ ```
172
+ #### GET /connect
173
+ Documentation => https://docs.fintecture.com/v2/#get-get-get-connect
174
+ - An exemple of response in the right column in "Request Body" section
175
+
176
+ ```ruby
177
+ # connect (state, redirect_uri, scope = nil)
178
+ # state: string
179
+ # redirect_uri: string
180
+ # scope: string
181
+
182
+ response = ais_client.connect "my-state", "https://www.my-redirect-uri.fr"
183
+ ```
184
+ When you follow the returned url, you'll be redirect with "customer_id" & "code" parameters
185
+ ```ruby
186
+ customer_id = "fa51058b5f8306f1e048f1adda5488a9"
187
+ code = "f66ec660b0bbd2797bf6847fb4b98454"
188
+ ```
189
+
190
+ #### Access token
191
+ Documentation => https://docs.fintecture.com/v2/#post-post-post-oauth-accesstoken
192
+
193
+ This method return the token and store it in the client for future requests
194
+ ```ruby
195
+ ais_client.generate_token code
196
+ ```
197
+
198
+ #### Refresh token
199
+ Documentation => https://docs.fintecture.com/v2/#post-post-post-oauth-refreshtoken
200
+
201
+ This method return the token and store it in the client for future requests
202
+ If you do not pass the refreshtoken as a parameter, the client refreshtoken will be used
203
+ ```ruby
204
+ # generate_refresh_token (refresh_token = nil)
205
+ # refresh_token: string
206
+
207
+ ais_client.generate_refresh_token
208
+ ```
209
+
210
+ #### GET /authorize
211
+ Documentation => https://docs.fintecture.com/v2/#get-get-get-authorize
212
+ - An exemple of response in the right column in "Request Body" section
213
+ - The definition of "x_psu_id" and "x_psu_ip_address" fields in the "Header Parameters" section
214
+
215
+ ```ruby
216
+ # authorize (app_id_auth: false, provider_id:, redirect_uri:, state: nil, x_psu_id: nil, x_psu_ip_address: nil)
217
+ # app_id_auth: boolean
218
+ # provider_id: string
219
+ # redirect_uri: string
220
+ # state: string
221
+ # x_psu_id: string
222
+ # x_psu_ip_address: string
223
+
224
+ response = ais_client.authorize app_id_auth: false, provider_id: "agfbfr", redirect_uri: "https://www.google.fr", state: "ok", x_psu_id: "123456", x_psu_ip_address: "192.168.1.1"
225
+ ```
226
+
227
+ #### GET /authorize/decoupled
228
+ Documentation => https://docs.fintecture.com/v2/#get-get-get-authorize-decoupled
229
+ - An exemple of response in the right column in "Request Body" section
230
+
231
+ ```ruby
232
+ # authorize_decoupled (app_id_auth: false, provider_id:, polling_id:)
233
+ # app_id_auth: boolean
234
+ # provider_id: string
235
+ # polling_id: string
236
+
237
+ response = ais_client.authorize_decoupled app_id_auth: false, provider_id: "agfbfr", polling_id: "1234"
238
+ ```
239
+
240
+ #### GET /accounts
241
+ Documentation => https://docs.fintecture.com/v2/#get-get-get-accounts
242
+ - An exemple of response in the right column in "Request Body" section
243
+
244
+ ```ruby
245
+ # accounts (customer_id:, account_id: nil, remove_nulls: nil, withBalances: nil)
246
+ # customer_id: string
247
+ # account_id: string
248
+ # remove_nulls: boolean
249
+ # withBalances: boolean
250
+
251
+ response = ais_client.accounts customer_id: customer_id, account_id: nil, remove_nulls: nil, withBalances: nil
252
+ ```
253
+
254
+ #### GET /transactions
255
+ Documentation => https://docs.fintecture.com/v2/#get-get-get-transactions
256
+ - An exemple of response in the right column in "Request Body" section
257
+
258
+ ```ruby
259
+ # transactions (customer_id:, account_id:, remove_nulls: nil, convert_dates: nil, filters: nil)
260
+ # customer_id: string
261
+ # account_id: string
262
+ # remove_nulls: boolean
263
+ # convert_dates: boolean
264
+ # filters: {}
265
+
266
+ transactions_filters = {
267
+ "filter[date_to]": "2020-01-01",
268
+ 'filter[date_from]': "max" # Date or 'max'
269
+ }
270
+ response = ais_client.transactions customer_id: customer_id, account_id: "b71722204d1a3f5ecd895", remove_nulls: true, convert_dates: true, filters: transactions_filters
271
+ ```
272
+
273
+ #### GET /accountholders
274
+ Documentation => https://docs.fintecture.com/v2/#get-get-get-accountholders
275
+ - An exemple of response in the right column in "Request Body" section
276
+
277
+ ```ruby
278
+ # account_holders (customer_id:, remove_nulls: nil)
279
+ # customer_id: string
280
+ # remove_nulls: boolean
281
+
282
+ response = ais_client.account_holders customer_id: customer_id, remove_nulls: true
283
+ ```
284
+
285
+ #### DELETE /customer
286
+ Documentation => https://docs.fintecture.com/v2/#delete-delete-delete-customer
287
+ - An exemple of response in the right column in "Request Body" section
288
+
289
+ ```ruby
290
+ # account_holders (customer_id:)
291
+ # customer_id: string
292
+
293
+ response = ais_client.delete_customer customer_id: customer_id
294
+ ```
295
+ ## RESSOURCES
296
+ Use the PIS client to get ressources. The "generate_token" step is not needed for this calls
297
+
298
+ #### GET /providers
299
+ Documentation => https://docs.fintecture.com/v2/#get-get-get-providers
300
+ - An exemple of response in the right column in "Request Body" section
301
+
302
+ ```ruby
303
+ # providers (provider_id: nil, paramsProviders: nil)
304
+ # provider_id: string
305
+ # paramsProviders: string
306
+
307
+ paramsProviders = {
308
+ 'filter[country]': 'FR',
309
+ 'filter[pis]': 'SEPA',
310
+ 'filter[ais]': 'Accounts',
311
+ 'filter[psu_type]': 'retail',
312
+ 'filter[auth_model]': 'redirect',
313
+ 'sort[name]': 'DESC',
314
+ 'sort[full_name]': 'DESC',
315
+ 'sort[country]': 'DESC',
316
+ 'sort[provider_id]': 'DESC'
317
+ }
318
+ response = pis_client.providers provider_id: 'agfbfr', paramsProviders: paramsProviders
319
+ ```
320
+
321
+ #### GET /applications
322
+ Documentation => https://docs.fintecture.com/v2/#get-get-get-applications
323
+ - An exemple of response in the right column in "Request Body" section
324
+
325
+ ```ruby
326
+ # applications ()
327
+
328
+ response = pis_client.applications
329
+ ```
330
+
331
+ #### GET /testaccounts
332
+ Documentation => https://docs.fintecture.com/v2/#get-get-get-testaccounts
333
+ - An exemple of response in the right column in "Request Body" section
334
+
335
+ ```ruby
336
+ # test_accounts (provider_id = nil)
337
+ # provider_id: string
338
+
339
+ response = pis_client.test_accounts 'agfbfr'
340
+ ```
341
+
342
+ ## API Errors handling
343
+ Hash version
344
+ ```ruby
345
+ begin
346
+ pis_client.refund "7f47d3675f5d4964bc416b43af63b06e", 1
347
+ rescue => e
348
+ error = JSON.parse e.to_s
349
+ puts error
350
+ end
351
+ ```
352
+
353
+ ```ruby
354
+ {
355
+ "type"=>"Fintecture api",
356
+ "status"=>401,
357
+ "errors"=>[
358
+ {
359
+ "code"=>"invalid_token",
360
+ "title"=>"Invalid Token",
361
+ "message"=>"The token is either invalid or expired."
362
+ }
363
+ ],
364
+ "error_string"=>"\nFintecture server errors : \n status: 401 \n code: unauthorized\n id : 3006ddbf-2f97-44d8-9f63-35711b78e8a6\n\n code: invalid_token\n title: Invalid Token\n message: The token is either invalid or expired.\n\n"
365
+ }
366
+ ```
367
+ Text version
368
+ ```ruby
369
+ begin
370
+ pis_client.refund "7f47d3675f5d4964bc416b43af63b06e", 1
371
+ rescue => e
372
+ error = JSON.parse e.to_s
373
+ puts error['error_string']
374
+ end
375
+ ```
376
+
377
+ ```ruby
378
+ Fintecture server errors :
379
+ status: 401
380
+ code: unauthorized
381
+ id : 2adb9e35-ff0d-4477-959e-b1b1a7d7c812
382
+
383
+ code: invalid_token
384
+ title: Invalid Token
385
+ message: The token is either invalid or expired.
386
+
387
+ ```
388
+ ## Development
389
+
390
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
391
+
392
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
393
+
394
+ ## Contributing
395
+
396
+ Bug reports and pull requests are welcome on GitHub at https://github.com/Fintecture/fintecture-sdk-ruby. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
397
+
398
+ ## License
399
+
400
+ The gem is available as open source under the terms of the [GPL-3.0 License](http://www.gnu.org/licenses/gpl-3.0.txt).
401
+
402
+ ## Code of Conduct
403
+
404
+ Everyone interacting in the Fintecture project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/Fintecture/fintecture-sdk-ruby/blob/master/CODE_OF_CONDUCT.md).
data/Rakefile CHANGED
@@ -1,6 +1,8 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
3
-
4
- RSpec::Core::RakeTask.new(:spec)
5
-
6
- task :default => :spec
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
5
+
6
+ RSpec::Core::RakeTask.new(:spec)
7
+
8
+ task default: :spec
data/bin/console CHANGED
@@ -1,14 +1,15 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "bundler/setup"
4
- require "fintecture"
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require "irb"
14
- IRB.start(__FILE__)
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'bundler/setup'
5
+ require 'fintecture'
6
+
7
+ # You can add fixtures and/or initialization code here to make experimenting
8
+ # with your gem easier. You can also use a different console, if you like.
9
+
10
+ # (If you use this, don't forget to add pry to your Gemfile!)
11
+ # require "pry"
12
+ # Pry.start
13
+
14
+ require 'irb'
15
+ IRB.start(__FILE__)
data/bin/setup CHANGED
@@ -1,8 +1,8 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
data/exemples/ais.rb ADDED
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ require './lib/fintecture'
4
+
5
+ config = JSON.parse(File.read('./exemples/config_ais.json'))
6
+
7
+ ais_client = Fintecture::AisClient.new({
8
+ environment: config['environment'],
9
+ app_id: config['app_id'],
10
+ app_secret: config['app_secret'],
11
+ private_key: config['private_key']
12
+ })
13
+
14
+ # ######################## AIS ########################
15
+
16
+ # ------------ Connect ------------
17
+ connect_response = ais_client.connect 'ok', 'https://www.google.fr'
18
+ connect_id = connect_response['meta']['connect_id']
19
+ url = connect_response['meta']['url']
20
+
21
+ puts "Connect url => #{url}"
22
+
23
+ # Put the return of connect url here
24
+ customer_id = 'c84e6a2c66862f6ce169a11262b28f4c'
25
+ code = '173535d0acc16271e7942cc6e1772a5b'
26
+
27
+ # ------------ Get access token ------------
28
+ ais_client.generate_token code
29
+ ais_client.generate_refresh_token
30
+ # ------------ Authorize ------------
31
+ puts ais_client.authorize app_id_auth: true, provider_id: 'agfbfr', redirect_uri: 'https://www.google.fr', state: 'ok',
32
+ x_psu_id: nil, x_psu_ip_address: nil
33
+ # ------------ Authorize decoupled ------------
34
+ puts ais_client.authorize_decoupled app_id_auth: false, provider_id: 'agfbfr', polling_id: '1234'
35
+ # ------------ Get accounts ------------
36
+ accounts_response = ais_client.accounts customer_id: customer_id, account_id: nil, remove_nulls: nil, withBalances: nil
37
+ account = accounts_response['data'].first
38
+ account_id = account['id']
39
+ # ------------ Get transactions ------------
40
+ transactions_filters = {
41
+ "filter[date_to]": '2020-01-01',
42
+ 'filter[date_from]': 'max'
43
+ }
44
+ transactions_response = ais_client.transactions customer_id: customer_id, account_id: account_id, remove_nulls: true,
45
+ convert_dates: true, filters: transactions_filters
46
+ transaction = transactions_response['data'].first
47
+ puts transaction
48
+ # ------------ Get account holders ------------
49
+ # Caution the hasAccountholders field in db must have a value = 1.
50
+ puts ais_client.account_holders customer_id: customer_id, remove_nulls: nil
51
+ # ------------ Delete customer ------------
52
+ # Customer not found if customer you don't use the api before
53
+ puts ais_client.delete_customer customer_id: customer_id
@@ -0,0 +1,8 @@
1
+ {
2
+ "customer_id" : "the_customer_id_here",
3
+ "code" : "the_code_here",
4
+ "environment": "test",
5
+ "app_id": "your_app_id_here",
6
+ "app_secret": "your_app_secret_here",
7
+ "private_key": "your_private_key here"
8
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "environment": "test",
3
+ "app_id": "your_app_id_here",
4
+ "app_secret": "your_app_secret_here",
5
+ "private_key": "your_private_key here"
6
+ }