VibeFox Authorize.Net for PrestaShop — Помощь
Требования
PrestaShop: от 8.0 до 9.x.
PHP: 8.0 или новее. Модуль не устанавливается на более старых версиях PHP.
HTTPS: оформление заказа должно работать по HTTPS. Accept.js не работает на страницах с обычным HTTP.
Учётная запись Authorize.Net: нужны API Login ID, Transaction Key и Public Client Key вашей учётной записи Authorize.Net, а также Signature Key, если вы используете вебхуки. Рабочая (account.authorize.net) и тестовая (sandbox.authorize.net) учётные записи имеют разные учётные данные. Учётные записи Authorize.Net доступны мерчантам в США, Канаде, Великобритании, Европе, Австралии и Новой Зеландии.
Валюта: валюта магазина должна быть USD, CAD, CHF, DKK, EUR, GBP, NOK, PLN, SEK, AUD или NZD, а ваша учётная запись Authorize.Net должна проводить расчёты в этой валюте. Для других валют способ оплаты скрывается при оформлении заказа.
Лицензионный ключ VibeFox: покупается на vibefox.net. Один ключ работает на одном домене.
Установка
1. В панели администрирования откройте Modules > Module Manager и нажмите Upload a module. Выберите ZIP-файл модуля.
2. По завершении загрузки нажмите Configure или позже найдите VibeFox Authorize.Net Gateway в списке модулей и нажмите Configure.
3. Введите лицензионный ключ VibeFox в поле License key в блоке лицензии вверху страницы Configure и нажмите Activate (см. Лицензионный ключ).
4. Введите учётные данные тестовой и рабочей учётных записей (см. Настройка). При желании настройте вебхук.
5. Включите Enable/Disable, выберите Transaction type и нажмите Save. Проверьте оплату в тестовом режиме картой 4111 1111 1111 1111, любым будущим сроком действия и любым CVV, затем выключите Sandbox mode.
При установке модуль создаёт два статуса заказа: Authorize.Net payment authorized и Authorize.Net payment on hold. PrestaShop добавляет новый платёжный модуль для всех валют, стран и групп клиентов. Ограничить их можно в Payment > Preferences.
Настройка
Все настройки находятся на странице модуля: Modules > Module Manager > VibeFox Authorize.Net Gateway > Configure. У каждого раздела своя кнопка Save, которая сохраняет всю страницу. Над полями страница предупреждает, если SSL не включён для магазина (Accept.js работает только на HTTPS-страницах), если валюта магазина по умолчанию не поддерживается Authorize.Net, если в текущем режиме нет API Login ID, Transaction Key или Public Client Key (тогда способ оплаты скрывается при оформлении заказа) и если в текущем режиме нет Signature Key (тогда вебхуки отключены). Пока включён тестовый режим, страница показывает Sandbox mode is on: test transactions, no real charges.
Authorize.Net
Enable/Disable: Enable Authorize.Net включает или выключает способ оплаты. По умолчанию: выключено.
Title: название способа оплаты, которое видят покупатели при оформлении заказа. Оно же сохраняется в заказе как название способа оплаты. По умолчанию: Credit Card. Обязательное поле.
Description: текст под способом оплаты при оформлении заказа. По умолчанию: Pay securely with your credit card via Authorize.Net.
Учётные данные API
В Authorize.Net Merchant Interface откройте Account > Settings > Security Settings. В разделе API Credentials & Keys скопируйте API Login ID и создайте Transaction Key и Signature Key. В разделе Manage Public Client Key скопируйте Public Client Key. Тестовая и рабочая среды используют разные учётные данные. Страница показывает поля обоих режимов, так что можно сохранить оба набора.
Sandbox mode: использует тестовую среду Authorize.Net (тестовые транзакции, без реальных списаний). Переключаются адрес API, Accept.js и набор учётных данных для новых платежей. По умолчанию: включено. Выключите, чтобы принимать реальные платежи. Пока режим включён, покупатели видят под способом оплаты подсказку с тестовой картой 4111 1111 1111 1111.
Sandbox API Login ID и Live API Login ID: API Login ID тестовой или рабочей учётной записи.
Sandbox Transaction Key и Live Transaction Key: Transaction Key этой учётной записи.
Sandbox Public Client Key и Live Public Client Key: публичный ключ, который Accept.js использует в браузере.
Sandbox Signature Key и Live Signature Key: нужны только для вебхуков. Ключ проверяет заголовок X-ANET-Signature каждого уведомления.
Сохранённые Transaction Key и Signature Key больше не показываются. Поле остаётся пустым и показывает Saved — leave empty to keep it. Вводите новое значение, только если хотите его изменить.
Clear saved secrets: отметьте ключ и нажмите Save, чтобы удалить его. Пустое поле сохраняет сохранённое значение.
Оплата
Transaction type: как списываются деньги с карты. Авторизация истекает через 30 дней.
Вебхуки (рекомендуется)
Без вебхуков заказы, задержанные Fraud Detection Suite, или списанные либо отменённые в панели Authorize.Net, нужно обновлять вручную. В Merchant Interface откройте Account > Settings > Business Settings > Webhooks и нажмите Add Endpoint — и в тестовой, и в рабочей учётной записи. Используйте URL, показанный в Endpoint URL в этом разделе. С понятными URL он выглядит так: https://your-shop/module/wcp_authorizenet_gateway/webhook, возможно с кодом языка, например /en/. Скопируйте URL точно так, как он показан в настройках. Выберите эти события (они также перечислены в этом разделе):
Введите Signature Key каждой учётной записи в поле Sandbox Signature Key или Live Signature Key. Вебхуки без действительной подписи отклоняются. Уведомление должно быть подписано ключом того режима, в котором был совершён платёж; уведомление другого режима ничего не меняет. Для каждого уведомления модуль также запрашивает у Authorize.Net текущий статус и сумму транзакции перед тем, как изменить заказ, поэтому повторные уведомления ничего не меняют.
Дополнительно
Debug log: записывает запросы и ответы API в logs/wc_ang_debug.log.php в папке модуля. Файл нельзя открыть через веб. Ключи, токены карт и персональные данные скрываются. По умолчанию: выключено. Ошибки, например отклонённые или неудачные платежи, ошибки API и неудачные возвраты, всегда записываются в журнал, даже если эта опция выключена.
Log: показывает размер журнала и последние записи. Нажмите Clear log, чтобы очистить его.
Delete data on uninstall: если включено, при удалении модуля удаляются настройки и журнал. Транзакции и возвраты Authorize.Net и статусы заказов модуля всегда сохраняются, поэтому заказы, оплаченные раньше, можно списать и вернуть после переустановки. По умолчанию: выключено.
Оформление заказа
На шаге оплаты покупатель выбирает способ оплаты (по умолчанию Credit Card) и вводит номер карты, срок действия (MM/YY) и код безопасности (CVV) в форму под ним. Accept.js загружается только на странице оформления заказа. Когда покупатель оформляет заказ, Accept.js в браузере заменяет данные карты одноразовым токеном. У полей карты нет имён формы, поэтому номер карты и CVV никогда не отправляются на ваш сервер.
Модуль списывает токен через API Authorize.Net на сумму корзины в валюте магазина. Адрес для выставления счёта, e-mail и IP-адрес отправляются вместе с транзакцией для проверки адреса и фильтров мошенничества. Номер корзины отправляется как номер счёта, потому что до оплаты заказа ещё не существует. Заказ помечается оплаченным только после подтверждения Authorize.Net: если транзакция одобрена, заказ создаётся сразу, и покупатель видит стандартную страницу подтверждения заказа с Your card payment has been received. При Authorize only страница показывает Your card payment has been authorized. The amount will be charged when your order is processed. Если Fraud Detection Suite задерживает транзакцию, страница показывает Your payment is being reviewed. We will update your order as soon as the review is complete.
Если карта отклонена, покупатель остаётся на шаге оплаты и видит Payment failed: и причину, например отклонённую карту, неверный код безопасности или истёкший срок действия. Заказ не создаётся, корзина сохраняется. Ошибки конфигурации и API покупателям не показываются: они видят общее сообщение, а подробности записываются в журнал. Если магазин не может связаться с Authorize.Net, покупатель видит Payment error: unable to connect to the payment gateway. Please try again. Если поля карты пусты, форма просит Please enter the card number, expiry date and card code.
Двойной клик, вторая вкладка или повторная отправка формы никогда не списывают деньги за один и тот же заказ дважды. Вторая попытка, пока первая ещё выполняется, показывает Your payment is already being processed. Please wait a moment and check your order history before trying again. Если платёж одобрен, но заказ создать не удалось, покупатель видит Your payment was received, but the order could not be completed automatically. Please contact us — do not pay again. Тогда заказ создаётся по одобренному платежу при следующей попытке или через вебхук, без повторного списания с карты.
Если корзина меняется во время оплаты, списанная сумма больше не соответствует корзине. Тогда заказ переходит в статус Authorize.Net payment on hold с примечанием, а платёж записывается на фактически списанную сумму.
Вебхук работает, даже когда магазин находится в режиме обслуживания, и не блокируется ограничением по странам вашего магазина.
В модуле нет сохранённых карт и профилей покупателей, подписок и регулярных платежей, eCheck/ACH, Apple Pay, Google Pay, PayPal или 3-D Secure, частичного списания авторизации и автоматической конвертации валют.
Заказы и возвраты
Статусы заказа
No order: карта отклонена или платёж не прошёл. Существует только корзина.
Payment accepted: деньги списаны с карты (Authorize and capture) или авторизация списана. Платёж записывается с Authorize.Net Trans ID в качестве ID транзакции, а примечание показывает сумму, Trans ID, код авторизации, тип карты и последние четыре цифры.
Authorize.Net payment authorized: средства только авторизованы (Authorize only). Спишите их до выполнения заказа.
Authorize.Net payment on hold: Fraud Detection Suite задержал транзакцию для проверки, списанная сумма не совпадает с суммой заказа, либо списание, сообщённое вебхуком, не совпадает с суммой заказа. Примечание объясняет причину. Одобрите или отклоните задержанную транзакцию в панели Authorize.Net; при вебхуках заказ обновляется автоматически.
Canceled: вебхук сообщил, что транзакция отклонена, отменена или истекла до оплаты заказа, либо вы отменили авторизацию, которая не была списана. Если транзакция оплаченного заказа отменена в панели Authorize.Net, его статус не меняется и добавляется предупреждающее примечание.
Refunded: платёж полностью возвращён или отменён через модуль.
Если вторая транзакция одобрена для корзины, у которой уже есть заказ, заказ не меняется. Примечание просит проверить её и отменить или вернуть дубликат в панели Authorize.Net.
Блок оплаты Authorize.Net
На странице заказа показан блок Authorize.Net payment с Trans ID, типом транзакции, статусом транзакции, картой и кодом авторизации, списанной суммой, суммой заказа и возвращённой суммой, значок Sandbox для тестовых платежей, историю возвратов и Authorize.Net notes заказа. Для списания и возвратов нужно только право на редактирование заказов, а не доступ к разделам модулей.
Списание
Для заказа в статусе Authorize.Net payment authorized нажмите Capture payment в блоке и подтвердите Capture the authorized amount through Authorize.Net? Авторизованная сумма списывается, платёж записывается с Trans ID, а заказ переходит в статус Payment accepted. Если списание не удалось, ошибка показывается и добавляется в примечания. Списать можно и в панели Authorize.Net; при вебхуках заказ обновляется автоматически.
Возвраты
В блоке введите сумму (подставляется сумма, которая ещё не возвращена), при необходимости причину, нажмите Refund via Authorize.Net и подтвердите Refund this amount through Authorize.Net? This cannot be undone. Возврат полной суммы сначала отменяет транзакцию, если она ещё не рассчитана, или авторизацию, которая не была списана. Рассчитанные транзакции, обычно через 24 часа, можно вернуть полностью или частично. До расчёта частичный возврат невозможен: вы вернёте полную сумму, чтобы отменить транзакцию, или повторите попытку после расчёта. Возвраты производятся в сумме и валюте, в которых Authorize.Net выполнил списание, поэтому после расхождения суммы можно вернуть до той суммы, которую покупатель реально заплатил, а не до суммы заказа. Если Authorize.Net не принимает возврат, блок показывает ошибку, и возврат не записывается. Успешный возврат или отмена добавляются в историю возвратов и примечания. Полный возврат переводит заказ в статус Refunded (Canceled, если отменена только авторизация). Частичный возврат статус не меняет. Пока транзакция задержана для проверки, возвраты не предлагаются.
Списания, возвраты и проверки вебхуков заказа используют учётные данные того режима, в котором заказ был оплачен, поэтому заказы другого режима можно списывать и возвращать и после переключения Sandbox mode. Сохраняйте учётные данные этого режима в их полях, пока эти заказы не обработаны.
Модуль не создаёт кредит-ноты. Стандартные кнопки возврата PrestaShop на странице заказа не возвращают деньги через Authorize.Net. Возвраты, сделанные в панели Authorize.Net, магазину не сообщаются: обновите заказ вручную.
Лицензионный ключ
Модуль работает с лицензионным ключом VibeFox с vibefox.net. Блок лицензии License — VibeFox Authorize.Net Gateway — это первый блок на странице Modules > Module Manager > VibeFox Authorize.Net Gateway > Configure, над настройками. Введите ключ в поле License key и нажмите Activate. После этого блок показывает ключ в замаскированном виде, статус (например, дату, до которой действует лицензия, и ваш домен), а также кнопки Check now для повторной проверки статуса, Change key для ввода другого ключа и Remove key для удаления ключа из этого магазина. Ниже находятся строка Product: presta-payment-authorizenet и ссылка Manage licenses and domains in your account, которая открывает ваш аккаунт на vibefox.net. Изменить ключ могут только сотрудники, имеющие право Configure для модуля. Тексты блока следуют языку back office (включены английский и русский).
Если ключ не принят, блок показывает причину, например Key not found, This key belongs to another product, Domain limit reached или License expired on с датой. После смены адреса магазина или после освобождения слота домена в аккаунте нажмите Check now. Если сервер лицензий недоступен, модуль продолжает работать по последнему известному статусу.
Один ключ работает на одном домене — на домене основного магазина, в том числе при мультимагазинной настройке. Удаление ключа из магазина не освобождает слот домена. Освободите слот в своём аккаунте vibefox.net.
Без активного лицензионного ключа Authorize.Net покупателям на оформлении заказа не показывается. Если платёж всё же начат, покупатель видит This payment method is not available. Please choose another one. Витрина PrestaShop не знает, что вы вошли в back office, поэтому способ оплаты скрыт и для вас: модуль можно настроить до покупки ключа, но нельзя проверить на оформлении заказа. Напоминание появляется в Modules > Module Manager на вкладке Alerts. Существующие заказы не затрагиваются: уже начатые платежи по-прежнему подтверждаются, а списания и возвраты работают.
Когда лицензия истекает, модуль продолжает работать, но обновления и поддержка требуют продления. Статус автоматически проверяется во время работы в back office: раз в день в первые 14 дней после ввода ключа, затем раз в неделю. Cron-задание не требуется. Удаление или сброс модуля всегда удаляет лицензионный ключ и статус лицензии.
Устранение неполадок
Authorize.Net не отображается при оформлении заказа: проверьте, что лицензия активна, Enable/Disable включён и в текущем режиме есть API Login ID, Transaction Key и Public Client Key. Страница настроек показывает предупреждение, если чего-то не хватает. Проверьте, что валюта магазина поддерживается, а в Payment > Preferences — что модулю разрешены валюта магазина, страна покупателя и группа покупателя.
Платёж прошёл, но заказ остаётся в статусе Authorize.Net payment on hold или authorized: тип транзакции — Authorize only (спишите её в блоке заказа), или Authorize.Net задержал транзакцию для проверки. Одобрите или отклоните её в панели Authorize.Net. Чтобы такие заказы обновлялись автоматически, настройте вебхук: проверьте, что эндпоинт существует в учётной записи используемого режима, что его URL точно совпадает с показанным в Endpoint URL, что выбраны все четыре события и что введён Signature Key этой учётной записи.
Webhook answers webhooks are not configured: ни для одного из режимов не введён Signature Key.
Webhook answers invalid signature: Signature Key принадлежит другой учётной записи или ключ был изменён в Authorize.Net. Создайте или скопируйте Signature Key заново и вставьте его в поле своего режима.
Webhook answers mode mismatch: уведомление подписано ключом одного режима, а платёж совершён в другом режиме. Проверьте, что Signature Key тестовой и рабочей сред не перепутаны.
Webhook answers verification failed, retry later: магазин не смог получить транзакцию из API Authorize.Net или отсутствуют учётные данные режима платежа. Authorize.Net повторит отправку.
Webhook answers busy, retry later: заказ в этот момент обновлялся другим запросом, или заказ не удалось создать. Authorize.Net повторит отправку. Причину смотрите в поле Log.
URL вебхука в браузере показывает method not allowed: это нормально. URL принимает только запросы от Authorize.Net.
Форма карты показывает The secure card form (Accept.js) could not be loaded: оформление заказа должно работать по HTTPS, а Public Client Key и API Login ID текущего режима должны быть верными.
Payment error: the card could not be tokenized: Accept.js не вернул токен. Покупателю нужно заново ввести данные карты и повторить попытку.
Покупатель видит общую ошибку: посмотрите поле Log на странице модуля; ошибки там записываются всегда. Валюту, которую учётная запись не поддерживает, Authorize.Net отклоняет.
Частичный возврат не проходит, потому что транзакция ещё не рассчитана: верните полную сумму, чтобы отменить транзакцию, или повторите попытку после расчёта, обычно в течение 24 часов.
Возврат или списание не проходит с сообщением о режиме: платёж совершён в тестовом или рабочем режиме, а API Login ID и Transaction Key этого режима не заданы. Введите их и повторите попытку.
Удаление
Откройте Modules > Module Manager, откройте меню рядом с VibeFox Authorize.Net Gateway и выберите Uninstall. Лицензионный ключ и статус лицензии этого модуля всегда удаляются. Если Delete data on uninstall включено, настройки и журнал удаляются. Если выключено, все настройки сохраняются для последующей переустановки. Транзакции и возвраты Authorize.Net и статусы заказов Authorize.Net payment authorized и Authorize.Net payment on hold всегда сохраняются, поэтому заказы, оплаченные раньше, можно списать и вернуть после переустановки. Существующие заказы сохраняют свои платёжные примечания и ID транзакций.
Authorize.Net — товарный знак его владельца. Этот модуль не связан с Authorize.Net и не одобрен компанией Authorize.Net.
