Skip to main content

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())];

Il flowpayService prepara i dati per la creazione dell'oggetto cashout (lato flowpay) come segue:
$createData = [
'amount' => "Importo che si desidera prelevare",
'account' => "Utente flowpay",
'description' => "Descrizione - default cashout"
];
tramite la chiamata:
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).