checkout-payments

📁 santiagoxor/pintureria-digital 📅 7 days ago
1
总安装量
1
周安装量
#52860
全站排名
安装命令
npx skills add https://github.com/santiagoxor/pintureria-digital --skill checkout-payments

Agent 安装分布

amp 1
opencode 1
cursor 1
codex 1
github-copilot 1

Skill 文档

Checkout and Payments

Quick Start

When working with checkout:

  1. Validate cart data before creating order
  2. Validate shipping address
  3. Create order in database
  4. Integrate with MercadoPago
  5. Handle payment webhooks
  6. Update order status

Key Files

  • src/app/checkout/ – Checkout pages
  • src/components/Checkout/ – Checkout components
  • src/lib/integrations/mercadopago/ – MercadoPago integration
  • src/lib/business/orders/ – Order logic
  • src/hooks/useCheckout.ts – Checkout hook

Common Patterns

Create Order

import { createOrder } from '@/lib/business/orders/order-service';
import { createPayment } from '@/lib/integrations/mercadopago';

export async function POST(request: NextRequest) {
  const { items, shippingAddress, paymentMethod } = await request.json();
  
  const order = await createOrder({
    items,
    shippingAddress,
    status: 'pending_payment',
  });
  
  const payment = await createPayment({
    transaction_amount: order.total,
    description: `Orden #${order.id}`,
    payer: {
      email: order.customer_email,
    },
  });
  
  await updateOrder(order.id, {
    payment_id: payment.id,
    payment_status: 'pending',
  });
  
  return NextResponse.json({ order, payment });
}

Validate Address

import { validateAddress } from '@/lib/business/logistics/address-validation';

const validation = await validateAddress({
  street: 'Av. Corrientes 1234',
  city: 'Buenos Aires',
  postalCode: 'C1043AAX',
  country: 'AR',
});

if (!validation.isValid) {
  return { errors: validation.errors };
}

MercadoPago Wallet

import { initMercadoPago, Wallet } from '@mercadopago/sdk-react';

function CheckoutPayment() {
  const [paymentData, setPaymentData] = useState(null);
  
  useEffect(() => {
    initMercadoPago('YOUR_PUBLIC_KEY');
  }, []);
  
  return (
    <Wallet
      initialization={{ preferenceId: paymentData?.preference_id }}
      onSubmit={onSubmit}
    />
  );
}

Order States

  • pending_payment – Waiting for payment
  • paid – Paid
  • processing – Processing
  • shipped – Shipped
  • delivered – Delivered
  • cancelled – Cancelled
  • refunded – Refunded