· 5 years ago · Jul 13, 2020, 08:24 PM
1<?php
2
3// ini_set("allow_url_include", true); // enables url wrapper
4include_once __DIR__."/../../config.php";
5include_once ROOT_PATH."/src/models/database.php";
6
7include_once LIB_PATH."/modulo-sepa/src/SepaApi.php";
8include_once LIB_PATH."/graylog2/graylog2.php";
9
10
11$db = new Database();
12$pdo = $db->conectar();
13
14var_dump($pdo);
15
16// Autenticação
17$sepa = new SepaAPI();
18$auth = $sepa->authenticate();
19
20if($auth[1] != 200){
21 // error on authentication
22 echo "Error on Auth<br><br>";
23 var_dump($auth);
24 $gerado = gerarLog(utf8_decode("Erro de autenticação na API SEPA"), "ERROR");
25 exit;
26}
27
28
29// 1 - Seleciona transferências prontas p/ enviar
30$transfers = transfersToSend($pdo);
31
32$limit = 0;
33foreach($transfers as $key => $transfer) if($limit++ < LIMITE_ENVIOS)
34{
35
36 var_dump($transfer);
37 // 2 - Setta timestamp/paymentUid da transferência
38 $timestamp_uid = $transfer["cod_transfer_sepa"]."-".md5(uniqid())."-".time();
39 $transfer["timestamp_uid"] = $timestamp_uid;
40
41 // 3 - Constrói objetos JSON para compatibilidade com a API SEPA
42 $transfer_json = formatObj($transfer);
43
44 // 4 - Atualiza status/timestamp e historico
45 $cod_transfer_sepa = $transfer["cod_transfer_sepa"];
46 $history_saved = saveHistory(
47 $pdo,
48 $cod_transfer_sepa,
49 $timestamp_uid,
50 ENVIADO
51 );
52 $updated = updateTransfer(
53 $pdo,
54 $cod_transfer_sepa,
55 $timestamp_uid,
56 ENVIADO
57 );
58 // var_dump($history_saved);
59
60 // 5 - Envia transferência
61 if($updated == true){
62 $sent = $sepa->createPayment($transfer_json);
63
64 // var_dump($sent);
65 if($sent[1] == 200){
66
67 // 6 - salvar status/info em transfer_sepa_historico
68 $history_saved = saveHistory(
69 $pdo,
70 $cod_transfer_sepa,
71 $timestamp_uid,
72 PROCESSADO
73 );
74 // 7 - Atualizar status
75 $updated = updateTransfer(
76 $pdo,
77 $cod_transfer_sepa,
78 $timestamp_uid,
79 PROCESSADO,
80 date("Y-m-d"),
81 date("H:i:s")
82 );
83
84 $gerado = gerarLog(utf8_decode("Pagamento enviado p/ API SEPA - " . $cod_transfer_sepa), "INFO");
85
86 }else{
87 // 6 - salvar status/info em transfer_sepa_historico
88 $history_saved = saveHistory(
89 $pdo,
90 $cod_transfer_sepa,
91 $timestamp_uid,
92 ERRO_PROCESSADO
93 );
94
95 // 7 - Atualizar status
96 $updated = updateTransfer(
97 $pdo,
98 $cod_transfer_sepa,
99 "",
100 ERRO_PROCESSADO
101 );
102
103 $gerado = gerarLog(utf8_decode("Erro de envio de Pagamento p/ API SEPA - " . $cod_transfer_sepa), "ERROR");
104 }
105
106 }else{
107 // 4 - Atualiza status/timestamp
108 $history_saved = saveHistory(
109 $pdo,
110 $cod_transfer_sepa,
111 $timestamp_uid,
112 ERRO_ENVIADO
113 );
114 $updated = updateTransfer(
115 $pdo,
116 $cod_transfer_sepa,
117 $timestamp_uid,
118 ERRO_ENVIADO
119 );
120 }
121}
122
123
124
125function transfersToSend($pdo)
126{
127 $transfers = array();
128
129 try {
130
131 $stmte = $pdo->prepare("
132 SELECT * FROM transfer_sepa
133 WHERE flag_status = ".ENVIAR."
134 ");
135
136 echo "$pdo->prepare(\"SELECT * FROM transfer_sepa WHERE flag_status = \".ENVIAR.\"\");";
137
138 if ($stmte->execute()) {
139 if ($stmte->rowCount() > 0) {
140 while ($result = $stmte->fetch(PDO::FETCH_ASSOC)) {
141 array_push($transfers, $result);
142 }
143 }
144 }
145
146 return $transfers;
147
148 } catch (PDOException $e) {
149 echo $e->getMessage();
150 }
151}
152
153
154function updateTransfer($pdo, $cod_transfer_sepa, $timestamp_uid, $flag_status, $data_processado = "", $hora_processado = "")
155{
156 try {
157
158 $stmte = $pdo->prepare("
159 UPDATE transfer_sepa
160 SET timestamp_uid=:timestamp_uid, flag_status=:flag_status
161 WHERE cod_transfer_sepa=:cod_transfer_sepa
162 ");
163
164 echo "$pdo->prepare(\"UPDATE transfer_sepa SET timestamp_uid=:timestamp_uid, flag_status=:flag_status WHERE cod_transfer_sepa=:cod_transfer_sepa \");";
165
166 $stmte->bindParam(":cod_transfer_sepa", $cod_transfer_sepa, PDO::PARAM_INT);
167 $stmte->bindParam(":timestamp_uid", $timestamp_uid, PDO::PARAM_STR);
168 $stmte->bindParam(":flag_status", $flag_status);
169
170 if($flag_status == PROCESSADO){
171 $stmte->bindParam(":data_processado", $data_processado);
172 $stmte->bindParam(":hora_processado", $hora_processado);
173 }
174
175 $result = $stmte->execute();
176
177 if($result && $stmte->rowCount() > 0){
178 return true;
179 }else{
180 return false;
181 }
182 } catch (PDOException $e) {
183 echo $e->getMessage();
184 return false;
185 }
186}
187
188function saveHistory($pdo, $cod_transfer_sepa, $timestamp_uid, $flag_status)
189{
190 $current_date = date("Y-m-d");
191 $current_time = date("H:i:s");
192
193 try {
194
195 $stmte = $pdo->prepare("
196 INSERT INTO transfer_sepa_historico
197 (cod_transfer_sepa, data_cad, hora_cad, timestamp_uid, flag_status)
198 VALUES (:cod_transfer_sepa, :data_atual, :hora_atual, :timestamp_uid, :flag_status)
199 ");
200
201 echo "$pdo->prepare(\"INSERT INTO transfer_sepa_historico (cod_transfer_sepa, data_cad, hora_cad, timestamp_uid, flag_status) VALUES (:cod_transfer_sepa, :data_atual, :hora_atual, :timestamp_uid, :flag_status) \");";
202
203 $stmte->bindParam(":cod_transfer_sepa", $cod_transfer_sepa, PDO::PARAM_INT);
204 $stmte->bindParam(":data_atual", $current_date);
205 $stmte->bindParam(":hora_atual", $current_time);
206 $stmte->bindParam(":timestamp_uid", $timestamp_uid, PDO::PARAM_STR);
207 $stmte->bindParam(":flag_status", $flag_status);
208
209 $result = $stmte->execute();
210
211 if ($result && $stmte->rowCount() > 0) {
212 return true;
213 } else {
214 return false;
215 }
216 } catch (PDOException $e) {
217 echo $e->getMessage();
218 return false;
219 }
220}
221
222function formatObj($transfer)
223{
224
225 $transfer_formatted["messageType"] = "OutgoingPaymentMessage";
226
227 $transfer_formatted["data"]["paymentUid"] = $transfer["timestamp_uid"];
228
229 // Gerando data
230 $transfer_formatted["data"]["paymentDate"] = date("Y-m-dTH:i:s");
231
232 $transfer_formatted["data"]["debtor"]["account"]["bic"] = DEBTOR_BIC;
233 $transfer_formatted["data"]["debtor"]["account"]["iban"] = DEBTOR_IBAN;
234 $transfer_formatted["data"]["debtor"]["person"]["type"] = DEBTOR_TYPE;
235 $transfer_formatted["data"]["debtor"]["person"]["name"] = DEBTOR_NAME;
236
237 $transfer_formatted["data"]["creditor"]["account"]["bic"] = $transfer["beneficiario_codigo_banco"];
238 $transfer_formatted["data"]["creditor"]["account"]["iban"] = $transfer["beneficiario_conta"];
239 $transfer_formatted["data"]["creditor"]["person"]["type"] = "person";
240 $transfer_formatted["data"]["creditor"]["person"]["name"] = $transfer["beneficiario"] . " " . $transfer["beneficiario1"];
241 $transfer_formatted["data"]["creditor"]["person"]["id"] = "";
242 $transfer_formatted["data"]["creditor"]["person"]["countryCode"] = $transfer["beneficiario_pais"];
243 $transfer_formatted["data"]["creditor"]["person"]["fullAddress"] = $transfer["beneficiario_endereco"];
244
245 $transfer_formatted["data"]["amount"]["currency"] = $transfer["cod_moeda"];
246 $transfer_formatted["data"]["amount"]["value"] = $transfer["valor"];
247
248 // Optionals
249 $transfer_formatted["data"]["purpose"] = $transfer["detalhe"];
250
251 $transfer_formatted["data"]["ultimateDebtor"]["person"]["type"] = "person";
252 $transfer_formatted["data"]["ultimateDebtor"]["person"]["id"] = "";
253 $transfer_formatted["data"]["ultimateDebtor"]["person"]["name"] = $transfer["sender"] . " " . $transfer["sender1"];
254
255 $transfer_formatted["data"]["ultimateCreditor"]["person"]["type"] = "";
256 $transfer_formatted["data"]["ultimateCreditor"]["person"]["name"] = "";
257
258 return json_encode($transfer_formatted);
259}
260
261
262?>