Verilmiş bir siparişi düzenleme

orderEditBegin, orderEditAddVariant, orderEditSetQuantity ve orderEditCommit ile siparişe ürün ekleyin, adetleri değiştirin ve değişikliği onaylayın.

API
Admin GraphQL API
İşlemler
orderEditBegin, orderEditAddVariant, orderEditSetQuantity, orderEditCommit
Erişim yetkisi
write_order_edits
API sürümü
2026-10
Son kontrol

Kısaca

Verilmiş bir siparişi düzenlemek için orderEditBegin ile başlayın; size siparişin taslak bir kopyası olan bir calculated order döner. Değişiklikleri bu kopya üzerinde orderEditAddVariant, orderEditSetQuantity ve benzeri mutation’larla hazırlayın, ardından orderEditCommit ile hepsini tek seferde uygulayın. Commit edene kadar asıl siparişte hiçbir şey değişmez. Yalnızca gönderilmemiş satırlar düzenlenebilir; uygulamanın write_order_edits yetkisi olmalıdır.

Nasıl kullanılır

  1. BeginOrderEdit’i sipariş ID’siyle gönderin. Dönen calculated order ID’sini ve calculated line item ID’lerini saklayın.
  2. Değişiklikleri hazırlayın: AddItemToOrder bir varyant ekler, ChangeQuantity bir satırın adedini azaltır ya da artırır. Çıkarılan adetleri stoğa geri koymak için restock: true kullanın.
  3. Her adımdan sonra userErrors’ı kontrol edin; başarısız bir değişiklik diğerlerini etkilemez.
  4. CommitOrderEdit’i gönderin. notifyCustomer: true ile müşteriye güncel sipariş e-postayla gider.

Kod

order-edit-begin.graphql
mutation BeginOrderEdit($orderId: ID!) {
  orderEditBegin(id: $orderId) {
    calculatedOrder {
      id
      lineItems(first: 20) {
        nodes {
          id
          title
          quantity
          editableQuantity
        }
      }
    }
    userErrors {
      field
      message
    }
  }
}
order-edit-begin.variables.json
{
  "orderId": "gid://shopify/Order/1234567890"
}
order-edit-begin.response.json
{
  "data": {
    "orderEditBegin": {
      "calculatedOrder": {
        "id": "gid://shopify/CalculatedOrder/1234567890",
        "lineItems": {
          "nodes": [
            {"id": "gid://shopify/CalculatedLineItem/1111111111", "title": "Linen shirt", "quantity": 2, "editableQuantity": 2}
          ]
        }
      },
      "userErrors": []
    }
  }
}
order-edit-add-variant.graphql
mutation AddItemToOrder($calculatedOrderId: ID!, $variantId: ID!, $quantity: Int!) {
  orderEditAddVariant(id: $calculatedOrderId, variantId: $variantId, quantity: $quantity, allowDuplicates: false) {
    calculatedLineItem {
      id
      title
      quantity
    }
    userErrors {
      field
      message
    }
  }
}
order-edit-add-variant.variables.json
{
  "calculatedOrderId": "gid://shopify/CalculatedOrder/1234567890",
  "variantId": "gid://shopify/ProductVariant/2222222222",
  "quantity": 1
}
order-edit-add-variant.response.json
{
  "data": {
    "orderEditAddVariant": {
      "calculatedLineItem": {
        "id": "gid://shopify/CalculatedLineItem/2222222222",
        "title": "Wool scarf",
        "quantity": 1
      },
      "userErrors": []
    }
  }
}
order-edit-set-quantity.graphql
mutation ChangeQuantity($calculatedOrderId: ID!, $lineItemId: ID!, $quantity: Int!) {
  orderEditSetQuantity(id: $calculatedOrderId, lineItemId: $lineItemId, quantity: $quantity, restock: true) {
    calculatedLineItem {
      id
      quantity
    }
    userErrors {
      field
      message
    }
  }
}
order-edit-set-quantity.variables.json
{
  "calculatedOrderId": "gid://shopify/CalculatedOrder/1234567890",
  "lineItemId": "gid://shopify/CalculatedLineItem/1111111111",
  "quantity": 1
}
order-edit-set-quantity.response.json
{
  "data": {
    "orderEditSetQuantity": {
      "calculatedLineItem": {
        "id": "gid://shopify/CalculatedLineItem/1111111111",
        "quantity": 1
      },
      "userErrors": []
    }
  }
}
order-edit-commit.graphql
mutation CommitOrderEdit($calculatedOrderId: ID!, $notifyCustomer: Boolean, $staffNote: String) {
  orderEditCommit(id: $calculatedOrderId, notifyCustomer: $notifyCustomer, staffNote: $staffNote) {
    order {
      id
      name
      totalOutstandingSet {
        shopMoney {
          amount
          currencyCode
        }
      }
    }
    userErrors {
      field
      message
    }
  }
}
order-edit-commit.variables.json
{
  "calculatedOrderId": "gid://shopify/CalculatedOrder/1234567890",
  "notifyCustomer": true,
  "staffNote": "Swapped one shirt for a scarf at the customer's request."
}
order-edit-commit.response.json
{
  "data": {
    "orderEditCommit": {
      "order": {
        "id": "gid://shopify/Order/1234567890",
        "name": "#1001",
        "totalOutstandingSet": {
          "shopMoney": {
            "amount": "-14.00",
            "currencyCode": "EUR"
          }
        }
      },
      "userErrors": []
    }
  }
}

Lintel tarafından yazıldı. MIT lisansı: kendi mağazanızda da müşteri işlerinizde de ücretsiz kullanabilirsiniz.

Sınırlar ve özel durumlar

  • Yalnızca gönderilmemiş satırlar düzenlenebilir; 1 Ocak 2019’dan önce verilmiş ya da arşivlenmiş siparişler düzenlenemez.
  • Toplam değişirse tahsil edilmesi ya da iade edilmesi gereken bir bakiye oluşabilir. Negatif bir totalOutstandingSet, mağazanın müşteriye borçlu olduğu anlamına gelir; bunu refundCreate ile iade edin.
  • Adedi 0 yapmak satırı siparişten çıkarır.
  • Shopify’ın rehberi, mağaza para birimi dışındaki siparişleri ve abonelik siparişlerini düzenlemek için ek koşulları da listeler.

Sık sorulan sorular

Shopify’da verilmiş bir sipariş düzenlenebilir mi?
Evet, satırlar henüz gönderilmediyse. orderEditBegin ile başlayıp değişiklikleri hazırlayın ve orderEditCommit ile uygulayın ya da siparişi Shopify admin’de düzenleyin.
Sipariş düzenlemek müşteriye otomatik iade yapar mı?
Hayır. Yeni toplam daha düşükse fark, müşteriye borçlu olunan açık tutar olarak görünür; iadeyi sizin oluşturmanız gerekir.
Calculated order nedir?
Hazırladığınız düzenlemeleri ve yeniden hesaplanan toplamları tutan çalışma kopyasıdır. Ancak commit ettiğinizde asıl siparişe yansır.
  • Gösterilen tarihte, 2026-10 sürümünün Admin veya Storefront API şemasıyla doğrulandı. İstek adresinizdeki sürümü kontrol edin.
  • Örneklerdeki ID’ler ve mağaza adresleri yer tutucudur. Kendi değerlerinizle değiştirin.
  • Admin API çağrıları uygulamanızdan bir erişim anahtarı (access token) ister. Admin API anahtarını asla vitrine ya da temaya koymayın.
  • MIT lisansı. Kodu kendi mağazanızda da müşteri işlerinizde de kullanabilirsiniz.

Mağazanız için kurulmasını, test edilmesini ve bakımını isterseniz: API entegrasyonları.

Geliştirmek istediğiniz bir şey mi var? Gelin, birlikte konuşalım.

Aynı anda sınırlı sayıda proje alıyoruz.

Gencer KarakayaShopify mühendisi

Proje özetinizi bir mühendis okur; size e-postayla yanıt veririz.