Saltar al contenido

Resgata um produto com o saldo de pontos

POST/api/storefront/products/{productId}/redeem

Auth
Requiere token
Clave de API:
store:write
X-CommunityId
X-CommunityId Envía el X-CommunityId de la comunidad en la que ocurre la operación.
Las descripciones de los endpoints vienen de la especificación de la API y, por ahora, están en portugués. La interfaz alrededor está traducida.

Membro da comunidade do `X-CommunityId`, com o saldo de pontos ligado (gamificação ligada; senão 409 `points.unavailable`). Só produto com `pricingMode` `POINTS` ou `POINTS_OR_MONEY` (400 `points.notForPoints`), **1 unidade por resgate**. Nunca chama o processador de pagamento: a compra nasce `COMPLETED`, `pricePaid` 0, `paymentMethod` `POINTS`, `pointsPaid`, `provider` `NONE`, sem taxa, lançamento ou repasse; o acesso (curso, ingresso, download, espaço) é concedido como no gratuito; estoque e "1 por pessoa" valem (409); físico pede `shippingAddress`. Saldo menor que o preço → 400 `points.insufficient` com `data.missing` (inclusive com saldo negativo). Resgates em paralelo da mesma pessoa passam um de cada vez (trava por comunidade e pessoa): só gasta quem tem saldo. Com o mesmo `Idempotency-Key`, devolve a compra que já existe sem gastar de novo (200). Compra pela empresa (`companyId`) e cupom não valem com pontos. Pontos não se compram, não viram dinheiro e não se transferem. Valem as mesmas regras de acesso do checkout em dinheiro: o produto precisa estar à venda para a pessoa (numa Loja que ela abre ou com o link direto ligado) e, se for curso, evento ou download, o espaço dele precisa abrir para ela (restrição por grupo, plano, produto ou nível) — senão 403 `monetization.purchase.notPurchasable`; adicional (produto que exige plano) dá 400; comunidade suspensa dá 403; produto inativo, rascunho, excluído ou de outra comunidade dá 404.

Parámetros

NombreDóndeTipoDescripción
productIdobligatoriopathstring (uuid)

Headers

NombreTipoDescripción
X-CommunityIdopcionalstring (uuid)ID da comunidade em que a operação acontece. Obrigatório na maioria dos endpoints com escopo de comunidade.
Idempotency-Keyopcionalstring

Cuerpo de la solicitud application/json

NombreTipoDescripción
shippingAddressopcionalobjectSó produto físico, como no checkout.

Respuestas

CódigoDescripción
200O mesmo `Idempotency-Key` de um resgate feito: a compra que já existe, sem gastar de novo.
201Resgatado.
400Não aceita pontos, saldo insuficiente (`data.missing`), endereço faltando, empresa, adicional sem o plano.
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`).
403Produto fora de venda para a pessoa (Loja ou espaço que ela não abre, sem link direto) ou comunidade suspensa.
404Recurso não encontrado.
409Esgotado, já tem, ou saldo de pontos desligado.

Ejemplo con curl

curl -X POST "https://api.memberfy.net/api/storefront/products/<productId>/redeem" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-CommunityId: $COMMUNITY_ID" \
  -H "Content-Type: application/json" \
  -d '{}'