Cashout
Tramite questa procedura è possibile trasferire importi dal wallet di flowpay verso il conto corrente reale precedentemente agganciato tramite connetti al conto o tramite CheckIban
Il flusso di cashout si attiva dalla rotta flowpay.wallets.cashout
Questa rotta chiama il metodo FlowpayController@cashout(Request $request, Project $project)
che instanzia un $object di estremi passati in querystring (che sarà utilizzato come owner del cashout) e passa i dati al metodo FlowpayService::cashout($object, $project, auth()->user(), $request->all())];
$createData = [
'amount' => "Importo che si desidera prelevare",
'account' => "Utente flowpay",
'description' => "Descrizione - default cashout"
];
post("constructions/sites/{$project->flowpay_site_id}/cashout", $createData, $token);
con il token (recuperato dalla flowpay_data) del richiedente. La chiamata restituisce i dati relativi all'oggetto cashout (di flowpay) che vengono una volta ottenuti memorizzati nella tabella flowpay_cashouts. Ottenuto il cashout, procediamo alla creazione dell'oggetto checkout e al relativo pagamento con il metodo
FlowpayService::checkoutCashout($cashout) che avviene in modalità "noSca" ovvero senza interazione con il portale utente ma completamente lato api.
Contestualmente, tramite il metodo getCheckoutDetails recuperiamo le informazioni da flowpay per aggiornare in agorà lo stato degli oggetti locali nel db.
Questo metodo viene anche richiamato da un job (UpdateCheckoutStatus) che per recuperare informazioni ed eventualmente aggiornare lo stato dei pagamenti non ancora esitati in agorà
Database
Tutti i dati relativi a questo flusso vengono memorizzati nelle tabelle flowpay_cashouts e flowpay_checkouts.
Database
Tutti i dati relativi a questo flusso vengono memorizzati nelle tabelle flowpay_cashouts e flowpay_checkouts.
La tabella flowpay_cashouts:
- is_demo - Quanto il progetto è demo, anche le quote lo saranno e gli handler di flowpay emuleranno le operazioni;
- model_type - classe dell'oggetto di appartenenza;
- model_id - id dell'oggetto di appartenenza;
- project_id - Id di cantiere;
- user_id - Id dell'utente che ha richiesto la creazione;
- create_data - Payload completo inviato per la richiesta di creazione;
- create_response_data - Payload completo ricevuto a seguito della richiesta di creazione.
La tabella flowpay_checkouts:
- is_demo - Quanto il progetto è demo, anche le quote lo saranno e gli handler di flowpay emuleranno le operazioni;
- project_id - Id di cantiere;
- object_type - classe dell'oggetto di appartenenza;
- object_id - id dell'oggetto di appartenenza;
- sender_type - classe dell'oggetto del debitore;
- sender_id - id dell'oggetto debitore;
- receiver_type - classe dell'oggetto del creditore;
- receiver_id - id dell'oggetto creditore;
- create_checkout_data - Payload completo inviato per la richiesta di creazione;
- create_checkout_response - Payload completo ricevuto a seguito della richiesta di creazione;
- status - success in caso di completamento del wizard o failed per abbandono (se pagamenti di tipo SCA);
- checkout_details - informazioni aggiuntive sullo stato di un pagamento raccolte da un job;
- checkout_details_updated_at - ultima data di interrogazione effettuata dal job che compila il checkout_details;
- last_checkout_status - esito del pagamento, può essere concluded (completato), not concluded (in lavorazione).