Я пишу форму для регистрации данных прочь на PayPal, и это хорошо работает, я создаю форму со скрытыми полями и затем имею кнопку отправки, которая отправляет все PayPal.
Однако, когда пользователь нажимает ту кнопку, существует больше, что я хочу сделать, например, изменить их состояние корзины в базе данных. Так, я хочу смочь выполнить некоторый код, когда они нажимают, отправляют и затем отправляют данные на PayPal.
Я не хочу использовать JavaScript для этого.
Мой метод в данный момент использует ЗАВИХРЕНИЕ, сообщения формы назад к текущей странице, я затем проверяю на $ _POST данные, делаю мои другие команды как обновление состояния корзины, и затем создаю вихревую команду и отправляю данные формы на PayPal. Теперь, это отправляется успешно, но браузер не уходит в PayPal.
Сначала я был просто retirieving результатом в строке и затем повторении его, и я видел, что сообщение было успешно, затем я установил CURLOPT_FOLLOWLOCATION на 1 предположение, что это позволит браузеру уйти в PayPal, но это не делает, что это, кажется, делает, захватить некоторый материал из PayPal и поместить его на моей странице.
Использование является ЗАВИХРЕНИЕМ правильная вещь для этого? и если так, как я обхожу эту проблему? Я хочу избегать JavaScript для этого как, только пользователи с JavaScript включили, обновят их корзину.
Код, который я использую для завихрения, ниже, post_data является массивом, который я создал, и затем считайте пары "ключ-значение" в post_string.
//Set cURL Options
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl_connection, CURLOPT_USERAGENT,
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, false);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl_connection, CURLOPT_MAXREDIRS, 20);
//Set Data to be Posted
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);
//Execute Request
curl_exec($curl_connection);
Возможно, попробуйте объединить CURL с оператором заголовка
<?php
header ("Location: https://www.paypal.com/");
Это может сработать в зависимости от того, нужно ли браузеру передавать информацию о состоянии (сеансе) в PayPal. Эта информация о сеансе собирается в вашем вызове CURL, но, к сожалению, нет способа передать ее браузеру. Так что если нужно поддерживать состояние, то это не сработает.
Curl работает на стороне сервера. Это не повлияет на ваш браузер. CURLOPT_FOLLOWLOCATION просто инструктирует CURL подчиняться, когда, например, PayPal отправляет ему заголовок, подобный упомянутому выше. Единственный способ указать браузеру что-то сделать - это ответить HTTP-заголовком, как указано выше, или каким-то метатегом в вашем HTML-ответе, например.
<META HTTP-EQUIV="refresh" CONTENT="10;URL=https://www.paypal.com/">
В качестве альтернативы, PayPal не предоставляет функцию перенаправления, которая после завершения транзакции будет перенаправлять обратно на ваш сервер. Если да, то просто измените статус карты во время этого обратного вызова и пропустите весь процесс curl?
После получения формы и выполнения необходимых действий вы должны представить другую форму только с кнопкой (все остальные данные в скрытых полях) для пользователь щелкнет и, наконец, отправится в PayPal.