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

Мое действие формы отправляет скрытые входные данные в 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() на моей странице? Не знаете, как это будет работать?


person Denoteone    schedule 10.03.2011    source источник
comment
Вместо действия вы можете использовать onClick() на кнопке «Отправить», которая вызывает метод для отправки электронной почты, а затем вызывает form.submit;   -  person Jeff Swensen    schedule 11.03.2011


Ответы (3)


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

<?
$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>
<?
}
?>
person amit_g    schedule 10.03.2011
comment
Спасибо, я использовал метод выше, и он служит моим целям. Данные не попадают в Paypal, но я думаю, что это связано с именами входов. Спасибо. - person Denoteone; 11.03.2011

<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' />

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

person Luca Filosofi    schedule 10.03.2011

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


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

person jcomeau_ictx    schedule 10.03.2011
comment
Да, но помимо onsubmit, использующего запрос ajax, а не сообщение, это путь. :) - person The Dag; 11.03.2011