# 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.

Sayfa: https://lintelagency.com/tr/kaynaklar/graphql/function-ozellestirmesini-etkinlestirme

## 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.

## Bilgiler

- **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:** 2 Kasım 2026

## 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

```graphql
mutation EnableDeliveryCustomization($customization: DeliveryCustomizationInput!) {
  deliveryCustomizationCreate(deliveryCustomization: $customization) {
    deliveryCustomization {
      id
      title
      enabled
      functionId
    }
    userErrors {
      code
      field
      message
    }
  }
}
```

### delivery-customization-create.variables.json

```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

```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

```graphql
mutation EnablePaymentCustomization($customization: PaymentCustomizationInput!) {
  paymentCustomizationCreate(paymentCustomization: $customization) {
    paymentCustomization {
      id
      title
      enabled
    }
    userErrors {
      code
      field
      message
    }
  }
}
```

### payment-customization-create.variables.json

```json
{
  "customization": {
    "functionHandle": "hide-cod-above-total",
    "title": "Hide cash on delivery above 500",
    "enabled": true
  }
}
```

### payment-customization-create.response.json

```json
{
  "data": {
    "paymentCustomizationCreate": {
      "paymentCustomization": {
        "id": "gid://shopify/PaymentCustomization/1234567890",
        "title": "Hide cash on delivery above 500",
        "enabled": true
      },
      "userErrors": []
    }
  }
}
```

### validation-create.graphql

```graphql
mutation EnableValidation($validation: ValidationCreateInput!) {
  validationCreate(validation: $validation) {
    validation {
      id
      title
      enabled
      blockOnFailure
    }
    userErrors {
      code
      field
      message
    }
  }
}
```

### validation-create.variables.json

```json
{
  "validation": {
    "functionHandle": "block-po-box-addresses",
    "title": "Block PO box addresses",
    "enable": true,
    "blockOnFailure": false
  }
}
```

### validation-create.response.json

```json
{
  "data": {
    "validationCreate": {
      "validation": {
        "id": "gid://shopify/Validation/1234567890",
        "title": "Block PO box addresses",
        "enabled": true,
        "blockOnFailure": false
      },
      "userErrors": []
    }
  }
}
```

## 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.

## 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.

## Shopify belgeleri

- [deliveryCustomizationCreate](https://shopify.dev/docs/api/admin-graphql/latest/mutations/deliveryCustomizationCreate)
- [paymentCustomizationCreate](https://shopify.dev/docs/api/admin-graphql/latest/mutations/paymentCustomizationCreate)
- [validationCreate](https://shopify.dev/docs/api/admin-graphql/latest/mutations/validationCreate)

## İlgili içerikler

- [Sepet tutarı belli bir sınırı aşınca kapıda ödemeyi gizleme](https://lintelagency.com/tr/kaynaklar/shopify-functions/sepet-tutarina-gore-kapida-odemeyi-gizleme)
- [Ağır sepetlerde ekspres kargoyu gizleme](https://lintelagency.com/tr/kaynaklar/shopify-functions/agir-sepetlerde-ekspres-kargoyu-gizleme)
- [Posta kutusu adreslerini engelleme](https://lintelagency.com/tr/kaynaklar/shopify-functions/posta-kutusu-adreslerini-engelleme)
- [Teslimat özelleştirme: kargo seçeneklerini gizlemek, yeniden adlandırmak ve sıralamak](https://lintelagency.com/tr/blog/shopify-teslimat-ozellestirme)
- [Kurallarınıza uymayan Shopify siparişlerini Cart and Checkout Validation ile durdurun](https://lintelagency.com/tr/blog/shopify-odeme-dogrulama)
- [Function’ları metafield (meta alan) ile yapılandırmak: kuralı yeni sürüm yayınlamadan değiştirin](https://lintelagency.com/tr/blog/shopify-functions-metafield-ile-yapilandirma)

Lisans: MIT. Kendi mağazanızda da müşteri işlerinizde de ücretsiz kullanabilirsiniz.
