function fn_paypal_complete_checkout($token, $processor_data, $order_info) { $pp_response['order_status'] = 'F'; $reason_text = ''; $paypal_checkout_details = fn_paypal_get_express_checkout_details($processor_data, $token); if (fn_paypal_ack_success($paypal_checkout_details)) { $result = fn_paypal_do_express_checkout($processor_data, $paypal_checkout_details, $order_info); if (fn_paypal_ack_success($result)) { $status = $result['PAYMENTINFO_0_PAYMENTSTATUS']; $pp_response['transaction_id'] = $result['PAYMENTINFO_0_TRANSACTIONID']; if ($status == 'Completed' || $status == 'Processed') { $pp_response['order_status'] = 'O'; $reason_text = 'Accepted, awaiting ipn for processing '; } elseif ($status == 'Pending') { $pp_response['order_status'] = 'O'; $reason_text = 'Pending '; } else { $reason_text = 'Declined '; } $reason_text = fn_paypal_process_add_fields($result, $reason_text); if (!empty($result['L_ERRORCODE0'])) { $reason_text .= ', ' . fn_paypal_get_error($result); } } else { $reason_text = fn_paypal_get_error($result); } } else { $reason_text = fn_paypal_get_error($paypal_checkout_details); } $pp_response['reason_text'] = $reason_text; if (fn_check_payment_script($processor_data['processor_script'], $order_info['order_id'])) { unset($_SESSION['pp_express_details']); fn_finish_payment($order_info['order_id'], $pp_response); fn_order_placement_routines('route', $order_info['order_id'], false); } }
} fn_order_placement_routines('checkout_redirect'); } elseif ($mode == 'place_order' && !empty($_SESSION['pp_express_details'])) { fn_pp_save_mode($order_info); $token = $_SESSION['pp_express_details']['token']; fn_paypal_complete_checkout($token, $processor_data, $order_info); } elseif ($mode == 'place_order' || $mode == 'express' || $mode == 'repay') { if (!defined('BOOTSTRAP')) { require './init_payment.php'; $_SESSION['cart'] = empty($_SESSION['cart']) ? array() : $_SESSION['cart']; } $payment_id = empty($_REQUEST['payment_id']) ? $_SESSION['cart']['payment_id'] : $_REQUEST['payment_id']; if ($mode == 'express') { $result = fn_paypal_set_express_checkout($payment_id, 0, array(), $_SESSION['cart']); $useraction = 'continue'; } else { $result = fn_paypal_set_express_checkout($payment_id, $order_id, $order_info); $useraction = "commit"; } if (fn_paypal_ack_success($result) && !empty($result['TOKEN'])) { $processor_data = fn_get_payment_method_data($payment_id); fn_paypal_payment_form($processor_data, $result['TOKEN']); } else { fn_paypal_get_error($result); if ($mode == 'express') { fn_order_placement_routines('checkout.cart'); } else { fn_order_placement_routines('checkout_redirect'); } } }