Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сделать два запроса одним кликом (https://javascript.ru/forum/misc/80604-sdelat-dva-zaprosa-odnim-klikom.html)

Hovik 28.06.2020 16:11

Сделать два запроса одним кликом
 
Здравствуйте у меня есть форма для платежа на opencart, который должна обрабатыватся на фронте, там много модули поставлении а в модуля форма сделано обфускация и в добавок платежная система не дает возможность сделать debug в php. Так вот чтобы обезопасить форму от ручного изменения я создал форму без полей
<form>
<button type="submit" id="idram" style="cursor: pointer" class="btn btn-success"  >
	 &nbsp; Перейди по ссылке 
   </button>
</form>

и поля этого формы должно добавляться в коде который сделает два запроса. Первый чтобы получить данный из базы второе отправит посетителя по ссылке.
Я сделал первый асинхронно а второй синхронно но второй не работает
function idram() {
	    $(document).ready(function() {
	        let quantity = $('td.quantity input').val();
	        let name = $('#customer_firstname').val();
	        let phone = $('#customer_telephone').val();
	        let email = $('#customer_email').val();
	        let zone_id = $('#shipping_address_zone_id').val();
	        let city = $('#shipping_address_city').val();
	        let addr = $('#shipping_address_address_1').val();
	        let country_id = $('#shipping_address_country_id').val();
	        let address_id = $('#shipping_address_current_address_id').val();
	        let shipping_method = $('#simplecheckout_shipping input:checked').val();
	        let payment = $('#simplecheckout_payment input:checked').val();

	        $.ajax({
	                url: 'http://mamapapa.am/index.php?route=checkout/simplecheckout&group=0',
	                type: 'POST',
	                dataType: 'html',
	                cache: false,
	                data: {
	                    'customer[firstname]': name,
	                    'customer[telephone]': phone,
	                    'customer[email]': email,
	                    'shipping_address[zone_id]': zone_id,
	                    'shipping_address[city]': city,
	                    'shipping_address[address_1]': addr,
	                    'shipping_address[country_id]': country_id,
	                    'shipping_address[postcode]': '',
	                    'shipping_address[current_address_id]': address_id,
	                    'shipping_method': shipping_method,
	                    'shipping_method_current': shipping_method,
	                    'shipping_method_checked': shipping_method,
	                    'payment_method': payment,
	                    'payment_method_current': payment,
	                    'payment_method_checked': payment,
	                    'comment': '',
	                    'quantity[189]': quantity,
	                    'remove': '',
	                    'next_step': 1,
	                    'simple_ajax': 1,
	                },
	            }).done(function(html) {
	                let amou = $(html).find('#total_total span.simplecheckout-cart-total-value').text();
	                let totalres = parseInt(amou) + '.00';
	                $.ajax({
	                    url: 'https://web.paymen.am/payment.aspx',
	                    type: 'POST',
	                    dataType: 'html',
	                    cache: false,
	                    async: false,
	                    data: {
	                        'EDP_LANGUAGE': 'AM',
	                        'EDP_REC_ACCOUNT': '1111111',
	                        'EDP_DESCRIPTION': 'Mmmmmm',
	                        'EDP_AMOUNT': totalres,
	                        'EDP_BILL_NO': 1,
	                    },
	                });
	            })
	            .fail(function() {
	                // console.log("error");
	            });
	    });
	};

	$(document).ready(function() {
	    $('#idram').click(function(e) {
	    	// e.preventDefault();
	        idram();
	    });
	});

laimas 28.06.2020 16:27

Цитата:

Сообщение от Hovik
второй синхронно

Зачем?

Цитата:

Сообщение от Hovik
второй не работает

Чем выражается?

Hovik 28.06.2020 17:24

первый запрос для получение данный из базу( чтобы пользователь не смог руками поменять значение)
Цитата:

Зачем?
второе чтобы перейти по форме
нажав на кнопку посетитель должна перейти по адресу второго запроса (это адрес платежного средства)

laimas 28.06.2020 17:33

Зачем синхронный? Это подвесить страницу.

Если запрос к чужому домену что-то и возвращает, а вот доступ к этим данным будет запрещен, если домен не дает на это добро, передачей соответствующих заголовков.

Hovik 28.06.2020 17:38

а как отправит пользователя к страницу платежного система с пост формой,
платежного система ожидает
<form method="post'>
5 input
</form>

laimas 28.06.2020 17:47

Я не знаю о какой форме речь и для кого, вопрос был "почему второй запрос не работает", а чем выражается "не работа" так и осталось неизвестно.

Hovik 28.06.2020 17:55

второе форма должна отправить пользователя на страницу
url: 'https://web.paymen.am/payment.aspx',

но не отправляет и по этому не работает

laimas 28.06.2020 18:12

$.ajax({url: \'https://web.paymen.am/payment.aspx\' - ни синхронным, ни асинхронным методом пользователя на эту страницу не отравит, это запрос к этой странице методом POST с данными data: ....

laimas 28.06.2020 18:28

У вас сайт к тому же небезопасный протокол использует, а вы хотите передать данные сайту с безопасным протоколом. Любой уважающий себя и своих клиентов сервис связанный с платежами не станет общаться по небезопасному протоколу.

Hovik 28.06.2020 18:37

получается логика не правильная а у вас есть идея как реализовать все это. Нужно одним нажати на кнопку сначала получить данный из моего базу потом отправит пользователя с заполнении данными по url


Часовой пояс GMT +3, время: 11:40.