Table of Contents

uMarketplace Split-Rate add-on API

Introduction

Split-rate add-on customizes magento native checkout API to produce data in a bit different format to match specifics of split-rate cart functionality. The add-on gives functionality to a customer to select different shipping method per vendor. Customer cart can contain products from multiple vendors. Each group of products that belongs to a different vendor can have a separate shipping method assigned that will be later used in order fulfillment. The list of customized APIs

Estimate guest cart shipping

If you check results of this API call you will notice a presence of udropship_vendor, vendor_id, udropship_default fields.
vendor_id - reference id of the vendor that this item relates to.
udropship_default - indicates if this method selected by default or using previos calls to /V1/guest-carts/:cartId/shipping-information or /V1/guest-carts/:cartId/totals-information
Item needs to be treated differently depending on udropship_vendor field value:
udropship_vendor=0 - should be skipped. normaly it's a system carrier method that not used in per vendor shipping
udropship_vendor=-1 - special item that holds vendor information for the following results with udropship_vendor=“vendor_id of this item”
udropship_vendor⇒0 - reference id of the vendor that this shipping method belongs to
Example:

POST /rest/default/V1/guest-carts/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/estimate-shipping-methods
{"address":{"region_id":"12","region":"California","country_id":"US","postcode":"90210"}}

RESPONSE

[{
    "udropship_vendor": "0",
    "udropship_default": null,
    "vendor_id": null,
    "carrier_code": "udsplit",
    "method_code": "total",
    "carrier_title": "Drop Shipping (Split)",
    "method_title": "Total",
    "amount": 11.71,
    "base_amount": 11.71,
    "available": true,
    "error_message": "",
    "price_excl_tax": 11.71,
    "price_incl_tax": 11.71
}, {
    "udropship_vendor": "-1",
    "udropship_default": null,
    "vendor_id": "1",
    "carrier_code": null,
    "method_code": null,
    "carrier_title": "vendor1",
    "method_title": "los angeles, US CA",
    "amount": null,
    "base_amount": null,
    "available": null,
    "error_message": null,
    "price_excl_tax": null,
    "price_incl_tax": null
}, {
    "udropship_vendor": "1",
    "udropship_default": "1",
    "vendor_id": "1",
    "carrier_code": "fedex",
    "method_code": "FEDEX_GROUND",
    "carrier_title": "Federal Express",
    "method_title": "Ground",
    "amount": 0,
    "base_amount": 0,
    "available": true,
    "error_message": "",
    "price_excl_tax": 0,
    "price_incl_tax": 0
}, {
    "udropship_vendor": "1",
    "udropship_default": "0",
    "vendor_id": "1",
    "carrier_code": "fedex",
    "method_code": "FEDEX_2_DAY",
    "carrier_title": "Federal Express",
    "method_title": "2 Day",
    "amount": 19.59,
    "base_amount": 19.59,
    "available": true,
    "error_message": "",
    "price_excl_tax": 19.59,
    "price_incl_tax": 19.59
}, {
    "udropship_vendor": "1",
    "udropship_default": "0",
    "vendor_id": "1",
    "carrier_code": "fedex",
    "method_code": "PRIORITY_OVERNIGHT",
    "carrier_title": "Federal Express",
    "method_title": "Priority Overnight",
    "amount": 25.26,
    "base_amount": 25.26,
    "available": true,
    "error_message": "",
    "price_excl_tax": 25.26,
    "price_incl_tax": 25.26
}, {
    "udropship_vendor": "-1",
    "udropship_default": null,
    "vendor_id": "2",
    "carrier_code": null,
    "method_code": null,
    "carrier_title": "vendor2",
    "method_title": "rome, US GA",
    "amount": null,
    "base_amount": null,
    "available": null,
    "error_message": null,
    "price_excl_tax": null,
    "price_incl_tax": null
}, {
    "udropship_vendor": "2",
    "udropship_default": "1",
    "vendor_id": "2",
    "carrier_code": "ups",
    "method_code": "03",
    "carrier_title": "United Parcel Service",
    "method_title": "UPS Ground",
    "amount": 11.71,
    "base_amount": 11.71,
    "available": true,
    "error_message": "",
    "price_excl_tax": 11.71,
    "price_incl_tax": 11.71
}, {
    "udropship_vendor": "2",
    "udropship_default": "0",
    "vendor_id": "2",
    "carrier_code": "ups",
    "method_code": "02",
    "carrier_title": "United Parcel Service",
    "method_title": "UPS Second Day Air",
    "amount": 36.3,
    "base_amount": 36.3,
    "available": true,
    "error_message": "",
    "price_excl_tax": 36.3,
    "price_incl_tax": 36.3
}]

Save guest cart totals

Guest cart totals information save uses customized request.
In request we add shipping_method_all field which holds per vendor selection of shipping methods

Example:

