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
- Verificar si el usuario tiene crédito disponible (
customer.store_credit) - Ofrecer la opción de utilizar este crédito en el checkout
- Si el usuario decide usar el crédito, llamar a
applyStoreCredit(true) - El importe del crédito aplicado se resta del total del pedido
- 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