blob: 93378a7ba71972946985fb64eccc53724a4203a9 [file] [log] [blame]
<?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 or bitpay.
*
* @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 bitpay or 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;
}
/**
* Set a client message for returning bitpay donation
*/
public function get_gateway_bitpay_thank_you() {
$bitpay_return = $this->App->getHTTPParameter('bitpay_return', 'get');
if ($bitpay_return == 'donation') {
setcookie("thankyou_page[eclipse_donation]", TRUE, time() + (3600 * 24 * 360 * 10), '/', $this->_get_prefix_cookie());
$this->set_client_message( '<strong>Thank you for your donation!</strong>', 'success');
}
}
/**
* Store form values from donation form or process script
*/
public function update_friends_process_table($update = FALSE) {
$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()
);
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'
);
$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->_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('bitpay', '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;
}
}
}