#php #redirect #curl #paypal
#php #перенаправление #curl #paypal
Вопрос:
Позвольте мне объяснить, что я хочу сделать:
- Фиксируйте пользовательскую информацию в форме.
- Пользователь отправляет форму.
- Я собираю данные в БД.
- Я передаю идентификатор входа в PayPal (пользовательский var) и отправляю пользователя в PayPal.
- Пользователь вводит информацию о PayPal и отправляет платеж.
- PayPal отправляет мне IPN.
- Я обновляю статус записи в базе данных на оплаченный.
У меня все это работает, кроме шага 4. В php, где я собираю данные, я пытаюсь использовать curl для публикации на странице PayPal… но он не хочет перенаправлять при отправке данных.
Новичок в CURL, поэтому я уверен, что допустил ошибку в этой области.
Это то, что у меня есть с $ custom, просто установлено в случайную строку вместо идентификатора базы данных:
$url = "https://www.sandbox.paypal.com/cgi-bin/webscr";
//$url =
$cmd = "_s-xclick";
$custom = "id1234";
$b_id = "";
switch($_POST["streamer"]){
case "mrhyubusa":
$b_id = "BTS5M8QXSGR3G";
break;
default:
break;
}
//set POST variables
$fields = array(
'cmd' => urlencode($cmd),
'hosted_button_id' => urlencode($b_id),
'custom' => urlencode($custom)
);
//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'amp;'; }
rtrim($fields_string, 'amp;');
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_string);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
Заранее спасибо, ребята.
Ответ №1:
При использовании стандартных платежей, подобных вашему, вам не нужен CURL. Стандарт платежей работает только с базовыми HTML-формами. Все, что вам нужно сделать, это захватить фрагмент HTML, который PayPal предоставляет в вашем менеджере кнопок, и вставить его на свою страницу, где вы хотите, чтобы он отображался.
Вам нужно будет добавить пользовательский параметр, который работает с размещенными кнопками по состоянию на пару месяцев назад, когда я его тестировал (раньше он не работал с размещенными кнопками).
CURL пригодился бы, если бы вы выполняли вызовы API веб-службы. Опять же, с Payments Standard вам это не нужно.
Комментарии:
1. Я понимаю, что могу просто сделать кнопку, которая ведет прямо на страницу PayPal. Проблема, с которой я сталкиваюсь, заключается в том, что я помещаю всю информацию из моей формы в мою базу данных, а затем отправляю их на страницу, которую обычно использует кнопка PayPal. Вот почему я пытаюсь сделать это с помощью curl после вставки в DB. Возможно, я веду себя глупо, но это единственный способ, который я действительно видел, чтобы сделать это. я не хотел создавать вторую форму только для того, чтобы загрузить ее, а затем отправить. Я хотел сделать все это на серверной части, чтобы сделать процесс максимально простым для пользователя.
2. Думаю, я мог бы отправить свою форму с помощью Ajax, а затем, когда она завершится, отправить вторую скрытую форму, которая является кнопкой PayPal, вместо использования curl… Я сделаю это, если не существует лучшего решения.
3. Или просто используйте IPN для обработки всех ваших вставок данных.