| <?php |
| /******************************************************************************* |
| * Copyright (c) 2015 Eclipse Foundation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Christopher Guindon (Eclipse Foundation)- initial API and implementation |
| *******************************************************************************/ |
| |
| require_once("payment.class.php"); |
| require_once("donation.class.php"); |
| require_once("donationEmails.class.php"); |
| |
| /** |
| * Base class for gateway class |
| * |
| * We currently have two supported gateway classes. |
| * They are paypal. |
| * |
| * @author chrisguindon |
| * |
| */ |
| class PaymentGateway extends Payment { |
| |
| /** |
| * Donation object |
| */ |
| public $Donation = NULL; |
| |
| /** |
| * Getway API key |
| */ |
| protected $gateway_auth_token = ''; |
| |
| /** |
| * Gateway business e-mail address |
| */ |
| protected $gateway_email = ''; |
| |
| /** |
| * Location of the gateway IPN script on our servers |
| * |
| * @var unknown |
| */ |
| protected $gateway_notify_url = ''; |
| |
| /** |
| * Location of the donation preprocess form for credit cards. |
| * |
| * This is the script that will redirect the user |
| * to the proper donation based off certain criteria. |
| * |
| * @var unknown |
| */ |
| protected $gateway_credit_process_url = ''; |
| |
| /** |
| * Location of the donation preprocess form. |
| * |
| * This is the script that will redirect the user |
| * to the proper donation based off certain criteria. |
| * |
| * @var unknown |
| */ |
| protected $gateway_process_url = ''; |
| |
| /** |
| * Redirect url for process script. |
| * |
| * If possible, this url can be used to |
| * automaticly redirect the user to the |
| * payment gateway from the process script. |
| * |
| * @var unknown |
| */ |
| protected $gateway_redirect = ''; |
| |
| /** |
| * Curl request response |
| */ |
| protected $gateway_response = ''; |
| |
| /** |
| * Page where the user should when returning from payment gateway |
| */ |
| protected $gateway_return_url = ''; |
| |
| /** |
| * Type of gateway |
| * |
| * This should probably set to paypal |
| * for now. |
| */ |
| protected $gateway_type = ""; |
| |
| /** |
| * Payment gateway URL |
| */ |
| protected $gateway_url = ''; |
| |
| public function __construct() { |
| parent::__construct(); |
| $this->Donation = new Donation($this->_get_debug_mode()); |
| $domain = $this->getEclipseEnv(); |
| $this->_set_gateway_process_url('https://'. $this->_get_prefix_domain() . '/donate/process.php'); |
| $this->_set_gateway_return_url('https://'. $this->_get_prefix_domain() . '/donate/credit.php'); |
| $this->_set_gateway_credit_process_url('https://'. $domain['accounts'] . '/donate/process'); |
| } |
| |
| /** |
| * Get gateway process url |
| * |
| * @return unknown |
| */ |
| public function get_gateway_process_url() { |
| return $this->gateway_process_url; |
| } |
| |
| /** |
| * Get gateway process url |
| * |
| * @return unknown |
| */ |
| public function get_gateway_credit_process_url() { |
| return $this->gateway_credit_process_url; |
| } |
| /** |
| * Get gateway redirect value |
| * |
| * @return unknown |
| */ |
| public function get_gateway_redirect() { |
| if (empty($this->gateway_redirect)) { |
| $this->_set_gateway_redirect(); |
| } |
| return $this->gateway_redirect; |
| } |
| |
| /** |
| * Maintenance for friends_process table |
| */ |
| public function maintenance(){ |
| $table = 'friends_process'; |
| if ($this->_get_debug_mode()) { |
| $table = 'testing_' . $table; |
| } |
| $sql = 'DELETE from ' . $table .' WHERE timestamp <= (NOW() - INTERVAL 3 MONTH) |
| AND status != "COMPLETED" AND status != "CONFIRMED" ORDER BY timestamp DESC'; |
| return $this->App->eclipse_sql($sql); |
| } |
| |
| /** |
| * Store form values from donation form or process script |
| */ |
| public function update_friends_process_table($update = FALSE) { |
| $this->maintenance(); |
| $fields = array( |
| 'id_unique' => $this->Donation->get_donation_random_invoice_id(), |
| 'uid' => $this->Donation->Donor->get_donor_uid(), |
| 'type' => $this->_get_gateway_type(), |
| 'domain' => $this->_get_prefix_domain(), |
| 'first_name' => $this->Donation->Donor->get_donor_first_name(), |
| 'last_name' => $this->Donation->Donor->get_donor_last_name(), |
| 'email' => $this->Donation->Donor->get_donor_email(), |
| 'amount' => $this->Donation->get_donation_amount(), |
| 'message' => $this->Donation->get_donation_message(), |
| 'subscription' => $this->Donation->get_donation_subscription(), |
| 'is_anonymous' => $this->Donation->get_donation_is_anonymous(), |
| 'redirect_url' => $this->get_gateway_redirect(), |
| 'status' => $this->Donation->get_donation_status(), |
| 'email_paypal' => $this->Donation->Donor->get_donor_paypal_email(), |
| 'landing_page' => $this->Donation->get_donation_landing_page(), |
| 'file_id' => $this->Donation->get_donation_file_id(), |
| 'scope' => $this->Donation->get_donation_scope(), |
| 'campaign' => $this->Donation->get_donation_campaign(), |
| ); |
| |
| if ($update) { |
| // On ipn update, we won't update the redirect_url |
| unset($fields['redirect_url']); |
| } |
| |
| $possible_null_field = array( |
| 'uid', |
| 'first_name', |
| 'last_name', |
| 'message', |
| 'email', |
| 'email_paypal', |
| 'amount', |
| 'domain', |
| 'landing_page', |
| 'scope', |
| 'campaign', |
| 'file_id' |
| ); |
| |
| $sql = $this->_sql_on_duplicate_update('friends_process', $fields, $possible_null_field); |
| $this->App->eclipse_sql($sql); |
| } |
| |
| public function set_posted_donation_values() { |
| $this->Donation->Donor->set_donor_email($this->App->getHTTPParameter('email')); |
| $this->Donation->Donor->set_donor_first_name($this->App->getHTTPParameter('first_name')); |
| $this->Donation->Donor->set_donor_last_name($this->App->getHTTPParameter('last_name')); |
| $this->Donation->set_donation_amount($this->App->getHTTPParameter('amount')); |
| $this->Donation->set_donation_message($this->App->getHTTPParameter('message')); |
| $this->Donation->set_donation_subscription($this->App->getHTTPParameter('subscription')); |
| $this->Donation->set_donation_is_anonymous($this->App->getHTTPParameter('is_anonymous')); |
| $this->Donation->set_donation_status('new_donation_form'); |
| $this->Donation->set_donation_landing_page($this->App->getHTTPParameter('landing_page')); |
| $this->Donation->set_donation_file_id($this->App->getHTTPParameter('file_id')); |
| $this->Donation->set_donation_scope($this->App->getHTTPParameter('scope')); |
| $this->Donation->set_donation_campaign($this->App->getHTTPParameter('campaign')); |
| $this->_set_gateway_redirect(); |
| $this->update_friends_process_table(); |
| } |
| |
| /** |
| * Get gateway auth token. |
| */ |
| protected function _get_gateway_auth_token(){ |
| if (empty($this->gateway_auth_token)) { |
| $this->_set_gateway_auth_token(); |
| } |
| return $this->gateway_auth_token; |
| } |
| |
| /** |
| * Get gateway business e-mail account |
| */ |
| protected function _get_gateway_email() { |
| return $this->gateway_email; |
| } |
| |
| /** |
| * Get gateway notify url |
| * |
| * @return string |
| */ |
| protected function _get_gateway_notify_url() { |
| return $this->gateway_notify_url; |
| } |
| |
| /** |
| * Get return URL |
| * |
| * @return unknown |
| */ |
| protected function _get_gateway_return_url() { |
| return $this->gateway_return_url; |
| } |
| |
| /** |
| * Get gateway redirect URL |
| */ |
| protected function _get_gateway_redirect(){ |
| return $this->gateway_redirect; |
| } |
| |
| /** |
| * Get curl request response |
| */ |
| protected function _get_gateway_response(){ |
| return $this->gateway_response; |
| } |
| |
| /** |
| * Get gateway type |
| */ |
| protected function _get_gateway_type() { |
| return $this->gateway_type; |
| } |
| |
| /** |
| * Get gateway URL |
| * |
| * @return unknown |
| */ |
| protected function _get_gateway_url() { |
| return $this->gateway_url; |
| } |
| |
| /** |
| * Set gateway auth token |
| * @return string |
| */ |
| protected function _set_gateway_auth_token($token = ""){ |
| $this->gateway_auth_token = $token; |
| } |
| |
| /** |
| * Set gateway business e-mail account |
| * |
| * @param unknown $email |
| */ |
| protected function _set_gateway_email($email) { |
| if (filter_var($email, FILTER_VALIDATE_EMAIL)) { |
| $this->gateway_email = $email; |
| } |
| } |
| |
| /** |
| * Set gateway notify url |
| * |
| * @param string $url |
| */ |
| protected function _set_gateway_notify_url($url = '') { |
| if (filter_var($url, FILTER_VALIDATE_URL)) { |
| $this->gateway_notify_url = $url; |
| } |
| } |
| |
| /** |
| * Set gateway process url |
| * |
| * @param string $url |
| */ |
| protected function _set_gateway_process_url($url = '') { |
| if (filter_var($url, FILTER_VALIDATE_URL)) { |
| $this->gateway_process_url = $url; |
| } |
| } |
| |
| /** |
| * Set gateway process url |
| * |
| * @param string $url |
| */ |
| protected function _set_gateway_credit_process_url($url = '') { |
| if (filter_var($url, FILTER_VALIDATE_URL)) { |
| $this->gateway_credit_process_url = $url; |
| } |
| } |
| |
| /** |
| * Set gateway redirect url |
| * |
| * @param string $url |
| */ |
| protected function _set_gateway_redirect($url = NULL) { |
| $this->gateway_redirect = $this->_get_gateway_url(); |
| if (filter_var($url, FILTER_VALIDATE_URL)) { |
| $this->gateway_redirect = $url; |
| } |
| } |
| |
| /** |
| * Set curl request response |
| */ |
| protected function _set_gateway_response($res = ''){ |
| $this->gateway_response = $res; |
| } |
| |
| /** |
| * Set return URL |
| * |
| * @param string $url |
| */ |
| protected function _set_gateway_return_url($url = NULL) { |
| if (filter_var($url, FILTER_VALIDATE_URL)) { |
| $this->gateway_return_url = $url; |
| } |
| } |
| |
| /** |
| * Set gateway type |
| * |
| * @param string $gateway_type |
| */ |
| protected function _set_gateway_type($gateway_type = NULL){ |
| $haystack = array('paypal'); |
| if (in_array($gateway_type, $haystack)) { |
| $this->gateway_type = $gateway_type; |
| $this->Donation->set_donation_currency($gateway_type); |
| } |
| } |
| |
| /** |
| * Set gateway URL |
| * |
| * @param string $url |
| */ |
| protected function _set_gateway_url($url = NULL) { |
| if (filter_var($url, FILTER_VALIDATE_URL)) { |
| $this->gateway_url = $url; |
| } |
| } |
| } |