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(並び替え)の各操作を組み合わせて最適な配送リストを表示できます。