====== 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 * /V1/carts/mine/estimate-shipping-methods * /V1/carts/mine/estimate-shipping-methods-by-address-id * /V1/guest-carts/:cartId/estimate-shipping-methods * /V1/guest-carts/:cartId/shipping-information * /V1/carts/mine/shipping-information * /V1/carts/:cartId/shipping-information * /V1/carts/:cartId/totals-information * /V1/guest-carts/:cartId/totals-information * /V1/carts/mine/totals-information ===== 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.