Aunty-Sparkles-Website/app/api/square/create-order/route.ts

51 lines
1.5 KiB
TypeScript

import { Client, Environment } from "squareup"
const client = new Client({
accessToken: process.env.SQUARE_ACCESS_TOKEN,
environment: process.env.SQUARE_ENVIRONMENT === "production" ? Environment.Production : Environment.Sandbox,
})
export async function POST(request: Request) {
try {
const { items, customerInfo } = await request.json()
const ordersApi = client.ordersApi
const orderRequest = {
order: {
locationId: process.env.SQUARE_LOCATION_ID,
lineItems: items.map((item: any) => ({
name: item.name,
quantity: item.quantity.toString(),
basePriceMoney: {
amount: BigInt(item.price * 100),
currency: "USD",
},
note: item.description || "",
})),
metadata: {
customerName: customerInfo.name,
customerEmail: customerInfo.email,
customerPhone: customerInfo.phone || "",
shippingAddress: JSON.stringify(customerInfo.address || {}),
},
},
idempotencyKey: crypto.randomUUID(),
}
const response = await ordersApi.createOrder(orderRequest)
if (response.result.order) {
return Response.json({
success: true,
order: response.result.order,
})
} else {
throw new Error("Failed to create order")
}
} catch (error) {
console.error("Square order creation error:", error)
return Response.json({ success: false, error: "Failed to create order" }, { status: 500 })
}
}