ワンクリックで
ce-orders
Commerce Engine order management - create orders, list/detail, shipment tracking, payment status, cancellation, and refunds.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Commerce Engine order management - create orders, list/detail, shipment tracking, payment status, cancellation, and refunds.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Commerce Engine authentication and user management. Anonymous sessions, OTP login, password auth, token refresh, profile management, and account flows.
Commerce Engine cart management, checkout flow, and payment integration. Hosted checkout (recommended) and custom checkout with Cart CRUD, coupons, loyalty points, fulfillment, and payment gateways.
Commerce Engine product catalog - products, variants, SKUs, categories, faceted search, reviews, and recommendations.
Commerce Engine router. Use when the user asks about building a storefront, setting up the SDK, auth, products, cart, checkout, orders, webhooks, SSR, Next.js, or TanStack Start e-commerce patterns.
Set up the Commerce Engine TypeScript SDK in any project. Framework detection, public vs session client selection, token storage choices, environment variables, and migration guidance.
SSR/meta-framework patterns for Commerce Engine using @commercengine/storefront. Covers Next.js, TanStack Start, Astro, and SvelteKit with publicStorefront(), clientStorefront(), serverStorefront(), bootstrap, server functions/actions, pre-rendering, and cookie-based token management.
| name | ce-orders |
| description | Commerce Engine order management - create orders, list/detail, shipment tracking, payment status, cancellation, and refunds. |
| license | MIT |
| allowed-tools | Bash |
| metadata | {"author":"commercengine","version":"1.0.0"} |
LLM Docs Header: All requests to
https://llm-docs.commercengine.iomust include theAccept: text/markdownheader (or append.mdto the URL path). Without it, responses return HTML instead of parseable markdown.
Prerequisite: Order creation requires a cart with items and addresses. See
cart-checkout/.
| Task | SDK Method |
|---|---|
| Create order | sdk.order.createOrder({ cart_id, payment_method? }) |
| List orders | sdk.order.listOrders({ page, limit }) |
| Get order detail | sdk.order.getOrderDetails({ order_number }) |
| Get shipments | sdk.order.listOrderShipments({ order_number }) |
| Get payments | sdk.order.listOrderPayments({ order_number }) |
| Payment status | sdk.order.getPaymentStatus(orderNumber) — takes a plain string, not { order_number } |
| Retry payment | sdk.order.retryOrderPayment({ order_number }, { payment_method }) |
| Cancel order | sdk.order.cancelOrder({ order_number }, { cancellation_reason, refund_mode }) |
| Get refunds | sdk.order.listOrderRefunds({ order_number }) |
Note: Returns are managed by the brand admin (Admin Portal), not the storefront. Customers can cancel within the cancellation window (
is_cancellation_allowed); the admin then decides whether to schedule a return shipment or issue a direct refund. The default behavior is to refund if cancelled within the window. Return/replacement request APIs for storefront are under development.
User Request
│
├─ "Place order" / "Checkout"
│ └─ sdk.order.createOrder() → handle payment_info
│ → See cart-checkout/ for full checkout flow
│
├─ "My orders" / "Order history"
│ └─ sdk.order.listOrders({ page, limit })
│
├─ "Order detail" / "Order #123"
│ └─ sdk.order.getOrderDetails({ order_number })
│
├─ "Track shipment"
│ └─ sdk.order.listOrderShipments({ order_number })
│ → tracking_url, awb_no, status, eta_delivery
│
├─ "Payment failed" / "Retry"
│ ├─ Check → sdk.order.getPaymentStatus(orderNumber)
│ └─ Retry → sdk.order.retryOrderPayment({ order_number }, { payment_method })
│
└─ "Cancel order"
├─ Check is_cancellation_allowed first
└─ sdk.order.cancelOrder({ order_number }, { ... })
| Status | Description |
|---|---|
draft | Order created, awaiting payment |
confirmed | Payment successful, order confirmed |
processing | Being prepared for shipment |
shipped | In transit |
delivered | Delivered to customer |
cancelled | Order cancelled |
| Status | Description | Action |
|---|---|---|
pending | Payment not yet processed | Poll again after delay |
success | Payment successful | Show confirmation |
failed | Payment failed | Check is_retry_available |
See
cart-checkout/references/payment-patterns.md§ "Building Payment Payloads" for all payment_method shapes.
const { data: order, error } = await sdk.order.createOrder({
cart_id: cartId,
payment_method: {
payment_provider_slug: "juspay",
integration_type: "hyper-checkout",
gateway_reference_id: gatewayRefId,
return_url: "https://yoursite.com/order/confirm",
action: "paymentPage",
},
});
if (order.payment_required) {
// Use payment_info to redirect or handle payment flow
}
const { data, error } = await sdk.order.listOrders({
page: 1,
limit: 10,
sort_by: JSON.stringify({ order_date: "desc" }),
});
// data.orders → OrderList[] (summary view)
// data.pagination → { total_records, total_pages, next_page }
async function pollPaymentStatus(orderNumber: string) {
// Note: getPaymentStatus takes a string, not an object
const { data, error } = await sdk.order.getPaymentStatus(orderNumber);
if (data.status === "pending") {
setTimeout(() => pollPaymentStatus(orderNumber), 3000);
return;
}
if (data.status === "success") {
showConfirmation(orderNumber);
} else if (data.is_retry_available) {
showRetryOption(orderNumber);
} else {
showPaymentFailed();
}
}
// First check if cancellation is allowed
const { data: order } = await sdk.order.getOrderDetails({
order_number: orderNumber,
});
if (order.is_cancellation_allowed) {
const { data, error } = await sdk.order.cancelOrder(
{ order_number: orderNumber },
{
cancellation_reason: "Changed my mind",
refund_mode: "original_payment_mode",
feedback: "Optional feedback",
}
);
}
const { data, error } = await sdk.order.listOrderShipments({
order_number: orderNumber,
});
data.shipments.forEach((shipment) => {
console.log(shipment.status); // "shipped", "delivered", etc.
console.log(shipment.tracking_url); // Courier tracking link
console.log(shipment.awb_no); // Air waybill number
console.log(shipment.eta_delivery); // Estimated delivery date
});
| Level | Issue | Solution |
|---|---|---|
| CRITICAL | Creating order without address | Cart must have billing/shipping addresses set before createOrder() |
| HIGH | Not polling payment status | After gateway redirect, always poll getPaymentStatus() |
| HIGH | Showing cancel button when not allowed | Check is_cancellation_allowed from order detail first |
| MEDIUM | Not handling multiple shipments | One order can have multiple shipments — iterate data.shipments |
| MEDIUM | Missing return_url | Must provide return_url for payment gateway callback |
| MEDIUM | Building a returns flow on storefront | Returns are admin-managed. Storefront supports cancellation only (cancelOrder). Show order/refund status, not a "Request Return" form. |
| LOW | Not filtering orders by status | Use status[] query param to show relevant orders per tab |
cart-checkout/ - Cart management and checkout flowwebhooks/ - Real-time order status updates via webhooks