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
- Uygulamayı Function’la birlikte deploy edin ve shopify.extension.toml’daki handle’ı not alın.
- EnableDeliveryCustomization’ı handle, mağaza sahibinin Ayarlar’da göreceği bir title ve enabled: true ile gönderin.
- Function’ın ayarlarını aynı girdide json tipli bir metafield olarak ekleyin.
- Ö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.graphqlmutation 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.graphqlmutation 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.graphqlmutation 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.
İlgili içerikler
- Sepet tutarı belli bir sınırı aşınca kapıda ödemeyi gizleme
- Ağır sepetlerde ekspres kargoyu gizleme
- Posta kutusu adreslerini engelleme
- Teslimat özelleştirme: kargo seçeneklerini gizlemek, yeniden adlandırmak ve sıralamak
- Kurallarınıza uymayan Shopify siparişlerini Cart and Checkout Validation ile durdurun
- Function’ları metafield (meta alan) ile yapılandırmak: kuralı yeni sürüm yayınlamadan değiştirin
- 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ı.
