Самый простой способ подтвердить платеж через PayPal? - PullRequest
2 голосов
/ 08 марта 2010

Какой лучший способ просто получить отзыв от PayPal, чтобы подтвердить, что ваш клиент заплатил? Похоже, что ответ IPN - если так, мой следующий вопрос, могу ли я включить IPN только для определенных кнопок? Я не хочу, чтобы PayPal проверял мой прослушиватель IPN для покупок, которые не требуют какой-либо интеграции IPN.

Я все о Agile и YAGNI, и поэтому я не хочу делать ничего ненужного.

Ответы [ 2 ]

2 голосов
/ 13 марта 2010

Вы должны прочитать Документацию IPN , предоставленную PayPal. Чтобы использовать IPN, проще всего иметь идентификатор invoice для транзакции, которую вы хотите отслеживать. На странице прослушивателя IPN вы получите ipn_data, а одно из полей - invoice. Используя этот идентификатор, вы должны получить данные из собственной базы данных транзакций, а затем изменить статус, чтобы отразить статус платежа в PayPal.

В моем коде обычно я устанавливаю статус unpaid, указываю пользователю PayPal для выполнения платежа, а в прослушивателе IPN я устанавливаю статус paid.

PayPal предоставляет образец кода , чтобы вы могли начать прямо сейчас. Вы также можете увидеть другую документацию PayPal на этой странице .

1 голос
/ 15 января 2013

Вы можете легко включить, какой слушатель IPN использовать в параметрах кнопки.

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

Переменная формы PayPal имеет значение"notify_url".

Ниже приведен пример кнопки подписки, с той же переменной для всего остального.

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
    <input type="image" src="https://www.paypal.com/en_GB/i/btn/x-click-butcc-subscribe.gif"
            border="0" name="submit" alt="PayPal - The safer, easier way to pay online."
            onclick="_gaq.push(['_trackEvent', 'Click', 'PayPalMonthSub', 'SubscribePage']);" />
    <img alt="" border="0" src="https://www.paypal.com/en_GB/i/scr/pixel.gif" width="1"
            height="1" />
    <input type="hidden" name="cmd" value="_xclick-subscriptions" />
    <input type="hidden" name="business" value="paypal@yourdomain.com" />
    <input type="hidden" name="item_name" value=" Monthly Subscription" />
    <input type="hidden" name="item_number" value="1" />
    <input type="hidden" name="no_shipping" value="1" />
    <input type="hidden" name="no_note" value="1" />
    <input type="hidden" name="currency_code" value="GBP" />
    <input type="hidden" name="lc" value="GB" />
    <input type="hidden" name="bn" value="PP-SubscriptionsBF" />
    <input type="hidden" name="a3" value="4.99" />
    <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="sra" value="1" />
    <input type="hidden" name="return" value="http://yourdomain.com/subscribe/thanks.aspx" />
    <input type="hidden" name="rm" value="2" />
    <input type="hidden" name="cancel_return" value="http://yourdomain.com/subscribe" />
    <input type="hidden" name="notify_url" value="/http://yourdomain.com/IPN.aspx" />
</form>

Если вам нужен URL-адрес уведомления по умолчанию, установленный в вашей учетной записи, то вы сможете толькоостановите пинг вашего обработчика, добавив другой обработчик в кнопки, которые ему не нужны.Если PayPal не получает HTTP200 от обработчика, хотя он будет продолжать его пытаться, поэтому я бы не советовал устанавливать что-либо для несуществующего URI.

...