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
- BeginOrderEdit’i sipariş ID’siyle gönderin. Dönen calculated order ID’sini ve calculated line item ID’lerini saklayın.
- 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.
- Her adımdan sonra userErrors’ı kontrol edin; başarısız bir değişiklik diğerlerini etkilemez.
- CommitOrderEdit’i gönderin. notifyCustomer: true ile müşteriye güncel sipariş e-postayla gider.
Kod
order-edit-begin.graphqlmutation 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.graphqlmutation 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.graphqlmutation 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.graphqlmutation 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.
Shopify belgeleri
- 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ı.
