mcpField
C
ce-orders

ce-orders

github.com/commercengineその他088 回インストール9 週間前に更新
リポジトリ

ce-orders について

ce-ordersは、Commercengine storefront SDKで注文管理を実装する開発者向けのエージェントスキルです。注文、決済、配送、キャンセルの手順を扱い、返品はブランド管理者が対応することも示します。

主な機能

  1. 01注文作成と決済処理
  2. 02注文一覧と詳細の取得
  3. 03配送・決済・返金情報の確認
  4. 04決済状態の確認と再試行
  5. 05キャンセル可否の確認と注文取消

活用シーン

  1. 01チェックアウト後の注文処理の構築
  2. 02注文履歴と配送追跡の表示
  3. 03決済状態の確認と失敗時の再試行
  4. 04可否を確認する注文キャンセル画面の実装

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/commercengine/skills --skill ce-orders

インストール後、Claude Code で/ce-ordersを入力して読み込まれたか確認します。

同梱ファイル.claude-plugin/plugin.json.cursor-plugin/plugin.json

詳細

LLM ドキュメントのヘッダー:https://llm-docs.commercengine.io へのすべてのリクエストには、Accept: text/markdown ヘッダーを必ず含めてください(または URL パスに .md を追加してください)。含めない場合、解析可能な Markdown ではなく HTML が返されます。

注文管理

前提条件:注文を作成するには、商品と住所が設定されたカートが必要です。cart-checkout/ を参照してください。

クイックリファレンス

タスクSDK メソッド
注文を作成sdk.order.createOrder({ cart_id, payment_method? })
注文一覧を取得sdk.order.listOrders({ page, limit })
注文詳細を取得sdk.order.getOrderDetails({ order_number })
配送一覧を取得sdk.order.listOrderShipments({ order_number })
支払い一覧を取得sdk.order.listOrderPayments({ order_number })
支払いステータスsdk.order.getPaymentStatus(orderNumber) — { order_number } ではなく、文字列を直接渡します
支払いを再試行sdk.order.retryOrderPayment({ order_number }, { payment_method })
注文をキャンセルsdk.order.cancelOrder({ order_number }, { cancellation_reason, refund_mode })
返金一覧を取得sdk.order.listOrderRefunds({ order_number })

注:返品はストアフロントではなく、ブランド管理者(管理ポータル)が管理します。顧客はキャンセル可能期間内にキャンセルできます(is_cancellation_allowed)。その後、管理者が返品配送を手配するか、直接返金するかを決定します。期間内にキャンセルされた場合は、デフォルトで返金されます。ストアフロント向けの返品・交換リクエスト API は開発中です。

判断ツリー

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 }, { ... })

注文ステータス

ステータス説明
draft注文が作成され、支払い待ちです
confirmed支払いが成功し、注文が確定しました
processing発送の準備中です
shipped配送中です
delivered顧客に配達済みです
cancelled注文がキャンセルされました

支払いステータス

ステータス説明対応
pending支払いはまだ処理されていません時間をおいて再度確認します
success支払いが成功しました確認メッセージを表示します
failed支払いに失敗しましたis_retry_available を確認します

主なパターン

カートから注文を作成する

すべての payment_method の形式については、cart-checkout/references/payment-patterns.md §「支払いペイロードの構築」を参照してください。

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
});

よくある落とし穴

重大度問題解決策
CRITICAL住所を設定せずに注文を作成するcreateOrder() を呼び出す前に、カートに請求先住所と配送先住所を設定する必要があります
HIGH支払いステータスをポーリングしないゲートウェイからリダイレクトされた後、必ず getPaymentStatus() をポーリングします
HIGHキャンセル不可の場合にキャンセルボタンを表示するまず注文詳細から is_cancellation_allowed を確認します
MEDIUM複数の配送を処理しない1 つの注文に複数の配送が含まれる場合があります — data.shipments を反復処理します
MEDIUMreturn_url が設定されていない支払いゲートウェイのコールバックには return_url を指定する必要があります
MEDIUMストアフロントに返品フローを実装する返品は管理者が管理します。ストアフロントで対応するのはキャンセルのみです(cancelOrder)。「返品をリクエスト」フォームではなく、注文・返金ステータスを表示します。
LOWステータスで注文をフィルタリングしないタブごとに関連する注文を表示するには、status[] クエリパラメーターを使用します

関連項目

  • cart-checkout/ - カート管理とチェックアウトフロー
  • webhooks/ - Webhook によるリアルタイムの注文ステータス更新

ドキュメント

コメント