figo 1.1.1 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +13 -5
- data/.travis.yml +0 -8
- data/README.md +8 -4
- data/console_demo.rb +14 -0
- data/figo.gemspec +4 -4
- data/lib/figo.rb +206 -75
- data/lib/models.rb +247 -111
- data/test/test_figo.rb +87 -33
- data/web_demo/app.rb +56 -0
- data/web_demo/public/banking.css +1 -0
- data/web_demo/public/favicon.ico +0 -0
- data/web_demo/views/index.erb +41 -0
- data/web_demo/views/layout.erb +53 -0
- metadata +17 -14
data/lib/models.rb
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
#
|
2
2
|
# Copyright (c) 2013 figo GmbH
|
3
|
-
#
|
3
|
+
#
|
4
4
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
5
|
# of this software and associated documentation files (the "Software"), to deal
|
6
6
|
# in the Software without restriction, including without limitation the rights
|
7
7
|
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
8
8
|
# copies of the Software, and to permit persons to whom the Software is
|
9
9
|
# furnished to do so, subject to the following conditions:
|
10
|
-
#
|
10
|
+
#
|
11
11
|
# The above copyright notice and this permission notice shall be included in
|
12
12
|
# all copies or substantial portions of the Software.
|
13
|
-
#
|
13
|
+
#
|
14
14
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
15
15
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
16
16
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
@@ -18,43 +18,23 @@
|
|
18
18
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
19
19
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
20
20
|
# THE SOFTWARE.
|
21
|
-
#
|
21
|
+
#
|
22
22
|
|
23
23
|
require "date"
|
24
24
|
require "flt"
|
25
25
|
|
26
26
|
|
27
27
|
module Figo
|
28
|
-
|
29
28
|
# Set decimal precision to two digits.
|
30
29
|
Flt::DecNum.context.precision = 2
|
31
30
|
|
32
|
-
# Account type enumeration.
|
33
|
-
class AccountType
|
34
|
-
GIRO = "Giro account"
|
35
|
-
SAVINGS = "Savings account"
|
36
|
-
CREDIT_CARD = "Credit card"
|
37
|
-
LOAN = "Loan account"
|
38
|
-
PAYPAL = "PayPal"
|
39
|
-
CASH_BOOK = "Cash book"
|
40
|
-
UNKNOWN = "Unknown"
|
41
|
-
end
|
42
|
-
|
43
|
-
# Transaction type enumeration.
|
44
|
-
class TransactionType
|
45
|
-
TRANSFER = "Transfer"
|
46
|
-
STANDING_ORDER = "Standing order"
|
47
|
-
DIRECT_DEBIT = "Direct debit"
|
48
|
-
SALARY_OR_RENT = "Salary or rent"
|
49
|
-
ELECTRONIC_CASH = "Electronic cash"
|
50
|
-
GELDKARTE = "GeldKarte"
|
51
|
-
ATM = "ATM"
|
52
|
-
CHARGES_OR_INTEREST = "Charges or interest"
|
53
|
-
UNKNOWN = "Unknown"
|
54
|
-
end
|
55
|
-
|
56
31
|
# Abstract base class for model objects.
|
57
32
|
class Base
|
33
|
+
# Attributes to be dumped (called by modify and create)
|
34
|
+
@dump_attributes = []
|
35
|
+
def self.dump_attributes
|
36
|
+
@dump_attributes
|
37
|
+
end
|
58
38
|
|
59
39
|
# Instantiate model object from hash.
|
60
40
|
#
|
@@ -64,6 +44,10 @@ module Figo
|
|
64
44
|
@session = session
|
65
45
|
|
66
46
|
hash.each do |key, value|
|
47
|
+
key = key.to_s if key.is_a? Symbol
|
48
|
+
next unless respond_to? "#{key}="
|
49
|
+
next if value.nil?
|
50
|
+
|
67
51
|
if key == "status"
|
68
52
|
value = SynchronizationStatus.new(session, value)
|
69
53
|
elsif key == "amount" or key == "balance" or key == "credit_line" or key == "monthly_spending_limit"
|
@@ -71,127 +55,203 @@ module Figo
|
|
71
55
|
elsif key.end_with?("_date")
|
72
56
|
value = DateTime.iso8601(value)
|
73
57
|
elsif key.end_with?("_timestamp")
|
74
|
-
value =
|
58
|
+
value = DateTime.iso8601(value)
|
75
59
|
end
|
76
|
-
|
60
|
+
send("#{key}=", value)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
# Dump committable attributes to a hash
|
65
|
+
def dump
|
66
|
+
result = {}
|
67
|
+
self.class.dump_attributes.each do |attribute|
|
68
|
+
value = send attribute
|
69
|
+
next if value.nil?
|
70
|
+
value = value.to_f if value.is_a? Flt::DecNum
|
71
|
+
|
72
|
+
result[attribute] = value
|
77
73
|
end
|
74
|
+
return result
|
78
75
|
end
|
76
|
+
end
|
77
|
+
|
78
|
+
# Object representing an User
|
79
|
+
class User < Base
|
80
|
+
@dump_attributes = [:name, :address, :send_newsletter, :language]
|
81
|
+
|
82
|
+
# Internal figo Connect User ID
|
83
|
+
# @return [String]
|
84
|
+
attr_accessor :User_id
|
85
|
+
|
86
|
+
# First and last name
|
87
|
+
# @return [String]
|
88
|
+
attr_accessor :name
|
89
|
+
|
90
|
+
# Email address
|
91
|
+
# @return [String]
|
92
|
+
attr_accessor :email
|
93
|
+
|
94
|
+
#Postal address for bills, etc.
|
95
|
+
# @return [Dict]
|
96
|
+
attr_accessor :address
|
97
|
+
|
98
|
+
# This flag indicates whether the email address has been verified
|
99
|
+
# @return [Boolean]
|
100
|
+
attr_accessor :verified_email
|
79
101
|
|
102
|
+
# This flag indicates whether the User has agreed to be contacted by email
|
103
|
+
# @return [Boolean]
|
104
|
+
attr_accessor :send_newsletter
|
105
|
+
|
106
|
+
# Two-letter code of preferred language
|
107
|
+
# @return [String]
|
108
|
+
attr_accessor :language
|
109
|
+
|
110
|
+
# This flag indicates whether the figo Account plan is free or premium
|
111
|
+
# @return [Boolean]
|
112
|
+
attr_accessor :premium
|
113
|
+
|
114
|
+
# Timestamp of premium figo Account expiry
|
115
|
+
# @return [DateTime]
|
116
|
+
attr_accessor :premium_expires_on
|
117
|
+
|
118
|
+
# Provider for premium subscription or Null of no subscription is active
|
119
|
+
# @return [String]
|
120
|
+
attr_accessor :premium_subscription
|
121
|
+
|
122
|
+
# Timestamp of figo Account registration
|
123
|
+
# @return [DateTime]
|
124
|
+
attr_accessor :join_date
|
80
125
|
end
|
81
126
|
|
82
|
-
# Object representing one bank account of the
|
127
|
+
# Object representing one bank account of the User
|
83
128
|
class Account < Base
|
129
|
+
@dump_attributes = [:name, :owner, :auto_sync]
|
84
130
|
|
85
|
-
# Internal figo Connect account ID
|
131
|
+
# Internal figo Connect account ID
|
86
132
|
# @return [String]
|
87
133
|
attr_accessor :account_id
|
88
134
|
|
89
|
-
# Internal figo Connect bank ID
|
135
|
+
# Internal figo Connect bank ID
|
90
136
|
# @return [String]
|
91
137
|
attr_accessor :bank_id
|
92
138
|
|
93
|
-
# Account name
|
139
|
+
# Account name
|
94
140
|
# @return [String]
|
95
141
|
attr_accessor :name
|
96
142
|
|
97
|
-
# Account owner
|
143
|
+
# Account owner
|
98
144
|
# @return [String]
|
99
145
|
attr_accessor :owner
|
100
146
|
|
101
|
-
# This flag indicates whether the account will be automatically synchronized
|
147
|
+
# This flag indicates whether the account will be automatically synchronized
|
102
148
|
# @return [Boolean]
|
103
149
|
attr_accessor :auto_sync
|
104
150
|
|
105
|
-
# Account number
|
151
|
+
# Account number
|
106
152
|
# @return [String]
|
107
153
|
attr_accessor :account_number
|
108
154
|
|
109
|
-
# Bank code
|
155
|
+
# Bank code
|
110
156
|
# @return [String]
|
111
157
|
attr_accessor :bank_code
|
112
158
|
|
113
|
-
# Bank name
|
159
|
+
# Bank name
|
114
160
|
# @return [String]
|
115
161
|
attr_accessor :bank_name
|
116
162
|
|
117
|
-
# Three-character currency code
|
163
|
+
# Three-character currency code
|
118
164
|
# @return [String]
|
119
165
|
attr_accessor :currency
|
120
166
|
|
121
|
-
# IBAN
|
167
|
+
# IBAN
|
122
168
|
# @return [String]
|
123
169
|
attr_accessor :iban
|
124
170
|
|
125
|
-
# BIC
|
171
|
+
# BIC
|
126
172
|
# @return [String]
|
127
173
|
attr_accessor :bic
|
128
174
|
|
129
|
-
# Account type
|
175
|
+
# Account type
|
130
176
|
# @return [String]
|
131
177
|
attr_accessor :type
|
132
178
|
|
133
|
-
# Account icon URL
|
179
|
+
# Account icon URL
|
134
180
|
# @return [String]
|
135
181
|
attr_accessor :icon
|
136
182
|
|
137
|
-
#
|
138
|
-
# @return [
|
139
|
-
attr_accessor :
|
183
|
+
# Account icon URLs for other resolutions
|
184
|
+
# @return [Hash]
|
185
|
+
attr_accessor :additional_icons
|
140
186
|
|
141
|
-
# This flag indicates whether this account is
|
187
|
+
# This flag indicates whether the balance of this account is added to the total balance of accounts
|
142
188
|
# @return [Boolean]
|
143
|
-
attr_accessor :
|
189
|
+
attr_accessor :in_total_balance
|
144
190
|
|
145
|
-
# Synchronization status object
|
191
|
+
# Synchronization status object
|
146
192
|
# @return [SynchronizationStatus]
|
147
193
|
attr_accessor :status
|
148
194
|
|
149
|
-
# Request
|
150
|
-
#
|
151
|
-
# @return [AccountBalance] account balance object
|
152
|
-
def balance
|
153
|
-
response = @session.query_api("/rest/accounts/#{@account_id}/balance")
|
154
|
-
return AccountBalance.new(@session, response)
|
155
|
-
end
|
156
|
-
|
157
|
-
# Request list of transactions of this account.
|
195
|
+
# Request list of transactions of this account
|
158
196
|
#
|
159
197
|
# @param since [String, Date] this parameter can either be a transaction ID or a date
|
160
198
|
# @param start_id [String] do only return transactions which were booked after the start transaction ID
|
161
199
|
# @param count [Integer] limit the number of returned transactions
|
162
|
-
# @param include_pending [Boolean] this flag indicates whether pending transactions should be included
|
163
|
-
# in the response; pending transactions are always included as a complete set, regardless of
|
200
|
+
# @param include_pending [Boolean] this flag indicates whether pending transactions should be included
|
201
|
+
# in the response; pending transactions are always included as a complete set, regardless of
|
164
202
|
# the `since` parameter
|
165
203
|
# @return [Array] an array of `Transaction` objects, one for each transaction of this account
|
166
204
|
def transactions(since = nil, start_id = nil, count = 1000, include_pending = false)
|
167
|
-
|
168
|
-
data["since"] = (since.is_a?(Date) ? since.to_s : since) unless since.nil?
|
169
|
-
data["start_id"] = start_id unless start_id.nil?
|
170
|
-
data["count"] = count.to_s
|
171
|
-
data["include_pending"] = include_pending ? "1" : "0"
|
172
|
-
response = @session.query_api("/rest/accounts/#{@account_id}/transactions?" + URI.encode_www_form(data))
|
173
|
-
return response["transactions"].map {|transaction| Transaction.new(@session, transaction)}
|
205
|
+
@session.transactions @account_id, since, start_id, count, include_pending
|
174
206
|
end
|
175
207
|
|
176
208
|
# Request specific transaction.
|
177
209
|
#
|
178
210
|
# @param transaction_id [String] ID of the transaction to be retrieved
|
179
211
|
# @return [Transaction] transaction object
|
180
|
-
def
|
181
|
-
|
182
|
-
|
212
|
+
def get_transaction(transaction_id)
|
213
|
+
@session.get_transaction @acount_id, transaction_id
|
214
|
+
end
|
215
|
+
|
216
|
+
# Retrieve list of payments on this account
|
217
|
+
#
|
218
|
+
# @return [Payment] an array of `Payment` objects, one for each payment
|
219
|
+
def payments
|
220
|
+
@session.payments @account_id
|
183
221
|
end
|
184
222
|
|
223
|
+
# Retrieve specific payment on this account
|
224
|
+
#
|
225
|
+
# @param payment_id [String] ID of the notification to be retrieved
|
226
|
+
# @return [Payment] `Payment` object for the respective payment
|
227
|
+
def get_payment(payment_id)
|
228
|
+
@session.get_payment @account_id, payment_id
|
229
|
+
end
|
230
|
+
|
231
|
+
# Retrieve bank of this account
|
232
|
+
#
|
233
|
+
# @return [Bank] `Bank` object for the respective bank
|
234
|
+
def bank
|
235
|
+
@session.get_bank @bank_id
|
236
|
+
end
|
237
|
+
|
238
|
+
# Retrieve balance of this account
|
239
|
+
#
|
240
|
+
# @return [AccountBalance] `AccountBalance` of this account
|
241
|
+
def balance
|
242
|
+
@session.get_account_balance @account_id
|
243
|
+
end
|
185
244
|
end
|
186
245
|
|
187
|
-
# Object representing the balance of a certain bank account of the
|
246
|
+
# Object representing the balance of a certain bank account of the User
|
188
247
|
class AccountBalance < Base
|
248
|
+
@dump_attributes = [:credit_line, :monthly_spending_limit]
|
189
249
|
|
190
|
-
# Account balance or `nil` if the balance is not yet known
|
250
|
+
# Account balance or `nil` if the balance is not yet known
|
191
251
|
# @return [DecNum]
|
192
252
|
attr_accessor :balance
|
193
253
|
|
194
|
-
# Bank server timestamp of balance or `nil` if the balance is not yet known
|
254
|
+
# Bank server timestamp of balance or `nil` if the balance is not yet known
|
195
255
|
# @return [Date]
|
196
256
|
attr_accessor :balance_date
|
197
257
|
|
@@ -199,129 +259,205 @@ module Figo
|
|
199
259
|
# @return [DecNum]
|
200
260
|
attr_accessor :credit_line
|
201
261
|
|
202
|
-
# User-defined spending limit
|
262
|
+
# User-defined spending limit
|
203
263
|
# @return [DecNum]
|
204
264
|
attr_accessor :monthly_spending_limit
|
205
265
|
|
206
|
-
# Synchronization status object
|
266
|
+
# Synchronization status object
|
207
267
|
# @return [SynchronizationStatus]
|
208
268
|
attr_accessor :status
|
269
|
+
end
|
270
|
+
|
271
|
+
# Object representing a bank, i.e. an connection to a bank
|
272
|
+
class Bank < Base
|
273
|
+
@dump_attributes = [:sepa_creditor_id]
|
209
274
|
|
275
|
+
# SEPA direct debit creditor ID
|
276
|
+
# @return [String]
|
277
|
+
attr_accessor :sepa_creditor_id
|
278
|
+
|
279
|
+
# This flag indicates whether the user has chosen to save the PIN on the figo Connect server
|
280
|
+
# @return [Boolean]
|
281
|
+
attr_accessor :save_pin
|
210
282
|
end
|
211
283
|
|
212
|
-
# Object representing one bank transaction on a certain bank account of the
|
284
|
+
# Object representing one bank transaction on a certain bank account of the User
|
213
285
|
class Transaction < Base
|
286
|
+
@dump_attributes = []
|
214
287
|
|
215
|
-
# Internal figo Connect transaction ID
|
288
|
+
# Internal figo Connect transaction ID
|
216
289
|
# @return [String]
|
217
290
|
attr_accessor :transaction_id
|
218
291
|
|
219
|
-
# Internal figo Connect account ID
|
292
|
+
# Internal figo Connect account ID
|
220
293
|
# @return [String]
|
221
294
|
attr_accessor :account_id
|
222
295
|
|
223
|
-
# Name of originator or recipient
|
296
|
+
# Name of originator or recipient
|
224
297
|
# @return [String]
|
225
298
|
attr_accessor :name
|
226
299
|
|
227
|
-
# Account number of originator or recipient
|
300
|
+
# Account number of originator or recipient
|
228
301
|
# @return [String]
|
229
302
|
attr_accessor :account_number
|
230
303
|
|
231
|
-
# Bank code of originator or recipient
|
304
|
+
# Bank code of originator or recipient
|
232
305
|
# @return [String]
|
233
306
|
attr_accessor :bank_code
|
234
307
|
|
235
|
-
# Bank name of originator or recipient
|
308
|
+
# Bank name of originator or recipient
|
236
309
|
# @return [String]
|
237
310
|
attr_accessor :bank_name
|
238
311
|
|
239
|
-
# Transaction amount
|
312
|
+
# Transaction amount
|
240
313
|
# @return [DecNum]
|
241
314
|
attr_accessor :amount
|
242
315
|
|
243
|
-
# Three-character currency code
|
316
|
+
# Three-character currency code
|
244
317
|
# @return [String]
|
245
318
|
attr_accessor :currency
|
246
319
|
|
247
|
-
# Booking date
|
320
|
+
# Booking date
|
248
321
|
# @return [Date]
|
249
322
|
attr_accessor :booking_date
|
250
323
|
|
251
|
-
# Value date
|
324
|
+
# Value date
|
252
325
|
# @return [Date]
|
253
326
|
attr_accessor :value_date
|
254
327
|
|
255
|
-
# Purpose text
|
328
|
+
# Purpose text
|
256
329
|
# @return [String]
|
257
330
|
attr_accessor :purpose
|
258
331
|
|
259
|
-
# Transaction type
|
332
|
+
# Transaction type
|
260
333
|
# @return [String]
|
261
334
|
attr_accessor :type
|
262
335
|
|
263
|
-
# Booking text
|
336
|
+
# Booking text
|
264
337
|
# @return [String]
|
265
338
|
attr_accessor :booking_text
|
266
339
|
|
267
|
-
# This flag indicates whether the transaction is booked or pending
|
340
|
+
# This flag indicates whether the transaction is booked or pending
|
268
341
|
# @return [Boolean]
|
269
342
|
attr_accessor :booked
|
270
343
|
|
271
|
-
# Internal creation timestamp on the figo Connect server
|
344
|
+
# Internal creation timestamp on the figo Connect server
|
272
345
|
# @return [DateTime]
|
273
346
|
attr_accessor :creation_timestamp
|
274
347
|
|
275
|
-
# Internal modification timestamp on the figo Connect server
|
348
|
+
# Internal modification timestamp on the figo Connect server
|
276
349
|
# @return [DateTime]
|
277
350
|
attr_accessor :modification_timestamp
|
278
|
-
|
279
|
-
# This flag indicates whether the transaction has already been marked as visited by the user.
|
280
|
-
# @return [Boolean]
|
281
|
-
attr_accessor :visited
|
282
|
-
|
283
351
|
end
|
284
352
|
|
285
|
-
# Object representing the bank server synchronization status
|
353
|
+
# Object representing the bank server synchronization status
|
286
354
|
class SynchronizationStatus < Base
|
355
|
+
@dump_attributes = []
|
287
356
|
|
288
|
-
# Internal figo Connect status code
|
357
|
+
# Internal figo Connect status code
|
289
358
|
# @return [Integer]
|
290
359
|
attr_accessor :code
|
291
360
|
|
292
|
-
# Human-readable error message
|
361
|
+
# Human-readable error message
|
293
362
|
# @return [String]
|
294
363
|
attr_accessor :message
|
295
364
|
|
296
|
-
# Timestamp of last synchronization
|
365
|
+
# Timestamp of last synchronization
|
297
366
|
# @return [DateTime]
|
298
367
|
attr_accessor :sync_timestamp
|
299
368
|
|
300
|
-
# Timestamp of last successful synchronization
|
369
|
+
# Timestamp of last successful synchronization
|
301
370
|
# @return [DateTime]
|
302
371
|
attr_accessor :success_timestamp
|
303
|
-
|
304
372
|
end
|
305
373
|
|
306
|
-
# Object representing a configured notification, e.g. a webhook or email hook
|
374
|
+
# Object representing a configured notification, e.g. a webhook or email hook
|
307
375
|
class Notification < Base
|
376
|
+
@dump_attributes = [:observe_key, :notify_uri, :state]
|
308
377
|
|
309
|
-
# Internal figo Connect notification ID from the notification registration response
|
378
|
+
# Internal figo Connect notification ID from the notification registration response
|
310
379
|
# @return [String]
|
311
380
|
attr_accessor :notification_id
|
312
381
|
|
313
|
-
# One of the notification keys specified in the figo Connect API specification
|
382
|
+
# One of the notification keys specified in the figo Connect API specification
|
314
383
|
# @return [String]
|
315
384
|
attr_accessor :observe_key
|
316
385
|
|
317
|
-
# Notification messages will be sent to this URL
|
386
|
+
# Notification messages will be sent to this URL
|
318
387
|
# @return [String]
|
319
388
|
attr_accessor :notify_uri
|
320
389
|
|
321
|
-
# State similiar to sync and logon process. It will passed as POST payload for webhooks
|
390
|
+
# State similiar to sync and logon process. It will passed as POST payload for webhooks
|
322
391
|
# @return [String]
|
323
392
|
attr_accessor :state
|
324
|
-
|
325
393
|
end
|
326
394
|
|
395
|
+
# Object representing a Payment
|
396
|
+
class Payment < Base
|
397
|
+
@dump_attributes = [:type, :name, :account_number, :bank_code, :amount, :currency, :purpose]
|
398
|
+
|
399
|
+
# Internal figo Connect payment ID
|
400
|
+
# @return [String]
|
401
|
+
attr_accessor :payment_id
|
402
|
+
|
403
|
+
# Internal figo Connect account ID
|
404
|
+
# @return [String]
|
405
|
+
attr_accessor :account_id
|
406
|
+
|
407
|
+
# Payment type
|
408
|
+
# @return [String]
|
409
|
+
attr_accessor :type
|
410
|
+
|
411
|
+
# Name of creditor or debtor
|
412
|
+
# @return [String]
|
413
|
+
attr_accessor :name
|
414
|
+
|
415
|
+
# Account number of creditor or debtor
|
416
|
+
# @return [String]
|
417
|
+
attr_accessor :account_number
|
418
|
+
|
419
|
+
# Bank code of creditor or debtor
|
420
|
+
# @return [String]
|
421
|
+
attr_accessor :bank_code
|
422
|
+
|
423
|
+
# Bank name of creditor or debtor
|
424
|
+
# @return [String]
|
425
|
+
attr_accessor :bank_name
|
426
|
+
|
427
|
+
# Icon of creditor or debtor bank
|
428
|
+
# @return [String]
|
429
|
+
attr_accessor :bank_icon
|
430
|
+
|
431
|
+
# Icon of the creditor or debtor bank in other resolutions
|
432
|
+
# @return [Hash]
|
433
|
+
attr_accessor :bank_additional_icons
|
434
|
+
|
435
|
+
# Order amount
|
436
|
+
# @return [DecNum]
|
437
|
+
attr_accessor :amount
|
438
|
+
|
439
|
+
# Three-character currency code
|
440
|
+
# @return [String]
|
441
|
+
attr_accessor :currency
|
442
|
+
|
443
|
+
# Purpose text
|
444
|
+
# @return [String]
|
445
|
+
attr_accessor :purpose
|
446
|
+
|
447
|
+
# Timestamp of submission to the bank server
|
448
|
+
# @return [DateTime]
|
449
|
+
attr_accessor :submission_timestamp
|
450
|
+
|
451
|
+
# Internal creation timestamp on the figo Connect server
|
452
|
+
# @return [DateTime]
|
453
|
+
attr_accessor :creation_timestamp
|
454
|
+
|
455
|
+
# Internal modification timestamp on the figo Connect server
|
456
|
+
# @return [DateTime]
|
457
|
+
attr_accessor :modification_timestamp
|
458
|
+
|
459
|
+
# ID of the transaction corresponding to this payment. This field is only set if the payment has been matched to a transaction
|
460
|
+
# @return [String]
|
461
|
+
attr_accessor :transaction_id
|
462
|
+
end
|
327
463
|
end
|