All checks were successful
Build & Deploy Web / build-and-deploy (push) Successful in 19s
Nouveau dossier `09-Billing/` avec :
- folder.bru (overview : plans + flows upgrade/cancel/reactivate)
- 01 Get subscription : state du plan, caps, grace period, cancel flag
- 02 Start checkout : crée une Checkout Session Stripe (Pro/Business
× monthly/yearly)
- 03 Open portal : Customer Portal pour gérer CB/annulation
- 04 Reactivate : annule l'annulation programmée (sans paiement
immédiat) — gère le conflit Stripe
cancel_at vs cancel_at_period_end
Aussi documenté les endpoints in-app check-in qui manquaient dans Bruno :
- 03 In-app pending : liste des factures awaiting_user_confirmation
- 04 In-app respond paid : équivalent du lien email "C'est payé"
- 05 In-app respond pending : équivalent "Toujours en attente"
README mis à jour avec le parcours étendu (signup → … → billing).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
45 lines
1.2 KiB
Plaintext
45 lines
1.2 KiB
Plaintext
meta {
|
|
name: 05 In-app respond pending
|
|
type: http
|
|
seq: 5
|
|
}
|
|
|
|
post {
|
|
url: {{baseUrl}}/api/v1/checkin/inapp/{{invoiceId}}/pending
|
|
body: none
|
|
auth: bearer
|
|
}
|
|
|
|
auth:bearer {
|
|
token: {{token}}
|
|
}
|
|
|
|
tests {
|
|
test("200 OK", function () {
|
|
expect(res.getStatus()).to.equal(200);
|
|
});
|
|
test("status = in_relance", function () {
|
|
expect(res.getBody().data.status).to.equal("in_relance");
|
|
});
|
|
}
|
|
|
|
docs {
|
|
POST /api/v1/checkin/inapp/:invoiceId/pending — auth requise
|
|
|
|
Réponse "Non — toujours en attente, lance les relances" depuis l'app
|
|
(modale check-in OU bouton "Relancer maintenant" sur la fiche).
|
|
|
|
Effets :
|
|
- CheckinTask (si elle existe) : status='answered', answer='still_pending'
|
|
- `scheduleRelancesForInvoice()` : crée les RelanceTask scheduled selon
|
|
le plan, enqueue dans BullMQ. Si certaines étapes sont déjà passées
|
|
(catch-up), la 1re part à `now+1min`.
|
|
- Invoice.status passe immédiatement en `in_relance` (l'user voit la
|
|
facture sortir de l'attente sans attendre le 1er envoi mail)
|
|
- ActivityEvent kind=relance_sent (label "Relances activées pour …")
|
|
|
|
Réponse : la facture sérialisée (status='in_relance' désormais).
|
|
|
|
Précondition : `invoiceId` doit appartenir à l'org (404 sinon).
|
|
}
|