====== 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.