Интеграция с кассой PayPal

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

Я интегрирую оплату PayPal, следуя инструкциям здесь: https://developer.paypal.com/docs/checkout/standard/integrate/

Я хочу собрать идентификатор транзакции PayPal в моей базе данных, отправить электронные письма с подтверждением заказа и т. д., поэтому мне нужно реализовать необязательный шаг 5, описанный в этом руководстве по интеграции, что по существу означает создание двух маршрутов на моем сервере, один для вызова "создать заказ" и один для вызова "захвата заказа" - в соответствии с примером кода здесь: https://developer.paypal.com/demo/checkout/#/шаблон/сервер

У меня это работает успешно, однако я хочу знать 2 вещи:

  1. Как я могу увидеть поток 3D Secure - PayPal говорит мне, что я должен беспокоиться об этом, поскольку они обрабатывают его во всплывающем окне, но я хотел бы увидеть поток. Я пробовал тестовые карты, которые должны вызывать поток 3DS, но они не показывают никакого потока 3DS, просто завершайте платеж.

  2. Ответ на конечную точку заказа захвата может возвращать несколько статусов (ЗАВЕРШЕНО, УТВЕРЖДЕНО, аннулировано, PAYER_ACTION_REQUIRED и т. д.). Только ли статус "ЗАВЕРШЕН" означает полностью выполненный платеж (и, следовательно, я должен завершить заказ)? Что произойдет, если он вернет «PAYER_ACTION_REQUIRED» — что означает необходимость проверки 3DS — обработает ли PayPal это, а затем повторно выполнит мой маршрут?

Любая помощь или совет будут очень признательны.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
55
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для обычной, «стандартной» интеграции вам не нужно тестировать 3DS. Страница/iframe PayPal уже позаботится обо всем.

[Только для «Расширенной» интеграции — когда вы реализуете отдельные поля размещенных карточек с собственным стилем — вам нужно внедрять и тестировать 3DS самостоятельно]


PAYER_ACTION_REQUIRED происходит только в расширенном режиме. Все, что вам нужно сделать на сервере после захвата, — это проверить ЗАВЕРШЕННОСТЬ и наличие идентификатора захвата, который вы собираетесь сохранить для целей учета.

Привет @Preston, спасибо за ваш ответ. Я знаю, что стандартная интеграция имеет дело с самой 3DS, но мы хотели бы на самом деле увидеть поток, и, похоже, нет никакого способа вызвать этот поток в песочнице, PayPal даже прислал мне список номеров карт, но ни один из них не работает, когда используя их в демоверсии: developer.paypal.com/demo/checkout/#/шаблон/сервер

Dave 18.03.2022 10:37

Нет необходимости тестировать его в песочнице, так как он уже реализован и не имеет ничего общего с тем, что вы будете интегрировать. Вы можете использовать карту с поддержкой 3DS в производстве, если вам так интересно ее увидеть.

Preston PHX 18.03.2022 11:23

Привет @Preston, спасибо за всю вашу помощь. Последний вопрос - это для французского сайта, и когда открывается окно для входа пользователя, оно на английском языке (хотя я перехожу на французский язык после того, как я вхожу в систему как пользователь своей французской песочницы). Я попытался добавить locale=fr_FR (как указано здесь: developer.paypal.com/sdk/js/configuration/#locale) в тег сценария JS, как указано в документах, но это ничего не изменило. Вы знаете, как заставить язык в этой начальной загрузке окна входа в систему?

Dave 18.03.2022 16:37

locale=fr_FR изменит только язык кнопок на вашем сайте (в противном случае определяется язык браузера пользователя). Язык страницы оформления заказа PayPal.com по умолчанию определяется браузером, файлами cookie или входом в систему, а не какой-либо локалью, которую вы могли передать (это касается только кнопок на вашем сайте).

Preston PHX 18.03.2022 19:10

Другие вопросы по теме