Example #1
0
function fn_rus_payments_change_order_status(&$status_to, &$status_from, &$order_info, &$force_notification, &$order_statuses, &$place_order)
{
    $processor_data = fn_get_processor_data($order_info['payment_id']);
    $payment_info = $order_info['payment_info'];
    if (!empty($processor_data['processor']) && $processor_data['processor'] == 'Yandex.Money' && !empty($payment_info['yandex_postponed_payment'])) {
        try {
            $cert = $processor_data['processor_params']['certificate_filename'];
            $mws_client = new MWSClient();
            $mws_client->authenticate(array('pkcs12_file' => Registry::get('config.dir.certificates') . $cert, 'pass' => $processor_data['processor_params']['p12_password'], 'is_test_mode' => $processor_data['processor_params']['mode'] == 'test'));
            if ($status_to == $processor_data['processor_params']['confirmed_order_status']) {
                $mws_client->confirmPayment($payment_info['yandex_invoice_id'], $order_info['total']);
                $payment_info['yandex_confirmed_time'] = date('c');
                $payment_info['yandex_postponed_payment'] = false;
            } elseif ($status_to == $processor_data['processor_params']['canceled_order_status']) {
                $mws_client->cancelPayment($payment_info['yandex_invoice_id']);
                $payment_info['yandex_canceled_time'] = date('c');
                $payment_info['yandex_postponed_payment'] = false;
            }
            $payment_info['order_status'] = $status_to;
            fn_update_order_payment_info($order_info['order_id'], $payment_info);
            $order_info['payment_info'] = $payment_info;
        } catch (\Exception $e) {
            fn_set_notification('E', __('error'), __('addons.rus_payments.yandex_money_mws_operation_error'));
            return $status_to = $status_from;
        }
    }
}