InSales API - Способы доставки
Содержание
Получение списка
Запрос: GET /admin/delivery_variants.xml
Ответ:
HTTP/1.1 200 OK <?xml version="1.0" encoding="UTF-8"?> <objects type="array"> <object> <id type="integer">57802</id> <title>Курьером</title> <description>Супер быстрая доставка</description> <position type="integer">1</position> <created-at type="timestamp">2012-02-22 12:56:51 +0400</created-at> <updated-at type="timestamp">2012-05-17 11:55:07 +0400</updated-at> <delivery-locations type="array"> <delivery-location> <region>Респ Адыгея</region> <city>Майкоп</city> </delivery-location> <delivery-location> <region>Респ Адыгея</region> <city>Красногвардейский район</city> </delivery-location> </delivery-locations> <type>DeliveryVariant::PriceDepend</type> </object> <object> <id type="integer">57955</id> <title>Курьером</title> <description nil="true"/> <position type="integer">2</position> <created-at type="timestamp">2012-02-24 11:36:46 +0400</created-at> <updated-at type="timestamp">2012-02-24 11:38:26 +0400</updated-at> <delivery-locations type="array"/> <type>DeliveryVariant::Fixed</type> </object> </objects>
Получение информации о способе доставки
Запрос: GET /admin/delivery_variants/#{id}.xml
Ответ:
HTTP/1.1 200 OK <?xml version="1.0" encoding="UTF-8"?> <object> <id type="integer">57955</id> <title>Курьером</title> <description nil="true"/> <position type="integer">2</position> <created-at type="timestamp">2012-02-24 11:36:46 +0400</created-at> <updated-at type="timestamp">2012-02-24 11:38:26 +0400</updated-at> <delivery-locations type="array"/> <type>DeliveryVariant::Fixed</type> </object>
Добавление
Запрос: POST /admin/delivery_variants.xml
<?xml version="1.0" encoding="UTF-8"?> <delivery-variant> <title>Курьером</title> <description>Супер быстрая доставка</description> <delivery-locations-attributes type="array"> <delivery-location> <region>Респ Адыгея</region> <city>Майкоп</city> </delivery-location> <delivery-location> <region>Респ Адыгея</region> <city>Красногвардейский район</city> </delivery-location> </delivery-locations-attributes> <type>DeliveryVariant::PriceDepend</type> </delivery-variant>
- Если вы хотите, чтобы при создании способа доставки к нему автоматически были добавлены все способы оплаты, нужно добавить в запрос следующий тег:
<?xml version="1.0" encoding="UTF-8"?> <delivery-variant> ... <add-payment-gateways>true</add-payment-gateways> </delivery-variant>
Ответ:
HTTP/1.1 200 OK <?xml version="1.0" encoding="UTF-8"?> <object> <id type="integer">57802</id> <title>Курьером</title> <description>Супер быстрая доставка</description> <position type="integer">3</position> <created-at type="timestamp">2012-02-22 12:56:51 +0400</created-at> <updated-at type="timestamp">2012-05-17 11:55:07 +0400</updated-at> <delivery-locations type="array"> <delivery-location> <id type="integer">12136</id> <region>Респ Адыгея</region> <city>Майкоп</city> </delivery-location> <delivery-location> <id type="integer">12137</id> <region>Респ Адыгея</region> <city>Красногвардейский район</city> </delivery-location> </delivery-locations> <type>DeliveryVariant::PriceDepend</type> </object>
Удаление
Запрос: DELETE /admin/delivery_variants/#{id}.xml
Ответ:
HTTP/1.1 200 OK
Привязка способов оплаты
Для добавления и удаления способов оплаты, доступных для данного способа доставки, используется поле payment_delivery_variants_attributes
.
Расмотрим пример. Имеется способ доставки (RESTful адрес http://some.domain/admin/delivery_variants/134212.json
или .xml
):
{ "id": 134212, "title": "Оплата", "type": "DeliveryVariant::PriceDepend", "position": 9, "created_at": "2013-06-06T15:10:25+04:00", "updated_at": "2013-06-13T11:43:47+04:00", "description": "test", "delivery_locations": [], "payment_delivery_variants": [ { "created_at": "2013-06-13T11:43:47+04:00", "delivery_variant_id": 134212, "id": 257434, "payment_gateway_id": 32541 }, { "created_at": "2013-06-13T11:43:47+04:00", "delivery_variant_id": 134212, "id": 257433, "payment_gateway_id": 2958 } ] }
или в xml:
<?xml version="1.0" encoding="UTF-8"?> <price-depend> <created-at type="timestamp">2013-06-06 15:10:25 +0400</created-at> <id type="integer">134212</id> <position type="integer">9</position> <updated-at type="timestamp">2013-06-13 11:43:47 +0400</updated-at> <title>титл</title> <description>test desc</description> <payment-delivery-variants type="array"> <payment-delivery-variant> <created-at type="timestamp">2013-06-13 11:43:47 +0400</created-at> <delivery-variant-id type="integer">134212</delivery-variant-id> <id type="integer">257434</id> <payment-gateway-id type="integer">32541</payment-gateway-id> </payment-delivery-variant> <payment-delivery-variant> <created-at type="timestamp">2013-06-13 11:43:47 +0400</created-at> <delivery-variant-id type="integer">134212</delivery-variant-id> <id type="integer">257433</id> <payment-gateway-id type="integer">2958</payment-gateway-id> </payment-delivery-variant> </payment-delivery-variants> <delivery-locations type="array"/> <type>DeliveryVariant::PriceDepend</type> </price-depend>
Для удаления способа оплаты с id = 32541
нужно выполнить запрос PUT по адресу http://some.domain/admin/delivery_variants/134212.json
c данными:
{ delivery_variant: { payment_delivery_variants_attributes: [ { _destroy: true, id: 257434 } ] } }
или xml:
<?xml version="1.0"?> <delivery-variant> <payment-delivery-variants-attributes type="array"> <payment-delivery-variant> <_destroy type="boolean">true</_destroy> <id type="integer">257434</id> </payment-delivery-variant> </payment-delivery-variants-attributes> </delivery-variant>
Чтобы вновь добавить это способ доставки, и ещё один с id = 53
выполните запрос PUT по адресу http://some.domain/admin/delivery_variants/134212.json
:
{ delivery_variant: { payment_delivery_variants_attributes: [ { payment_gateway_id: 32541 }, { payment_gateway_id: 53 } ] } }
или xml:
<?xml version="1.0"?> <delivery-variant> <payment-delivery-variants-attributes type="array"> <payment-delivery-variant> <payment-gateway-id type="integer">32541</payment-gateway-id> </payment-delivery-variant> <payment-delivery-variant> <payment-gateway-id type="integer">53</payment-gateway-id> </payment-delivery-variant> </payment-delivery-variants-attributes> </delivery-variant>
Обратите внимание, что способы доставки добавляются по значению их id
(payment_gateway_id
), а удаляются по id
записи payment_delivery_variants
.