Skip to content

Checkout Options Client

The Checkout Options client evaluates available checkout options based on order and customer criteria. Use this to determine feasible delivery configurations for checkout flows.

Evaluating Checkout Options

deliveryPreferences and orderLineItems are required:

java
import de.joesst.dev.fulfillmenttools.checkoutoptions.CheckoutOption;
import de.joesst.dev.fulfillmenttools.checkoutoptions.EvaluateCheckoutOptionsRequest;
import de.joesst.dev.fulfillmenttools.orders.DeliveryPreferences;
import de.joesst.dev.fulfillmenttools.orders.DeliveryPreferencesShipping;
import de.joesst.dev.fulfillmenttools.FulfillmenttoolsException;
import java.util.List;
import java.util.Map;

try {
    CheckoutOption option = client.checkoutOptions().evaluate(
        EvaluateCheckoutOptionsRequest.builder()
            .deliveryPreferences(
                DeliveryPreferences.builder()
                    .shipping(
                        DeliveryPreferencesShipping.builder()
                            .serviceLevel("DELIVERY")
                            .build()
                    )
                    .build()
            )
            .orderLineItems(List.of(
                Map.<String, Object>of(
                    "tenantArticleId", "SKU-12345",
                    "quantity", 2
                )
            ))
            .build()
    );

    System.out.println("Facilities available: " + option.facilities().size());
} catch (FulfillmenttoolsException e) {
    System.out.println("Evaluation failed: " + e.getMessage());
}

Async Usage

java
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionException;
import de.joesst.dev.fulfillmenttools.checkoutoptions.CheckoutOption;
import de.joesst.dev.fulfillmenttools.checkoutoptions.EvaluateCheckoutOptionsRequest;
import de.joesst.dev.fulfillmenttools.orders.DeliveryPreferences;
import de.joesst.dev.fulfillmenttools.orders.DeliveryPreferencesShipping;
import java.util.List;
import java.util.Map;

CompletableFuture<CheckoutOption> future = client.checkoutOptions().evaluateAsync(
    EvaluateCheckoutOptionsRequest.builder()
        .deliveryPreferences(
            DeliveryPreferences.builder()
                .shipping(
                    DeliveryPreferencesShipping.builder()
                        .serviceLevel("DELIVERY")
                        .build()
                )
                .build()
        )
        .orderLineItems(List.of(
            Map.<String, Object>of(
                "tenantArticleId", "SKU-12345",
                "quantity", 2
            )
        ))
        .build()
);

future.whenComplete((option, ex) -> {
    if (ex != null) {
        Throwable cause = ex instanceof CompletionException && ex.getCause() != null
            ? ex.getCause() : ex;
        System.out.println("Error: " + cause.getMessage());
    } else {
        System.out.println("Facilities available: " + option.facilities().size());
    }
});

API Reference

evaluate(EvaluateCheckoutOptionsRequest)

Evaluate available checkout options. deliveryPreferences and orderLineItems are required.

Parameters:

  • request: EvaluateCheckoutOptionsRequest — Request with delivery preferences and order line items

Returns: CheckoutOption

Throws: FulfillmenttoolsException if the evaluation fails

evaluateAsync(EvaluateCheckoutOptionsRequest)

Evaluate available checkout options asynchronously.

Parameters:

  • request: EvaluateCheckoutOptionsRequest — Request with delivery preferences and order line items

Returns: CompletableFuture<CheckoutOption>