VibeFox EveryPay for PrestaShop — Помощь
Требования
PrestaShop: 8.0–9.x.
PHP: 8.0 или новее. Модуль отказывается устанавливаться на более ранних версиях PHP.
Учётная запись EveryPay: нужны имя пользователя API, API secret и название процессингового аккаунта вашего магазина. Их можно найти в EveryPay Merchant Portal, в настройках магазина: демо-портал для тестового режима и рабочий портал для реальных платежей. Тестовая и рабочая среды имеют отдельные учётные данные. Также URL callback вашего магазина нужно указать в обоих порталах (см. раздел «Настройка»).
Валюта магазина: процессинговый аккаунт определяет списываемую валюту, например EUR3D1 списывает в EUR. Способ оплаты предлагается только для корзин в этой валюте.
Лицензионный ключ VibeFox: приобретается на vibefox.net. Один ключ работает на одном домене.
Установка
1. В панели администратора перейдите в Modules > Module Manager и нажмите Upload a module. Выберите ZIP-файл модуля.
2. После завершения загрузки нажмите Configure или позже найдите VibeFox EveryPay Payment в списке модулей и нажмите Configure.
3. Введите лицензионный ключ VibeFox в поле License key в блоке лицензии вверху страницы Configure и нажмите Activate (см. раздел «Лицензионный ключ»).
4. Введите тестовое имя пользователя API, тестовый API secret и название процессингового аккаунта из демо-портала Merchant Portal. Оставьте Test Mode включённым.
5. Скопируйте URL callback, показанный на странице настроек, в поле Callback notification URL вашего магазина в Merchant Portal.
6. Включите Enable/Disable, нажмите Save и оформите тестовый заказ. Когда всё работает, введите рабочие учётные данные, укажите URL callback и в рабочем портале и выключите Test Mode.
При установке модуль создаёт статус заказа EveryPay payment on hold. PrestaShop предлагает новый платёжный модуль для всех валют, стран и групп клиентов. Ограничить их можно в разделе Payment > Preferences.
Настройка
Все настройки находятся на странице модуля: Modules > Module Manager > VibeFox EveryPay Payment > Configure. У каждого раздела есть своя кнопка Save, которая сохраняет всю страницу. Над полями страница показывает Тестовый режим включён: платежи отправляются в демо-среду EveryPay, реальные деньги не списываются., пока включён тестовый режим. Она предупреждает, если способ оплаты включён, но у текущего режима не заполнены имя пользователя API, API secret или процессинговый аккаунт (тогда способ оплаты скрывается при оформлении заказа), а также если процессинговый аккаунт списывает валюту, отличную от валюты магазина по умолчанию. Пробелы и переносы строк, вставленные вместе с учётными данными, удаляются при сохранении.
EveryPay
Enable/Disable: Enable EveryPay payment gateway включает или выключает способ оплаты. По умолчанию: off.
Title: название способа оплаты, которое видят покупатели при оформлении заказа. Оно также сохраняется в заказе как название способа оплаты. По умолчанию: EveryPay.
Description: текст под способом оплаты при оформлении заказа. По умолчанию: Pay securely by card or bank link on the EveryPay payment page.
Учётная запись EveryPay
Имя пользователя API, API secret и название процессингового аккаунта показаны в EveryPay Merchant Portal (настройки магазина): демо-портал для тестового режима и рабочий портал для реальных платежей. В разделе есть ссылки на оба портала.
Test Mode: при включении платежи отправляются в демо-среду EveryPay с тестовыми учётными данными. Реальные деньги не списываются. По умолчанию: on. Пока он включён, покупатели видят под способом оплаты надпись ТЕСТОВЫЙ РЕЖИМ: демо-среда EveryPay, реальные деньги не списываются.
Test API Username: имя пользователя API демо-среды.
Test API Secret: API secret демо-среды.
Live API Username: имя пользователя API рабочей среды.
Live API Secret: API secret рабочей среды.
Сохранённые секреты больше не показываются. Поле остаётся пустым и показывает Сохранено — оставьте пустым, чтобы не менять. Вводите новое значение, только если хотите его изменить.
Clear saved API secrets: отметьте секрет и нажмите Save, чтобы удалить его. Пустое поле сохраняет сохранённое значение.
Processing Account Name: процессинговый аккаунт EveryPay, например EUR3D1. Аккаунт определяет списываемую валюту: способ оплаты предлагается только для корзин в этой валюте. Один и тот же аккаунт используется в обоих режимах.
Уведомления об оплате (callback)
Callback сообщает магазину, что платёж завершён, поэтому заказы создаются, даже если покупатель закрыл браузер. Скопируйте URL, показанный в поле Callback notification URL, в поле Callback notification URL вашего магазина в EveryPay Merchant Portal — и для демо-среды, и для рабочей. При ЧПУ-адресах он выглядит так: https://your-shop/module/wcp_everypay_payment/callback. Копируйте URL точно так, как он показан в настройках. Запрос на оплату не передаёт URL callback, поэтому его нужно указать в портале.
Callback содержит только ссылки на платежи. Когда он приходит, модуль запрашивает у API EveryPay статус платежа с учётными данными среды, где платёж был создан, и проверяет, что ответ относится к этой корзине. Callback по платежу, который создан не вашим магазином, отклоняется без запроса к EveryPay. Без callback заказ создаётся, когда покупатель возвращается в магазин после оплаты, или когда EveryPay повторяет callback.
Дополнительно
Debug log: записывает события платежей в logs/wc_evp_debug.log.php в папке модуля. Файл нельзя открыть из веб-браузера. Ошибки и предупреждения записываются всегда, даже когда опция выключена. Секреты API, данные карт и адреса электронной почты покупателей никогда не записываются в журнал. По умолчанию: off.
Log: показывает размер и последние записи журнала. Нажмите Clear log, чтобы очистить его.
Uninstall: при удалении модуля удаляет настройки шлюза и журналы. Данные платежей EveryPay по заказам всегда сохраняются. По умолчанию: off.
Оформление заказа
На этапе оплаты покупатель выбирает способ оплаты (по умолчанию EveryPay) и подтверждает выбор. Модуль создаёт разовый платёж EveryPay на сумму корзины в валюте корзины с e-mail и платёжным адресом покупателя и отправляет покупателя на страницу оплаты EveryPay. Язык этой страницы соответствует языку магазина (английский, эстонский, русский, латышский, литовский, финский или немецкий; в остальных случаях английский). Там покупатель платит одним из способов, включённых для вашей учётной записи EveryPay. На этом этапе заказа ещё нет.
После оплаты покупатель возвращается в ваш магазин. Заказ отмечается оплаченным только после подтверждения EveryPay: модуль запрашивает у API EveryPay статус платежа при возврате и при callback. Затем заказ создаётся, и покупатель видит стандартную страницу подтверждения заказа. Если EveryPay ещё обрабатывает платёж или её API в этот момент недоступен, появляется страница Payment confirmation с сообщением Ваш платёж подтверждается EveryPay. Вы получите письмо, как только заказ будет подтверждён. и кнопкой Check again; callback создаёт заказ, как только EveryPay подтверждает платёж.
Если платёж не прошёл, покупатель возвращается к оформлению заказа с сообщением Ваш платёж EveryPay не был успешным. Попробуйте ещё раз или выберите другой способ оплаты. Если покупатель покинул страницу оплаты, не заплатив, сообщение такое: Платёж EveryPay не был завершён. Вы можете попробовать ещё раз или выбрать другой способ оплаты. Корзина сохраняется. Каждая новая попытка создаёт новый платёж EveryPay; более ранние попытки распознаются, поэтому платёж по старой ссылке тоже учитывается.
Если EveryPay не может начать платёж, покупатель остаётся на оформлении заказа с коротким сообщением, например Сервис EveryPay временно недоступен. Попробуйте ещё раз через некоторое время или выберите другой способ оплаты. Подробности записаны в журнал.
Callback работает, даже когда магазин находится в режиме обслуживания, и не блокируется ограничением по странам вашего магазина.
Модуль принимает только разовые платежи. В нём нет возвратов и списания средств из PrestaShop, сохранённых карт и платежей в один клик, подписок и регулярных платежей, встроенных полей карты и поддержки нескольких валют.
Заказы
Статусы заказа
No order yet: покупатель был отправлен в EveryPay и не оплатил, платёж не прошёл или был прерван, либо EveryPay ещё не подтвердила платёж. Существует только корзина.
Payment accepted: EveryPay сообщила, что платёж проведён или авторизован. Платёж записывается с референсом платежа EveryPay в качестве ID транзакции, а примечание показывает сумму, валюту и референс. Для авторизованного платежа примечание сообщает, что средства зарезервированы: если ваш аккаунт не списывает средства автоматически, спишите платёж в EveryPay Merchant Portal. Когда платёж позже будет проведён, одно примечание сообщит об этом.
EveryPay payment on hold: платёж требует ручной проверки. Оплаченные сумма или валюта отличаются от корзины (например, корзина была изменена после начала платежа), заказ был отменён до поступления платежа или заказ теперь использует другой способ оплаты. Примечание объясняет причину и сообщает, что заказ не был отмечен оплаченным. Проверьте платёж в Merchant Portal и выполните или вручную верните средства. Последующие callback по этому платежу не завершают заказ автоматически.
Если для уже оплаченного заказа завершается второй платёж, заказ не меняется. Примечание просит вас вернуть дублирующий платёж в EveryPay Merchant Portal.
Блок оплаты EveryPay
На странице заказа показан блок EveryPay payment со всеми попытками оплаты EveryPay по заказу: дата, референс платежа (с меткой Test mode для тестовых платежей), референс заказа, сумма, статус EveryPay и результат. Ниже находятся EveryPay notes заказа, сначала новые.
Check EveryPay payment status: кнопка в блоке проверяет через API каждый платёж EveryPay по заказу, от новых к старым, применяет результат, как описано выше, и добавляет одно примечание со статусом каждого платежа. Результат отображается в блоке. Нужно право на редактирование заказов; доступ к страницам модулей не требуется. Используйте кнопку, если callback так и не пришёл, например чтобы увидеть более позднее списание или возврат.
Возвраты
Возвраты из PrestaShop не поддерживаются. Оформите возврат в EveryPay Merchant Portal, затем обновите статус заказа в PrestaShop. Когда EveryPay сообщает, что платёж возвращён или опротестован, модуль только добавляет примечание к заказу; статус заказа не меняется. Стандартные кнопки возврата PrestaShop на странице заказа не возвращают деньги через EveryPay.
Лицензионный ключ
Модуль работает с лицензионным ключом VibeFox с vibefox.net. Блок лицензии License — VibeFox EveryPay Payment — это первый блок на странице Modules > Module Manager > VibeFox EveryPay Payment > Configure, над настройками. Введите ключ в поле License key и нажмите Activate. После этого блок показывает ключ в скрытом виде, статус (например, дату, до которой действует лицензия, и ваш домен) и кнопки Check now для повторной проверки статуса, Change key для ввода другого ключа и Remove key для удаления ключа из этого магазина. Ниже показаны строка Product: presta-payment-everypay и ссылка 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.
Без активного ключа EveryPay не показывается покупателям при оформлении заказа. Если платёж всё же начат, покупатель видит Этот способ оплаты недоступен. Выберите другой. Витрина PrestaShop не знает, что вы вошли в back office, поэтому способ оплаты скрыт и для вас: модуль можно настроить до покупки ключа, но нельзя проверить при оформлении заказа. Напоминание появляется в Modules > Module Manager на вкладке Alerts. Существующие заказы не затрагиваются: уже начатые платежи по-прежнему подтверждаются, а проверка статуса работает.
Когда лицензия истекает, модуль продолжает работать, но для обновлений и поддержки нужно продление. Статус автоматически проверяется снова, пока вы работаете в back office: раз в день в первые 14 дней после ввода ключа, затем раз в неделю. Задание cron не нужно. Удаление или сброс модуля всегда удаляет лицензионный ключ и статус лицензии.
Устранение неполадок
EveryPay не отображается при оформлении заказа: проверьте, что лицензия активна, что Enable/Disable включён, что имя пользователя API, API secret и Processing Account Name текущего режима заполнены, и что валюта корзины совпадает с валютой процессингового аккаунта. В этих случаях на странице настроек показывается предупреждение. В разделе Payment > Preferences проверьте, разрешён ли модуль для валюты корзины, страны покупателя и группы покупателя.
Платёж прошёл, но заказ не создан: callback не работает. Проверьте, что URL callback из настроек указан как Callback notification URL в Merchant Portal того режима, который вы используете (демо или рабочий). Заказ также создаётся, когда покупатель возвращается в магазин после оплаты. Посмотрите поле Log на странице модуля: ошибки записываются всегда.
Callback отвечает Unknown payment, Unknown payment reference или Payment does not belong to this order: платёж не был создан этим магазином или этой корзиной, либо ответ EveryPay с ним не совпадает. Ничего не меняется.
Callback отвечает Not configured: отсутствуют учётные данные среды, где был создан платёж, например после удаления тестовых учётных данных у тестового платежа. Введите их снова; EveryPay повторит callback.
Callback отвечает Payment status unavailable, Busy, please retry или Order could not be created: API EveryPay не удалось достичь, заказ в этот момент создавал другой запрос, либо заказ не удалось создать (например, потому что модуль отключён). EveryPay повторит callback. Причина указана в журнале.
Покупатель видит «EveryPay временно недоступен»: EveryPay отклонила учётные данные или её не удалось достичь. Проверьте имя пользователя API и API secret текущего режима.
Покупатель видит «Этот способ оплаты не поддерживает валюту заказа»: валюта корзины отличается от валюты процессингового аккаунта.
Покупатель остаётся на странице Payment confirmation: EveryPay ещё не завершила платёж. Заказ создаёт callback или покупатель нажимает Check again после того, как EveryPay подтвердит платёж.
Заказ в статусе EveryPay payment on hold: прочитайте EveryPay notes в блоке заказа. Сумма или валюта отличались, либо заказ был отменён до поступления платежа. Проверьте платёж в Merchant Portal и выполните или вручную верните средства.
Для разработчиков: README модуля перечисляет хуки actionWcpEverypayOneoffRequest (изменение запроса на оплату) и actionWcpEverypayLocale (изменение языка страницы оплаты).
Удаление
Перейдите в Modules > Module Manager, откройте меню рядом с VibeFox EveryPay Payment и выберите Uninstall. Лицензионный ключ и статус лицензии этого модуля всегда удаляются. Если в настройках включена опция Uninstall (удалить настройки шлюза и журналы), настройки шлюза и журнал удаляются. Если она выключена, все настройки сохраняются для будущей переустановки. Данные платежей EveryPay по заказам и статус заказа EveryPay payment on hold всегда сохраняются. Существующие заказы сохраняют свои примечания об оплате и ID транзакций.
EveryPay — товарный знак его правообладателя. Этот модуль не связан с EveryPay и не одобрен ею.
