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;
        }
    }
}
Example #2
0
use Tygh\Payments\Processors\YandexMoneyMWS\Exception as MWSException;
if (!defined('BOOTSTRAP')) {
    die('Access denied');
}
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    if ($mode == 'rus_payments_refund' && !empty($_REQUEST['refund_data'])) {
        $refund_data = $_REQUEST['refund_data'];
        $order_info = fn_get_order_info($_REQUEST['order_id']);
        $payment_info = $order_info['payment_info'];
        $pdata = $order_info['payment_method'];
        if ($pdata['processor'] == 'Yandex.Money' && $pdata['processor_params']['returns_enabled'] == 'Y') {
            try {
                $chunks = explode('_', $payment_info['yandex_merchant_order_id'], 3);
                $order_number = $chunks[0] . '_' . $chunks[1];
                $cert = $pdata['processor_params']['certificate_filename'];
                $mws_client = new MWSClient();
                $mws_client->authenticate(array('pkcs12_file' => Registry::get('config.dir.certificates') . $cert, 'pass' => $pdata['processor_params']['p12_password'], 'shop_id' => $pdata['processor_params']['shop_id'], 'is_test_mode' => $pdata['processor_params']['mode'] == 'test'));
                $orders = $mws_client->getOrders(array('order_number' => $order_number));
                if (empty($orders) || empty($orders['orderCount'])) {
                    throw new \Exception();
                }
                $mws_client->returnPayment($order_info['order_id'], $orders->order[0]['invoiceId'], $refund_data['amount'], !empty($refund_data['cause']) ? $refund_data['cause'] : '#');
                fn_change_order_status($order_info['order_id'], $pdata['processor_params']['returned_order_status']);
                $payment_info['yandex_refunded_time'] = date('c');
                $payment_info['yandex_refund_amount'] = $refund_data['amount'];
                fn_update_order_payment_info($order_info['order_id'], $payment_info);
            } catch (\Exception $e) {
                $message = __('addons.rus_payments.yandex_money_mws_operation_error');
                if ($e instanceof MWSException) {
                    $message .= "<br />Tech message: " . $e->getTechMessage();
                }