Сделать два запроса одним кликом
Здравствуйте у меня есть форма для платежа на opencart, который должна обрабатыватся на фронте, там много модули поставлении а в модуля форма сделано обфускация и в добавок платежная система не дает возможность сделать debug в php. Так вот чтобы обезопасить форму от ручного изменения я создал форму без полей
<form> <button type="submit" id="idram" style="cursor: pointer" class="btn btn-success" > Перейди по ссылке </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(); }); }); |
Цитата:
Цитата:
|
первый запрос для получение данный из базу( чтобы пользователь не смог руками поменять значение)
Цитата:
нажав на кнопку посетитель должна перейти по адресу второго запроса (это адрес платежного средства) |
Зачем синхронный? Это подвесить страницу.
Если запрос к чужому домену что-то и возвращает, а вот доступ к этим данным будет запрещен, если домен не дает на это добро, передачей соответствующих заголовков. |
а как отправит пользователя к страницу платежного система с пост формой,
платежного система ожидает <form method="post'> 5 input </form> |
Я не знаю о какой форме речь и для кого, вопрос был "почему второй запрос не работает", а чем выражается "не работа" так и осталось неизвестно.
|
второе форма должна отправить пользователя на страницу
url: 'https://web.paymen.am/payment.aspx', но не отправляет и по этому не работает |
$.ajax({url: 'https://web.paymen.am/payment.aspx' - ни синхронным, ни асинхронным методом пользователя на эту страницу не отравит, это запрос к этой странице методом POST с данными data: ....
|
У вас сайт к тому же небезопасный протокол использует, а вы хотите передать данные сайту с безопасным протоколом. Любой уважающий себя и своих клиентов сервис связанный с платежами не станет общаться по небезопасному протоколу.
|
получается логика не правильная а у вас есть идея как реализовать все это. Нужно одним нажати на кнопку сначала получить данный из моего базу потом отправит пользователя с заполнении данными по url
|
Вы лучше спросите поддержку этого сервиса, станут ли они принимать вообще такое? Лично я в этом сильно сомневаюсь. А вообще, для таких вещей существуют API, если ли у этого сервиса я не знаю, узнайте, и если есть, то используйте его, а не свои представления.
|
я изменил немножко логику теперь сделаю один запрос и хочу вернут результат функции но опят не получается
function idram() { 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'; console.log( totalres ); //так выводит //return totalres //так нет }) }; $(document).ready(function () { $(document).on('input', function () { let total = idram(); console.log(total); }); }); |
Цитата:
|
Часовой пояс GMT +3, время: 14:33. |