Saltar al contenido principal

Store Credit

El Store Credit es un sistema que permite a los usuarios utilizar crédito almacenado en su cuenta para pagar parte o la totalidad de sus pedidos.

Estructura de datos principal

El crédito de tienda se almacena en el objeto Customer:

customer?.store_credit // Cantidad de crédito disponible en la cuenta del usuario

En el carrito, el crédito aplicado se refleja en:

cart.applied_store_credit // Información sobre el crédito aplicado al carrito

Métodos principales

// Aplicar o eliminar crédito de tienda al carrito
applyStoreCredit: (apply: boolean) => Promise<Cart|null>

Implementación

La implementación del Store Credit se encuentra en magento-service-provider.ts:

export const payWithStoreCredit = async (input: UseStoreCreditInput) => {
const response = await request({
query: UseStoreCreditDocument,
variables: {
cartId: input.cart_id,
amount: input.amount
}
}) as UseStoreCreditMutation
return response?.useStoreCredit as Cart|null
}

Y en magento-order-container.tsx:

const applyStoreCredit = async(useCredit: boolean) => {
if (!ctx.cartId) { return null }

const amount = useCredit ? Math.floor(customer?.store_credit ?? 0) : 0

const input: UseStoreCreditInput = {
cart_id: ctx.cartId,
amount
}
const cart = await MagentoOrderService.payWithStoreCredit(input)
if (cart !== null) {
setQuote(cart)
}
return cart
}

Flujo de uso del Store Credit

  1. Verificar si el usuario tiene crédito disponible (customer.store_credit)
  2. Ofrecer la opción de utilizar este crédito en el checkout
  3. Si el usuario decide usar el crédito, llamar a applyStoreCredit(true)
  4. El importe del crédito aplicado se resta del total del pedido
  5. Si el usuario decide no usar el crédito, llamar a applyStoreCredit(false)

Uso en componentes

import useMagentoOrderContainer from "src/magento/hooks/use-magento-order-container";

const StoreCreditComponent = () => {
const {
customer,
quote,
applyStoreCredit
} = useMagentoOrderContainer();

const hasStoreCredit = (customer?.store_credit ?? 0) > 0;

const handleApplyStoreCredit = (apply) => {
applyStoreCredit(apply);
};

// Implementación de la UI para gestionar el store credit
// ...
}

Verificación del Store Credit aplicado

Para verificar si se ha aplicado Store Credit al carrito y su importe:

const appliedStoreCredit = quote?.applied_store_credit?.applied_balance ?? 0;
const isStoreCreditApplied = appliedStoreCredit > 0;

Limitaciones

  • El Store Credit solo puede utilizarse si el usuario está autenticado (isLoggedUser: true)
  • Solo se puede aplicar hasta el importe disponible en la cuenta del usuario
  • El Store Credit se aplica antes que otros métodos de pago