Shopify Functions

【Functions】離島・大型家具・温度帯に応じた配送料の動的計算・条件分岐

Shopify Functions(Delivery Customization API)を用いて、カート内商品の合計重量・容積・配送先都道府県に基づき、配送手段を動的に追加・非表示・名称変更するロジック。

主な活用ユースケース: 沖縄・離島へのクール便追加料金の自動加算、大型家具の階上げ手数料追加、メール便(ネコポス)可能商品の自動判定。
main.rsrust
use shopify_function::prelude::*;
use shopify_function::Result;

#[shopify_function_target(query_file = "src/run.graphql")]
fn run(input: input::ResponseData) -> Result<output::FunctionResult> {
    let mut operations = Vec::new();
    let is_okinawa = input.cart.delivery_groups
        .iter()
        .any(|group| group.delivery_address.as_ref().map_or(false, |addr| addr.province_code == Some("JP-47".to_string())));

    if is_okinawa {
        // 沖縄県の場合、通常便を非表示にして離島特別便のみを選択肢に残す
        for group in &input.cart.delivery_groups {
            for option in &group.delivery_options {
                if option.title.contains("通常配送") {
                    operations.push(output::Operation::Hide(output::HideOperation {
                        delivery_option_handle: option.handle.clone(),
                    }));
                }
            }
        }
    }

    Ok(output::FunctionResult { operations })
}

アーキテクチャ & 実装のポイント

外部の配送計算アプリを排除し月額固定費を削減
郵便番号・都道府県コードに基づく精密な条件分岐
チェックアウト速度を落とさずに配送ミスを根絶

このレシピに関するFAQ

Q. 複数の配送オプションを組み合わせることはできますか?

A. はい。Hide(非表示)、Rename(名称変更)、Move(並び替え)の各操作を組み合わせて最適な配送リストを表示できます。

Functions受託開発のご相談

本コードスニペットをベースにした実ストアへの組み込み・Wasmビルド・保守運用を承っています。

AI見積もりシミュレーターを使う エンジニアに直接相談する