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
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 }]
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"}] }
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 checkout requests use the same approach just different endpoints and different original format.