woocommerce/classes/gateways/class-wc-payment-gateway.php

198 lines
4.2 KiB
PHP
Raw Normal View History

2011-08-09 15:16:18 +00:00
<?php
/**
2011-08-10 17:11:11 +00:00
* WooCommerce Payment Gateway class
2012-08-15 17:08:42 +00:00
*
2011-08-10 17:11:11 +00:00
* Extended by individual payment gateways to handle payments.
*
2012-01-27 16:38:39 +00:00
* @class WC_Payment_Gateway
2012-08-15 18:15:06 +00:00
* @extends WC_Settings_API
* @version 1.6.4
* @package WooCommerce/Classes/Payment
* @author WooThemes
2011-08-10 17:11:11 +00:00
*/
if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly
2012-01-30 19:24:52 +00:00
class WC_Payment_Gateway extends WC_Settings_API {
2012-08-15 17:08:42 +00:00
2012-08-15 18:15:06 +00:00
/** @var string Payment method ID. */
2011-08-09 15:16:18 +00:00
var $id;
2012-08-15 18:15:06 +00:00
/** @var string Payment method title. */
2011-08-09 15:16:18 +00:00
var $title;
2012-08-15 18:15:06 +00:00
/** @var string Chosen payment method id. */
2011-08-09 15:16:18 +00:00
var $chosen;
2012-08-15 18:15:06 +00:00
/** @var bool True if the gateway shows fields on the checkout. */
2011-08-09 15:16:18 +00:00
var $has_fields;
2012-08-15 18:15:06 +00:00
/** @var array Array of countries this gateway is allowed for. */
2011-08-09 15:16:18 +00:00
var $countries;
2012-08-15 18:15:06 +00:00
/** @var string Available for all counties or specific. */
2011-08-09 15:16:18 +00:00
var $availability;
2012-08-15 18:15:06 +00:00
/** @var bool True if the method is enabled. */
2011-08-09 15:16:18 +00:00
var $enabled;
2012-08-15 18:15:06 +00:00
/** @var string Icon for the gateway. */
2011-08-09 15:16:18 +00:00
var $icon;
2012-08-15 18:15:06 +00:00
/** @var string Description for the gateway. */
2011-08-09 15:16:18 +00:00
var $description;
2012-08-15 18:15:06 +00:00
/** @var array Array of supported features. */
var $supports = array( 'products' );
2012-08-15 17:08:42 +00:00
/**
* Get the return url (thank you page)
*
2012-08-15 18:15:06 +00:00
* @access public
* @param string $order (default: '')
* @return string
*/
function get_return_url( $order = '' ) {
2012-08-15 17:08:42 +00:00
2012-01-06 17:14:31 +00:00
$thanks_page_id = woocommerce_get_page_id('thanks');
if ( $thanks_page_id ) :
$return_url = get_permalink($thanks_page_id);
else :
$return_url = home_url();
endif;
2012-08-15 17:08:42 +00:00
if ( $order ) :
$return_url = add_query_arg( 'key', $order->order_key, add_query_arg( 'order', $order->id, $return_url ) );
endif;
2012-08-15 17:08:42 +00:00
if ( is_ssl() || get_option('woocommerce_force_ssl_checkout') == 'yes' )
$return_url = str_replace( 'http:', 'https:', $return_url );
2012-08-15 17:08:42 +00:00
return apply_filters( 'woocommerce_get_return_url', $return_url );
}
2012-08-15 17:08:42 +00:00
2012-08-15 18:15:06 +00:00
/**
* Check If The Gateway Is Available For Use
*
2012-08-15 18:15:06 +00:00
* @access public
* @return bool
*/
2011-08-09 15:16:18 +00:00
function is_available() {
2012-08-15 17:08:42 +00:00
if ( $this->enabled == "yes" )
2011-08-09 15:16:18 +00:00
return true;
}
2012-08-15 17:08:42 +00:00
2012-08-15 18:15:06 +00:00
/**
* has_fields function.
2012-08-15 17:08:42 +00:00
*
* @access public
2012-08-15 18:15:06 +00:00
* @return bool
*/
function has_fields() {
return $this->has_fields ? true : false;
}
2012-08-15 17:08:42 +00:00
2012-08-15 18:15:06 +00:00
/**
* Return the gateways title
2012-08-15 17:08:42 +00:00
*
* @access public
2012-08-15 18:15:06 +00:00
* @return string
*/
function get_title() {
return apply_filters( 'woocommerce_gateway_title', $this->title, $this->id );
}
2012-08-15 18:15:06 +00:00
/**
* Return the gateways description
2012-08-15 17:08:42 +00:00
*
* @access public
2012-08-15 18:15:06 +00:00
* @return string
*/
function get_description() {
return apply_filters( 'woocommerce_gateway_description', $this->description, $this->id );
}
2012-08-15 17:08:42 +00:00
2012-08-15 18:15:06 +00:00
/**
* get_icon function.
2012-08-15 17:08:42 +00:00
*
* @access public
2012-08-15 18:15:06 +00:00
* @return string
*/
function get_icon() {
global $woocommerce;
2012-08-15 17:08:42 +00:00
$icon = $this->icon ? '<img src="' . $woocommerce->force_ssl( $this->icon ) . '" alt="' . $this->title . '" />' : '';
2012-08-15 17:08:42 +00:00
return apply_filters( 'woocommerce_gateway_icon', $icon, $this->id );
}
2012-08-15 17:08:42 +00:00
2012-08-15 18:15:06 +00:00
/**
* Set As Current Gateway.
*
* Set this as the current gateway.
*
2012-08-15 18:15:06 +00:00
* @access public
* @return void
*/
2011-08-09 15:16:18 +00:00
function set_current() {
$this->chosen = true;
}
2012-08-15 17:08:42 +00:00
2012-08-15 18:15:06 +00:00
/**
* Process Payment
*
* Process the payment. Override this in your gateway.
*
2012-08-15 18:15:06 +00:00
* @access public
* @return void
*/
2011-08-09 15:16:18 +00:00
function process_payment() {}
2012-08-15 17:08:42 +00:00
2012-08-15 18:15:06 +00:00
/**
* Validate Frontend Fields
*
* Validate payment fields on the frontend.
*
2012-08-15 18:15:06 +00:00
* @access public
* @return bool
*/
2011-08-09 15:16:18 +00:00
function validate_fields() { return true; }
2012-08-15 17:08:42 +00:00
2012-08-15 18:15:06 +00:00
2011-12-20 15:44:46 +00:00
/**
2012-08-15 18:15:06 +00:00
* If There are no payment fields show the description if set.
* Override this in your gateway if you have some.
*
* @access public
* @return void
*/
2011-12-20 15:44:46 +00:00
function payment_fields() {
2012-08-15 17:08:42 +00:00
if ( $description = $this->get_description() )
echo wpautop( wptexturize( $description ) );
2011-12-20 15:44:46 +00:00
}
2012-08-15 17:08:42 +00:00
2012-08-15 18:15:06 +00:00
/**
* Check if a gateway supports a given feature.
2012-08-15 17:08:42 +00:00
*
* Gateways should override this to declare support (or lack of support) for a feature.
* For backward compatibility, gateways support 'products' by default, but nothing else.
*
2012-08-15 18:15:06 +00:00
* @access public
* @param $feature string The name of a feature to test support for.
2012-08-15 17:08:42 +00:00
* @return bool True if the gateway supports the feature, false otherwise.
* @since 1.5.7
*/
2012-05-26 14:29:54 +00:00
function supports( $feature ) {
return apply_filters( 'woocommerce_payment_gateway_supports', in_array( $feature, $this->supports ) ? true : false, $feature, $this );
}
2011-08-09 15:16:18 +00:00
}