fidor_starter_kits 0.5.1 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +4 -0
  3. data/lib/fidor_starter_kits.rb +1 -1
  4. data/lib/fidor_starter_kits/version.rb +1 -1
  5. data/starter_kits/php_advanced/.fidor_meta.json +8 -0
  6. data/starter_kits/php_advanced/Fidor/SDK/Accounts.php +47 -0
  7. data/starter_kits/php_advanced/Fidor/SDK/Authorization.php +276 -0
  8. data/starter_kits/php_advanced/Fidor/SDK/Autoload.php +33 -0
  9. data/starter_kits/php_advanced/Fidor/SDK/Client.php +239 -0
  10. data/starter_kits/php_advanced/Fidor/SDK/Config.php +272 -0
  11. data/starter_kits/php_advanced/Fidor/SDK/Customers.php +27 -0
  12. data/starter_kits/php_advanced/Fidor/SDK/Transactions.php +47 -0
  13. data/starter_kits/php_advanced/Fidor/SDK/Transfers.php +65 -0
  14. data/starter_kits/php_advanced/Fidor/SDK/Transfers/Batch.php +18 -0
  15. data/starter_kits/php_advanced/Fidor/SDK/Transfers/Global.php +18 -0
  16. data/starter_kits/php_advanced/Fidor/SDK/Transfers/Internal.php +33 -0
  17. data/starter_kits/php_advanced/Fidor/SDK/Transfers/SEPA.php +18 -0
  18. data/starter_kits/php_advanced/Fidor/SDK/Users.php +23 -0
  19. data/starter_kits/php_advanced/README.md +19 -0
  20. data/starter_kits/php_advanced/curl-test.php +1 -0
  21. data/starter_kits/php_advanced/demo/assets/css/bootstrap-theme.css +587 -0
  22. data/starter_kits/php_advanced/demo/assets/css/bootstrap-theme.css.map +1 -0
  23. data/starter_kits/php_advanced/demo/assets/css/bootstrap-theme.min.css +6 -0
  24. data/starter_kits/php_advanced/demo/assets/css/bootstrap-theme.min.css.map +1 -0
  25. data/starter_kits/php_advanced/demo/assets/css/bootstrap.css +6760 -0
  26. data/starter_kits/php_advanced/demo/assets/css/bootstrap.css.map +1 -0
  27. data/starter_kits/php_advanced/demo/assets/css/bootstrap.min.css +6 -0
  28. data/starter_kits/php_advanced/demo/assets/css/bootstrap.min.css.map +1 -0
  29. data/starter_kits/php_advanced/demo/assets/fonts/glyphicons-halflings-regular.eot +0 -0
  30. data/starter_kits/php_advanced/demo/assets/fonts/glyphicons-halflings-regular.svg +288 -0
  31. data/starter_kits/php_advanced/demo/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
  32. data/starter_kits/php_advanced/demo/assets/fonts/glyphicons-halflings-regular.woff +0 -0
  33. data/starter_kits/php_advanced/demo/assets/fonts/glyphicons-halflings-regular.woff2 +0 -0
  34. data/starter_kits/php_advanced/demo/assets/js/bootstrap.js +2363 -0
  35. data/starter_kits/php_advanced/demo/assets/js/bootstrap.min.js +7 -0
  36. data/starter_kits/php_advanced/demo/assets/js/jquery.min.js +6 -0
  37. data/starter_kits/php_advanced/demo/assets/js/npm.js +13 -0
  38. data/starter_kits/php_advanced/demo/authorize.php +103 -0
  39. data/starter_kits/php_advanced/demo/config.php +15 -0
  40. data/starter_kits/php_advanced/demo/dashboard.php +154 -0
  41. data/starter_kits/php_advanced/demo/error_auth.php +71 -0
  42. data/starter_kits/php_advanced/demo/error_auth_refresh.php +71 -0
  43. data/starter_kits/php_advanced/demo/error_token_expired.php +76 -0
  44. data/starter_kits/php_advanced/demo/get_accounts.php +152 -0
  45. data/starter_kits/php_advanced/demo/get_customers.php +130 -0
  46. data/starter_kits/php_advanced/demo/get_transactions.php +146 -0
  47. data/starter_kits/php_advanced/demo/index.php +84 -0
  48. data/starter_kits/php_advanced/demo/refresh_token.php +39 -0
  49. data/starter_kits/php_advanced/demo/revoke_access.php +38 -0
  50. data/starter_kits/php_advanced/demo/setup.php +14 -0
  51. data/starter_kits/php_advanced/demo/transfer_money.php +241 -0
  52. data/starter_kits/php_advanced/demo/transfer_money_results.php +126 -0
  53. metadata +50 -2
