Pular para o conteúdo

Carrinho e compra

O carrinho do LuckyMaker é persistido por uuid. A SDK cria, salva e reutiliza esse UUID sozinha.

Você não passa o UUID como argumento. Ele fica na propriedade sdk.cart.uuid:

console.log(sdk.cart.uuid); // undefined antes do primeiro uso

Na primeira chamada que precisa de carrinho, a SDK gera um UUID e guarda. No browser, ele fica em localStorage; em SSR/Node, em memória.

Para continuar um carrinho existente:

sdk.cart.uuid = "uuid-do-carrinho";

Ou na criação da instância:

const sdk = new LMSdk({
baseUrl: "api.sualoja.com.br",
cartUuid: "uuid-do-carrinho"
});
const cart = await sdk.cart.getCart();
const items = await sdk.cart.getItems();

Se ainda não existir carrinho, a SDK cria o UUID e o backend cria o registro vazio.

addItems cria o carrinho automaticamente quando necessário:

await sdk.cart.addItems({
item: {
type: "RAFFLE_NUMBERS",
raffleUUID: "uuid-do-sorteio",
amount: 10
}
});
console.log(sdk.cart.uuid); // UUID salvo pela SDK

Tipos de item suportados:

type Campos principais
RAFFLE_NUMBERS raffleUUID, amount
RAFFLE_NUMBERS + kind: "GAMBLING" raffleUUID, priceMultiplier, amount
ECOMMERCE_ITEM itemId, amount
SUBSCRIPTION planId, amount
CREDITS amount
await sdk.cart.replaceItems({
items: [
{ type: "CREDITS", amount: 50 }
]
});
await sdk.cart.removeItem("item-id");
const publicOffers = await sdk.offers.listPublic();
const myOffers = await sdk.offers.listOffers();
const coupons = await sdk.offers.listCoupons();
await sdk.offers.claimOffer("offer-id");
await sdk.coupons.redeemCoupon("CUPOM10");

Para validar itens antes de persistir:

const issues = await sdk.cart.previewIssues({
items: [
{ type: "RAFFLE_NUMBERS", raffleUUID: "uuid", amount: 10 }
],
paymentMethod: "PIX"
});

Para validar o carrinho já persistido:

const issues = await sdk.cart.previewIssuesCart({
cpf: "00000000000"
});

Use o UUID que a SDK já salvou:

const cartUuid = sdk.cart.uuid;
if (!cartUuid) {
throw new Error("Carrinho ainda não criado.");
}
const purchase = await sdk.purchase.createPurchase({
captcha: "<token-do-captcha>",
cart: {
uuid: cartUuid
},
paymentData: {
type: "PIX"
}
});

Ou pelo fluxo de pedidos:

const order = await sdk.orders.createOrder("payment-id", {
cpf: "00000000000"
});
const bonds = await sdk.orders.getBonds("payment-id");

Se o backend responder CART_GONE ou CART_NOT_FOUND, a SDK descarta o UUID antigo e repete a requisição uma vez com um carrinho novo. Você não precisa tratar esse caso manualmente.

const order = await sdk.orders.getOrder("payment-id");
const payments = await sdk.payments.listHistory({ page: 1 });
const shipping = await sdk.payments.getShipping("payment-uuid");