Teslimat, ödeme ya da doğrulama Function’ını etkinleştirme

Deploy edilmiş bir Function’ı deliveryCustomizationCreate, paymentCustomizationCreate ya da validationCreate ile mağazada açın; ayarları metafield’la verin.

API
Admin GraphQL API
İşlemler
deliveryCustomizationCreate, paymentCustomizationCreate, validationCreate
Erişim yetkileri
write_delivery_customizations, write_payment_customizations, write_validations
API sürümü
2026-10
Son kontrol

Kısaca

Teslimat, ödeme ya da doğrulama Function’ları ancak mağazada etkinleştirildikten sonra çalışır. deliveryCustomizationCreate’i Function’ın functionHandle’ı, bir title ve enabled: true ile çağırın; ödeme Function’ları için paymentCustomizationCreate’i, sepet ve checkout doğrulaması için validationCreate’i kullanın. Ayarları aynı çağrıda JSON bir metafield olarak verin ve Function’ın input sorgusunda okuyun.

Nasıl kullanılır

  1. Uygulamayı Function’la birlikte deploy edin ve shopify.extension.toml’daki handle’ı not alın.
  2. EnableDeliveryCustomization’ı handle, mağaza sahibinin Ayarlar’da göreceği bir title ve enabled: true ile gönderin.
  3. Function’ın ayarlarını aynı girdide json tipli bir metafield olarak ekleyin.
  4. Ödeme Function’ı için aynı girdiyi paymentCustomizationCreate’e gönderin; doğrulama için validationCreate’i kullanın, orada açma anahtarının adı enable’dır.

Kod

delivery-customization-create.graphql
mutation EnableDeliveryCustomization($customization: DeliveryCustomizationInput!) {
  deliveryCustomizationCreate(deliveryCustomization: $customization) {
    deliveryCustomization {
      id
      title
      enabled
      functionId
    }
    userErrors {
      code
      field
      message
    }
  }
}
delivery-customization-create.variables.json
{
  "customization": {
    "functionHandle": "hide-express-heavy-carts",
    "title": "Hide express shipping over 20 kg",
    "enabled": true,
    "metafields": [
      {
        "namespace": "$app",
        "key": "function-configuration",
        "type": "json",
        "value": "{\"maxWeightKg\":20,\"rateTitleContains\":\"Express\"}"
      }
    ]
  }
}
delivery-customization-create.response.json
{
  "data": {
    "deliveryCustomizationCreate": {
      "deliveryCustomization": {
        "id": "gid://shopify/DeliveryCustomization/1234567890",
        "title": "Hide express shipping over 20 kg",
        "enabled": true,
        "functionId": "00000000-0000-0000-0000-000000000000"
      },
      "userErrors": []
    }
  }
}
payment-customization-create.graphql
mutation EnablePaymentCustomization($customization: PaymentCustomizationInput!) {
  paymentCustomizationCreate(paymentCustomization: $customization) {
    paymentCustomization {
      id
      title
      enabled
    }
    userErrors {
      code
      field
      message
    }
  }
}
payment-customization-create.variables.json
{
  "customization": {
    "functionHandle": "hide-cod-above-total",
    "title": "Hide cash on delivery above 500",
    "enabled": true
  }
}
payment-customization-create.response.json
{
  "data": {
    "paymentCustomizationCreate": {
      "paymentCustomization": {
        "id": "gid://shopify/PaymentCustomization/1234567890",
        "title": "Hide cash on delivery above 500",
        "enabled": true
      },
      "userErrors": []
    }
  }
}
validation-create.graphql
mutation EnableValidation($validation: ValidationCreateInput!) {
  validationCreate(validation: $validation) {
    validation {
      id
      title
      enabled
      blockOnFailure
    }
    userErrors {
      code
      field
      message
    }
  }
}
validation-create.variables.json
{
  "validation": {
    "functionHandle": "block-po-box-addresses",
    "title": "Block PO box addresses",
    "enable": true,
    "blockOnFailure": false
  }
}
validation-create.response.json
{
  "data": {
    "validationCreate": {
      "validation": {
        "id": "gid://shopify/Validation/1234567890",
        "title": "Block PO box addresses",
        "enabled": true,
        "blockOnFailure": false
      },
      "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

  • functionHandle uygulamanızla sınırlıdır: yalnızca uygulamanızın deploy ettiği Function’ları bulur.
  • validationCreate ayrıca blockOnFailure alır: true ise zaman aşımı gibi bir Function hatası da checkout’u engeller; doğrulama hataları her zaman engeller.
  • Her çağrı yeni bir özelleştirme oluşturur. Mevcut olanı değiştirmek için ikinci bir tane oluşturmak yerine ID’siyle ilgili …Update mutation’ını kullanın.
  • Bir özelleştirmeyi silmeden kapatmak için deliveryCustomizationUpdate ya da paymentCustomizationUpdate ile enabled: false gönderin.

Sık sorulan sorular

Teslimat özelleştirme Function’ım neden çalışmıyor?
Deploy etmek yetmez. Mağazada onu kullanan, deliveryCustomizationCreate ve enabled: true ile oluşturulmuş bir teslimat özelleştirmesi bulunmalıdır.
Ödeme özelleştirmesi ile doğrulama arasındaki fark nedir?
Ödeme özelleştirmesi ödeme yöntemlerini gizler, yeniden adlandırır ya da sıralar. Doğrulama ise sepet bir kuralı ihlal ettiğinde checkout’u bir hata mesajıyla engeller.
Checkout Function’ına ayarları nasıl aktarırım?
Ayarları özelleştirme ya da doğrulama üzerinde bir metafield olarak, oluşturma çağrısında ya da sonradan metafieldsSet ile kaydedin; bu metafield’ı Function’ın input sorgusunda okuyun.
  • 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.