API ΡΠ»ΡΠΆΠ±Ρ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ Π‘ΠΠΠ Π΄Π»Ρ Yii2 ΒΆ
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ JSON-ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ Π‘ΠΠΠ Π²Π΅ΡΡΠΈΠΈ 1.5
Π§ΡΠΎΠ±Ρ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΈΡΠ»ΠΎ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ Π‘ΠΠΠ, Π·Π°ΠΏΡΠΎΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Ρ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ,
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½Π°ΡΡΡΠΎΠ΅Π½Ρ Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ΅ CdekApi ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅Ρ CachingClient
ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ° dicr/yii2-http.
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΒΆ
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ CdekApi Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ Π² ΠΊΠΎΠ½ΡΠΈΠ³Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
return [
'components' => [
'cdek' => [
'class' => dicr\cdek\CdekApi::class,
// Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ΅ΡΡΠΎΠ²ΡΠ΅ url, Π»ΠΎΠ³ΠΈΠ½ ΠΈ ΠΏΠ°ΡΠΎΠ»Ρ
'baseUrl' => dicr\cdek\CdekApi::URL_INTEGRATION_TEST,
'login' => dicr\cdek\CdekApi::LOGIN_TEST,
'password' => dicr\cdek\CdekApi::PASSWORD_TEST,
// ΠΊΠΎΠ½ΡΠΈΠ³ Π·Π°ΠΏΡΠΎΡΠ° ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
'calcRequestConfig' => [
// Π³ΠΎΡΠΎΠ΄ ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ Ρ Π½Π°Ρ Π²ΡΠ΅Π³Π΄Π° ΠΎΠ΄ΠΈΠ½, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΠΏΠΈΡΠ΅ΠΌ Π΅Π³ΠΎ Π² ΠΊΠΎΠ½ΡΠΈΠ³ ΠΏΠΎ-ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
'senderCityPostCode' => 614087, // ΠΠ΅ΡΠΌΡ
// Π·Π΄Π΅ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΡΠ°ΡΠΈΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ Π΄Π»Ρ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ (ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΠ½ Π² tariffId)
'tariffList' => [
['id' => dicr\cdek\CdekApi::TARIF_POST_S_S],
['id' => dicr\cdek\CdekApi::TARIF_POST_S_D],
['id' => dicr\cdek\CdekApi::TARIF_ECOPOST_S_D],
['id' => dicr\cdek\CdekApi::TARIF_ECOPOST_S_S]
],
]
]
]
];
ΠΠ°ΠΏΡΠΎΡΡ ΠΊ API ΒΆ
/** @var dicr\cdek\CdekApi $api */
$api = Yii::$app->get('cdek');
// Π·Π°ΠΏΡΠΎΡ ΡΠΏΠΈΡΠΊΠ° ΡΠ΅Π³ΠΈΠΎΠ½ΠΎΠ²
$regions = $api->regionRequest()->send();
// Π·Π°ΠΏΡΠΎΡ ΡΠΏΠΈΡΠΊΠ° Π³ΠΎΡΠΎΠ΄ΠΎΠ²
$cities = $api->cityRequest([
'countryCode' => 'ru'
])->send();
// Π·Π°ΠΏΡΠΎΡ ΡΠΏΠΈΡΠΊΠ° ΠΏΡΠ½ΠΊΡΠΎΠ² ΡΠ°ΠΌΠΎΠ²ΡΠ²ΠΎΠ·Π°
$pvz = $api->cityRequest([
'citypostcode' => 614087
])->send();
// ΡΠ°ΡΡΠ΅Ρ ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ (Π³ΠΎΡΠΎΠ΄ ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ ΠΈ ΡΠΏΠΈΡΠΎΠΊ ΡΠ°ΡΠΈΡΠΎΠ² Π·Π°Π΄Π°Π½Ρ Π² ΠΊΠΎΠ½ΡΠΈΠ³Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°)
$result = $api->calcRequest([
// Π³ΠΎΡΠΎΠ΄ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ΄ Π‘ΠΠΠ, Π»ΠΈΠ±ΠΎ ΠΈΠ½Π΄Π΅ΠΊΡ Π² `receiverCityPostCode`
'receiverCityId' => 44, // ΠΠΎΡΠΊΠ²Π°,
// ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° Π½Π°ΡΡΡΠΎΠ΅Π½Π½ΡΡ
ΡΠ°ΡΠΈΡΠΎΠ² Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΡΠ°ΡΠΈΡΡ Ρ Π΄ΠΎΡΡΠ°Π²ΠΊΠΎΠΉ ΠΎΡ ΡΠΊΠ»Π°Π΄Π° Π΄ΠΎ Π΄Π²Π΅ΡΠΈ
'modeId' => dicr\cdek\CdekApi::DELIVERY_SKLAD_DOOR,
// Ρ
Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΠΏΠΎΡΡΠ»ΠΎΠΊ (Ρ Π½Π°Ρ Π²ΡΠ΅Π³ΠΎ ΠΎΠ΄Π½Π°)
'goods' => [
['weight' => 0.24, 'volume' => 0.001]
]
])->send();
ΠΡΠΈΠΌΠ΅Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π² ΡΠ΅ΡΡΠ°Ρ
phpunits (ΠΏΠ°ΠΏΠΊΠ° tests).
ΠΠ΅ΡΠ°Π»ΡΠ½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ Π·Π°ΠΏΡΠΎΡΠ° - Π² Π±Π°Π·Π΅ Π·Π½Π°Π½ΠΈΠΉ Π‘ΠΠΠ.
If you have any questions, please ask in the forum instead.
Signup or Login in order to comment.