function _exp_checkout_do_payment() { global $event_details, $cart_totals; $event_id = $event_details['ID']; if (is_null($event_id)) { //return false; } $regis_id = $this->erm->get_regis_id(); $post_ID = $this->erm->get_regis_post_id(); $this->ecm->setup_event_details($event_id); $line_item_surcharge = false; $line_item_surcharge = apply_filters('egm__pp_exp__line_item_surcharge', $line_item_surcharge); $_totals = $this->erm->calculate_cart_totals(); $amount = $cart_totals['money_totals']['grand_total']; $amount = epl_get_balance_due(); $tax = epl_get_element_m('surcharge', 'money_totals', $cart_totals, 0); $subtotal = epl_get_element_m('subtotal', 'money_totals', $cart_totals, 0); $num_days_in_cart = array(); $price_multiplier = array(); $price_multiplier_label = array(); $discount_amount = number_format(epl_get_element('discount_amount', $cart_totals['money_totals'], 0), 2, ".", ""); //$subtotal = $discount_amount > 0 ? number_format( $subtotal - $discount_amount, 2 ) : $subtotal; $this->epl->load_file('libraries/gateways/paypal/paypal.php'); $paypal = new EPL_Paypal(); $gateway_info = $this->erm->get_gateway_info(); $paypal->_credentials = array('USER' => $gateway_info['_epl_pp_exp_user'], 'PWD' => $gateway_info['_epl_pp_exp_pwd'], 'SIGNATURE' => $gateway_info['_epl_pp_exp_sig']); $requestParams = array('TOKEN' => $_GET['token'], 'PAYMENTACTION' => 'Sale', 'PAYERID' => $_GET['PayerID']); $orderParams = array('PAYMENTREQUEST_0_AMT' => $amount, 'PAYMENTREQUEST_0_ITEMAMT' => $amount - $tax, 'PAYMENTREQUEST_0_CURRENCYCODE' => epl_nz(epl_get_general_setting('epl_currency_code'), 'USD'), 'PAYMENTREQUEST_0_TAXAMT' => $line_item_surcharge === false ? $tax : 0); $counter = 0; $tickets = $_SESSION['__epl'][$regis_id]['_dates']['_att_quantity']; $dates = isset($_SESSION['__epl'][$regis_id]['_dates']['_epl_start_date']) ? $_SESSION['__epl'][$regis_id]['_dates']['_epl_start_date'] : array(); $events = $_SESSION['__epl'][$regis_id]['_events']; $parallel_pay = epl_get_regis_setting('_epl_enable_PP_parallel_pay') == 10 && !epl_is_empty_array(epl_get_element('_epl_price_parallel_pay_email', $event_details, array())); $pp_email = epl_get_element('_epl_pp_exp_email', $gateway_info); if ($parallel_pay) { $orderParams = array(); foreach ($tickets as $event_id => $ind_tickets) { $this->ecm->setup_event_details($event_id); foreach ($ind_tickets as $ticket_id => $ticket_qty) { $ticket_name = epl_get_element($ticket_id, $event_details['_epl_price_name']); $ticket_price = epl_get_element($ticket_id, $event_details['_epl_price']); if (epl_is_eligible_for_member_price($ticket_id)) { $ticket_price = epl_get_element_m($ticket_id, '_epl_member_price', $event_details, $ticket_price); } $qty = is_array($ticket_qty) ? array_sum($ticket_qty) : $ticket_qty; if ($qty > 0) { $orderParams['PAYMENTREQUEST_' . $counter . '_AMT'] = $ticket_price; $orderParams['PAYMENTREQUEST_' . $counter . '_SELLERPAYPALACCOUNTID'] = epl_get_element_m($ticket_id, '_epl_price_parallel_pay_email', $event_details, $pp_email); $orderParams['PAYMENTREQUEST_' . $counter . '_SHIPPINGAMT'] = 0; $orderParams['PAYMENTREQUEST_' . $counter . '_CURRENCYCODE'] = epl_nz(epl_get_general_setting('epl_currency_code'), 'USD'); $orderParams['PAYMENTREQUEST_' . $counter . '_ITEMAMT'] = $ticket_price; $orderParams['PAYMENTREQUEST_' . $counter . '_TAXAMT'] = 0; $orderParams['PAYMENTREQUEST_' . $counter . '_DESC'] = substr($ticket_name, 0, 126); $orderParams['PAYMENTREQUEST_' . $counter . '_PAYMENTREQUESTID'] = $post_ID . '-' . $counter; $counter++; } } } } $counter = 0; $item = array(); foreach ($tickets as $event_id => $ind_tickets) { $this->ecm->setup_event_details($event_id); $num_days_in_cart[$event_id] = count(epl_get_element($event_id, $dates, array())); $price_multiplier[$event_id] = $event_details['_epl_price_per'] == 10 && !epl_is_date_level_price() ? $num_days_in_cart[$event_id] : 1; $price_multiplier_label[$event_id] = $price_multiplier[$event_id] > 1 ? ' - ' . $num_days_in_cart[$event_id] . ' ' . epl__('days') : ''; foreach ($ind_tickets as $ticket_id => $ticket_qty) { $ticket_name = epl_get_element($ticket_id, $event_details['_epl_price_name']); $ticket_price = epl_get_element($ticket_id, $event_details['_epl_price']); if (epl_is_eligible_for_member_price($ticket_id)) { $ticket_price = epl_get_element_m($ticket_id, '_epl_member_price', $event_details, $ticket_price); } $qty = is_array($ticket_qty) ? array_sum($ticket_qty) : $ticket_qty; if ($qty > 0) { $item['L_PAYMENTREQUEST_0_NAME' . $counter] = substr($event_details['post_title'], 0, 126); $item['L_PAYMENTREQUEST_0_DESC' . $counter] = $ticket_name . $price_multiplier_label[$event_id]; //$item['L_PAYMENTREQUEST_0_NUMBER' . $counter] = $ticket_id; $item['L_PAYMENTREQUEST_0_AMT' . $counter] = $ticket_price; $item['L_PAYMENTREQUEST_0_QTY' . $counter] = $qty * $price_multiplier[$event_id]; $counter++; } } } if ($parallel_pay) { $item = array(); $counter = 0; $ticket_counter = 0; //this will be incremented if we do line item per ticket qty foreach ($tickets as $event_id => $ind_tickets) { $this->ecm->setup_event_details($event_id); foreach ($ind_tickets as $ticket_id => $ticket_qty) { $ticket_name = epl_get_element($ticket_id, $event_details['_epl_price_name']); $ticket_price = epl_get_element($ticket_id, $event_details['_epl_price']); if (epl_is_eligible_for_member_price($ticket_id)) { $ticket_price = epl_get_element_m($ticket_id, '_epl_member_price', $event_details, $ticket_price); } $qty = is_array($ticket_qty) ? array_sum($ticket_qty) : $ticket_qty; if ($qty > 0) { $item['L_PAYMENTREQUEST_' . $counter . '_NAME' . $ticket_counter] = substr($event_details['post_title'], 0, 126); $item['L_PAYMENTREQUEST_' . $counter . '_DESC' . $ticket_counter] = $ticket_name . $price_multiplier_label[$event_id]; //$item['L_PAYMENTREQUEST_0_NUMBER' . $counter] = $ticket_id; $item['L_PAYMENTREQUEST_' . $counter . '_AMT' . $ticket_counter] = $ticket_price; $item['L_PAYMENTREQUEST_' . $counter . '_QTY' . $ticket_counter] = $qty * $price_multiplier[$event_id]; $counter++; } } } } if (!$parallel_pay) { if ($tax > 0 && $line_item_surcharge !== false) { //$discount_description = epl_get_element( 'discount_description', $cart_totals['money_totals'], null ); foreach ($_SESSION['__epl'][$regis_id]['_events'] as $event_id => $event_totals) { $sc = epl_get_element_m('surcharge', 'money_totals', $event_totals, 0); if ($sc == 0) { continue; } $this->ecm->setup_event_details($event_id); $surcharge_label = epl_get_element('_epl_surcharge_label', $event_details, epl__('Surcharge')); $item['L_PAYMENTREQUEST_0_NAME' . $counter] = $surcharge_label; //$item['L_PAYMENTREQUEST_0_DESC' . $counter] = $discount_description; //$item['L_PAYMENTREQUEST_0_NUMBER' . $counter] = $ticket_id; $item['L_PAYMENTREQUEST_0_AMT' . $counter] = $sc; $item['L_PAYMENTREQUEST_0_QTY' . $counter] = 1; $requestParams['PAYMENTREQUEST_0_ITEMAMT'] += $sc; $counter++; } } if ($discount_amount > 0) { $discount_description = epl_get_element('discount_description', $cart_totals['money_totals'], null); $discount_description = substr($discount_description, 0, 126); $item['L_PAYMENTREQUEST_0_NAME' . $counter] = $discount_description; //$item['L_PAYMENTREQUEST_0_DESC' . $counter] = $discount_description; //$item['L_PAYMENTREQUEST_0_NUMBER' . $counter] = $ticket_id; $item['L_PAYMENTREQUEST_0_AMT' . $counter] = -1 * $discount_amount; $item['L_PAYMENTREQUEST_0_QTY' . $counter] = 1; } $alt_total_due = epl_get_element_m('pay_deposit', 'money_totals', $cart_totals) == 1; if ($alt_total_due > 0) { $counter++; $balance_due_desc = epl__('Deposit Offset. Due at a later date.'); $balance_due_desc = substr($balance_due_desc, 0, 126); $balance_offset = get_the_regis_total_amount(false) - $amount; $item['L_PAYMENTREQUEST_0_NAME' . $counter] = $balance_due_desc; //$item['L_PAYMENTREQUEST_0_DESC' . $counter] = $discount_description; //$item['L_PAYMENTREQUEST_0_NUMBER' . $counter] = $ticket_id; $item['L_PAYMENTREQUEST_0_AMT' . $counter] = -1 * $balance_offset; $item['L_PAYMENTREQUEST_0_QTY' . $counter] = 1; } $payment_data = epl_get_regis_payments(); if (!empty($payment_data)) { if (count($payment_data) > 0) { foreach ($payment_data as $time => $p) { $counter++; $payment_made_description = epl__('Offset for payment made on: ') . epl_formatted_date($p['_epl_payment_date']); $payment_made_description = substr($payment_made_description, 0, 126); $item['L_PAYMENTREQUEST_0_NAME' . $counter] = $payment_made_description; //$item['L_PAYMENTREQUEST_0_DESC' . $counter] = $discount_description; //$item['L_PAYMENTREQUEST_0_NUMBER' . $counter] = $ticket_id; $item['L_PAYMENTREQUEST_0_AMT' . $counter] = -1 * $p['_epl_payment_amount']; $item['L_PAYMENTREQUEST_0_QTY' . $counter] = 1; } } } if (($donation_amount = epl_get_element_m('donation_amount', 'money_totals', $cart_totals, 0)) > 0) { $counter++; $item['L_PAYMENTREQUEST_0_NAME' . $counter] = epl__('Donation'); $item['L_PAYMENTREQUEST_0_AMT' . $counter] = $donation_amount; $item['L_PAYMENTREQUEST_0_QTY' . $counter] = 1; } if (($original_total = epl_get_element_m('original_total', 'money_totals', $cart_totals, 0)) > 0) { $counter++; $item['L_PAYMENTREQUEST_0_NAME' . $counter] = epl__('Offset'); $item['L_PAYMENTREQUEST_0_AMT' . $counter] = -1 * ($original_total - $orderParams['PAYMENTREQUEST_0_AMT']); $item['L_PAYMENTREQUEST_0_QTY' . $counter] = 1; } } $request = $requestParams + $item + $orderParams; $request = apply_filters('epl_express_checkout_do_payment_request_params', $request); $response = $paypal->request('DoExpressCheckoutPayment', $request); if (is_array($response) && $response['ACK'] == 'Success') { $payment_amount = $response['PAYMENTINFO_0_AMT']; $counter = 0; if ($parallel_pay) { $payment_amount = 0; foreach ($tickets as $event_id => $ind_tickets) { $this->ecm->setup_event_details($event_id); foreach ($ind_tickets as $ticket_id => $ticket_qty) { $qty = is_array($ticket_qty) ? array_sum($ticket_qty) : $ticket_qty; if ($qty > 0) { $payment_amount += epl_get_element('PAYMENTINFO_' . $counter . '_AMT', $response, 0); $counter++; } } } } $data['post_ID'] = $post_ID; $data['_epl_grand_total'] = $cart_totals['money_totals']['grand_total']; $data['_epl_payment_amount'] = $payment_amount; $data['_epl_payment_date'] = current_time('mysql'); $data['_epl_payment_method'] = $this->erm->get_payment_profile_id(); $data['_epl_transaction_id'] = $response['PAYMENTINFO_0_TRANSACTIONID']; $data['_epl_prediscount_total'] = epl_get_element('pre_discount_total', $cart_totals['money_totals'], 0); $data['_epl_discount_amount'] = epl_get_element('discount_amount', $cart_totals['money_totals'], 0); $data = apply_filters('epl_pp_exp_response_data', $data, $response); $this->erm->update_payment_data($data); return true; //echo "DONE"; } else { $error = 'ERROR: ' . $response['L_SHORTMESSAGE0'] . '. ' . $response['L_LONGMESSAGE0']; echo EPL_Util::get_instance()->epl_invoke_error(0, $error, false); } return false; }
function epl_get_balance_due() { global $cart_totals; $regis_total = get_the_regis_total_amount(false); $payment_data = epl_get_regis_payments(); $alt_total_due = epl_get_element_m('pay_deposit', 'money_totals', $cart_totals) == 1 ? epl_get_element_m('min_deposit', 'money_totals', $cart_totals, $regis_total) : $regis_total; if (!empty($payment_data)) { $total_paid = 0; foreach ($payment_data as $time => $p) { if ($p['_epl_payment_amount'] == 0) { continue; } $regis_total -= epl_get_formatted_curr($p['_epl_payment_amount'], 4); } } else { $regis_total = $alt_total_due; } return $regis_total == 0 ? abs($regis_total) : $regis_total; }
function payment_info_box($post_ID = null) { global $regis_details; if (is_null($post_ID)) { $post_ID = (int) $_POST['post_ID']; } if ($GLOBALS['epl_ajax'] || !isset($this->regis_meta)) { $regis_details = $this->regis_meta = $this->ecm->setup_regis_details($post_ID, true); } $this->temp_set_payment_method_id(); $data['post_ID'] = $post_ID; //$data['event_id'] = $this->event_id; $data['regis_status_id'] = $this->regis_meta['_epl_regis_status']; $data['regis_status'] = isset($this->regis_meta['_epl_regis_status']) ? $this->ind_fields['_epl_regis_status']['options'][$this->regis_meta['_epl_regis_status']] : ''; $data['payment_method'] = isset($this->regis_meta['_epl_payment_method']) && $this->regis_meta['_epl_payment_method'] != '' ? $this->ind_fields['_epl_payment_method']['options'][$this->regis_meta['_epl_payment_method']] : ''; $data += $this->get_waitlist_info(); $grand_total = get_the_regis_total_amount(false); //epl_get_formatted_curr( epl_nz( $this->regis_meta['_epl_grand_total'], 0 ) ); $amount_paid = epl_get_formatted_curr(epl_nz($this->regis_meta['_epl_payment_amount'], 0)); $data['grand_total'] = epl_get_formatted_curr($grand_total, null, true); $href = add_query_arg(array('epl_action' => 'epl_payment_snapshot', 'post_ID' => $post_ID), epl_get_url()); $data['snapshot_link'] = '<a data-post_id = "' . $post_ID . '" class="epl_payment_snapshot" href="#"><img src="' . EPL_FULL_URL . 'images/application_view_list.png" /> </a>'; //$data['snapshot_link'] = '<img id = "' . $post_ID . '" class="epl_payment_snapshot" src="' . EPL_FULL_URL . 'images/application_view_list.png" />'; $data['status_class'] = 'epl_status_pending'; if ($this->regis_meta['_epl_regis_status'] == 1) { $data['status_class'] = 'epl_status_incomplete'; } elseif ($this->regis_meta['_epl_regis_status'] == 5) { $data['status_class'] = 'epl_status_paid'; } elseif ($this->regis_meta['_epl_regis_status'] == 10) { $data['status_class'] = 'epl_status_cancelled'; } elseif ($this->regis_meta['_epl_regis_status'] == 15) { $data['status_class'] = 'epl_status_refunded'; } elseif ($this->regis_meta['_epl_regis_status'] == 20) { $data['status_class'] = 'epl_status_waitlist'; } return $this->epl->load_view('admin/registration/regis-list-payment-info', $data, true); }
<tbody> <?php if ($payment_instructions != '' && !epl_is_zero_total() && !epl_is_free_event()) { echo $payment_instructions; } ?> <tr> <td><?php epl_e('Total'); ?> </td> <td><?php echo get_the_regis_total_amount(); ?> </td> </tr> <tr> <td><?php epl_e('Amount Paid'); ?> </td> <td><?php echo get_the_regis_payment_amount(); ?> </td> </tr> <tr class="balance"> <td><?php
echo $k; ?> ][_epl_payment_note]"><?php echo $p['_epl_payment_note']; ?> </textarea> </td> <td style="vertical-align: middle;"> <div class="epl_action epl_delete force_delete"></div> </td> </tr> <?php } } $grand_total = get_the_regis_total_amount(false); $balance = $grand_total - $total_paid; ?> </tbody> <tfoot class="money_totals"> <tr> <td colspan="2" style="text-align: right;"><?php epl_e('Total Payments'); ?> </td> <td><?php echo epl_get_formatted_curr($total_paid, null, true); ?> </td> <td colspan="3"></td> </tr>