Название:
«Authorize.net Accept Hosted — ошибка токена отсутствует или недействителен при перенаправлении на страницу оплаты»
Тело:
Всем привет.
Я следую руководству Authorize.net по Accept Hosted и использую C# SDK. Я также ссылался на этот пример GitHub C# для «Получить страницу приема платежей», чтобы создать токен размещенной платежной страницы.
Текущая реализация:
- Бэкенд:
- Я использую C# для создания размещенный платежный токен, следуя примеру в GetAnAcceptPaymentPage.cs.
- API успешно генерирует токен без каких-либо ошибок.
- Если я намеренно передаю неверные значения, запрос токена ошибки выдаются ожидаемым образом, поэтому я знаю, что моя реализация C# правильна.
- Frontend (Angular Приложение):
- Как только я получаю токен от серверной части, я создаю URL-адрес:
Код: Выделить всё
https://accept.authorize.net/payment/token/{generatedToken} - Затем я перенаправляю пользователя на этот URL-адрес:
Код: Выделить всё
window.location.href = `https://accept.authorize.net/payment/token/${generatedToken}`; - Я тестирую это локально в браузере (пока даже не на мобильном устройстве).
- Как только я получаю токен от серверной части, я создаю URL-адрес:
Когда происходит перенаправление, я получаю на странице размещенного платежа появляется следующая ошибка:
"Отсутствует или недействителен Токен"
Токен генерируется непосредственно перед перенаправлением, поэтому я не думаю, что время его ожидания истекло. Если я передаю недопустимые данные во время генерации токена, код C# выдает ошибку, которая подтверждает, что токен действителен при создании.
Что я проверил:
- Панель управления Authorize.net: После возникновения этой проблемы я не вижу каких-либо соответствующих ошибок или журналов в интерфейсе продавца.< /li>
Размещенный платеж Настройки:
Вот как я настроил параметры размещенной оплаты:Моя реализация проста: я показываю только платежи по кредитным картам, без вариантов банковского счета.Код: Выделить всё
settings[2] = new settingType(); settings[2].settingName = settingNameEnum.hostedPaymentPaymentOptions.ToString(); settings[2].settingValue = "{\"cardCodeRequired\": false, \"showCreditCard\": true, \"showBankAccount\": false}";
Мы выбрали Accept Hosted как более простое решение, позволяющее избежать прямой обработки конфиденциальных данных карты и сократить объем PCI. Наше приложение работает и как веб-приложение, и как мобильное приложение, поэтому перед полным мобильным тестированием мы тестируем потоки на основе браузера. Мы еще не приступили к встраиванию формы, так как в первую очередь мы сосредоточены на том, чтобы заставить работать перенаправление.
Что я пробовал:
- Тестирование перенаправления токена в нескольких браузерах.
- Проверка среды API (против PRODUCTION).
Код: Выделить всё
SANDBOX - Дважды проверили учетные данные (идентификатор входа в API, ключ транзакции).
- Запись каждые ответ от серверной части для подтверждения значения токена.
Да кто-нибудь знает, почему я могу получить сообщение "Отсутствует или Ошибка «Неверный токен», несмотря на соблюдение документации? Мне не хватает какой-либо конфигурации в настройках размещенных платежей или существует известная проблема с таким перенаправлением?
Будем очень признательны за любые рекомендации и предложения!
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/793 ... recting-to
Мобильная версия