Подтвердить что ты не робот

Почему для Paypal требуется DoExpressCheckoutPayment?

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

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

Затем я попробовал Express Checkout с помощью инструкций здесь. В основном это работало, но, как я понимаю, после отправки SetExpressCheckout вы должны прослушивать запрос от PayPal и делать DoExpressCheckoutPayment для завершения транзакции. ссылка SO.

Я считаю, что это немного хлопотно, потому что, если мой сервер не получит запрос от PayPal, и я никогда не отправляю DoExpressCheckoutPayment? Поэтому клиент ДУМАЕТ, что они закончили подавать заказ, но заказ так и не был получен.

Кто-нибудь знает, как пропустить этот шаг подтверждения? Я считаю это ненужным и не уверен, почему его требует PayPal.

4b9b3361

Ответ 1

Это потому, что Express Checkout и Website Payments Standard являются принципиально разными продуктами.

Чтобы использовать Express Checkout, вы должны вызвать API SetExpressCheckout. В вызове API вы указываете детали продуктов, сумм и RETURNURL.
Как только вы разместите эти данные в конечной точке API PayPal, вы получите в ответ токен. Затем вы перенаправите покупателя и добавите токен по следующему URL-адресу: https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-XXXXXXX

Как только покупатель согласится на вашу покупку, он перенаправляется обратно на URL-адрес, указанный вами в RETURNURL.
Теперь вы должны подтвердить подтверждение заказа и вызвать API GetExpressCheckoutDetails **.
При вызове GetExpressCheckoutDetails поставьте токен. В ответе API GetExpressCheckoutDetails вы найдете идентификатор PayerID.

Теперь вы можете позвонить в DoExpressCheckoutPayment и зарядить покупателя. Не забывайте включать токен и идентификатор плательщика при вызове DoExpressCheckoutPayment.

Примечание.. Если вы хотите сразу же зарядить покупателя, немедленно позвонив GetExpressCheckoutDetails и DoExpressCheckoutPayment, перенаправите покупателя на https://www.paypal.com/cgi-bin/webscr?cmd=_express-checkout&token=EC-XXXXXXX&useraction=commit. useraction=commit изменит кнопку "Продолжить" на странице PayPal "Просмотрите платеж" на кнопку "Оплатить сейчас".

-

Причина такой существенной разницы между Express Checkout и стандартом оплаты веб-сайтов заключается в том, что Стандарт платежей по веб-сайтам предназначен для того, чтобы быть рабочим решением, которое PayPal обрабатывает весь поток транзакций. Express Checkout - это более гибкое решение, которое позволяет вам глубоко интегрировать его с существующим потоком проверок веб-сайта/корзины покупок.

Для вашего случая использования; lookat с помощью кнопок загрузки PayPal. См. Пример https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_html_cart_upload

<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="upload" value="1">
<input type="hidden" name="business" value="[email protected]">
<input type="hidden" name="item_name_1" value="Item Name 1">
<input type="hidden" name="amount_1" value="1.00">
<input type="hidden" name="item_name_2" value="Item Name 2">
<input type="hidden" name="amount_2" value="2.00">
<input type="submit" value="PayPal">
</form> 

Обратите внимание, что это по умолчанию небезопасно, так как суммы, которые вы собираетесь взимать, будут явно видны в HTML.

** Плательщик добавляется в GET вашего RETURNURL. Поэтому вы можете пропустить вызов GetExpressCheckoutDetails, если хотите.

Ответ 2

Для целей этого сайта операция DoExpressCheckoutPayment просто требуется API-интерфейсом PayPal Express Checkout.

Вы правы, что PayPal не требуется для обработки платежа, но есть сценарии, которые потребуют второй операции. Примером такого сценария может служить пример, когда пользователь (клиент вашего сайта) выбирает адрес доставки во время подтверждения платежа PayPal. В зависимости от вашего поставщика (ов) доставки вам может потребоваться рассчитать фактические суммы доставки после того, как пользователь выбрал адрес доставки на страницах подтверждения PayPal.