Мы запускаем веб-сайт электронной коммерции на Ruby on Rails, и для обработки кредитных карт мы используем подключаемый модуль ActiveMerchant для взаимодействия с нашей учетной записью PayPal Website Payments Pro с использованием наших учетных данных API.
В рамках процесса проверки мы сначала вызываем функцию авторизации для нашего объекта шлюза, а затем, после некоторых дополнительных проверок, выполняем часть захвата.
В последнее время мы столкнулись с ошибкой, из-за которой сумма резервируется дважды на счете клиента: одно списание — только авторизация, а второе — окончательная покупка. Таким образом, клиенту кажется, что мы выставляем ему счет дважды (один раз за авторизацию, один раз за окончательную покупку), в то время как на самом деле мы получаем деньги только один раз, а «второе списание» на его счет — это просто авторизация, которую мы не очищаем. по какой-то причине. (Похоже, это происходит, в частности, когда PayPal FMF отклоняет нашу транзакцию, и мы повторяем обработку.)
Я пытаюсь устранить эту проблему, создав учетные записи песочницы PayPal для покупателя и продавца. Я запускаю код построчно через консоль Rails и имитирую различные условия, чтобы попытаться воспроизвести ошибку. Однако мои успешные транзакции по кредитной карте отображаются только в моей учетной записи «продавец» / «торговец», а не в учетной записи «покупатель» в песочнице PayPal, поэтому я не могу видеть, как моя последовательность кода влияет на карту клиента. Этот пост, по-видимому, указывает на то, что это именно то, как обстоят дела, и что действительно невозможно проверить эффект на стороне кредитной карты покупателя. В этом сообщении предлагается использовать PayPal Express Checkout, но это не то, что нам нужно на нашем сайте, так как мы специально рассматриваем здесь транзакции по кредитным картам, которые интегрированы в наш сайт.
Как я могу проверить действие моего кода на кредитной карте клиента? Возможно, я что-то пропустил в PayPal или, может быть, в ActiveMerchant есть какой-то режим/журнал/монитор, который я могу использовать, чтобы увидеть это? Мне нужно найти строку кода, из-за которой мы дважды авторизуемся.