Запостил тему в общих вопросах, но там не отвечают.
Портирую на Opencart 1.5.1.3 Админка и передача параметров в РБК работают нормально. НО! После оплаты не регистрирует заказ. Не могу понять на какой адрес возвращаться.
Если возвращаемся в 'checkout/success', то просто отображается сообщение что все хорошо, а заказа в списке заказов не появляется.
Если возвращаемся в 'paymnet/rbkmoney/callback', то файл не найден или время ожидания истекло.
Попробовал добавить функцию confirm - ноль внимания.
Подскажите, что не так делаю?
/catalog/controller/payment/rbkmoney.php
<?php
class ControllerPaymentRbkmoney extends Controller {
protected function index() {
$this->data['button_confirm'] = $this->language->get('button_confirm');
$this->load->model('checkout/order');
$order_info = $this->model_checkout_order->getOrder($this->session->data['order_id']);
$this->data['action'] = 'https://rbkmoney.ru/acceptpurchase.aspx';
$this->data['eshopId'] = $this->config->get('rbkmoney_eshopid');
$this->data['orderId'] = $this->session->data['order_id'];
$this->data['recipientAmount'] = $this->currency->format($order_info['total'], $order_info['currency_code'], $order_info['currency_value'], false);
$this->data['recipientCurrency'] = $order_info['currency_code'];
$this->data['successUrl'] = $this->url->link('checkout/success');
$this->data['failUrl'] = $this->url->link('checkout/checkout', '', 'SSL');
$products = '';
foreach ($this->cart->getProducts() as $product) {
$products .= $product['quantity'] . ' x ' . $product['name'] . ', ';
}
$this->data['serviceName'] = $products;
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/payment/rbkmoney.tpl')) {
$this->template = $this->config->get('config_template') . '/template/payment/rbkmoney.tpl';
} else {
$this->template = 'default/template/payment/rbkmoney.tpl';
}
$this->render();
}
public function confirm() {
$this->load->model('checkout/order');
$this->model_checkout_order->confirm($this->session->data['order_id'], $this->config->get('rbkmoney_order_status_id'));
}
public function callback() {
if (isset($this->request->post['hash'])) {
$this->load->model('checkout/order');
$order_info = $this->model_checkout_order->getOrder($this->request->post['orderId']);
if ( ! $order_info) {
echo 'ERROR: Нет такого заказа!';
return;
}
$hash = $this->config->get('rbkmoney_eshopid') .
'::' . $order_info['order_id'] .
'::' . $this->request->post['serviceName'] .
'::' . $this->request->post['eshopAccount'] .
'::' . $this->request->post['recipientAmount'] .
'::' . $this->request->post['recipientCurrency'] .
'::' . $this->request->post['paymentStatus'] .
'::' . $this->request->post['userName'] .
'::' . $this->request->post['userEmail'] .
'::' . $this->request->post['paymentData'] .
'::' . $this->config->get('rbkmoney_secret_key');
$hash = md5($hash);
if($this->request->post['hash'] != $hash ) { return; }
$this->model_checkout_order->confirm($this->session->data['order_id'], $this->config->get('rbkmoney_order_status_id'), 'RBKmoney', true);
if( $order_info['order_status_id'] != $this->config->get('rbkmoney_order_status_id')) {
$this->model_checkout_order->update($order_info['order_id'], $this->config->get('rbkmoney_order_status_id'),'RBKmoney', true);
}
}
}
}
?>