Corrections des bugs de la connexion à Frisbii #90

This commit is contained in:
Colin Maudry
2026-06-25 21:14:35 +02:00
parent 5f500a1aa8
commit e932c66af0
9 changed files with 133 additions and 60 deletions
+10 -13
View File
@@ -5,7 +5,7 @@ import httpx
# NB : base URL et schémas d'endpoints à confirmer dans la doc Frisbii lors de la
# première intégration en environnement de test. Frisbii Billing/Pay s'appuie sur
# l'API Reepay (api.reepay.com) ; ajuster FRISBII_API_BASE_URL si besoin.
_DEFAULT_BASE_URL = "https://api.reepay.com"
_DEFAULT_BASE_URL = "https://api.frisbii.com"
_TIMEOUT = 15.0
@@ -53,19 +53,16 @@ def create_subscription_session(
cancel_url: str,
no_trial: bool = False,
) -> str:
prepare = {"plan": plan_handle, "customer": customer_handle}
body: dict = {
"plan": plan_handle,
"customer": customer_handle,
"signup_method": "link",
"generate_handle": True,
}
if no_trial:
prepare["no_trial"] = True
data = _call(
"POST",
"/v1/session/subscription",
json={
"accept_url": accept_url,
"cancel_url": cancel_url,
"prepare_subscription": prepare,
},
)
return data["url"]
body["no_trial"] = True
data = _call("POST", "/v1/subscription", json=body)
return data["hosted_page_links"]["payment_info"]
def cancel_subscription(subscription_handle: str) -> dict:
+5 -2
View File
@@ -17,11 +17,11 @@ PLANS = {
"env": "FRISBII_PLAN_SIMPLE",
"label": "Abonnement simple",
"prix_ht": 20,
"description": "Accès aux fonctionnalités premium de decp.info.",
"description": "Accès à des fonctionnalités supplémentaires de decp.info.",
},
"soutien": {
"env": "FRISBII_PLAN_SOUTIEN",
"label": "Abonnement de soutien",
"label": "Abonnement de soutien",
"prix_ht": 50,
"description": "Mêmes fonctionnalités, contribution renforcée au projet.",
},
@@ -74,6 +74,9 @@ def trial_days(key: str) -> int | None:
except client.FrisbiiError:
logger.warning("Impossible de lire le plan Frisbii %s", handle)
return cached[1] if cached else None
# L'API Frisbii/Reepay renvoie une liste de versions ; on prend la dernière (la plus récente).
if isinstance(plan, list):
plan = plan[-1] if plan else {}
days = _parse_trial_interval(plan.get("trial_interval"))
_trial_cache[handle] = (now, days)
return days