@@ -0,0 +1,84 @@
1
+ <?php
2
+ /**
3
+ * Startup
4
+ */
5
+ require_once 'setup.php';
6
+
7
+ /**
8
+ * Alias Fidor SDK namespace
9
+ */
10
+ use Fidor\SDK as Fidor;
11
+
12
+ /**
13
+ * Load Fido API settings
14
+ */
15
+ $settings = include 'config.php';
16
+
17
+ /**
18
+ * Create Config instance. Check Config class for alternative calls.
19
+ */
20
+ $config = Fidor\Config::fromArray( $settings );
21
+
22
+ ?>
23
+ <!DOCTYPE html>
24
+ <html lang="en">
25
+ <head>
26
+ <meta charset="UTF-8" />
27
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
28
+ <meta name="viewport" content="width=device-width, initial-scale=1">
29
+
30
+ <title>FIDOR API - Starter Kit</title>
31
+
32
+ <!-- Bootstrap -->
33
+ <link href="assets/css/bootstrap.css" rel="stylesheet">
34
+
35
+ <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
36
+ <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
37
+ <!--[if lt IE 9]>
38
+ <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
39
+ <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
40
+ <![endif]-->
41
+ </head>
42
+ <body>
43
+
44
+ <div class="container">
45
+ <h1>Fidor API Starter Kit</h1>
46
+
47
+ <p>
48
+ With this small program you can test the basic functions of the Fidor API. Look into the code and learn how it works.
49
+ You can also integrate the code into your own software.
50
+ </p>
51
+
52
+ <h2>Current configuration (you can change this in the code): </h2>
53
+
54
+ <div class="row">
55
+ <div class="col-md-6">
56
+ <table class="table table-bordered table-condensed table-hover table-striped col-md-6">
57
+ <tbody>
58
+ <tr>
59
+ <th scope="row">Authorization</th>
60
+ <td><?php echo $config->getOAuthUrl(); ?></td>
61
+ </tr>
62
+ <tr>
63
+ <th scope="row">API</th>
64
+ <td><?php echo $config->getApiUrl(); ?></td>
65
+ </tr>
66
+ </tbody>
67
+ </table>
68
+ </div>
69
+ </div>
70
+
71
+ <p>
72
+ <a href="authorize.php" class="btn btn-primary">Connect to Fidor and get new access token</a>
73
+ </p>
74
+
75
+ <p>Documentation reference: </p>
76
+ <ul>
77
+ <li><a href="http://docs.fidor.de/#understand-oauth" target="_blank">http://docs.fidor.de/#understand-oauth</a></li>
78
+ </ul>
79
+ </div>
80
+
81
+ <script src="assets/js/jquery.min.js"></script>
82
+ <script src="assets/js/bootstrap.min.js"></script>
83
+ </body>
84
+ </html>
@@ -0,0 +1,39 @@
1
+ <?php
2
+ /**
3
+ * Startup
4
+ */
5
+ require_once 'setup.php';
6
+
7
+ /**
8
+ * Alias Fidor SDK namespace
9
+ */
10
+ use Fidor\SDK as Fidor;
11
+
12
+ /**
13
+ * Load Fido API settings
14
+ */
15
+ $settings = include 'config.php';
16
+
17
+ /**
18
+ * Create Config instance. Check Config class for alternative calls.
19
+ *
20
+ */
21
+ $config = Fidor\Config::fromArray( $settings );
22
+
23
+ /**
24
+ * Add oauth parameters ( access token, refresh token and expiration time ) to config
25
+ */
26
+ $config->setAccessToken( $_SESSION['oauth']['access_token'] )
27
+ ->setRefreshToken( $_SESSION['oauth']['refresh_token'] );
28
+
29
+ $auth = new Fidor\Authorization( $config );
30
+ $resp = $auth->refresh();
31
+ if ( ! empty( $resp['access_token'] ) ) {
32
+ $resp['auth_at'] = time();
33
+ $_SESSION['oauth'] = $resp;
34
+ header( 'Location: dashboard.php' );
35
+ } elseif ( ! empty( $resp['error'] ) ) {
36
+ header( 'Location: error_auth.php?error=' . $resp['error'] );
37
+ }
38
+
39
+ exit;
@@ -0,0 +1,38 @@
1
+ <?php
2
+ /**
3
+ * Startup
4
+ */
5
+ require_once 'setup.php';
6
+
7
+ /**
8
+ * Alias Fidor SDK namespace
9
+ */
10
+ use Fidor\SDK as Fidor;
11
+
12
+ /**
13
+ * Load Fido API settings
14
+ */
15
+ $settings = include 'config.php';
16
+
17
+ /**
18
+ * Create Config instance. Check Config class for alternative calls.
19
+ *
20
+ */
21
+ $config = Fidor\Config::fromArray( $settings );
22
+
23
+ /**
24
+ * Add oauth parameters ( access token, refresh token and expiration time ) to config
25
+ */
26
+ $config->setAccessToken( $_SESSION['oauth']['access_token'] )
27
+ ->setRefreshToken( $_SESSION['oauth']['refresh_token'] )
28
+ ->setExpiresIn( $_SESSION['oauth']['expires_in'] + $_SESSION['oauth']['auth_at'] );
29
+
30
+ /*if ( $config->hasTokenExpired() ) {
31
+ header( 'Location: index.php' );
32
+ exit;
33
+ }*/
34
+
35
+ $auth = new Fidor\Authorization( $config );
36
+ $auth->revoke();
37
+ header( 'Location: index.php' );
38
+ exit;
@@ -0,0 +1,14 @@
1
+ <?php
2
+
3
+ error_reporting( E_ALL );
4
+
5
+ /**
6
+ * Set session lifetime to 24 hours for testing
7
+ */
8
+ session_set_cookie_params( 24 * 60 * 60 );
9
+ session_start();
10
+
11
+ /*
12
+ * Load class loader. You can remove this line when using composer.
13
+ */
14
+ require_once '../Fidor/SDK/Autoload.php';
@@ -0,0 +1,241 @@
1
+ <?php
2
+ /**
3
+ * Startup
4
+ */
5
+ require_once 'setup.php';
6
+
7
+ /**
8
+ * Alias Fidor SDK namespace
9
+ */
10
+ use Fidor\SDK as Fidor;
11
+
12
+ /**
13
+ * Load Fido API settings
14
+ */
15
+ $settings = include 'config.php';
16
+
17
+ /**
18
+ * Create Config instance. Check Config class for alternative calls.
19
+ *
20
+ */
21
+ $config = Fidor\Config::fromArray( $settings );
22
+
23
+ /**
24
+ * Add oauth parameters ( access token, refresh token and expiration time ) to config
25
+ */
26
+ $config->setAccessToken( $_SESSION['oauth']['access_token'] )
27
+ ->setRefreshToken( $_SESSION['oauth']['refresh_token'] )
28
+ ->setExpiresIn( $_SESSION['oauth']['expires_in'] + $_SESSION['oauth']['auth_at'] );
29
+
30
+ /**
31
+ * Check if token has expired and try refreshing it
32
+ */
33
+ /*if ( $config->hasTokenExpired() ) {
34
+ $auth = new Fidor\Authorization( $config );
35
+ $resp = $auth->refresh( $_SESSION['oauth']['refresh_token'] );
36
+ print_r( $resp );
37
+ die();
38
+ }*/
39
+
40
+ $notices = array();
41
+
42
+ /*
43
+ * Handling request for money transfer
44
+ */
45
+ if ( isset( $_REQUEST['send-money'] ) ) {
46
+
47
+ /**
48
+ * Validation (ensure we have the mandatory information with correct format)
49
+ */
50
+ if ( '' === trim( $_REQUEST['account_id'] ) ) {
51
+ $notices[] = '<p class="alert alert-danger">Your account ID is required</p>';
52
+ }
53
+ if ( '' === trim( $_REQUEST['receiver'] ) ) {
54
+ $notices[] = '<p class="alert alert-danger">Receiver is required</p>';
55
+ }
56
+ if ( '' === preg_replace( '/[\.0\s]/s', '', trim( $_REQUEST['amount'] ) ) ) {
57
+ $notices[] = '<p class="alert alert-danger">Amount is required</p>';
58
+ } elseif ( ! preg_match( '/^\d+(\.\d+)?$/', trim( $_REQUEST['amount'] ) ) ) {
59
+ $notices[] = '<p class="alert alert-danger">Amount is not a valid number</p>';
60
+ } elseif ( $_REQUEST['amount'] < 1 ) {
61
+ $notices[] = '<p class="alert alert-danger">1&euro; minimum required</p>';
62
+ }
63
+ if ( '' === trim( $_REQUEST['external_uid'] ) ) {
64
+ $notices[] = '<p class="alert alert-danger">External UID is required</p>';
65
+ }
66
+
67
+ /**
68
+ * No validation errors, proceed with transaction
69
+ */
70
+ if ( count( $notices ) === 0 ) {
71
+
72
+ /**
73
+ * Create API client
74
+ */
75
+ $client = new Fidor\Client( $config );
76
+
77
+ /**
78
+ * Send money
79
+ */
80
+ $resp = $client->transfers->internal->create( array(
81
+ 'account_id' => $_REQUEST['account_id'],
82
+ 'receiver' => $_REQUEST['receiver'],
83
+ 'external_uid' => $_REQUEST['external_uid'],
84
+ 'amount' => $_REQUEST['amount'] * 100, // e.g.: 100 for 1 EUR
85
+ 'subject' => $_REQUEST['subject'],
86
+ ) );
87
+
88
+ if ( ! empty( $resp['id'] ) ) {
89
+ header( 'Location: transfer_money_results.php?' . http_build_query( $resp ) );
90
+ exit;
91
+ }
92
+
93
+ /**
94
+ * If transaction failed show errors to user.
95
+ */
96
+ if ( isset( $resp['errors'] ) && ! empty( $resp['message'] ) ) {
97
+ $notices[] = sprintf( '<p class="alert alert-danger">Transfer failed - Reason: <strong>%s</strong> (Code: %s)</p>', $resp['message'], $resp['code'] );
98
+ //echo Fidor\Client::get_debug_log();
99
+ //exit;
100
+ } elseif ( ! empty( $resp['message'] ) ) {
101
+ header( 'Location: error_token_expired.php?error=' . $resp['message'] );
102
+ exit;
103
+ }
104
+ }
105
+ }
106
+
107
+ $client = new Fidor\Client( $config );
108
+ $current_account = $client->users->current();
109
+ if ( ! empty( $current_account['message'] ) ) {
110
+ header( 'Location: error_token_expired.php?error=' . $current_account['message'] );
111
+ exit;
112
+ }
113
+ $accounts = $client->accounts->get();
114
+ $account = current( $accounts );
115
+ $currency_code = 'EUR';
116
+ $currency_html = '&euro;';
117
+ if ( ! empty( $account['currency'] ) && 'GBP' === $account['currency'] ) {
118
+ $currency_code = 'GBP';
119
+ $currency_html = '&pound;';
120
+ }
121
+
122
+ ?>
123
+ <!DOCTYPE html>
124
+ <html lang="en">
125
+ <head>
126
+ <meta charset="UTF-8" />
127
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
128
+ <meta name="viewport" content="width=device-width, initial-scale=1">
129
+
130
+ <title>FIDOR API Starter Kit: Transfer</title>
131
+
132
+ <!-- Bootstrap -->
133
+ <link href="assets/css/bootstrap.css" rel="stylesheet">
134
+
135
+ <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
136
+ <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
137
+ <!--[if lt IE 9]>
138
+ <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
139
+ <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
140
+ <![endif]-->
141
+ </head>
142
+ <body>
143
+
144
+ <div class="container">
145
+
146
+ <h1>Fidor API Starter Kit: Transfer</h1>
147
+
148
+ <p class="alert alert-info">Be careful! If you are connected to the live system this will take real money from your account send it to somewhere!</p>
149
+
150
+ <?php
151
+ if ( ! empty( $notices ) ) {
152
+ foreach ( $notices as $notice ) {
153
+ echo $notice;
154
+ }
155
+ }
156
+ ?>
157
+
158
+ <p>
159
+ The call &quot;POST /internal_transfers&quot; with the following data:
160
+ </p>
161
+
162
+ <div class="row">
163
+ <div class="col-md-8">
164
+
165
+ <form action="" method="post" class="form-horizontal">
166
+
167
+ <div class="form-group">
168
+ <label for="account_id" class="col-sm-4 control-label">(your) account_id</label>
169
+ <div class="col-sm-6">
170
+ <input type="text" class="form-control" name="account_id" id="account_id" value="<?php echo ( ! empty( $_REQUEST['account_id'] ) ? $_REQUEST['account_id'] : $current_account['id'] ); ?>" placeholder="" />
171
+ </div>
172
+ </div>
173
+ <div class="form-group">
174
+ <label for="receiver" class="col-sm-4 control-label">receiver (nickname, e-mail, etc...)</label>
175
+ <div class="col-sm-6">
176
+ <input type="text" class="form-control" name="receiver" id="receiver" value="<?php echo ( ! empty( $_REQUEST['receiver'] ) ? $_REQUEST['receiver'] : '' ); ?>" placeholder="" />
177
+ </div>
178
+ </div>
179
+ <div class="form-group">
180
+ <label for="amount" class="col-sm-4 control-label">amount (<?php echo $currency_code; ?>)</label>
181
+ <div class="col-sm-6">
182
+ <div class="input-group">
183
+ <div class="input-group-addon"><?php echo $currency_html; ?></div>
184
+ <input type="text" class="form-control" name="amount" id="amount" value="<?php echo ( ! empty( $_REQUEST['amount'] ) ? $_REQUEST['amount'] : '' ); ?>" placeholder="">
185
+ <div class="input-group-addon">.00</div>
186
+ </div>
187
+ </div>
188
+ </div>
189
+ <div class="form-group">
190
+ <label for="subject" class="col-sm-4 control-label">subject</label>
191
+ <div class="col-sm-6">
192
+ <input type="text" class="form-control" name="subject" id="subject" value="<?php echo ( ! empty( $_REQUEST['subject'] ) ? $_REQUEST['subject'] : '' ); ?>" placeholder="" />
193
+ </div>
194
+ </div>
195
+ <div class="form-group">
196
+ <label for="external_uid" class="col-sm-4 control-label">external uid</label>
197
+ <div class="col-sm-6">
198
+ <input type="text" class="form-control" name="external_uid" id="external_uid" value="<?php echo ( ! empty( $_REQUEST['external_uid'] ) ? $_REQUEST['external_uid'] : Fidor\Transfers::make_external_uid() ); ?>" placeholder="" />
199
+ </div>
200
+ </div>
201
+ <div class="form-group">
202
+ <div class="col-sm-offset-4">
203
+ <button type="submit" name="send-money" id="send-money" class="btn btn-danger">Send money (you should know what you do)!</button>
204
+ <br /><br /><a href="dashboard.php" class="btn btn-primary">cancel and go back</a>
205
+ </div>
206
+ </div>
207
+
208
+ </form>
209
+
210
+ </div>
211
+ </div>
212
+
213
+ <p>You can now try the following: </p>
214
+
215
+ <p>
216
+ <a href="get_customers.php" class="btn btn-primary">Retrieve personal data: GET /customers</a>
217
+ </p>
218
+
219
+ <p>
220
+ <a href="get_accounts.php" class="btn btn-primary">Retrieve personal data: GET /accounts</a>
221
+ </p>
222
+
223
+ <p>
224
+ <a href="get_transactions.php" class="btn btn-primary">Retrieve personal data: GET /transactions</a>
225
+ </p>
226
+
227
+ <p>
228
+ <a href="transfer_money.php" class="btn btn-primary">Transfer money...</a>
229
+ </p>
230
+
231
+ <p>Documentation reference: </p>
232
+ <ul>
233
+ <li><a href="http://docs.fidor.de/#internal-transfer---fidor-to-fidor" target="_blank">http://docs.fidor.de/#internal-transfer---fidor-to-fidor</a></li>
234
+ </ul>
235
+
236
+ </div>
237
+
238
+ <script src="assets/js/jquery.min.js"></script>
239
+ <script src="assets/js/bootstrap.min.js"></script>
240
+ </body>
241
+ </html>
@@ -0,0 +1,126 @@
1
+ <?php
2
+ /**
3
+ * Startup
4
+ */
5
+ require_once 'setup.php';
6
+
7
+ /**
8
+ * Alias Fidor SDK namespace
9
+ */
10
+ use Fidor\SDK as Fidor;
11
+
12
+ /**
13
+ * Load Fido API settings
14
+ */
15
+ $settings = include 'config.php';
16
+
17
+ /**
18
+ * Create Config instance. Check Config class for alternative calls.
19
+ *
20
+ */
21
+ $config = Fidor\Config::fromArray( $settings );
22
+
23
+ /**
24
+ * Add oauth parameters ( access token, refresh token and expiration time ) to config
25
+ */
26
+ $config->setAccessToken( $_SESSION['oauth']['access_token'] )
27
+ ->setRefreshToken( $_SESSION['oauth']['refresh_token'] )
28
+ ->setExpiresIn( $_SESSION['oauth']['expires_in'] + $_SESSION['oauth']['auth_at'] );
29
+
30
+ /**
31
+ * Check if token has expired and try refreshing it
32
+ */
33
+ /*if ( $config->hasTokenExpired() ) {
34
+ $auth = new Fidor\Authorization( $config );
35
+ $resp = $auth->refresh( $_SESSION['oauth']['refresh_token'] );
36
+ print_r( $resp );
37
+ die();
38
+ }*/
39
+
40
+ /**
41
+ * Transaction ID is required.
42
+ *
43
+ */
44
+ if ( empty( $_GET['id'] ) ) {
45
+ header( 'Location: transfer_money.php' );
46
+ exit;
47
+ }
48
+
49
+ ?>
50
+ <!DOCTYPE html>
51
+ <html lang="en">
52
+ <head>
53
+ <meta charset="UTF-8" />
54
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
55
+ <meta name="viewport" content="width=device-width, initial-scale=1">
56
+
57
+ <title>FIDOR API Starter Kit: Transfer (Response)</title>
58
+
59
+ <!-- Bootstrap -->
60
+ <link href="assets/css/bootstrap.css" rel="stylesheet">
61
+
62
+ <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
63
+ <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
64
+ <!--[if lt IE 9]>
65
+ <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
66
+ <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
67
+ <![endif]-->
68
+ </head>
69
+ <body>
70
+
71
+ <div class="container">
72
+
73
+ <h1>Fidor API Starter Kit: Transfer (Response)</h1>
74
+
75
+ <p>
76
+ The call &quot;POST /internal_transfer&quot; retrieved the following data:
77
+ </p>
78
+
79
+ <div class="row">
80
+ <div class="col-md-6">
81
+ <table class="table table-bordered table-condensed table-hover table-striped col-md-6">
82
+ <tbody>
83
+
84
+ <?php
85
+ foreach ( $_GET as $k => $v ) {
86
+ if ( ! in_array( $k, array( 'id', 'external_uid', 'account_id', 'user_id', 'receiver', 'amount', 'subject', 'state', 'created_at', 'updated_at' ) ) ) {
87
+ continue;
88
+ }
89
+ echo '<tr><th scope="row" style="text-align: left;">' . $k . '</th><td>' . $v . '</td></tr>';
90
+ }
91
+ ?>
92
+
93
+ </tbody>
94
+ </table>
95
+ </div>
96
+ </div>
97
+
98
+ <p>You can now try the following: </p>
99
+
100
+ <p>
101
+ <a href="get_customers.php" class="btn btn-primary">Retrieve personal data: GET /customers</a>
102
+ </p>
103
+
104
+ <p>
105
+ <a href="get_accounts.php" class="btn btn-primary">Retrieve personal data: GET /accounts</a>
106
+ </p>
107
+
108
+ <p>
109
+ <a href="get_transactions.php" class="btn btn-primary">Retrieve personal data: GET /transactions</a>
110
+ </p>
111
+
112
+ <p>
113
+ <a href="transfer_money.php" class="btn btn-primary">Transfer money...</a>
114
+ </p>
115
+
116
+ <p>Documentation reference: </p>
117
+ <ul>
118
+ <li><a href="http://docs.fidor.de/#internal-transfer---fidor-to-fidor" target="_blank">http://docs.fidor.de/#internal-transfer---fidor-to-fidor</a></li>
119
+ </ul>
120
+
121
+ </div>
122
+
123
+ <script src="assets/js/jquery.min.js"></script>
124
+ <script src="assets/js/bootstrap.min.js"></script>
125
+ </body>
126
+ </html>