Если вы используете Express Checkout, самый простой способ сделать это - просто перенаправить пользователя на другую страницу с сообщением «перенаправление на paypal ...» после вашей проверки.
На этой странице у вас будет скрытая форма (вы можете создать ее с помощью Zend_Form или вручную, это не имеет особого значения), затем вы можете добавить некоторый javascript для отправки этой формы и также оставить кнопку «отправить»видимый, чтобы пользователь мог щелкнуть по нему, если устал ждать, пока javascript сделает это за него.
Или это может быть просто страница с благодарностью, например:
Спасибо за вашпорядок!Ваш номер заказа: 27335
[Нажмите здесь], чтобы завершить платеж.
После того, как платеж будет завершен, PayPal вернется к указанному вами IPN URL.Затем вы можете проверить это следующим образом:
$paypal_url = 'https://www.paypal.com/cgi-bin/webscr';
$client = new Zend_Http_Client($paypal_url);
$client->setMethod(Zend_Http_Client::POST);
$client->setParameterPost(array('cmd' => '_notify-validate')+$_POST);
$response = $client->request();
if ($response->getBody() !== 'VERIFIED') {
//Not verified
die("FAIL");
}
Этот кодекс просто гарантирует, что то, что вы получили от IPN, действительно исходит от PayPal.После этого вам также необходимо проверить переданные вам параметры в $ _POST (например, номер заказа, сумму, валюту и т. Д.).Вам также понадобится item_number, чтобы «связать» его с порядком #, который вы должны были добавить перед перенаправлением на PayPal.
Вы также можете проверить другие способы, делая заказ, который PayPal предлагает здесь https://cms.paypal.com/ca/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_api_WPGettingStarted
В качестве альтернативы, вы также можете попробовать решение PayPal NVP.