POST /rest/default/V1/guest-carts/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/totals-information
{"addressinformation": {
    "address": {"countryid": "us", "region": "california", "regionid": "12", "postcode": "90210"},
    "shipping_method_code": "total",
    "shipping_carrier_code": "udsplit",
    "shipping_method_all": {
        "0": {
            "udropship_vendor": "0",
            "udropship_default": null,
            "vendor_id": null,
            "carrier_code": "udsplit",
            "method_code": "total",
            "carrier_title": "drop shipping (split)",
            "method_title": "total",
            "amount": 31.3,
            "base_amount": 31.3,
            "available": true,
            "error_message": "",
            "price_excl_tax": 31.3,
            "price_incl_tax": 31.3
        },
        "1": {
            "udropship_vendor": "1",
            "udropship_default": "0",
            "vendor_id": "1",
            "carrier_code": "fedex",
            "method_code": "fedex_2_day",
            "carrier_title": "federal express",
            "method_title": "2 day",
            "amount": 19.59,
            "base_amount": 19.59,
            "available": true,
            "error_message": "",
            "price_excl_tax": 19.59,
            "price_incl_tax": 19.59
        },
        "2": {
            "udropship_vendor": "2",
            "udropship_default": "1",
            "vendor_id": "2",
            "carrier_code": "ups",
            "method_code": "03",
            "carrier_title": "united parcel service",
            "method_title": "ups ground",
            "amount": 11.71,
            "base_amount": 11.71,
            "available": true,
            "error_message": "",
            "price_excl_tax": 11.71,
            "price_incl_tax": 11.71
        }
    }
}}

RESPONSE

{
    "grand_total": 133.19,
    "base_grand_total": 133.19,
    "subtotal": 101.89,
    "base_subtotal": 101.89,
    "discount_amount": 0,
    "base_discount_amount": 0,
    "subtotal_with_discount": 101.89,
    "base_subtotal_with_discount": 101.89,
    "shipping_amount": 31.3,
    "base_shipping_amount": 31.3,
    "shipping_discount_amount": 0,
    "base_shipping_discount_amount": 0,
    "tax_amount": 0,
    "base_tax_amount": 0,
    "weee_tax_applied_amount": null,
    "shipping_tax_amount": 0,
    "base_shipping_tax_amount": 0,
    "subtotal_incl_tax": 101.89,
    "base_subtotal_incl_tax": 101.89,
    "shipping_incl_tax": 31.3,
    "base_shipping_incl_tax": 31.3,
    "base_currency_code": "USD",
    "quote_currency_code": "USD",
    "items_qty": 2,
    "items": [{
        "item_id": 6,
        "price": 52.62,
        "base_price": 52.62,
        "qty": 1,
        "row_total": 52.62,
        "base_row_total": 52.62,
        "row_total_with_discount": 0,
        "tax_amount": 0,
        "base_tax_amount": 0,
        "tax_percent": 0,
        "discount_amount": 0,
        "base_discount_amount": 0,
        "discount_percent": 0,
        "price_incl_tax": 52.62,
        "base_price_incl_tax": 52.62,
        "row_total_incl_tax": 52.62,
        "base_row_total_incl_tax": 52.62,
        "options": "[{\"value\":\"vendor1\",\"label\":\"Vendor\"}]",
        "weee_tax_applied_amount": null,
        "weee_tax_applied": null,
        "name": "Overnight Duffle"
    }, {
        "item_id": 7,
        "price": 49.27,
        "base_price": 49.27,
        "qty": 1,
        "row_total": 49.27,
        "base_row_total": 49.27,
        "row_total_with_discount": 0,
        "tax_amount": 0,
        "base_tax_amount": 0,
        "tax_percent": 0,
        "discount_amount": 0,
        "base_discount_amount": 0,
        "discount_percent": 0,
        "price_incl_tax": 49.27,
        "base_price_incl_tax": 49.27,
        "row_total_incl_tax": 49.27,
        "base_row_total_incl_tax": 49.27,
        "options": "[{\"value\":\"vendor2\",\"label\":\"Vendor\"}]",
        "weee_tax_applied_amount": null,
        "weee_tax_applied": null,
        "name": "Push It Messenger Bag"
    }],
    "total_segments": [{"code": "subtotal", "title": "Subtotal", "value": 101.89}, {
        "code": "shipping",
        "title": "Shipping & Handling (Drop Shipping (Split) - Total)",
        "value": 31.3
    }, {
        "code": "tax",
        "title": "Tax",
        "value": 0,
        "extension_attributes": {"tax_grandtotal_details": []}
    }, {"code": "grand_total", "title": "Grand Total", "value": 133.19, "area": "footer"}]
}

Save guest cart shipping information

This request has a customized field shipping_method_all.

Example:

POST /rest/default/V1/guest-carts/f742mL2qWS9ksO9vyadhoLNJoA61A5GW/shipping-information
{
    "addressInformation": {
        "shipping_address": {
            "countryId": "US",
            "regionId": "12",
            "regionCode": "CA",
            "region": "California",
            "street": ["test"],
            "company": "",
            "telephone": "911",
            "postcode": "90210",
            "city": "Los Angeles",
            "firstname": "test",
            "lastname": "test"
        },
        "billing_address": {
            "countryId": "US",
            "regionId": "12",
            "regionCode": "CA",
            "region": "California",
            "street": ["test"],
            "company": "",
            "telephone": "911",
            "postcode": "90210",
            "city": "Los Angeles",
            "firstname": "test",
            "lastname": "test",
            "saveInAddressBook": null
        },
        "shipping_method_code": "total",
        "shipping_carrier_code": "udsplit",
        "shipping_method_all": {
            "0": {
                "udropship_vendor": "0",
                "udropship_default": null,
                "vendor_id": null,
                "carrier_code": "udsplit",
                "method_code": "total",
                "carrier_title": "Drop Shipping (Split)",
                "method_title": "Total",
                "amount": 31.3,
                "base_amount": 31.3,
                "available": true,
                "error_message": "",
                "price_excl_tax": 31.3,
                "price_incl_tax": 31.3
            },
            "1": {
                "udropship_vendor": "1",
                "udropship_default": "0",
                "vendor_id": "1",
                "carrier_code": "fedex",
                "method_code": "FEDEX_2_DAY",
                "carrier_title": "Federal Express",
                "method_title": "2 Day",
                "amount": 19.59,
                "base_amount": 19.59,
                "available": true,
                "error_message": "",
                "price_excl_tax": 19.59,
                "price_incl_tax": 19.59
            },
            "2": {
                "udropship_vendor": "2",
                "udropship_default": "1",
                "vendor_id": "2",
                "carrier_code": "ups",
                "method_code": "03",
                "carrier_title": "United Parcel Service",
                "method_title": "UPS Ground",
                "amount": 11.71,
                "base_amount": 11.71,
                "available": true,
                "error_message": "",
                "price_excl_tax": 11.71,
                "price_incl_tax": 11.71
            }
        }
    }
}

RESPONSE

{
    "payment_methods": [{"code": "checkmo", "title": "Check \/ Money order"}], "totals": {
        "grand_total": 133.19,
        "base_grand_total": 133.19,
        "subtotal": 101.89,
        "base_subtotal": 101.89,
        "discount_amount": 0,
        "base_discount_amount": 0,
        "subtotal_with_discount": 101.89,
        "base_subtotal_with_discount": 101.89,
        "shipping_amount": 31.3,
        "base_shipping_amount": 31.3,
        "shipping_discount_amount": 0,
        "base_shipping_discount_amount": 0,
        "tax_amount": 0,
        "base_tax_amount": 0,
        "weee_tax_applied_amount": null,
        "shipping_tax_amount": 0,
        "base_shipping_tax_amount": 0,
        "subtotal_incl_tax": 101.89,
        "base_subtotal_incl_tax": 101.89,
        "shipping_incl_tax": 31.3,
        "base_shipping_incl_tax": 31.3,
        "base_currency_code": "USD",
        "quote_currency_code": "USD",
        "items_qty": 2,
        "items": [{
            "item_id": 6,
            "price": 52.62,
            "base_price": 52.62,
            "qty": 1,
            "row_total": 52.62,
            "base_row_total": 52.62,
            "row_total_with_discount": 0,
            "tax_amount": 0,
            "base_tax_amount": 0,
            "tax_percent": 0,
            "discount_amount": 0,
            "base_discount_amount": 0,
            "discount_percent": 0,
            "price_incl_tax": 52.62,
            "base_price_incl_tax": 52.62,
            "row_total_incl_tax": 52.62,
            "base_row_total_incl_tax": 52.62,
            "options": "[{\"value\":\"vendor1\",\"label\":\"Vendor\"}]",
            "weee_tax_applied_amount": null,
            "weee_tax_applied": null,
            "name": "Overnight Duffle"
        }, {
            "item_id": 7,
            "price": 49.27,
            "base_price": 49.27,
            "qty": 1,
            "row_total": 49.27,
            "base_row_total": 49.27,
            "row_total_with_discount": 0,
            "tax_amount": 0,
            "base_tax_amount": 0,
            "tax_percent": 0,
            "discount_amount": 0,
            "base_discount_amount": 0,
            "discount_percent": 0,
            "price_incl_tax": 49.27,
            "base_price_incl_tax": 49.27,
            "row_total_incl_tax": 49.27,
            "base_row_total_incl_tax": 49.27,
            "options": "[{\"value\":\"vendor2\",\"label\":\"Vendor\"}]",
            "weee_tax_applied_amount": null,
            "weee_tax_applied": null,
            "name": "Push It Messenger Bag"
        }],
        "total_segments": [{"code": "subtotal", "title": "Subtotal", "value": 101.89}, {
            "code": "shipping",
            "title": "Shipping & Handling (Drop Shipping (Split) - Total)",
            "value": 31.3
        }, {
            "code": "tax",
            "title": "Tax",
            "value": 0,
            "extension_attributes": {"tax_grandtotal_details": []}
        }, {"code": "grand_total", "title": "Grand Total", "value": 133.19, "area": "footer"}]
    }
}

Logged in customers

Logged in customers checkout requests use the same approach just different endpoints and different original format.