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); }
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); }