Aller au contenu

Soma um adicional ao plano em andamento

POST/api/subscriptions/{id}/add-ons

Auth
Jeton requis
Clé d’API:
Clé d’API non acceptée
X-CommunityId
X-CommunityId Envoyez le X-CommunityId de la communauté où l’opération a lieu.
Les descriptions des endpoints viennent directement de la spécification de l’API et sont en portugais pour l’instant. L’interface autour est traduite.

Cobra agora o proporcional da cotação (`/add-ons/quote`, mesmas regras e recusas) num pedido separado, e cria a assinatura do adicional ligada à do plano (`billedWithId`), com as datas do plano: a partir da próxima cobrança ele vem no mesmo pedido que o plano. Com o piso (`floorApplied`), nada é cobrado e o adicional já nasce ligado (`charged = false`). Comunidade suspensa pela Memberfy: 403 com `code: COMMUNITY_SUSPENDED` (`param = id`; para a liderança, também `reason`). Pagamento: `paymentMethod` (obrigatório quando há valor a cobrar, senão 400 com `param = paymentMethod`) entre os aceitos pela opção do plano; `installments` até o `maxInstallments` da cotação, só no cartão; cartão salvo por `paymentMethodId` (do próprio membro, senão 404) ou cartão novo por `cardToken`; PIX e boleto devolvem `pixCode`/`qrCode` ou `boletoUrl`/`boletoBarcode`, e o adicional nasce quando o pagamento é confirmado. Cartão salvo aprovado na hora já devolve `subscriptionId` e `status = COMPLETED`; senão `status = PROCESSING`. Recusa do provedor responde 402, provedor fora do ar 502, como no checkout. Responde 201. Como no checkout, 403 (`param = id`) quando a comunidade não tem informações comerciais `APPROVED`, antes de cotar ou cobrar. Vale também para aceitar uma oferta de downsell, que compra o adicional por este mesmo caminho. É uma venda como o checkout e passa pelo mesmo portão de vendas — vendas da comunidade desligadas (interruptor `payoutEnabled` falso, a pausa do dono ou o desligamento do sistema) ou, em BRL, recebedor conhecido fora de `active` recusam 400 com `param = id` (`monetization.salesDisabled`), antes de gravar qualquer coisa ou chamar o provedor. A cotação (`/add-ons/quote`) não é bloqueada, como a do change-tier. **Empresa:** o admin da empresa com vínculo vivo age como o assinante na assinatura da empresa (`companyId` na resposta); funcionário da empresa que não é admin recebe 403 (`monetization.company.adminOnly`); quem não tem relação com ela, 404.

Paramètres

NomEmplacementTypeDescription
idobligatoirepathstring (uuid)

En-têtes

NomTypeDescription
X-CommunityIdfacultatifstring (uuid)ID da comunidade em que a operação acontece. Obrigatório na maioria dos endpoints com escopo de comunidade.

Corps de la requête application/json

NomTypeDescription
productIdobligatoirestring (uuid)O adicional
paymentMethodfacultatifCREDIT_CARD | DEBIT_CARD | PIX | BOLETO
installmentsfacultatifinteger≥ 1, ≤ 12
cardTokenfacultatifstringCartão novo, tokenizado no app
paymentMethodIdfacultatifstring (uuid)Cartão salvo do membro (/payment-methods)
customerDatafacultatifobjectNome, e-mail, documento e telefone do pagador, como no checkout
analyticsSessionIdfacultatifstringOpcional. O `sessionToken` do analytics (o que `POST /api/analytics/events` devolve), para o funil ligar o pedido à visita. Token inválido é ignorado. · max 64

Réponses

StatutDescription
201Operação realizada com sucesso.
400Requisição inválida — falha de validação.
401Token ausente, inválido ou expirado; token de outra comunidade (o `X-CommunityId` ou o `communityId` do corpo não é o do token); token antigo ou de uma sessão encerrada (troca de senha, convite aceito). Nesses casos a mensagem pede para entrar de novo (`auth.signInAgain`).
402Requisição inválida — falha de validação.
403Autenticado, mas sem permissão para esta operação.
404Recurso não encontrado.
500Erro interno do servidor.

Exemple curl

curl -X POST "https://api.memberfy.net/api/subscriptions/<id>/add-ons" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-CommunityId: $COMMUNITY_ID" \
  -H "Content-Type: application/json" \
  -d '{"productId":"00000000-0000-0000-0000-000000000000"}'