"}}}
Bezdepbonusu7Программирование: статьи и ответы

Вопрос

При отправке происходят две вещи

Автор вопроса: DenoteoneОтветов: 3

Мое действие формы отправляет скрытые входные данные в PayPal для оформления заказа. Мне также нужно, чтобы он отправил мне электронное письмо, прежде чем оно попадет в PayPal.

Но так как действие моей формы вызывает PayPal, я не могу запустить другую функцию. Я думал, что могу просто иметь action=self и делать то, что мне нужно на своей странице, а затем отправлять переменные nessesery post в PayPal. Я снимаю это ниже:

<?
if(isset($_POST['submit'])){
//get post data for me clean up and save then send

if(!mail(data, myemail, headers)){
//send data to paypal.
curl(https://www.paypal.com/cgi-bin/webscr);
}

}else{
?>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<!-- DATA FOR ME-->

<p>Child's Name: <? echo $child_name; ?></p>
    <input type="hidden" name="child_name" value="<? echo $child_name; ?>">

<p>Birth Date: <? echo $birth_date; ?></p>
    <input type="hidden" name="birth_date" value="<? echo $birth_date; ?>">

<p>Parent/Guardian Name: <? echo $name; ?></p>
    <input type="hidden" name="name" value="<? echo $name; ?>">

<p>Email Address: <? echo $email; ?></p>
    <input type="hidden" name="email" value="<? echo $email; ?>">

<p>Home Phone: <? echo $phone; ?></p>
    <input type="hidden" name="phone" value="<? echo $phone; ?>">


<!-- DATA FOR PAYPAL-->
<input type="hidden" name="business" value="[email protected]">
<input type="hidden" name="item_name" value="Item Name">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="amount" value="<?php echo $total; ?>">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="hosted_button_id" value="XXXXXXXXXX">
<input type="image" src="https://www.paypal.com/en_US/i/btn/btn_paynowCC_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
</form>

Должен ли я использовать curl для повторной отправки данных в PayPal после успешного выполнения функции mail() на моей странице? Не знаете, как это будет работать?

  • Вместо действия вы можете использовать onClick() на кнопке "Отправить", которая вызывает метод для отправки электронной почты, а затем вызывает form.submit; Jeff Swensen 11.03.2011

phphtmlpaypale-commercecurl

Ответы

Ответ 1 · рейтинг 1 · amit_g

Может быть так

<?
$url = "";

if(isset($_POST['submit'])){
//get post data for me clean up and save then send

    if(!mail(data, myemail, headers)){
        $url = "https://www.paypal.com/cgi-bin/webscr";
    }

}else{
?>
<form action="<? echo $url; ?>" method="post">

<!-- Same form as in the original post -->

</form>

<?
if ($url != "") {
?>
<script language="javascript">
document.forms[0].submit();
</script>
<?
}
?>

Ответ 2 · рейтинг 1 · Luca Filosofi

  • Введение в IPN
  • Переменные HTML для стандартных платежей через веб-сайт
<input type='hidden' name='notify_url' value='http://yoursite.com/post.php?action=ipn' />
<input type='hidden' name='cancel_return' value='http://yoursite.com/post.php?action=cancel' />
<input type='hidden' name='return' value='http://yoursite.com/post.php?action=return' />

лучше использовать класс вроде

Ответ 3 · jcomeau_ictx

Почему не только с javascript? Подпрограмма onsubmit может выполнить POST в сценарий CGI, который отправляет вам электронное письмо, а затем вернуть истинное значение, чтобы обычная отправка прошла через PayPal.


Если подумать, вам нужно использовать методологию AJAX, чтобы ваш браузер оставался на той же странице.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы