Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Отправка на страницу оплаты после отправки данных заказ в БД (https://javascript.ru/forum/dom-window/65111-otpravka-na-stranicu-oplaty-posle-otpravki-dannykh-zakaz-v-bd.html)

Zzaj 27.09.2016 07:39

Отправка на страницу оплаты после отправки данных заказ в БД
 
Приветствую!

Пытаюсь сделать автоматическое перенаправление на страницу оплаты после подтверждения заказа и отправки данных в БД. Делаю так:
<form method="post" id="orderform" action="">
//данные пользователя для оформления заказа
</form>
<form method="POST" id="yaform" action="https://money.yandex.ru/quickpay/confirm.xml">
//данные для оплаты заказа
</form>
<input type="button" id="submiter" value="Подтвердить" onclick="submit_order();"> // кнопка отправки форм


<script>
    function submit_order(){
        var input = document.getElementById('phone').value;
        if (input.length){
                var submit_total = calc();
                if (submit_total == 0){
                    alert ('Спасибо, ваша заявка принята.');
                    $('#order').trigger ('click');                   
                if (submit_total !== 0){
                    if (confirm("Спасибо за заказ, сейчас вы будете переадресованы на страницу оплаты.")) {
                        $('#order').trigger ('click');
                        $('#yasubmit').trigger ('click');
                        }
                    else {
                        }
                }                    
        }
        else{
            alert ('Пожалуйста, укажите номер телефона.');
        }
    }
</script>


Если оставить какой то один триггер, то срабатывает нормально.
Но если 2 подряд, срабатывает только 2-й. Уже голову сломал. Может я вообще в корне не так пытаюсь реализовать?

laimas 27.09.2016 10:23

Вы к чему показываете часть кода форм, которые к коду отношения не имеют: id="orderform" и id="orderform", а в обработчике $('#order'), $('#yasubmit'). Это что попытка поочередной отправки форм с одной страницы или что? И почему форм две?

Zzaj 27.09.2016 12:13

Прошу прощения, что ввел в заблуждение. Вот правильный код:

<form method="post" action="">
//данные пользователя для оформления заказа
<input type="submit" id="order" name="order" value=""> //скрыто
</form>
<form method="POST" action="https://money.yandex.ru/quickpay/confirm.xml">
//данные для оплаты заказа
<input type="submit" id="yasubmit" value=""> //скрыто
</form>
<input type="button" id="submiter" value="" onclick="submit_order();"> // кнопка отправки форм


И да, это попытка отправки 2 форм с одной страницы. Сначала данные заказа в базу, следом редирект на страницу оплаты.

laimas 27.09.2016 12:35

Цитата:

Сообщение от Zzaj
И да, это попытка отправки 2 форм с одной страницы.

Нельзя отправить сразу две формы. Отправить можно сначала одну, обработать ее (а это переход по url), затем можно отправлять другую.
А значит двух форм обслуживающих одну задачу на странице быть не должно. Ну а по большому счету достаточно и одной формы.

warren buffet 27.09.2016 12:48

Цитата:

Сообщение от Zzaj
Сначала данные заказа в базу, следом редирект на страницу оплаты.

Не надо так делать, это вызывает раздражение. Форма оплаты должна загружаться аяксом на ту же самую страницу, но самая мякотка, это когда оформление заказа делается с любой страницы, то есть еще раз аяксом. Если яндекс раздает свое API, то скорее всего по XMLHttpRequest все будет работать, или надо у них почитать, как оно должно работать.

Zzaj 27.09.2016 12:50

Ну почему же одну задачу, когда их (задач) две? Сначала данные заказа улетают в базу, а потом идет обработка формы оплаты, в которой указана сумма с учетом доставки и, собственно, оплата.

Другого способа к сожалению придумать не смог и в сети не нашел. К тому же, на сколько я знаю, объеденить эти формы не получится, да и не надо.

warren buffet 27.09.2016 12:50

С редиректом туда же - в ответ кассы. То есть в БД следует заносить то, что оформлено. Яндекс должен ответить - по этому ответу заносите данные в свою базу. Иначе в БД будут ни разу не оплаченные заказы. Юзер просто закроет страницу оплаты, а ты уже посчитал его.

warren buffet 27.09.2016 12:52

Цитата:

Сообщение от Zzaj
Сначала данные заказа улетают в базу, а потом идет обработка формы оплаты

С какого перепуга? Ну открылась страница оплаты, юзер взял и закрыл ее, досвидос.

Все наоборот. Читай документацию на яндекс-кассу. Я на 146% уверен, они формируют ответ, который можно запрограммировать, то есть калбек.

warren buffet 27.09.2016 12:57

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

Заносить в бд юзера до оплаты - это тоже интересно посчитать сколько было ваннаби. )))

Кроме того карта не проканала, денег не хватило, выбранный канал оплаты кукует и вообще забыл прикупить еще пару вилок, надо вернуться, добить в заказ. Понял? Выписанная счет-фактура - это бумажка, а не деньги.

warren buffet 27.09.2016 13:01

А еще такой прикол может быть. Тебе пришло из банка смс с паролем, а у тебя труба села, батарейка разрядилась внезапно. Ку-ку.


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