Как убедиться, что PayPal notify_url вызывается с сервера PayPal? - PullRequest
0 голосов
/ 11 мая 2019

Я работал с формой подписки на регулярные платежи PayPal и использовал тестовую учетную запись для тестирования

вот моя форма:

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post">
    <input type="hidden" name="cmd" value="_xclick-subscriptions">
    <input type="hidden" name="business" value="testacc@email.com">
    <input type="hidden" name="lc" value="US">
    <input type="hidden" name="item_name" value="Standard Pack">
    <input type="hidden" id="item_number" name="item_number" value="1233434-23213">
    <input type="hidden" name="no_note" value="1">
    <input type="hidden" name="user_id" value="13692">
    <input type="hidden" id="package_id" name="package_id" value="<?php echo $package_type; ?>">
    <input type="hidden" name="a1" value="0">
    <input type="hidden" name="p1" value="1">
    <input type="hidden" id="t1" name="t1" value="M">
    <input type="hidden" id="a3" name="a3" value="10">
    <input type="hidden" name="p3" value="1">
    <input type="hidden" name="t3" value="M">
    <input type="hidden" name="src" value="1">
    <input type="hidden" name="currency_code" value="USD">
    <input type="hidden" name="no_shipping" value="1">
    <input name="return" type="hidden" value="<?php echo base_url();?>package/new_payment_success" />
    <input name="notify_url" type="hidden" value="<?php echo base_url();?>package/new_payment_notify" /> 
    <input name="cancel_return" type="hidden" value="<?php echo base_url();?>package/new_payment_cancel" />

    <div class="paypal-btn">
        <input type="image" src="pay-with-paypal.png" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!" style='width: 125px'>
    </div>
    <img alt="" border="0" src="https://www.paypal.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>

, он работает совершенно нормально и отправляет информацию об успехе на notify_url URL теперь в целях безопасности я проверяю переменную HTTP_USER_AGENT из $_SERVER, но это тоже можно изменить.

так, как я могу убедиться, что разделение успешно выполнено, прежде чем я обновлю свою базу данных?

1 Ответ

0 голосов
/ 11 мая 2019

Я думаю, что вы можете проверить весь контент POST, добавив cmd = _notify-validate и отправив его в PayPal.Они ответят вам проверенным или не подтвержденным ответом.

Пожалуйста, проверьте ссылку ниже для получения дополнительной информации:

https://developer.paypal.com/docs/classic/ipn/gs_IPN/

...