Mergi la conținut

Ghiduri practice

Abonamente cu mai mulți beneficiari

Un contract de distribuție recurent, aplicat fiecărei încasări, cu reguli generice și auditabile.

Exemple server-side cu SDK-urile oficiale Monedo. Înlocuiește identificatorii și configurația cu resursele propriei instalări. Datele din exemple nu sunt tranzacții reale.

Când folosești acest model

Folosește distribuția recurentă când o singură subscripție remunerează mai mulți beneficiari autorizați. Instalarea trebuie să permită modelul platform, iar comercianții și beneficiarii trebuie să aparțină contextului autorizat al aplicației. Nu transforma identificatorul proprietarului aplicației în vânzător implicit dacă serviciul este furnizat de altă firmă. merchant_of_record identifică vânzătorul contractual prezentat clientului.

Definește cote, nu transferuri manuale

La crearea abonamentului, distribution conține merchant_of_record și allocations. Cotele sunt basis_points: 10000 reprezintă 100%. Suma cotelor trebuie să fie 10000. Un exemplu de 8000 pentru comerciant și 2000 pentru dezvoltator este o împărțire comercială, nu tariful Monedo. Folosește identificatorii de recipient obținuți prin Connect, nu valori inventate sau identificatori din alt mediu.

javascript
const subscription = await monedo.subscriptions.create({
  customer: customerId,
  price: priceId,
  distribution: {
    merchant_of_record: merchantRecipientId,
    allocations: [
      { recipient: merchantRecipientId, role: 'merchant', basis_points: 8000 },
      { recipient: developerRecipientId, role: 'developer', basis_points: 2000 }
    ]
  }
}, { idempotencyKey: `contract_${contractId}_v1` });

Fiecare ciclu are propria decontare

Monedo păstrează un snapshot al regulilor de distribuție pentru încasarea recurentă și orchestrează decontarea asincron. Confirmarea plății și finalizarea transferurilor nu sunt aceeași stare. Nu crea transferuri suplimentare pentru o plată deja gestionată de această distribuție: ai dubla remunerația. Urmărește operația și resursele financiare asociate până la o stare terminală.

  • Comisionul comercial al aplicației nu trebuie confundat cu procesarea și comisionul Monedo.
  • O plată eșuată nu trebuie distribuită ca încasare confirmată.
  • Revocarea unui beneficiar sau lipsa eligibilității necesită intervenție; nu redirecționa banii către alt cont ca fallback.
  • Un timeout la polling nu înseamnă că operația a fost anulată.

Modifică numai regulile viitoare

subscriptions.updateDistribution primește noile cote și expected_version. Păstrează versiunea citită pentru a detecta editările concurente. Nu modifica retrospectiv distribuția unei facturi deja procesate și nu schimba vânzătorul contractual în același abonament. Un conflict cere recitirea contractului și reevaluare, nu retry orb cu date vechi.