Как вывести список отделений новой почты на сайте используя API новой почты?

19.12.2019 | Андрей
Вывод списка отделений новой почты в интернет-магазине api новой почты

Не для кого не секрет, что Новая Почта лидер логистических улслуг в Украине. Это обусловленно несколькими факторами: охват населенных пунктов (на моммент написания данного посто количество отделений насчитывакт почти 6000), скорость доставки и api. С последним я познакомлю вас подробнее. Скажу сразу, это не официальная инструция "как использовать api новой почты" а лишь рабочий пример для ознакомления.

API новой почти насчитывает более 30 различных методов, с которыми мы можем работать. Детальнее о методах новой почты на этой страице. Задача следующая - вывести список всех отделений с адресами на страницу оформления заказ. Пробежав по всем методам было решено использовать AddressGeneral > getWarehouses, данный метод выводит массив всех отделений. Для нас более удобный способ работы с новой почтой это json, xml и js как-то не очень дружат.
Напишем тестовый POST запрос на сервер новой почты, чтобы понять, какие данные приходят в ответ и как с ними работать дальше.



	var data = {
		"modelName": "AddressGeneral",
		"calledMethod": "getWarehouses",
		"methodProperties": {
			 "Language": "UA"
		},
		"apiKey": "[_your_api_key_]" // Ваш api ключ 
    };
	$.ajax({
		url: 'https://api.novaposhta.ua/v2.0/json/',
		type: 'POST',
		dataType: 'JSON',
		data: JSON.stringify(data),
		success: function(response) {
		     console.log(response['data']);
		});

});


В примере выше, мы вывели список всех отделений. Данных очень много и нужно как-то обыграть этот момент. Например: делать запрос несколько раз в месяц а все результаты хранить в бд.



$('#shipping-method input').change(function(){
	if($(this).val() == 'cs.cs_1'){
		
		var data = {
		"modelName": "AddressGeneral",
		"calledMethod": "getWarehouses",
		"methodProperties": {
			 "Language": "UA"
		},
		"apiKey": "[_your_api_key_]"
};
		$.ajax({
			url: 'https://api.novaposhta.ua/v2.0/json/',
			type: 'POST',
			dataType: 'JSON',
			data: JSON.stringify(data),
			success: function(response) {
				var addresses = response['data'];
				// console.log(response['data']);
				$.each(addresses, function( key, value ) {
				var app = '';
				$('select[name=\"newpost\"]').append(app);
				});
				$('.js-example-basic-single').select2();
				
			},
			
			error: function(xhr, ajaxOptions, thrownError) {
				alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
			}
			
		});
		$('.newpostmethod').slideDown(200);
	}else{
		$('.newpostmethod').slideUp(200);
	}
	
});


Бажаєте дізнатись скількі коштує Ваш проєкт?

Заповніть заявку

Категорії

Те, що читають:

Name post

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco

Name post

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco