У меня есть бизнес-сайт, где я использую OpenCart и решаю, что пришло время обновить платежную систему. Я разговаривал с BluePay до того, как купил их сервис, и они сказали, что у них есть модуль для OpenCart. Оказывается, у них на самом деле нет модуля, и вместо этого есть сервис, где они эмулируют транзакции через модуль Authorize.net. Я подключил его в соответствии с инструкциями BluePay, и он не совсем работает. Он снимает средства с карт клиентов, но все заказы попадают в «отсутствующие» заказы в OpenCart. Кто-нибудь знает, что идет не так?
Редактировать:
Я наконец понял, в чем проблема. Чтобы сэкономить время других людей, я хотел бы опубликовать решение здесь.
BluePay вычисляет хэш транзакции MD5 иначе, чем Authorize.net. Из-за этого, без изменения кода, все заказы отклоняются, потому что MD5 не совпадает.
Для того, чтобы использовать authorizenet_aim.php
Модуль для BluePay с OpenCart нужно отредактировать следующим образом (authorizenet_aim.php
версия 3.1 на момент написания этого поста):
catalog/controllers/payment/authorizenet_aim.php
catalog/controllers/payment/authorizenet_aim.php
и измените URL:Заменить строку 48 следующим текстом:
$url = 'https://secure.bluepay.com/interfaces/a.net';
Заменить строку 50 следующим текстом:
$url = 'https' . '://secure.bluepay.com/interfaces/a.net.test';
Заменить строку 138 следующим текстом:
if (strtoupper($response_info[38]) == strtoupper(md5($this->config->get('authorizenet_aim_key') . $this->config->get('authorizenet_aim_login') .
$response_info[7] . $this->currency->format($order_info['total'], $order_info['currency_code'], 1.00000, false)))) {
BluePay использует authorizenet_aim_key
вместо authorizenet_aim_hash
У меня есть полный отредактированный файл для скачивания здесь для всех, кто хочет просто скачать его (пока мой личный сервер остается активным):
Задача ещё не решена.
Других решений пока нет …