Процесс PayPal API

1

Я прочитал и прочитал ссылки и документацию о API PayPal, но, честно говоря, я довольно смущен тем, что мне нужно делать.

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

Пока процесс работает отлично в одном направлении. Я использую этот код, чтобы заставить пользователей производить платежи:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="[email protected]">
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="item_name" value="Gift Certificate">
<input type="hidden" name="item_number" value="RI001CI3481">
<input type="hidden" name="amount" value="313">
<input type="hidden" name="return" value="http://mywebsite.com/paypal/thankyou">
<input type="submit" value="PayPal">
</form>

После того, как пользователь завершит транзакцию, они будут возвращены на мою страницу "возврат".

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

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

Спасибо, Мэнни

Теги:
paypal

3 ответа

1
Лучший ответ

То, что вы показываете здесь, не использует API. Стандарт PayPal - это просто базовый метод HTML-формы для настройки платежей с помощью PayPal. Похоже, эта часть уже работает для вас, как вам нужно, так что хорошо.

Чтобы обновить базу данных, вы хотите использовать Мгновенное уведомление об оплате (IPN). Он по-прежнему не является технически API, но это служба push, которая будет передавать данные транзакции POST о любой транзакции, которая попадает на вашу учетную запись PayPal, в сценарий слушателя, который вы настроили на своем сервере.

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

Есть несколько хороших шаблонов IPN, доступных для PHP на GitHub/Packagist. PayPal также предоставляет очень простой стартовый шаблон для IPN.

  • 0
    Спасибо! Что я не упомянул (потому что я идиот), так это то, что я делаю это в приложении Wordpress. Использование некоторой информации, которую вы представили, позволило мне сделать IPN через плагин WP. Сейчас работает именно так, как я хотел. Спасибо!
  • 0
    Хотел бы я знать это. Я мог бы указать вам на мой бесплатный плагин PayPal IPN для WordPress и, возможно, сэкономить вам немало времени. Вы все еще можете взглянуть на это в зависимости от того, насколько далеко вы занимаетесь разработкой собственного плагина. Он имеет множество хуков, которые позволяют быстро и легко запускать собственные функции в зависимости от типа транзакции IPN или статуса платежа.
1

Хотя общий охват еще не на том же уровне IPN, у PayPal также есть Webhooks: https://developer.paypal.com/docs/integration/direct/rest-webhooks-overview/ Webhooks - гораздо более современная форма чем IPN, и поддерживается в SDK REST, надеюсь, это поможет.

1

Я считаю, что IPN - это один ответ, но он подвержен проблемам и может выйти из строя, если на серверах или серверах PayPal возникают проблемы. Многие люди, использующие IPN, имеют только один сервер и выполняют техническое обслуживание поздно ночью, и IPN может попытаться получить уведомление, но не работает, потому что сервер не работает для обслуживания. IPN просто терпит неудачу. Лучшей альтернативой является использование API, такого как Express Checkout, где вы настраиваете внешний вид страницы, задаете детали txn и т.д. С помощью SetExpressCheckout и отправляете клиента на страницу PayPal, чтобы проверить, а затем они возвращаются на ваш сайт. На этом этапе вы запустите DoExpressCheckoutPayment, чтобы завершить транзакцию, а затем, когда ваш ответ содержит "ACK = Success", вы можете вызвать GetExpressCheckoutDetails, чтобы получить больше деталей, чем вы видели с IPN, и не волноваться, если вы не получили ответ от PayPal как с IPN. У вас будет запрос/ответ, как с любым вызовом API, и вы можете регистрировать свои ответы, чтобы иметь возможность увидеть, когда что-то пойдет не так, а также получить информацию о транзакции. Часто кажется, что люди, объясняющие EC и даже документы PayPal, показывают, что они вызываются setEC, затем getEc, затем doEC, но я обычно звоню в set, do, а затем получаю, как только txn будет успешным. Я уверен, что есть сценарии, когда кому-то нужно/нужно позвонить в set, get, do, но для IPN нам остается только заботиться, как только txn будет успешным. ТАКЖЕ, IPN не будет отправлять, если не существует txn. Вы можете настроить свой код для ситуаций, когда вы получаете ошибку и действуете соответственно, например, когда вы получаете сообщение об ошибке для отклоненной карты или аналогичной. Вы можете зарегистрировать ошибку, отправить электронную почту /SMS, войти в таблицу DB и т.д.

Вот документация для интеграции Express Checkout: https://developer.paypal.com/docs/classic/products/express-checkout/ Тонны ссылок здесь, поскольку EC можно использовать для заказа /auth/capture или простых продаж или подписки, и т.п.

Ниже приведен список параметров SetExpressCheckout: https://developer.paypal.com/docs/classic/api/merchant/SetExpressCheckout_API_Operation_NVP/

Ниже приведен список параметров для DoExpressCheckoutPayment: https://developer.paypal.com/docs/classic/api/merchant/DoExpressCheckoutPayment_API_Operation_NVP/

Ниже приведен список параметров для GetExpressCheckoutDetails: https://developer.paypal.com/docs/classic/api/merchant/GetExpressCheckoutDetails_API_Operation_NVP/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню