Beispiel #1
0
function euzakupki_gform_process_order($form, $entry_id)
{
    $map = file_get_contents(get_template_directory() . '/inc/gravityforms/order.json');
    $map = json_decode($map);
    if (!$map) {
        return;
    }
    $customer = $_POST['input_' . $map->form->service->client];
    if (!$customer) {
        return;
    }
    $customer_balance = get_user_meta($customer, 'balance', true);
    if (!$customer_balance) {
        $customer_balance = array();
    } else {
        @($customer_balance = preg_replace('!s:(\\d+):"(.*?)";!e', "'s:'.strlen('\$2').':\"\$2\";'", $customer_balance));
        $customer_balance = unserialize($customer_balance);
    }
    $order = euzakupki_get_order_by_entry_id($entry_id);
    if (!$order) {
        return;
    }
    $now = time();
    $utc_time = mktime(date('H', $now) + 3, date('i', $now), date('s', $now), date('m', $now), date('d', $now), date('Y', $now));
    if ($order->status == 'waiting') {
        if ($_POST['input_' . $map->form->process->shop_currency] == 'pln') {
            $_POST['input_' . $map->form->process->price] = euzakupki_pln_to_euro($_POST['input_' . $map->form->process->price]);
        }
    }
    if ($order->status == 'purchased') {
        $new_expence = array('amount' => -number_format($order->purchase, 2), 'date' => gmdate('Y-m-d H:i:s', $utc_time), 'reason' => sprintf(__('Снятие средств за выкуп заказа № %s', 'euzakupki'), $order->id));
        $customer_balance[] = $new_expence;
        $res = update_user_meta(intval($customer), 'balance', serialize($customer_balance));
        if (!$res) {
            print_r(__('Проблемы с зачислением суммы', 'euzakupki'));
            exit;
        }
    }
    if ($order->status == 'office') {
        $new_expence = array('amount' => -number_format($order->ship_to_office, 2), 'date' => gmdate('Y-m-d H:i:s', $utc_time), 'reason' => sprintf(__('Снятие средств за отправку в офис № %s', 'euzakupki'), $order->id));
        $customer_balance[] = $new_expence;
        $res = update_user_meta(intval($customer), 'balance', serialize($customer_balance));
        if (!$res) {
            print_r(__('Проблемы с зачислением суммы', 'euzakupki'));
            exit;
        }
    }
    if ($order->status == 'shipped') {
        $new_expence = array('amount' => -number_format($order->ship_to_client, 2), 'date' => gmdate('Y-m-d H:i:s', $utc_time), 'reason' => sprintf(__('Снятие средств за отправку заказа получателю № %s', 'euzakupki'), $order->id));
        $customer_balance[] = $new_expence;
        $res = update_user_meta(intval($customer), 'balance', serialize($customer_balance));
        if (!$res) {
            print_r(__('Проблемы с зачислением суммы', 'euzakupki'));
            exit;
        }
    }
    if ($order->status == 'cancelled') {
    }
    euzakupki_order_status_email_notification($entry_id);
}
Beispiel #2
0
function euzakupki_dotpay_callback($response)
{
    $lead = GFFormsModel::get_lead($response['control']);
    if (!$lead) {
        return;
    }
    // Return if payment completed
    if ($lead['payment_status'] == 'completed') {
        return;
    }
    $t_status = $response['t_status'];
    switch ($t_status) {
        case 2:
            $payment_status = 'completed';
            $customer_balance = get_user_meta($lead['created_by'], 'balance', true);
            @($customer_balance = preg_replace('!s:(\\d+):"(.*?)";!e', "'s:'.strlen('\$2').':\"\$2\";'", $customer_balance));
            $customer_balance = unserialize($customer_balance);
            $new_amount = euzakupki_pln_to_euro($response['amount']);
            $new_fund = array('amount' => $new_amount, 'date' => $response['t_date'], 'reason' => __('Пополнение баланса DotPay', 'euzakupki'));
            $customer_balance[] = $new_fund;
            $res = update_user_meta($lead['created_by'], 'balance', serialize($customer_balance));
            break;
        default:
            $payment_status = 'error';
            break;
    }
    $lead['payment_status'] = $payment_status;
    $lead['payment_date'] = $response['t_date'];
    $lead['payment_amount'] = $response['amount'];
    $lead['transaction_id'] = $response['t_id'];
    $lead['transaction_type'] = $response['channel'];
    $lead['payment_method'] = $response['p_info'];
    // Update lead and entry. Set transaction result data.
    GFFormsModel::update_lead($lead);
    // Write log
    $filename = get_template_directory() . '/logs/dotpay.log';
    if (!file_exists($filename)) {
        $log = array();
    } else {
        $log = file_get_contents($filename);
        @($log = preg_replace('!s:(\\d+):"(.*?)";!e', "'s:'.strlen('\$2').':\"\$2\";'", $log));
        $log = unserialize($log);
    }
    $log[] = $response;
    $log = serialize($log);
    $handle = fopen($filename, 'w+');
    fwrite($handle, $log);
    fclose($handle);
}