Ce guide décrit les paiements, remboursements et retraits du wallet restaurant. Il s'adresse au frontend client/Pro, à DiddiPay, au Backoffice et à la QA.
- Pour
online, Food crée une intention avecPOST /food/v1/orders/{order_id}/payments/prepare; DiddiPay gère le prestataire et rappelle Food par webhook signé. Pourcash_on_delivery, la collecte vient de DiddiSend. - Le client peut consulter ou rafraîchir le paiement. Un remboursement passe d'abord par une demande, puis par une décision admin; Food appelle DiddiPay seulement après approbation.
- Le wallet restaurant sépare
pending,availableetreserved. Un gain cash devient disponible aprèsdelivery.cash_remitted, pas au simple pickup. - Le restaurant demande d'abord un devis avec
/wallet/withdrawal-quote. Après confirmation, il envoie sonquote_idà/wallet/withdrawals; Food réserve exactement le montant, les frais et le net du devis. DiddiPay reste propriétaire du mouvement d'argent.
sequenceDiagram
participant C as Client
participant F as DiddiFood
participant P as DiddiPay
participant S as DiddiSend
C->>F: prepare online ou commande cash
F->>P: payment intent ou remboursement
P-->>F: webhook signé
S-->>F: cash_remitted
F->>P: payout après demande restaurant
La recharge restaurant reste hors MVP (DIDDIFOOD_RESTAURANT_TOPUP_ENABLED=false). Les frais réels de retrait DiddiPay sont encore À CONFIRMER.
Un devis est conservé 15 minutes par défaut (DIDDIFOOD_RESTAURANT_WITHDRAWAL_QUOTE_TTL_SECONDS) et ne peut pas être remplacé silencieusement par une nouvelle tarification.