forked from AStepanov/spsr-shipment
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTariffMessage.php
149 lines (125 loc) · 4.95 KB
/
TariffMessage.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
<?php
namespace stp\spsr\message;
use stp\spsr\response\Tariff;
use SimpleXMLElement;
/**
* Запрос доступных тарифов
*
* @property string $ToCity Идентификаторы города получателя ID|Owner_ID
* @property string $FromCity Идентификаторы города отправителя ID|Owner_ID
* @property string $Weight Вес отправления, кг (граммы указываются через точку) – наибольшее значение между физическим и объемным весом
* @property int|null $Nature Характер груза, см. TariffMessage::TYPE_*
* @property string|null $Amount Оценочная стоимость, руб (Используется совместно с параметром AmountCheck)
* @property int|null $AmountCheck Значение Amount по страхованию объявления или тариф за объявленную стоимость. см. INSURANCE_*
* @property int|null $SMS CМС оповещение отправителя, 0 – нет, 1 – да
* @property int|null $SMS_Recv CМС оповещение получателя, 0 – нет, 1 – да
* @property int|null $PlatType Кто платит (по умолчанию отправитель) см. TariffMessage::PAY_BY_*
* @property int|null $DuesOrder Сбор по заявке, 0 – нет, 1 – да
* @property int|null $ByHand Доставка в руки, 0 – нет, 1 – да
* @property int|null $icd Индивидуальный контроль доставки, 0 – нет, 1 – да
* @property int|null $ToBeCalledFor Доп.услуга "До востребования", 0 – нет, 1 – да
* @property int|null $Weight35 Есть хотя бы одно место весом больше 35 кг, 0 – нет, 1 – да
* @property int|null $Weight80 Есть хотя бы одно место весом больше 35 кг, 0 – нет, 1 – да
* @property int|null $Weight200 Есть хотя бы одно место весом больше 35 кг, 0 – нет, 1 – да
* @property int|null $GabarythB Есть хотя бы одно место с габаритами (длина+ширина+высота) более 180 см, 0 – нет, 1 – да
* @property string|null $SID Идентификатор сессии
* @property string|null $ICN ИКН
*/
class TariffMessage extends BaseMessage
{
static $url = 'http://www.cpcr.ru/cgi-bin/postxml.pl';
/**
* Документы и печатная продукция
*/
const TYPE_DOC = 1;
/**
* Документы и печатная продукция
*/
const TYPE_DOC_15 = 15;
/**
* Товары народного потребления (без техники)
*/
const TYPE_FMCG = 2;
/**
* Товары народного потребления (без техники)
*/
const TYPE_FMCG_16 = 16;
/**
* Техника и электроника без ГСМ (единичное количество)
*/
const TYPE_ELECTRONICS = 17;
/**
* Драгоценности
*/
const TYPE_JEWELRY = 18;
/**
* Медикаменты и БАДы
*/
const TYPE_MEDICINES = 19;
/**
* Косметика и парфюмерия
*/
const TYPE_COSMETICS = 20;
/**
* продукты питания (партия)
*/
const TYPE_FOODSTUFFS = 21;
/**
* Техника и электроника c ГСМ (партия)
*/
const TYPE_ELECTRONICS_LOT = 22;
/**
* опасные грузы
*/
const TYPE_DANGEROUS_GOODS = 23;
/**
* товары народного потребления (без техники, партия)"
*/
const TYPE_FMCG_LOT = 24;
/**
* Страхование отправлений/грузов
*/
const INSURANCE_INS = 1;
/**
* Доставка отправлений с объявленной ценностью
*/
const INSURANCE_VAL = 0;
/**
* Платит отправитель
*/
const PAY_BY_SENDER = 1;
/**
* Платит получатель
*/
const PAY_BY_RECEIVER = 2;
public function isRequiredLogin()
{
return false;
}
/**
* Return tariff request url
* @return string
*/
public function getRequestUrl()
{
$url = self::$url . '?TARIFFCOMPUTE_2&';
if ($this->_dataRaw) {
$url .= http_build_query($this->_dataRaw);
}
return $url;
}
/**
* Create response object
*
* @param SimpleXMLElement $response
* @return Tariff[]
*/
public function buildResponse(SimpleXMLElement $response)
{
$result = [];
foreach($response->Tariff as $tariff) {
$result[] = new Tariff((array)$tariff);
}
return $result;
}
}