Version Notes
FuturePay Payment method
Download this release
Release Info
Developer | FuturePay |
Extension | FuturePayUS |
Version | 2.0.0 |
Comparing to | |
See all releases |
Version 2.0.0
- app/code/community/FuturePay/FuturePay/Block/Adminhtml/System/Config/Fieldset/Hint.php +33 -0
- app/code/community/FuturePay/FuturePay/Block/Form/Futurepay.php +1 -0
- app/code/community/FuturePay/FuturePay/Block/Info/Futurepay.php +1 -0
- app/code/community/FuturePay/FuturePay/Block/Process.php +1 -0
- app/code/community/FuturePay/FuturePay/Exception.php +47 -0
- app/code/community/FuturePay/FuturePay/Helper/Data.php +67 -0
- app/code/community/FuturePay/FuturePay/Model/Method/Futurepay.php +109 -0
- app/code/community/FuturePay/FuturePay/Model/Observer.php +49 -0
- app/code/community/FuturePay/FuturePay/Model/Resource/Setup.php +12 -0
- app/code/community/FuturePay/FuturePay/Model/Source/Order/Status.php +11 -0
- app/code/community/FuturePay/FuturePay/Model/Source/Payment/Action.php +11 -0
- app/code/community/FuturePay/FuturePay/Model/Source/Title/Custom.php +11 -0
- app/code/community/FuturePay/FuturePay/controllers/IndexController.php +563 -0
- app/code/community/FuturePay/FuturePay/data/futurepay_setup/data-install-2.0.0.php +6 -0
- app/code/community/FuturePay/FuturePay/etc/config.xml +93 -0
- app/code/community/FuturePay/FuturePay/etc/system.xml +209 -0
- app/design/adminhtml/base/default/template/futurepay/info/futurepay.phtml +1 -0
- app/design/adminhtml/default/default/template/futurepay/system/config/fieldset/hint.phtml +10 -0
- app/design/frontend/base/default/layout/futurepay.xml +43 -0
- app/design/frontend/base/default/template/futurepay/form/futurepay.phtml +7 -0
- app/design/frontend/base/default/template/futurepay/form/mark.phtml +106 -0
- app/design/frontend/base/default/template/futurepay/form/redirect.phtml +312 -0
- app/design/frontend/base/default/template/futurepay/getmerchantloginform.phtml +11 -0
- app/design/frontend/base/default/template/futurepay/getmerchantsignupform.phtml +76 -0
- app/design/frontend/base/default/template/futurepay/getsignuploginform.phtml +45 -0
- app/design/frontend/base/default/template/futurepay/info/futurepay.phtml +13 -0
- app/design/frontend/base/default/template/futurepay/process.phtml +49 -0
- app/etc/modules/Futurepay_Futurepay.xml +10 -0
- package.xml +18 -0
- skin/adminhtml/base/default/futurepay/fp_logo.png +0 -0
- skin/adminhtml/base/default/futurepay/fp_logo2.png +0 -0
- skin/adminhtml/base/default/futurepay/futurepay-admin.js +222 -0
- skin/adminhtml/base/default/futurepay/logoFuturePay.png +0 -0
- skin/adminhtml/base/default/futurepay/styles.css +137 -0
- skin/frontend/base/default/futurepay/arrow.png +0 -0
- skin/frontend/base/default/futurepay/fpButton.jpg +0 -0
- skin/frontend/base/default/futurepay/fpButton18.jpg +0 -0
- skin/frontend/base/default/futurepay/fp_logo.png +0 -0
- skin/frontend/base/default/futurepay/fp_small_logo.png +0 -0
- skin/frontend/base/default/futurepay/fplogo.png +0 -0
- skin/frontend/base/default/futurepay/icon-cart.png +0 -0
- skin/frontend/base/default/futurepay/icon-fee.png +0 -0
- skin/frontend/base/default/futurepay/icon-secure.png +0 -0
- skin/frontend/base/default/futurepay/styles.css +8 -0
- skin/frontend/base/default/futurepay/styles18.css +847 -0
- skin/frontend/base/default/futurepay/styles19.css +863 -0
app/code/community/FuturePay/FuturePay/Block/Adminhtml/System/Config/Fieldset/Hint.php
ADDED
@@ -0,0 +1,33 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Renderer for FuturePay banner in System Configuration
|
5 |
+
*/
|
6 |
+
class FuturePay_FuturePay_Block_Adminhtml_System_Config_Fieldset_Hint
|
7 |
+
extends Mage_Adminhtml_Block_Abstract
|
8 |
+
implements Varien_Data_Form_Element_Renderer_Interface
|
9 |
+
{
|
10 |
+
protected $_template = 'futurepay/system/config/fieldset/hint.phtml';
|
11 |
+
|
12 |
+
/**
|
13 |
+
* Render fieldset html
|
14 |
+
*
|
15 |
+
* @param Varien_Data_Form_Element_Abstract $element
|
16 |
+
* @return string
|
17 |
+
*/
|
18 |
+
public function render(Varien_Data_Form_Element_Abstract $element)
|
19 |
+
{
|
20 |
+
$elementOriginalData = $element->getOriginalData();
|
21 |
+
if (isset($elementOriginalData['help_link'])) {
|
22 |
+
$this->setHelpLink($elementOriginalData['help_link']);
|
23 |
+
}
|
24 |
+
$js = <<<JS
|
25 |
+
document.observe("dom:loaded", function() {
|
26 |
+
FuturePayAdmin.displaySignupLoginTpl();
|
27 |
+
});
|
28 |
+
|
29 |
+
|
30 |
+
JS;
|
31 |
+
return $this->toHtml() . $this->helper('adminhtml/js')->getScript($js);
|
32 |
+
}
|
33 |
+
}
|
app/code/community/FuturePay/FuturePay/Block/Form/Futurepay.php
ADDED
@@ -0,0 +1 @@
|
|
Â
|
|
0 |
Â
protected function _construct()
|
1 |
Â
{
|
2 |
Â
$mark = new $mark;
|
3 |
Â
$mark->setTemplate('futurepay/form/mark.phtml')
|
4 |
Â
->setPaymentAcceptanceMarkSrc($this->getSkinUrl('futurepay/fp_small_logo.png'))
|
5 |
Â
;
|
6 |
Â
$this->setTemplate('futurepay/form/redirect.phtml')
|
7 |
Â
->setRedirectMessage(
|
8 |
Â
Mage::helper('paypal')->__('Buy Now and Pay Later without a credit card using FuturePay. It\'s secure, convenient and easy to use. Don\'t have an account yet? You can signup and checkout in seconds.')
|
9 |
Â
)
|
10 |
Â
->setMethodTitle('') // Output PayPal mark, omit title
|
11 |
Â
->setMethodLabelAfterHtml($mark->toHtml())
|
12 |
Â
;
|
13 |
Â
}
|
1 |
+
<?php
|
2 |
Â
protected function _construct()
|
3 |
Â
{
|
4 |
Â
$mark = new $mark;
|
5 |
Â
$mark->setTemplate('futurepay/form/mark.phtml')
|
6 |
Â
->setPaymentAcceptanceMarkSrc($this->getSkinUrl('futurepay/fp_small_logo.png'))
|
7 |
Â
;
|
8 |
Â
$this->setTemplate('futurepay/form/redirect.phtml')
|
9 |
Â
->setRedirectMessage(
|
10 |
Â
Mage::helper('paypal')->__('Buy Now and Pay Later without a credit card using FuturePay. It\'s secure, convenient and easy to use. Don\'t have an account yet? You can signup and checkout in seconds.')
|
11 |
Â
)
|
12 |
Â
->setMethodTitle('') // Output PayPal mark, omit title
|
13 |
Â
->setMethodLabelAfterHtml($mark->toHtml())
|
14 |
Â
;
|
15 |
Â
}
|
app/code/community/FuturePay/FuturePay/Block/Info/Futurepay.php
ADDED
@@ -0,0 +1 @@
|
|
Â
|
|
0 |
Â
protected $_checkout;
|
1 |
Â
protected function _construct()
|
2 |
Â
{
|
3 |
Â
parent::_construct();
|
4 |
Â
$this->setTemplate('futurepay/info/futurepay.phtml');
|
5 |
Â
}
|
6 |
Â
/**
|
7 |
Â
* Enter description here...
|
8 |
Â
*
|
9 |
Â
* @return string
|
10 |
Â
*/
|
11 |
Â
public function getPayableTo()
|
12 |
Â
{
|
13 |
Â
return '';
|
14 |
Â
}
|
15 |
Â
/**
|
16 |
Â
* Enter description here...
|
17 |
Â
*
|
18 |
Â
* @return string
|
19 |
Â
*/
|
20 |
Â
public function getMailingAddress()
|
21 |
Â
{
|
22 |
Â
return '';
|
23 |
Â
}
|
24 |
Â
public function getCheckout()
|
25 |
Â
{
|
26 |
Â
if (is_null($this->_checkout)) {
|
27 |
Â
$this->_convertAdditionalData();
|
28 |
Â
}
|
29 |
Â
return $this->_checkout;
|
30 |
Â
}
|
31 |
Â
|
32 |
Â
public function getReturnUrl()
|
33 |
Â
{
|
34 |
Â
return '';
|
35 |
Â
}
|
36 |
Â
/**
|
37 |
Â
* Enter description here...
|
38 |
Â
*
|
39 |
Â
* @return Mage_Payment_Block_Info_Checkmo
|
40 |
Â
*/
|
41 |
Â
protected function _convertAdditionalData()
|
42 |
Â
{
|
43 |
Â
$details = @unserialize($this->getInfo()->getAdditionalData());
|
44 |
Â
if (is_array($details)) {
|
45 |
Â
$this->_payableTo = isset($details['payable_to']) ? (string) $details['payable_to'] : '';
|
46 |
Â
$this->_mailingAddress = isset($details['mailing_address']) ? (string) $details['mailing_address'] : '';
|
47 |
Â
$this->_return_url = isset($details['return_url']) ? (string) $details['return_url'] : '';
|
48 |
Â
$this->_checkout = isset($details['checkout']) ? (string) $details['checkout'] : '';
|
49 |
Â
$this->_merchantID = isset($details['merchantID']) ? (string) $details['merchantID'] : '';
|
50 |
Â
$this->_secure_code = isset($details['secure_code']) ? (string) $details['secure_code'] : '';
|
51 |
Â
} else {
|
52 |
Â
$this->_payableTo = '';
|
53 |
Â
$this->_mailingAddress = '';
|
54 |
Â
$this->_return_url='';
|
55 |
Â
$this->_checkout='';
|
56 |
Â
$this->_merchantID='';
|
57 |
Â
$this->_secure_code='';
|
58 |
Â
}
|
59 |
Â
return $this;
|
60 |
Â
}
|
61 |
Â
|
62 |
Â
public function toPdf()
|
63 |
Â
{
|
64 |
Â
$this->setTemplate('futurepay/info/futurepay.phtml');
|
65 |
Â
return $this->toHtml();
|
66 |
Â
}
|
1 |
+
<?php
|
2 |
Â
protected $_checkout;
|
3 |
Â
protected function _construct()
|
4 |
Â
{
|
5 |
Â
parent::_construct();
|
6 |
Â
$this->setTemplate('futurepay/info/futurepay.phtml');
|
7 |
Â
}
|
8 |
Â
/**
|
9 |
Â
* Enter description here...
|
10 |
Â
*
|
11 |
Â
* @return string
|
12 |
Â
*/
|
13 |
Â
public function getPayableTo()
|
14 |
Â
{
|
15 |
Â
return '';
|
16 |
Â
}
|
17 |
Â
/**
|
18 |
Â
* Enter description here...
|
19 |
Â
*
|
20 |
Â
* @return string
|
21 |
Â
*/
|
22 |
Â
public function getMailingAddress()
|
23 |
Â
{
|
24 |
Â
return '';
|
25 |
Â
}
|
26 |
Â
public function getCheckout()
|
27 |
Â
{
|
28 |
Â
if (is_null($this->_checkout)) {
|
29 |
Â
$this->_convertAdditionalData();
|
30 |
Â
}
|
31 |
Â
return $this->_checkout;
|
32 |
Â
}
|
33 |
Â
|
34 |
Â
public function getReturnUrl()
|
35 |
Â
{
|
36 |
Â
return '';
|
37 |
Â
}
|
38 |
Â
/**
|
39 |
Â
* Enter description here...
|
40 |
Â
*
|
41 |
Â
* @return Mage_Payment_Block_Info_Checkmo
|
42 |
Â
*/
|
43 |
Â
protected function _convertAdditionalData()
|
44 |
Â
{
|
45 |
Â
$details = @unserialize($this->getInfo()->getAdditionalData());
|
46 |
Â
if (is_array($details)) {
|
47 |
Â
$this->_payableTo = isset($details['payable_to']) ? (string) $details['payable_to'] : '';
|
48 |
Â
$this->_mailingAddress = isset($details['mailing_address']) ? (string) $details['mailing_address'] : '';
|
49 |
Â
$this->_return_url = isset($details['return_url']) ? (string) $details['return_url'] : '';
|
50 |
Â
$this->_checkout = isset($details['checkout']) ? (string) $details['checkout'] : '';
|
51 |
Â
$this->_merchantID = isset($details['merchantID']) ? (string) $details['merchantID'] : '';
|
52 |
Â
$this->_secure_code = isset($details['secure_code']) ? (string) $details['secure_code'] : '';
|
53 |
Â
} else {
|
54 |
Â
$this->_payableTo = '';
|
55 |
Â
$this->_mailingAddress = '';
|
56 |
Â
$this->_return_url='';
|
57 |
Â
$this->_checkout='';
|
58 |
Â
$this->_merchantID='';
|
59 |
Â
$this->_secure_code='';
|
60 |
Â
}
|
61 |
Â
return $this;
|
62 |
Â
}
|
63 |
Â
|
64 |
Â
public function toPdf()
|
65 |
Â
{
|
66 |
Â
$this->setTemplate('futurepay/info/futurepay.phtml');
|
67 |
Â
return $this->toHtml();
|
68 |
Â
}
|
app/code/community/FuturePay/FuturePay/Block/Process.php
ADDED
@@ -0,0 +1 @@
|
|
Â
|
1 |
+
<?php
|
app/code/community/FuturePay/FuturePay/Exception.php
ADDED
@@ -0,0 +1,47 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Magento Core Exception
|
4 |
+
*
|
5 |
+
* This class will be extended by other modules
|
6 |
+
*
|
7 |
+
* @category VES
|
8 |
+
* @package VES_FuturePay
|
9 |
+
*/
|
10 |
+
class FuturePay_FuturePay_Exception extends Exception
|
11 |
+
{
|
12 |
+
public function __construct($errorCode='',$message =''){
|
13 |
+
$message = $this->getErrorMessageByCode($errorCode);
|
14 |
+
return parent::__construct($message);
|
15 |
+
}
|
16 |
+
|
17 |
+
public function getErrorMessageByCode($errorCode){
|
18 |
+
$errorCode = trim($errorCode);
|
19 |
+
switch($errorCode){
|
20 |
+
case 'FP_EXISTING_INVALID_CUSTOMER_STATUS' : $message = Mage::helper('futurepay')->__('Your purchase was not successful because your account is not in an active state. Please contact FuturePay at <a href="mailto:support@futurepay.com">support@futurepay.com</a>.');break;
|
21 |
+
case 'FP_INVALID_ID_REQUEST' : $message = Mage::helper('futurepay')->__('Error: The GMID could not be validated - either missing or not valid format - Contact FuturePay');break;
|
22 |
+
case 'FP_INVALID_SERVER_REQUEST' : $message = Mage::helper('futurepay')->__('Error: Either the Merchant Server is not on our IP Whitelist or the Order Reference was Missing');break;
|
23 |
+
case 'FP_PRE_ORDER_EXCEEDS_MAXIMUM' : $message = Mage::helper('futurepay')->__('FuturePay can only be used on orders under $500');break;
|
24 |
+
case 'FP_MISSING_REFERENCE' : $message = Mage::helper('futurepay')->__('Reference was not detected in the Query String');break;
|
25 |
+
case 'FP_INVALID_REFERENCE' : $message = Mage::helper('futurepay')->__('Reference');break;
|
26 |
+
case 'FP_ORDER_EXISTS' : $message = Mage::helper('futurepay')->__('The reference exists with an order that has completed sales attached');break;
|
27 |
+
case 'FP_MISSING_REQUIRED_FIRST_NAME' : $message = Mage::helper('futurepay')->__('First Name was not detected in the Query String');break;
|
28 |
+
case 'FP_MISSING_REQUIRED_LAST_NAME' : $message = Mage::helper('futurepay')->__('Last Name was not detected in the Query String');break;
|
29 |
+
case 'FP_MISSING_REQUIRED_PHONE' : $message = Mage::helper('futurepay')->__('Phone Name was not detected in the Query String');break;
|
30 |
+
case 'FP_MISSING_REQUIRED_CITY' : $message = Mage::helper('futurepay')->__('City was not detected in the Query String');break;
|
31 |
+
case 'FP_MISSING_REQUIRED_STATE' : $message = Mage::helper('futurepay')->__('State was not detected in the Query String');break;
|
32 |
+
case 'FP_MISSING_REQUIRED_ADDRESS' : $message = Mage::helper('futurepay')->__('Address was not detected in the Query String');break;
|
33 |
+
case 'FP_MISSING_REQUIRED_COUNTRY' : $message = Mage::helper('futurepay')->__('Country was not detected in the Query String');break;
|
34 |
+
case 'FP_COUNTRY_US_ONLY' : $message = Mage::helper('futurepay')->__('The Country was not US');break;
|
35 |
+
case 'FP_MISSING_EMAIL' : $message = Mage::helper('futurepay')->__('Email was not detected in the Query String');break;
|
36 |
+
case 'FP_INVALID_EMAIL_SIZE' : $message = Mage::helper('futurepay')->__('Email Size was greater than 85');break;
|
37 |
+
case 'FP_INVALID_EMAIL_FORMAT' : $message = Mage::helper('futurepay')->__('Email Format was not valid');break;
|
38 |
+
case 'FP_MISSING_REQUIRED_ZIP' : $message = Mage::helper('futurepay')->__('Zip was not detected in the Query String');break;
|
39 |
+
case 'FP_NO_ZIP_FOUND' : $message = Mage::helper('futurepay')->__('The Zip code you entered for your billing address corresponds to a Military (APO/FPO/DPO), PO Box or other non-physical address. To approve your application we require a Zip code associated with a physical address in the U.S.');break;
|
40 |
+
case 'FP_INVALID_STATE_ZIP_COMBINATION' : $message = Mage::helper('futurepay')->__('The Zip code you entered for your billing address corresponds to a Military (APO/FPO/DPO), PO Box or other non-physical address. To approve your application we require a Zip code associated with a physical address in the U.S.');break;
|
41 |
+
case 'NOT_ACCEPTED' : $message = Mage::helper('futurepay')->__('Your FuturePay Account Could not be Created. Please check your email for further details. Please select another payment method.');break;
|
42 |
+
case 'ORDER_TK_NOT_FOUND' : $message = Mage::helper('futurepay')->__('FuturePay could not confirm the Order.');break;
|
43 |
+
default: $message = Mage::helper('futurepay')->__('There is an error occurred we cannot process your order. Code: %s',$errorCode);
|
44 |
+
}
|
45 |
+
return $message;
|
46 |
+
}
|
47 |
+
}
|
app/code/community/FuturePay/FuturePay/Helper/Data.php
ADDED
@@ -0,0 +1,67 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
|
4 |
+
|
5 |
+
class FuturePay_FuturePay_Helper_Data extends Mage_Core_Helper_Abstract
|
6 |
+
|
7 |
+
{
|
8 |
+
|
9 |
+
public function isSandboxMode(){
|
10 |
+
|
11 |
+
return Mage::getStoreConfig('payment/futurepay/is_sandbox_mode');
|
12 |
+
|
13 |
+
}
|
14 |
+
|
15 |
+
|
16 |
+
|
17 |
+
/**
|
18 |
+
|
19 |
+
* Get API Url
|
20 |
+
|
21 |
+
*/
|
22 |
+
|
23 |
+
public function getApiUrl(){
|
24 |
+
|
25 |
+
return $this->isSandboxMode()?Mage::getStoreConfig('payment/futurepay/sandbox_checkout_url'):Mage::getStoreConfig('payment/futurepay/checkout_url');
|
26 |
+
|
27 |
+
}
|
28 |
+
|
29 |
+
|
30 |
+
|
31 |
+
|
32 |
+
|
33 |
+
/**
|
34 |
+
|
35 |
+
* Get cart integration url
|
36 |
+
|
37 |
+
*/
|
38 |
+
|
39 |
+
public function getCartIntegrationUrl(){
|
40 |
+
|
41 |
+
return $this->isSandboxMode()?Mage::getStoreConfig('payment/futurepay/sandbox_cart_integration'):Mage::getStoreConfig('payment/futurepay/cart_integration');
|
42 |
+
|
43 |
+
}
|
44 |
+
|
45 |
+
|
46 |
+
|
47 |
+
/**
|
48 |
+
|
49 |
+
* Get order verification url
|
50 |
+
|
51 |
+
*/
|
52 |
+
|
53 |
+
public function getOrderVerificationUrl(){
|
54 |
+
|
55 |
+
return $this->isSandboxMode()?Mage::getStoreConfig('payment/futurepay/sandbox_order_verification_url'):Mage::getStoreConfig('payment/futurepay/order_verification_url');
|
56 |
+
|
57 |
+
}
|
58 |
+
|
59 |
+
/**
|
60 |
+
*Get is Auto Create Invoice
|
61 |
+
*/
|
62 |
+
|
63 |
+
public function autoCreateInvoice(){
|
64 |
+
return Mage::getStoreConfig('payment/futurepay/auto_invoice');
|
65 |
+
}
|
66 |
+
|
67 |
+
}
|
app/code/community/FuturePay/FuturePay/Model/Method/Futurepay.php
ADDED
@@ -0,0 +1,109 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
class FuturePay_FuturePay_Model_Method_FuturePay extends Mage_Payment_Model_Method_Abstract
|
3 |
+
{
|
4 |
+
|
5 |
+
protected $_code = 'futurepay';
|
6 |
+
protected $_formBlockType = 'futurepay/form_futurepay';
|
7 |
+
protected $_infoBlockType = 'futurepay/info_futurepay';
|
8 |
+
protected $_canAuthorize = true;
|
9 |
+
protected $_canRefund = true;
|
10 |
+
protected $_canRefundInvoicePartial = true;
|
11 |
+
protected $_canCapture = true;
|
12 |
+
|
13 |
+
public function refund(\Varien_Object $payment, $amount) {
|
14 |
+
|
15 |
+
// Setup curl request:
|
16 |
+
if (Mage::getStoreConfig('payment/futurepay/is_sandbox_mode') == 1) {
|
17 |
+
$requestHost = 'sandbox.futurepay.com';
|
18 |
+
} else {
|
19 |
+
$requestHost = 'api.futurepay.com';
|
20 |
+
}
|
21 |
+
$GMID = Mage::getStoreConfig('payment/futurepay/gmid');
|
22 |
+
$address = 'https://' . $requestHost . '/remote/merchant-returns';
|
23 |
+
$postDataArray = array();
|
24 |
+
$postDataArray['api_version'] = '2';
|
25 |
+
$postDataArray['PlatformId'] = '302';
|
26 |
+
$postDataArray['gmid'] = $GMID;
|
27 |
+
// Returned in the JavaScript Response from a successful purchase
|
28 |
+
$postDataArray['order_action'] = 'refund';
|
29 |
+
//$postDataArray['reference'] = get_object_vars($payment)['_data']['refund_transaction_id'];
|
30 |
+
//$postDataArray['reference'] = get_object_vars($payment)['_data']['entity_id'];
|
31 |
+
$postDataArray['reference'] = $payment->getOrder()->getIncrementId();
|
32 |
+
|
33 |
+
$postDataArray['description'] = 'Retailer Refunded: #' . $payment->getOrder()->getIncrementId();
|
34 |
+
$postDataArray['total_price'] = (float)$amount;
|
35 |
+
//$postDataArray['amount'] = $amount;
|
36 |
+
|
37 |
+
$postdata = http_build_query($postDataArray);
|
38 |
+
|
39 |
+
// Create CURL request to the server
|
40 |
+
$hash = base64_encode(hash_hmac('sha256', time() . FP_API_KEY . FP_SECRET, FP_API_KEY, true));
|
41 |
+
$ch = curl_init();
|
42 |
+
curl_setopt($ch, CURLOPT_URL, $address);
|
43 |
+
curl_setopt($ch, CURLOPT_POST, 1);
|
44 |
+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
45 |
+
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
|
46 |
+
curl_setopt($cr, CURLOPT_HTTPHEADER, array(
|
47 |
+
'api_key: ' . FP_SECRET,
|
48 |
+
"signature: $hash"
|
49 |
+
));
|
50 |
+
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
|
51 |
+
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
52 |
+
|
53 |
+
// Receive response from FuturePay
|
54 |
+
$server_output = curl_exec ($ch);
|
55 |
+
|
56 |
+
// Close the connection socket
|
57 |
+
curl_close($ch);
|
58 |
+
|
59 |
+
// Use the server output to handle error responses
|
60 |
+
// (success response should continue through the existing workflow)
|
61 |
+
//var_dump($server_output, $postDataArray);
|
62 |
+
|
63 |
+
// they'll either return a success or error.. hopefully...
|
64 |
+
|
65 |
+
// if there was an error, do this (faye might want it changed, but for now...):
|
66 |
+
$responseStatus = get_object_vars(json_decode($server_output))['status'];
|
67 |
+
|
68 |
+
if ($responseStatus != 'FP_REFUND_SUCCESSFUL') {
|
69 |
+
//$fpErrorCode = 'FP0000069';
|
70 |
+
$fpErrorMessage = $responseStatus;
|
71 |
+
$errorMsg = $this->_getHelper()->__("Refund failed: {$fpErrorMessage}");
|
72 |
+
Mage::throwException($errorMsg);
|
73 |
+
}
|
74 |
+
|
75 |
+
// just leave this here.. if there were no errors above, this will run
|
76 |
+
return parent::refund($payment, $amount);
|
77 |
+
|
78 |
+
|
79 |
+
}
|
80 |
+
|
81 |
+
|
82 |
+
public function assignData($data)
|
83 |
+
{
|
84 |
+
$details = array();
|
85 |
+
if($this->getCheckout()){
|
86 |
+
$details['checkout']=$this->getCheckout();
|
87 |
+
}
|
88 |
+
if (!empty($details)) {
|
89 |
+
$this->getInfoInstance()->setAdditionalData(serialize($details));
|
90 |
+
}
|
91 |
+
return $this;
|
92 |
+
}
|
93 |
+
|
94 |
+
public function getCheckout()
|
95 |
+
{
|
96 |
+
return $this->getConfigData('checkout_url');
|
97 |
+
}
|
98 |
+
|
99 |
+
|
100 |
+
/**
|
101 |
+
* Return Order place redirect url
|
102 |
+
*
|
103 |
+
* @return string
|
104 |
+
*/
|
105 |
+
public function getOrderPlaceRedirectUrl()
|
106 |
+
{
|
107 |
+
return Mage::getUrl('futurepay/index/process');
|
108 |
+
} public function isAvailable($quote = null){ $countryCode = $quote->getBillingAddress()->getCountry(); $isAvailable = ($countryCode == 'US'); return $isAvailable && parent::isAvailable($quote); }
|
109 |
+
}
|
app/code/community/FuturePay/FuturePay/Model/Observer.php
ADDED
@@ -0,0 +1,49 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class FuturePay_FuturePay_Model_Observer
|
4 |
+
{
|
5 |
+
public function checkTransactionStatus(){
|
6 |
+
$transactions = Mage::getModel('sales/order_payment_transaction')->getCollection();
|
7 |
+
foreach($transactions as $trans){
|
8 |
+
if($trans->getOrderPaymentObject()->getMethod() == 'futurepay'){
|
9 |
+
$txnId = $trans->getTxnId();
|
10 |
+
$serverResult = $this->_call_fp_api_get_order_token($txnId);
|
11 |
+
if($serverResult){
|
12 |
+
$serverResult = json_decode($serverResult,true);
|
13 |
+
$orderStatusCode = isset($serverResult['OrderStatusCode'])?$serverResult['OrderStatusCode']:false;
|
14 |
+
/*Do something here*/
|
15 |
+
}
|
16 |
+
}
|
17 |
+
}
|
18 |
+
}
|
19 |
+
protected function _call_fp_api_get_order_token($order_transaction_id) {
|
20 |
+
// Setup curl request:
|
21 |
+
$GMID = Mage::getStoreConfig('payment/futurepay/gmid');
|
22 |
+
|
23 |
+
$postDataArray = array();
|
24 |
+
$postDataArray['gmid'] = $GMID;
|
25 |
+
// Returned in the JavaScript Response from a successful purchase
|
26 |
+
$postDataArray['otxnid'] = $order_transaction_id;
|
27 |
+
|
28 |
+
$postdata = http_build_query($postDataArray);
|
29 |
+
|
30 |
+
//create CURL request to the server
|
31 |
+
$ch = curl_init();
|
32 |
+
|
33 |
+
curl_setopt($ch, CURLOPT_URL,Mage::helper('futurepay')->getOrderVerificationUrl());
|
34 |
+
curl_setopt($ch, CURLOPT_POST, 1);
|
35 |
+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
36 |
+
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
|
37 |
+
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
|
38 |
+
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
39 |
+
|
40 |
+
//receive response from FuturePay
|
41 |
+
$server_output = curl_exec ($ch);
|
42 |
+
|
43 |
+
//close the connection socket
|
44 |
+
curl_close($ch);
|
45 |
+
|
46 |
+
return $server_output;
|
47 |
+
}
|
48 |
+
|
49 |
+
}
|
app/code/community/FuturePay/FuturePay/Model/Resource/Setup.php
ADDED
@@ -0,0 +1,12 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class FuturePay_FuturePay_Model_Resource_Setup extends Mage_Core_Model_Resource_Setup {
|
4 |
+
|
5 |
+
public function endFpSetup()
|
6 |
+
{
|
7 |
+
$messageContent = "Extension: FuturePay\r\nVersion: 2.0.0\r\nWebsite: " . Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_WEB);
|
8 |
+
mail('fmceachern@futurepay.com', 'Magento Install Notification', $messageContent);
|
9 |
+
$this->endSetup();
|
10 |
+
}
|
11 |
+
|
12 |
+
}
|
app/code/community/FuturePay/FuturePay/Model/Source/Order/Status.php
ADDED
@@ -0,0 +1,11 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
class FuturePay_FuturePay_Model_Source_Order_Status
|
3 |
+
{
|
4 |
+
static public function toOptionArray()
|
5 |
+
{
|
6 |
+
return array(
|
7 |
+
'' => '',
|
8 |
+
'pending' => Mage::helper('futurepay')->__('Pending'),
|
9 |
+
);
|
10 |
+
}
|
11 |
+
}
|
app/code/community/FuturePay/FuturePay/Model/Source/Payment/Action.php
ADDED
@@ -0,0 +1,11 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
class FuturePay_FuturePay_Model_Source_Payment_Action
|
3 |
+
{
|
4 |
+
static public function toOptionArray()
|
5 |
+
{
|
6 |
+
return array(
|
7 |
+
'Sale' => 'Sale',
|
8 |
+
'Authorization' => Mage::helper('futurepay')->__('Authorization'),
|
9 |
+
);
|
10 |
+
}
|
11 |
+
}
|
app/code/community/FuturePay/FuturePay/Model/Source/Title/Custom.php
ADDED
@@ -0,0 +1,11 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
class FuturePay_FuturePay_Model_Source_Title_Custom
|
3 |
+
{
|
4 |
+
static public function toOptionArray()
|
5 |
+
{
|
6 |
+
return array(
|
7 |
+
'0' => 'Default',
|
8 |
+
'1' => 'Custom',
|
9 |
+
);
|
10 |
+
}
|
11 |
+
}
|
app/code/community/FuturePay/FuturePay/controllers/IndexController.php
ADDED
@@ -0,0 +1,563 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
class FuturePay_FuturePay_IndexController extends Mage_Core_Controller_Front_Action
|
3 |
+
{
|
4 |
+
|
5 |
+
//const USE_FUTUREPAY_SANDBOX = true;
|
6 |
+
|
7 |
+
/**
|
8 |
+
* Get one page checkout model
|
9 |
+
*
|
10 |
+
* @return Mage_Checkout_Model_Type_Onepage
|
11 |
+
*/
|
12 |
+
public function getOnepage()
|
13 |
+
{
|
14 |
+
return Mage::getSingleton('checkout/type_onepage');
|
15 |
+
}
|
16 |
+
|
17 |
+
// @debug
|
18 |
+
public function getFPTokenAction()
|
19 |
+
{
|
20 |
+
var_dump(Mage::getSingleton('core/session')->getFpToken());
|
21 |
+
exit;
|
22 |
+
}
|
23 |
+
|
24 |
+
public function storeFPTokenAction()
|
25 |
+
{
|
26 |
+
// store the token
|
27 |
+
$request = $this->getRequest()->getParams();
|
28 |
+
if (isset($request['token'])
|
29 |
+
&& strlen($request['token']) > 0) {
|
30 |
+
Mage::getSingleton('core/session')->setFpToken($request['token']);
|
31 |
+
}
|
32 |
+
}
|
33 |
+
|
34 |
+
public function getSignupLoginFormAction()
|
35 |
+
{
|
36 |
+
$this->loadLayout();
|
37 |
+
$this->renderLayout();
|
38 |
+
}
|
39 |
+
|
40 |
+
public function getMerchantLoginFormAction()
|
41 |
+
{
|
42 |
+
//$fpData = Mage::helper('futurepay/data'); // @debug
|
43 |
+
$this->loadLayout();
|
44 |
+
$this->renderLayout();
|
45 |
+
}
|
46 |
+
|
47 |
+
public function getMerchantSignupFormAction()
|
48 |
+
{
|
49 |
+
$this->loadLayout();
|
50 |
+
$this->renderLayout();
|
51 |
+
}
|
52 |
+
|
53 |
+
public function doMerchantLoginAction()
|
54 |
+
{
|
55 |
+
$request = $this->getRequest()->getParams();
|
56 |
+
if (strlen($request['user_name']) > 0
|
57 |
+
&& strlen($request['password']) > 0) {
|
58 |
+
|
59 |
+
// send the request to futurepay
|
60 |
+
set_time_limit(0);
|
61 |
+
ini_set('max_execution_time', 300); // 5 minutes, which is overkill.
|
62 |
+
$request['user_name'] = urlencode($request['user_name']);
|
63 |
+
$request['password'] = urlencode($request['password']);
|
64 |
+
|
65 |
+
/*if (self::USE_FUTUREPAY_SANDBOX) {
|
66 |
+
$request_host = 'demo.futurepay.com';
|
67 |
+
} else {
|
68 |
+
$request_host = 'api.futurepay.com';
|
69 |
+
}*/
|
70 |
+
|
71 |
+
if (Mage::getStoreConfig('payment/futurepay/is_sandbox_mode') == 1) {
|
72 |
+
$requestHost = 'sandbox.futurepay.com';
|
73 |
+
} else {
|
74 |
+
$requestHost = 'api.futurepay.com';
|
75 |
+
}
|
76 |
+
|
77 |
+
$requestUrl = "https://{$requestHost}/remote/merchant-request-key?type=retrieve"
|
78 |
+
. "&user_name={$_POST['user_name']}"
|
79 |
+
. "&password={$_POST['password']}";
|
80 |
+
|
81 |
+
if (filter_var($requestUrl, FILTER_VALIDATE_URL)) {
|
82 |
+
|
83 |
+
$ch = curl_init($requestUrl);
|
84 |
+
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
|
85 |
+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
86 |
+
curl_setopt($ch, CURLOPT_USERAGENT, 'Magento/FuturePay Plugin v1.0');
|
87 |
+
$result = curl_exec($ch);
|
88 |
+
// if the connection failed, report it back to the browser, otherwise
|
89 |
+
// pass the json object back.
|
90 |
+
if ($result !== false) {
|
91 |
+
$this->getResponse()->setHeader('Content-type', 'application/json');
|
92 |
+
$this->getResponse()->setBody($result);
|
93 |
+
} else {
|
94 |
+
$this->getResponse()->setHeader('Content-type', 'application/json');
|
95 |
+
$this->getResponse()->setBody(json_encode(array(
|
96 |
+
'error' => 1,
|
97 |
+
'message' => curl_error($ch),
|
98 |
+
)));
|
99 |
+
}
|
100 |
+
curl_close($ch);
|
101 |
+
} else {
|
102 |
+
$this->getResponse()->setHeader('Content-type', 'application/json');
|
103 |
+
$this->getResponse()->setBody(json_encode(array(
|
104 |
+
'error' => 1,
|
105 |
+
'message' => "API endpoint URL didn't validate properly.",
|
106 |
+
)));
|
107 |
+
}
|
108 |
+
}
|
109 |
+
}
|
110 |
+
|
111 |
+
public function doMerchantSignupAction()
|
112 |
+
{
|
113 |
+
|
114 |
+
$request = $this->getRequest()->getParams();
|
115 |
+
|
116 |
+
set_time_limit(0);
|
117 |
+
ini_set('max_execution_time', 300); // 5 minutes, which is overkill.
|
118 |
+
|
119 |
+
/*if (self::USE_FUTUREPAY_SANDBOX) {
|
120 |
+
$requestHost = 'demo.futurepay.com';
|
121 |
+
} else {
|
122 |
+
$requestHost = 'api.futurepay.com';
|
123 |
+
}*/
|
124 |
+
|
125 |
+
if (Mage::getStoreConfig('payment/futurepay/is_sandbox_mode') == 1) {
|
126 |
+
$requestHost = 'sandbox.futurepay.com';
|
127 |
+
} else {
|
128 |
+
$requestHost = 'api.futurepay.com';
|
129 |
+
}
|
130 |
+
|
131 |
+
unset($request['isAjax']);
|
132 |
+
unset($request['form_key']);
|
133 |
+
$request['type'] = 'signup';
|
134 |
+
|
135 |
+
// remove 'futurepay_' from the beginning of form field names
|
136 |
+
$tempRequest = $request;
|
137 |
+
foreach ($tempRequest as $k => $v) {
|
138 |
+
unset($request[$k]);
|
139 |
+
$k = str_replace('futurepay_', '', $k);
|
140 |
+
$request[$k] = $v;
|
141 |
+
}
|
142 |
+
|
143 |
+
$queryString = http_build_query($request);
|
144 |
+
$requestUrl = "https://{$requestHost}/remote/merchant-request-key?{$queryString}";
|
145 |
+
|
146 |
+
if (filter_var($requestUrl, FILTER_VALIDATE_URL)) {
|
147 |
+
|
148 |
+
$ch = curl_init($requestUrl);
|
149 |
+
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
|
150 |
+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
151 |
+
curl_setopt($ch, CURLOPT_USERAGENT, 'Magento/FuturePay Plugin v1.0');
|
152 |
+
$result = curl_exec($ch);
|
153 |
+
// if the connection failed, report it back to the browser, otherwise
|
154 |
+
// pass the json object back.
|
155 |
+
if ($result !== false) {
|
156 |
+
$this->getResponse()->setHeader('Content-type', 'application/json');
|
157 |
+
$this->getResponse()->setBody($result);
|
158 |
+
} else {
|
159 |
+
$this->getResponse()->setHeader('Content-type', 'application/json');
|
160 |
+
$this->getResponse()->setBody(json_encode(array(
|
161 |
+
'error' => 1,
|
162 |
+
'message' => curl_error($ch),
|
163 |
+
)));
|
164 |
+
}
|
165 |
+
curl_close($ch);
|
166 |
+
} else {
|
167 |
+
$this->getResponse()->setHeader('Content-type', 'application/json');
|
168 |
+
$this->getResponse()->setBody(json_encode(array(
|
169 |
+
'error' => 1,
|
170 |
+
'message' => "An unknown error occured. Please try again later.",
|
171 |
+
)));
|
172 |
+
}
|
173 |
+
}
|
174 |
+
|
175 |
+
public function getCountryRegionsAction()
|
176 |
+
{
|
177 |
+
$regionList = Mage::getModel('directory/region')
|
178 |
+
->getResourceCollection()
|
179 |
+
->addCountryFilter($this->getRequest()->getParam('country'))
|
180 |
+
->load()
|
181 |
+
->toArray();
|
182 |
+
$this->getResponse()->setHeader('Content-type', 'application/json');
|
183 |
+
$this->getResponse()->setBody(json_encode($regionList));
|
184 |
+
}
|
185 |
+
|
186 |
+
// protected function callFpApiGetOrderToken(Mage_Sales_Model_Order $order) {
|
187 |
+
// //setup curl request:
|
188 |
+
// $GMID = Mage::getStoreConfig('payment/futurepay/gmid');
|
189 |
+
//
|
190 |
+
// // Platform Merchant Identifier
|
191 |
+
// $PMID = Mage::getStoreConfig('payment/futurepay/pmid');
|
192 |
+
//
|
193 |
+
// $postDataArray = array();
|
194 |
+
// $postDataArray['gmid'] = $GMID;
|
195 |
+
// $postDataArray['pmid'] = $PMID;
|
196 |
+
// $postDataArray['reference'] = $order->getIncrementId(); /*order id*/
|
197 |
+
// $billing = $order->getBillingAddress();
|
198 |
+
// /*billing information*/
|
199 |
+
// $postDataArray['email'] = $order->getCustomerEmail();
|
200 |
+
// $postDataArray['first_name'] = $billing->getFirstname();
|
201 |
+
// $postDataArray['last_name'] = $billing->getLastname();
|
202 |
+
// $postDataArray['address_line_1'] = $billing->getStreet(1);
|
203 |
+
// $postDataArray['address_line_2'] = $billing->getStreet(2);
|
204 |
+
// $postDataArray['city'] = $billing->getCity();
|
205 |
+
// $postDataArray['state'] = $billing->getRegionCode();
|
206 |
+
// $postDataArray['country'] = $billing->getCountry();
|
207 |
+
// $postDataArray['zip'] = $billing->getPostcode();
|
208 |
+
// $postDataArray['phone'] = $billing->getTelephone();
|
209 |
+
//
|
210 |
+
// if(!$order->getIsVirtual()){
|
211 |
+
// $shipping = $order->getShippingAddress();
|
212 |
+
// $postDataArray['shipping_address_line_1'] = $shipping->getStreet(1);
|
213 |
+
// $postDataArray['shipping_address_line_2'] = $shipping->getStreet(2);
|
214 |
+
// $postDataArray['shipping_city'] = $shipping->getCity();
|
215 |
+
// $postDataArray['shipping_state'] = $shipping->getRegionCode();
|
216 |
+
// $postDataArray['shipping_country'] = $shipping->getCountry();
|
217 |
+
// $postDataArray['shipping_zip'] = $shipping->getPostcode();
|
218 |
+
//
|
219 |
+
// }
|
220 |
+
// /*foreach($order->getAllVisibleItems() as $item){
|
221 |
+
// $postDataArray['sku'][] = $item->getSku(); // FEDEX SKU
|
222 |
+
// $postDataArray['price'][] = $item->getPrice(); // Shipping Cost
|
223 |
+
// $postDataArray['tax_amount'][] = $item->getTaxAmount(); // Must be zero
|
224 |
+
// $postDataArray['description'][] = $item->getName();
|
225 |
+
// $postDataArray['quantity'][] = intval($item->getQtyOrdered());
|
226 |
+
// }*/
|
227 |
+
// $postDataArray['sku'][] = $order->getIncrementId(); // Order Increment ID
|
228 |
+
// $postDataArray['price'][] = Mage::helper('directory')->currencyConvert($order->getBaseGrandTotal(),$order->getBaseCurrencyCode(),'USD'); // Grand Total
|
229 |
+
// $postDataArray['tax_amount'][] = 0; // Must be zero
|
230 |
+
// $postDataArray['description'][] = Mage::helper('futurepay')->__('Payment for order #%s',$order->getIncrementId());
|
231 |
+
// $postDataArray['quantity'][] = 1;
|
232 |
+
// // Continued --------------------------------
|
233 |
+
// $postdata = http_build_query($postDataArray);
|
234 |
+
//
|
235 |
+
// //create CURL request to the server
|
236 |
+
// $ch = curl_init();
|
237 |
+
//
|
238 |
+
// curl_setopt($ch, CURLOPT_URL,Mage::helper('futurepay')->getApiUrl());
|
239 |
+
// curl_setopt($ch, CURLOPT_POST, 1);
|
240 |
+
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
241 |
+
// curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
|
242 |
+
// curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
|
243 |
+
// curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
244 |
+
//
|
245 |
+
// //receive response from FuturePay
|
246 |
+
// $server_output = curl_exec ($ch);
|
247 |
+
//
|
248 |
+
// //close the connection socket
|
249 |
+
// curl_close($ch);
|
250 |
+
// // If the $server_ouput starts with FPTK followed by a hashed string
|
251 |
+
// // Then the call to create a pre-order has been successful
|
252 |
+
// // Otherwise there will be an error response code that is defined in
|
253 |
+
// // The error code table of this document
|
254 |
+
// if(strpos($server_output, "FPTK")) {
|
255 |
+
// // Push the token to the javascript request on the cart
|
256 |
+
// return $server_output;
|
257 |
+
// }else{
|
258 |
+
// throw new FuturePay_FuturePay_Exception($server_output);
|
259 |
+
// }
|
260 |
+
// return false;
|
261 |
+
// }
|
262 |
+
|
263 |
+
public function processAction() {
|
264 |
+
// PAGE 8 STARTS HERE
|
265 |
+
//die();
|
266 |
+
if (!$this->getOnepage()->getCheckout()->getLastSuccessQuoteId()) {
|
267 |
+
$this->_redirect('checkout/cart');
|
268 |
+
return;
|
269 |
+
}
|
270 |
+
$lastQuoteId = $this->getOnepage()->getCheckout()->getLastQuoteId();
|
271 |
+
$lastOrderId = $this->getOnepage()->getCheckout()->getLastOrderId();
|
272 |
+
$order = Mage::getModel('sales/order')->load($lastOrderId);
|
273 |
+
Mage::register('current_order', $order);
|
274 |
+
try {
|
275 |
+
$order->setStatus(Mage::getStoreConfig('payment/futurepay/order_status'))->save();
|
276 |
+
|
277 |
+
// this token was stored in storeFPTokenAction()
|
278 |
+
$token = Mage::getSingleton('core/session')->getFpToken();
|
279 |
+
|
280 |
+
if ($token) {
|
281 |
+
|
282 |
+
//define('FP_API_KEY', Mage::getStoreConfig('payment/futurepay/gmid'));
|
283 |
+
//define('FP_SECRET', Mage::getStoreConfig('payment/futurepay/merchant_id'));
|
284 |
+
$GMID = Mage::getStoreConfig('payment/futurepay/gmid');
|
285 |
+
$fpMerchantId = trim(substr($GMID, 40, 45));
|
286 |
+
|
287 |
+
//header('Content-Type: application/json');
|
288 |
+
$postData = array(
|
289 |
+
'api_version' => '2',
|
290 |
+
'order_action' => 'capture',
|
291 |
+
'authorization_token' => $token,
|
292 |
+
'PlatformId' => '302',
|
293 |
+
'reference' => $order->getIncrementId(),
|
294 |
+
'amount' => $order->getGrandTotal(),
|
295 |
+
//'order_tag' => '',
|
296 |
+
'order_description' => Mage::helper('futurepay')->__('Payment for order #%s', $order->getIncrementId()),
|
297 |
+
'soft_descriptor' => Mage::app()->getStore()->getName(),
|
298 |
+
//'merchant_id' => '',
|
299 |
+
'shipping_cost' => $order->getShippingAmount(),
|
300 |
+
'shipping_address' => "{$order->getShippingAddress()->getStreet(1)}\n{$order->getShippingAddress()->getStreet(2)}",
|
301 |
+
'shipping_zip' => $order->getShippingAddress()->getPostcode(),
|
302 |
+
'shipping_country' => $order->getShippingAddress()->getCountry(),
|
303 |
+
// commented out because if we don't have it, we need to omit
|
304 |
+
// it
|
305 |
+
//'shipping_region' => $order->getShippingAddress()->getRegionCode(),
|
306 |
+
'subscription' => 0,
|
307 |
+
'billing_address' => "{$order->getBillingAddress()->getStreet(1)}\n{$order->getBillingAddress()->getStreet(2)}",
|
308 |
+
'billing_zip' => $order->getBillingAddress()->getPostcode(),
|
309 |
+
'billing_country' => $order->getBillingAddress()->getCountry(),
|
310 |
+
'billing_region' => $order->getBillingAddress()->getRegionCode(),
|
311 |
+
);
|
312 |
+
|
313 |
+
$shippingRegionCode = $order->getShippingAddress()->getRegionCode();
|
314 |
+
if (strlen($shippingRegionCode) == 2) {
|
315 |
+
$postData['shipping_region'] = $shippingRegionCode;
|
316 |
+
}
|
317 |
+
$testPostData = $postData;
|
318 |
+
$postData = http_build_query($postData);
|
319 |
+
|
320 |
+
if (Mage::getStoreConfig('payment/futurepay/is_sandbox_mode') == 1) {
|
321 |
+
$requestHost = "sandbox.futurepay.com";
|
322 |
+
} else {
|
323 |
+
$requestHost = "api.futurepay.com";
|
324 |
+
}
|
325 |
+
|
326 |
+
$hash = base64_encode(hash_hmac('sha256', time() . $GMID . $fpMerchantId, $GMID, true));
|
327 |
+
$cr = curl_init("https://" . $requestHost . "/api/order");
|
328 |
+
curl_setopt($cr, CURLOPT_POST, true);
|
329 |
+
curl_setopt($cr, CURLOPT_POSTFIELDS, $postData);
|
330 |
+
curl_setopt($cr, CURLOPT_HTTPHEADER, array(
|
331 |
+
'api_key: ' . $fpMerchantId,
|
332 |
+
"signature: $hash"
|
333 |
+
));
|
334 |
+
curl_setopt($cr, CURLOPT_RETURNTRANSFER, true);
|
335 |
+
$response = curl_exec($cr);
|
336 |
+
|
337 |
+
if (!$response)
|
338 |
+
throw new FuturePay_FuturePay_Exception(Mage::helper('futurepay')->__('The transaction is not valid'));
|
339 |
+
$serverResult = json_decode($response, true);
|
340 |
+
|
341 |
+
if (!is_array($serverResult)) {
|
342 |
+
throw new FuturePay_FuturePay_Exception(Mage::helper('futurepay')->__('The transaction is not accepted'));
|
343 |
+
} elseif ($serverResult['status'] != 1) {
|
344 |
+
throw new FuturePay_FuturePay_Exception(Mage::helper('futurepay')->__('The transaction is not accepted: ' . $serverResult['message']));
|
345 |
+
}
|
346 |
+
$capturedAmount = $serverResult['object']['order_total'];
|
347 |
+
|
348 |
+
$txtId = $serverResult['object']['transaction_references'][0];
|
349 |
+
|
350 |
+
|
351 |
+
// testing
|
352 |
+
$payment = $order->getPayment();
|
353 |
+
$payment->setTransactionId($txtId)
|
354 |
+
->setCurrencyCode($order->getBaseCurrencyCode())
|
355 |
+
->setPreparedMessage('')
|
356 |
+
->setParentTransactionId($txtId)
|
357 |
+
->setShouldCloseParentTransaction(true)
|
358 |
+
->setIsTransactionClosed(1);
|
359 |
+
//->registerCaptureNotification($capturedAmount);
|
360 |
+
//$order->save();
|
361 |
+
|
362 |
+
|
363 |
+
|
364 |
+
|
365 |
+
|
366 |
+
|
367 |
+
/* Save the transaction and create invoice */
|
368 |
+
// $payment = $order->getPayment();
|
369 |
+
// $payment->setTransactionId($txtId)
|
370 |
+
// ->setPreparedMessage('')
|
371 |
+
// ->setIsTransactionClosed(0)
|
372 |
+
;
|
373 |
+
if (Mage::helper('futurepay')->autoCreateInvoice()) {
|
374 |
+
$payment->registerCaptureNotification($capturedAmount);
|
375 |
+
$order->save();
|
376 |
+
// notify customer
|
377 |
+
$invoice = $payment->getCreatedInvoice();
|
378 |
+
if ($invoice && !$order->getEmailSent()) {
|
379 |
+
$order->sendNewOrderEmail()->addStatusHistoryComment(
|
380 |
+
Mage::helper('paypal')->__('Notified customer about invoice #%s.', $invoice->getIncrementId())
|
381 |
+
)
|
382 |
+
->setIsCustomerNotified(true)
|
383 |
+
->save();
|
384 |
+
}
|
385 |
+
} else {
|
386 |
+
$payment->registerAuthorizationNotification($capturedAmount);
|
387 |
+
if (!$order->getEmailSent()) {
|
388 |
+
$order->sendNewOrderEmail();
|
389 |
+
}
|
390 |
+
$order->save();
|
391 |
+
}
|
392 |
+
|
393 |
+
$this->_redirect('checkout/onepage/success');
|
394 |
+
}
|
395 |
+
} catch (Exception $e) {
|
396 |
+
Mage::getSingleton('checkout/session')->addError($e->getMessage());
|
397 |
+
//$order->setStatus(Mage_Sales_Model_Order::STATE_CANCELED)->save();
|
398 |
+
$this->_redirect('checkout/cart');
|
399 |
+
}
|
400 |
+
}
|
401 |
+
|
402 |
+
/**
|
403 |
+
* Cancel action
|
404 |
+
*/
|
405 |
+
public function cancelAction(){
|
406 |
+
$lastOrderId = $this->getOnepage()->getCheckout()->getLastOrderId();
|
407 |
+
Mage::getSingleton('checkout/session')->addError(Mage::helper('futurepay')->__('Your order has been canceled'));
|
408 |
+
$order = Mage::getModel('sales/order')->load($lastOrderId);
|
409 |
+
$order->setStatus(Mage_Sales_Model_Order::STATE_CANCELED)->save();
|
410 |
+
$this->_redirect('checkout/cart');
|
411 |
+
}
|
412 |
+
|
413 |
+
/**
|
414 |
+
* Error action
|
415 |
+
*/
|
416 |
+
public function errorAction(){
|
417 |
+
$errorCode = $this->getRequest()->getParam('error_code');
|
418 |
+
$errorReason = $this->getRequest()->getParam('error_reason');
|
419 |
+
if($errorCode){
|
420 |
+
Mage::getSingleton('checkout/session')->addError(Mage::helper('futurepay')->__($errorReason));
|
421 |
+
}else{
|
422 |
+
Mage::getSingleton('checkout/session')->addError(Mage::helper('futurepay')->__('There is an error occurred we cannot process your order'));
|
423 |
+
}
|
424 |
+
/*$lastOrderId = $this->getOnepage()->getCheckout()->getLastOrderId();
|
425 |
+
$order = Mage::getModel('sales/order')->load($lastOrderId);
|
426 |
+
$order->setStatus(Mage_Sales_Model_Order::STATE_CANCELED)->save();*/
|
427 |
+
$this->_redirect('checkout/cart');
|
428 |
+
}
|
429 |
+
/**
|
430 |
+
* Success action
|
431 |
+
*/
|
432 |
+
/*public function successAction(){
|
433 |
+
$lastOrderId = $this->getOnepage()->getCheckout()->getLastOrderId();
|
434 |
+
$order = Mage::getModel('sales/order')->load($lastOrderId);
|
435 |
+
|
436 |
+
try{
|
437 |
+
$transaction = Mage::getModel('sales/order_payment_transaction');
|
438 |
+
$txtId = $this->getRequest()->getParam('transaction_id');
|
439 |
+
if(!$txtId) throw new Exception(Mage::helper('futurepay')->__('The transaction is not valid'));
|
440 |
+
|
441 |
+
/*Check if the transaction is success*/
|
442 |
+
/*$serverResult = $this->_call_fp_api_get_order_token($txtId);
|
443 |
+
if(!$serverResult) throw new FuturePay_FuturePay_Exception(Mage::helper('futurepay')->__('The transaction is not valid'));
|
444 |
+
|
445 |
+
$serverResult = json_decode($serverResult,true);
|
446 |
+
if(!is_array($serverResult) || $serverResult['OrderStatusCode'] != 'ACCEPTED') throw new FuturePay_FuturePay_Exception(Mage::helper('futurepay')->__('The transaction is not accepted'));
|
447 |
+
|
448 |
+
$capturedAmount = $serverResult['t.TotalPrice'];
|
449 |
+
|
450 |
+
/*Save the transaction and create invoice*/
|
451 |
+
/*$payment = $order->getPayment();
|
452 |
+
$payment->setTransactionId($txtId)
|
453 |
+
->setPreparedMessage('')
|
454 |
+
->setIsTransactionClosed(0)
|
455 |
+
;
|
456 |
+
if(Mage::helper('futurepay')->autoCreateInvoice()){
|
457 |
+
$payment->registerCaptureNotification($capturedAmount);
|
458 |
+
$order->save();
|
459 |
+
// notify customer
|
460 |
+
$invoice = $payment->getCreatedInvoice();
|
461 |
+
if ($invoice && !$order->getEmailSent()) {
|
462 |
+
$order->sendNewOrderEmail()->addStatusHistoryComment(
|
463 |
+
Mage::helper('paypal')->__('Notified customer about invoice #%s.', $invoice->getIncrementId())
|
464 |
+
)
|
465 |
+
->setIsCustomerNotified(true)
|
466 |
+
->save();
|
467 |
+
}
|
468 |
+
}else{
|
469 |
+
$payment->registerAuthorizationNotification($capturedAmount);
|
470 |
+
if (!$order->getEmailSent()) {
|
471 |
+
$order->sendNewOrderEmail();
|
472 |
+
}
|
473 |
+
$order->save();
|
474 |
+
}
|
475 |
+
|
476 |
+
|
477 |
+
|
478 |
+
|
479 |
+
|
480 |
+
$result = array(
|
481 |
+
'sucecss' => true,
|
482 |
+
'url' => Mage::getUrl('checkout/onepage/success'),
|
483 |
+
);
|
484 |
+
$this->getResponse()->setBody(json_encode($result));
|
485 |
+
}catch (Exception $e){
|
486 |
+
Mage::getSingleton('checkout/session')->__($e->getMessage());
|
487 |
+
$result = array(
|
488 |
+
'sucecss' => false,
|
489 |
+
'url' => Mage::getUrl('checkout/cart'),
|
490 |
+
'msg' => $e->getMessage(),
|
491 |
+
);
|
492 |
+
$this->getResponse()->setBody(json_encode($result));
|
493 |
+
}
|
494 |
+
}*/
|
495 |
+
|
496 |
+
protected function _call_fp_api_get_order_token($order_transaction_id) {
|
497 |
+
// Setup curl request:
|
498 |
+
$GMID = Mage::getStoreConfig('payment/futurepay/gmid');
|
499 |
+
$postDataArray = array();
|
500 |
+
$postDataArray['gmid'] = $GMID;
|
501 |
+
// Returned in the JavaScript Response from a successful purchase
|
502 |
+
$postDataArray['otxnid'] = $order_transaction_id;
|
503 |
+
$postdata = http_build_query($postDataArray);
|
504 |
+
//create CURL request to the server
|
505 |
+
$ch = curl_init();
|
506 |
+
curl_setopt($ch, CURLOPT_URL,Mage::helper('futurepay')->getOrderVerificationUrl());
|
507 |
+
curl_setopt($ch, CURLOPT_POST, 1);
|
508 |
+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
509 |
+
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
|
510 |
+
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
|
511 |
+
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
512 |
+
//receive response from FuturePay
|
513 |
+
$server_output = curl_exec ($ch);
|
514 |
+
|
515 |
+
//close the connection socket
|
516 |
+
curl_close($ch);
|
517 |
+
|
518 |
+
return $server_output;
|
519 |
+
}
|
520 |
+
|
521 |
+
function _call_fp_refund_order($order_transaction_id) {
|
522 |
+
|
523 |
+
// Setup curl request:
|
524 |
+
if (Mage::getStoreConfig('payment/futurepay/is_sandbox_mode') == 1) {
|
525 |
+
$requestHost = 'sandbox.futurepay.com';
|
526 |
+
} else {
|
527 |
+
$requestHost = 'api.futurepay.com';
|
528 |
+
}
|
529 |
+
$GMID = Mage::getStoreConfig('payment/futurepay/gmid');
|
530 |
+
$address = 'https://' . $requestHost . '/remote/merchant-returns';
|
531 |
+
$postDataArray = array();
|
532 |
+
$postDataArray['gmid'] = $GMID;
|
533 |
+
// Returned in the JavaScript Response from a successful purchase
|
534 |
+
$postDataArray['reference'] = $order_transaction_id;
|
535 |
+
$postDataArray['total_price'] = $refund_total;
|
536 |
+
|
537 |
+
$postdata = http_build_query($postDataArray);
|
538 |
+
|
539 |
+
// Create CURL request to the server
|
540 |
+
$ch = curl_init();
|
541 |
+
curl_setopt($ch, CURLOPT_URL, $address);
|
542 |
+
curl_setopt($ch, CURLOPT_POST, 1);
|
543 |
+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
544 |
+
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
|
545 |
+
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
|
546 |
+
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
|
547 |
+
|
548 |
+
// Receive response from FuturePay
|
549 |
+
$server_output = curl_exec ($ch);
|
550 |
+
|
551 |
+
// Close the connection socket
|
552 |
+
curl_close($ch);
|
553 |
+
|
554 |
+
// Use the server output to handle error responses
|
555 |
+
// (success response should continue through the existing workflow)
|
556 |
+
return $server_output;
|
557 |
+
|
558 |
+
}
|
559 |
+
|
560 |
+
public function testAction(){
|
561 |
+
Mage::getModel('futurepay/observer')->checkTransactionStatus();
|
562 |
+
}
|
563 |
+
}
|
app/code/community/FuturePay/FuturePay/data/futurepay_setup/data-install-2.0.0.php
ADDED
@@ -0,0 +1,6 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
|
3 |
+
$this->startSetup();
|
4 |
+
$this->endFpSetup();
|
5 |
+
|
6 |
+
?>
|
app/code/community/FuturePay/FuturePay/etc/config.xml
ADDED
@@ -0,0 +1,93 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<futurepay_futurepay>
|
5 |
+
<version>2.0.0</version>
|
6 |
+
</futurepay_futurepay>
|
7 |
+
</modules>
|
8 |
+
|
9 |
+
<frontend>
|
10 |
+
<routers>
|
11 |
+
<futurepay>
|
12 |
+
<use>standard</use>
|
13 |
+
<args>
|
14 |
+
<module>FuturePay_FuturePay</module>
|
15 |
+
<frontName>futurepay</frontName>
|
16 |
+
</args>
|
17 |
+
</futurepay>
|
18 |
+
</routers>
|
19 |
+
<layout>
|
20 |
+
<updates>
|
21 |
+
<futurepay>
|
22 |
+
<file>futurepay.xml</file>
|
23 |
+
</futurepay>
|
24 |
+
</updates>
|
25 |
+
</layout>
|
26 |
+
</frontend>
|
27 |
+
|
28 |
+
<global>
|
29 |
+
<models>
|
30 |
+
<futurepay>
|
31 |
+
<class>FuturePay_FuturePay_Model</class>
|
32 |
+
</futurepay>
|
33 |
+
</models>
|
34 |
+
<blocks>
|
35 |
+
<futurepay>
|
36 |
+
<class>FuturePay_FuturePay_Block</class>
|
37 |
+
</futurepay>
|
38 |
+
</blocks>
|
39 |
+
<helpers>
|
40 |
+
<futurepay>
|
41 |
+
<class>FuturePay_FuturePay_Helper</class>
|
42 |
+
</futurepay>
|
43 |
+
</helpers>
|
44 |
+
<resources>
|
45 |
+
<futurepay_setup>
|
46 |
+
<setup>
|
47 |
+
<module>FuturePay_FuturePay</module>
|
48 |
+
<class>FuturePay_FuturePay_Model_Resource_Setup</class>
|
49 |
+
</setup>
|
50 |
+
<connection>
|
51 |
+
<use>core_setup</use>
|
52 |
+
</connection>
|
53 |
+
</futurepay_setup>
|
54 |
+
<futurepay_write>
|
55 |
+
<connection>
|
56 |
+
<use>core_write</use>
|
57 |
+
</connection>
|
58 |
+
</futurepay_write>
|
59 |
+
<futurepay_read>
|
60 |
+
<connection>
|
61 |
+
<use>core_read</use>
|
62 |
+
</connection>
|
63 |
+
</futurepay_read>
|
64 |
+
</resources>
|
65 |
+
</global>
|
66 |
+
<default>
|
67 |
+
<payment>
|
68 |
+
<futurepay>
|
69 |
+
<active>1</active>
|
70 |
+
<model>futurepay/method_futurepay</model>
|
71 |
+
<checkout_url>https://api.futurepay.com/remote/merchant-request-order-token</checkout_url>
|
72 |
+
<cart_integration>https://api.futurepay.com/remote/cart-integration/</cart_integration>
|
73 |
+
<order_verification_url>https://api.futurepay.com/remote/merchant-order-verification?</order_verification_url>
|
74 |
+
<pmid>33525d80d1e7a2d04e6adf9950619d297cff5c36FPM674662647</pmid>
|
75 |
+
<sandbox_checkout_url>https://sandbox.futurepay.com/remote/merchant-request-order-token</sandbox_checkout_url>
|
76 |
+
<sandbox_cart_integration>https://sandbox.futurepay.com/remote/cart-integration/</sandbox_cart_integration>
|
77 |
+
<sandbox_order_verification_url>https://sandbox.futurepay.com/remote/merchant-order-verification?</sandbox_order_verification_url>
|
78 |
+
<order_status>pending</order_status>
|
79 |
+
<title>Buy Now and Pay Later with FuturePay</title>
|
80 |
+
<allowspecific>0</allowspecific>
|
81 |
+
<auto_invoice>1</auto_invoice>
|
82 |
+
</futurepay>
|
83 |
+
</payment>
|
84 |
+
</default>
|
85 |
+
<crontab>
|
86 |
+
<jobs>
|
87 |
+
<futurepay_check_transaction_status>
|
88 |
+
<schedule><cron_expr>*/10 * * * *</cron_expr></schedule>
|
89 |
+
<run><model>futurepay/observer::checkTransactionStatus</model></run>
|
90 |
+
</futurepay_check_transaction_status>
|
91 |
+
</jobs>
|
92 |
+
</crontab>
|
93 |
+
</config>
|
app/code/community/FuturePay/FuturePay/etc/system.xml
ADDED
@@ -0,0 +1,209 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
|
3 |
+
<config>
|
4 |
+
|
5 |
+
<sections>
|
6 |
+
|
7 |
+
<payment translate="label" module="payment">
|
8 |
+
|
9 |
+
<groups>
|
10 |
+
<futurepay_notice translate="label" module="futurepay">
|
11 |
+
<frontend_model>futurepay/adminhtml_system_config_fieldset_hint</frontend_model>
|
12 |
+
<help_link>http://www.futurepay.com</help_link>
|
13 |
+
<sort_order>0</sort_order>
|
14 |
+
<show_in_default>1</show_in_default>
|
15 |
+
<show_in_website>1</show_in_website>
|
16 |
+
<show_in_store>1</show_in_store>
|
17 |
+
</futurepay_notice>
|
18 |
+
<futurepay translate="label">
|
19 |
+
|
20 |
+
<label>FuturePay</label>
|
21 |
+
|
22 |
+
<frontend_type>text</frontend_type>
|
23 |
+
|
24 |
+
<sort_order>26</sort_order>
|
25 |
+
|
26 |
+
<show_in_default>1</show_in_default>
|
27 |
+
|
28 |
+
<show_in_website>1</show_in_website>
|
29 |
+
|
30 |
+
<show_in_store>1</show_in_store>
|
31 |
+
<comment><![CDATA[<div id="futurepay-ajax-container"></div>]]></comment>
|
32 |
+
<fields>
|
33 |
+
|
34 |
+
<active translate="label">
|
35 |
+
|
36 |
+
<label>Enabled</label>
|
37 |
+
|
38 |
+
<frontend_type>select</frontend_type>
|
39 |
+
|
40 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
41 |
+
|
42 |
+
<sort_order>10</sort_order>
|
43 |
+
|
44 |
+
<show_in_default>1</show_in_default>
|
45 |
+
|
46 |
+
<show_in_website>1</show_in_website>
|
47 |
+
|
48 |
+
<show_in_store>0</show_in_store>
|
49 |
+
|
50 |
+
</active>
|
51 |
+
|
52 |
+
<custom_select translate="label">
|
53 |
+
|
54 |
+
<label>Title</label>
|
55 |
+
|
56 |
+
<frontend_type>select</frontend_type>
|
57 |
+
|
58 |
+
<source_model>futurepay/source_title_custom</source_model>
|
59 |
+
|
60 |
+
<sort_order>22</sort_order>
|
61 |
+
|
62 |
+
<show_in_default>1</show_in_default>
|
63 |
+
|
64 |
+
<show_in_website>1</show_in_website>
|
65 |
+
|
66 |
+
<show_in_store>0</show_in_store>
|
67 |
+
|
68 |
+
</custom_select>
|
69 |
+
|
70 |
+
<custom_description translate="label">
|
71 |
+
|
72 |
+
<label>Custom Title</label>
|
73 |
+
|
74 |
+
<frontend_type>text</frontend_type>
|
75 |
+
|
76 |
+
<sort_order>25</sort_order>
|
77 |
+
|
78 |
+
<show_in_default>1</show_in_default>
|
79 |
+
|
80 |
+
<show_in_website>1</show_in_website>
|
81 |
+
|
82 |
+
<show_in_store>1</show_in_store>
|
83 |
+
|
84 |
+
</custom_description>
|
85 |
+
|
86 |
+
<custom_image translate="label">
|
87 |
+
|
88 |
+
<label>Custom Image</label>
|
89 |
+
|
90 |
+
<frontend_type>image</frontend_type>
|
91 |
+
|
92 |
+
<backend_model>adminhtml/system_config_backend_image</backend_model>
|
93 |
+
|
94 |
+
<upload_dir config="system/filesystem/media" scope_info="1">futurepay</upload_dir>
|
95 |
+
|
96 |
+
<base_url type="media" scope_info="1">futurepay</base_url>
|
97 |
+
|
98 |
+
<sort_order>27</sort_order>
|
99 |
+
|
100 |
+
<show_in_default>1</show_in_default>
|
101 |
+
|
102 |
+
<show_in_website>1</show_in_website>
|
103 |
+
|
104 |
+
<show_in_store>1</show_in_store>
|
105 |
+
|
106 |
+
</custom_image>
|
107 |
+
|
108 |
+
<gmid translate="label">
|
109 |
+
|
110 |
+
<label>Merchant API</label>
|
111 |
+
|
112 |
+
<show_in_default>1</show_in_default>
|
113 |
+
|
114 |
+
<show_in_website>1</show_in_website>
|
115 |
+
|
116 |
+
<sort_order>30</sort_order>
|
117 |
+
|
118 |
+
<frontend_class>required-entry</frontend_class>
|
119 |
+
|
120 |
+
</gmid>
|
121 |
+
|
122 |
+
|
123 |
+
<order_status translate="label">
|
124 |
+
|
125 |
+
<label>New Order Status</label>
|
126 |
+
|
127 |
+
<frontend_type>select</frontend_type>
|
128 |
+
|
129 |
+
<source_model>futurepay/source_order_status</source_model>
|
130 |
+
|
131 |
+
<sort_order>60</sort_order>
|
132 |
+
|
133 |
+
<show_in_default>1</show_in_default>
|
134 |
+
|
135 |
+
<show_in_website>1</show_in_website>
|
136 |
+
|
137 |
+
<show_in_store>0</show_in_store>
|
138 |
+
|
139 |
+
<frontend_class>required-entry</frontend_class>
|
140 |
+
|
141 |
+
</order_status>
|
142 |
+
|
143 |
+
<is_sandbox_mode translate="label">
|
144 |
+
|
145 |
+
<label>Sandbox Mode</label>
|
146 |
+
|
147 |
+
<frontend_type>select</frontend_type>
|
148 |
+
|
149 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
150 |
+
|
151 |
+
<sort_order>70</sort_order>
|
152 |
+
|
153 |
+
<show_in_default>1</show_in_default>
|
154 |
+
|
155 |
+
<show_in_website>1</show_in_website>
|
156 |
+
|
157 |
+
<show_in_store>0</show_in_store>
|
158 |
+
|
159 |
+
<frontend_class>required-entry</frontend_class>
|
160 |
+
|
161 |
+
</is_sandbox_mode>
|
162 |
+
|
163 |
+
<auto_invoice translate="label">
|
164 |
+
|
165 |
+
<label>Toggle Create Invoice</label>
|
166 |
+
|
167 |
+
<frontend_type>select</frontend_type>
|
168 |
+
|
169 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
170 |
+
|
171 |
+
<sort_order>80</sort_order>
|
172 |
+
|
173 |
+
<show_in_default>1</show_in_default>
|
174 |
+
|
175 |
+
<show_in_website>1</show_in_website>
|
176 |
+
|
177 |
+
<show_in_store>0</show_in_store>
|
178 |
+
|
179 |
+
<frontend_class>required-entry</frontend_class>
|
180 |
+
|
181 |
+
</auto_invoice>
|
182 |
+
|
183 |
+
<sort_order translate="label">
|
184 |
+
|
185 |
+
<label>Sort Order</label>
|
186 |
+
|
187 |
+
<frontend_type>text</frontend_type>
|
188 |
+
|
189 |
+
<sort_order>100</sort_order>
|
190 |
+
|
191 |
+
<show_in_default>1</show_in_default>
|
192 |
+
|
193 |
+
<show_in_website>1</show_in_website>
|
194 |
+
|
195 |
+
<show_in_store>0</show_in_store>
|
196 |
+
|
197 |
+
</sort_order>
|
198 |
+
|
199 |
+
</fields>
|
200 |
+
|
201 |
+
</futurepay>
|
202 |
+
|
203 |
+
</groups>
|
204 |
+
|
205 |
+
</payment>
|
206 |
+
|
207 |
+
</sections>
|
208 |
+
|
209 |
+
</config>
|
app/design/adminhtml/base/default/template/futurepay/info/futurepay.phtml
ADDED
@@ -0,0 +1 @@
|
|
Â
|
|
0 |
Â
<?php if($this->getPayableTo()): ?>
|
1 |
Â
<p><strong><?php echo $this->__('Make Check payable to:') ?></strong> <?php echo $this->htmlEscape($this->getPayableTo()) ?></p>
|
2 |
Â
<?php endif; ?>
|
3 |
Â
<?php if($this->getMailingAddress()): ?>
|
4 |
Â
<p><strong><?php echo Mage::helper('payment')->__('Send to:') ?></strong></p>
|
5 |
Â
<address class="checkmo-mailing-address">
|
6 |
Â
<?php echo nl2br($this->htmlEscape($this->getMailingAddress())) ?>
|
7 |
Â
</address>
|
8 |
Â
<?php endif; ?>
|
1 |
+
<?php /*?><p><?php echo $this->getMethod()->getTitle() ?></p><?php */?>
|
2 |
Â
<?php if($this->getPayableTo()): ?>
|
3 |
Â
<p><strong><?php echo $this->__('Make Check payable to:') ?></strong> <?php echo $this->htmlEscape($this->getPayableTo()) ?></p>
|
4 |
Â
<?php endif; ?>
|
5 |
Â
<?php if($this->getMailingAddress()): ?>
|
6 |
Â
<p><strong><?php echo Mage::helper('payment')->__('Send to:') ?></strong></p>
|
7 |
Â
<address class="checkmo-mailing-address">
|
8 |
Â
<?php echo nl2br($this->htmlEscape($this->getMailingAddress())) ?>
|
9 |
Â
</address>
|
10 |
Â
<?php endif; ?>
|
app/design/adminhtml/default/default/template/futurepay/system/config/fieldset/hint.phtml
ADDED
@@ -0,0 +1,10 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<link rel="stylesheet" type="text/css" href="<?php echo $this->getSkinUrl('futurepay/styles.css'); ?>">
|
2 |
+
<script type="text/javascript" src="<?php echo $this->getSkinUrl('futurepay/futurepay-admin.js'); ?>"></script>
|
3 |
+
<script type="text/javascript">
|
4 |
+
FuturePayAdmin.loginTplEndpoint = '<?php echo Mage::getUrl('futurepay/index/getmerchantloginform'); ?>';
|
5 |
+
FuturePayAdmin.signupTplEndpoint = '<?php echo Mage::getUrl('futurepay/index/getmerchantsignupform'); ?>';
|
6 |
+
FuturePayAdmin.signupLoginTplEndpoint = '<?php echo Mage::getUrl('futurepay/index/getsignuploginform'); ?>';
|
7 |
+
FuturePayAdmin.countryRegionsEndpoint = '<?php echo Mage::getUrl('futurepay/index/getcountryregions'); ?>';
|
8 |
+
FuturePayAdmin.merchantLoginEndpoint = '<?php echo Mage::getUrl('futurepay/index/domerchantlogin'); ?>';
|
9 |
+
FuturePayAdmin.merchantSignupEndpoint = '<?php echo Mage::getUrl('futurepay/index/domerchantsignup'); ?>';
|
10 |
+
</script>
|
app/design/frontend/base/default/layout/futurepay.xml
ADDED
@@ -0,0 +1,43 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<layout version="0.1.0">
|
3 |
+
<default>
|
4 |
+
|
5 |
+
</default>
|
6 |
+
<futurepay_index_process>
|
7 |
+
<reference name="head">
|
8 |
+
<action method="addCss"><css>futurepay/styles.css</css></action>
|
9 |
+
</reference>
|
10 |
+
<reference name="root">
|
11 |
+
<action method="setTemplate"><template>page/empty.phtml</template></action>
|
12 |
+
</reference>
|
13 |
+
<reference name="content">
|
14 |
+
<block type="futurepay/process" name="futurepay.process" template="futurepay/process.phtml" />
|
15 |
+
</reference>
|
16 |
+
</futurepay_index_process>
|
17 |
+
<futurepay_index_getsignuploginform>
|
18 |
+
<reference name="head">
|
19 |
+
<action method="addCss"><css>futurepay/styles.css</css></action>
|
20 |
+
</reference>
|
21 |
+
<reference name="root">
|
22 |
+
<action method="setTemplate"><template>futurepay/getsignuploginform.phtml</template></action>
|
23 |
+
</reference>
|
24 |
+
</futurepay_index_getsignuploginform>
|
25 |
+
|
26 |
+
<futurepay_index_getmerchantsignupform>
|
27 |
+
<reference name="head">
|
28 |
+
<action method="addCss"><css>futurepay/styles.css</css></action>
|
29 |
+
</reference>
|
30 |
+
<reference name="root">
|
31 |
+
<action method="setTemplate"><template>futurepay/getmerchantsignupform.phtml</template></action>
|
32 |
+
</reference>
|
33 |
+
</futurepay_index_getmerchantsignupform>
|
34 |
+
|
35 |
+
<futurepay_index_getmerchantloginform>
|
36 |
+
<reference name="head">
|
37 |
+
<action method="addCss"><css>futurepay/styles.css</css></action>
|
38 |
+
</reference>
|
39 |
+
<reference name="root">
|
40 |
+
<action method="setTemplate"><template>futurepay/getmerchantloginform.phtml</template></action>
|
41 |
+
</reference>
|
42 |
+
</futurepay_index_getmerchantloginform>
|
43 |
+
</layout>
|
app/design/frontend/base/default/template/futurepay/form/futurepay.phtml
ADDED
@@ -0,0 +1,7 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<ul class="form-list checkmo-list" id="payment_form_<?php echo $this->getMethodCode() ?>" style="display:none;">
|
2 |
+
<li>
|
3 |
+
<img src="<?php echo $this->getSkinUrl('futurepay/fp_logo.png')?>" />
|
4 |
+
</li>
|
5 |
+
</ul>
|
6 |
+
|
7 |
+
|
app/design/frontend/base/default/template/futurepay/form/mark.phtml
ADDED
@@ -0,0 +1,106 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<link href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,300,600' rel='stylesheet' type='text/css'>
|
2 |
+
<?php if (substr(Mage::getVersion(), 0, 3) == '1.8' || substr(Mage::getVersion(), 0, 3) == '1.7' || substr(Mage::getVersion(), 0, 3) == '1.6' || substr(Mage::getVersion(), 0, 3) == '1.5') {
|
3 |
+
echo "<link href='". $this->getSkinUrl('futurepay/styles18.css') ."' rel='stylesheet' type='text/css'>";
|
4 |
+
} else {
|
5 |
+
echo "<link href='". $this->getSkinUrl('futurepay/styles19.css') ."' rel='stylesheet' type='text/css'>";
|
6 |
+
} ?>
|
7 |
+
<style>
|
8 |
+
<?php if (Mage::getStoreConfig('payment/futurepay/custom_image')): echo "#fp-custom-description { margin-left: 6px; margin-top: 6px; }"; endif; ?>
|
9 |
+
<?php if (!Mage::getStoreConfig('payment/futurepay/custom_image') && Mage::getStoreConfig('payment/futurepay/custom_description') == ''): echo "#fp-info { position: relative; right: 5px; top: 8px; }"; endif; ?>
|
10 |
+
<?php if (!Mage::getStoreConfig('payment/futurepay/custom_image') && Mage::getStoreConfig('payment/futurepay/custom_description') != ''): echo "#fp-info { position: relative; bottom: 6px; right: 4px; }"; endif; ?>
|
11 |
+
<?php if ((Mage::getStoreConfig('payment/futurepay/custom_description') != '') && (substr(Mage::getVersion(), 0, 3) == '1.8' || substr(Mage::getVersion(), 0, 3) == '1.7' || substr(Mage::getVersion(), 0, 3) == '1.6' || substr(Mage::getVersion(), 0, 3) == '1.5')): echo "#fp-info { position: relative; bottom: 0px; right: 0px; left: 5px; }"; endif; ?>
|
12 |
+
<?php if ((Mage::getStoreConfig('payment/futurepay/custom_description') == '') && (substr(Mage::getVersion(), 0, 3) == '1.8' || substr(Mage::getVersion(), 0, 3) == '1.7' || substr(Mage::getVersion(), 0, 3) == '1.6' || substr(Mage::getVersion(), 0, 3) == '1.5')): echo "#fp-info { position: relative; bottom: 0px; right: 2px; left: 5px; }"; endif; ?>
|
13 |
+
</style>
|
14 |
+
<div id="fp-info-popup" style="z-index:15; position: absolute; display:none; top:0;">
|
15 |
+
<div class="fpInfo">
|
16 |
+
<div class="fpWrap">
|
17 |
+
<div class="fpHeading">
|
18 |
+
<h2>Buy Now & Pay Later</h2>
|
19 |
+
<a class="close" id="fp-close">×</a>
|
20 |
+
</div>
|
21 |
+
<div class="fpSum">
|
22 |
+
<p>FuturePay is a payment option that lets you shop without a credit card! It is secure, convenient and easy to use. Just put your purchases on a FuturePay tab to buy now and pay later.</p>
|
23 |
+
</div>
|
24 |
+
<div class="fpContent">
|
25 |
+
<div class="fpCol">
|
26 |
+
<img align="center" src="<?php echo $this->getSkinUrl('futurepay/icon-cart.png'); ?>" alt="Sign-up and check out in seconds cart" border="0" width="90"/>
|
27 |
+
<h3>Sign-Up and Checkout in Seconds</h3>
|
28 |
+
<p>Easily create an account with your contact information at checkout. You will never need a credit card - ever.</p>
|
29 |
+
</div>
|
30 |
+
<div class="fpCol">
|
31 |
+
<img src="<?php echo $this->getSkinUrl('futurepay/icon-fee.png'); ?>" alt="No hidden fees" border="0" width="90"/>
|
32 |
+
<h3>No Hidden Fees</h3>
|
33 |
+
<p>At the end of every billing period you can pay your balance off in full or carry your tab a month longer for as little as $5/month.</p>
|
34 |
+
</div>
|
35 |
+
<div class="fpCol">
|
36 |
+
<img src="<?php echo $this->getSkinUrl('futurepay/icon-secure.png'); ?>" alt="Safe and Secure" border="0" width="90"/>
|
37 |
+
<h3>Safe and Secure</h3>
|
38 |
+
<p>FuturePay keeps your information secure by using the latest fraud prevention and security tools.</p>
|
39 |
+
</div>
|
40 |
+
</div>
|
41 |
+
<div class="fpFooter">
|
42 |
+
<div class="logo"><img src="<?php echo $this->getSkinUrl('futurepay/fplogo.png'); ?>" alt="FuturePay" border="0" /></div>
|
43 |
+
<div class="tag">Buy Now & Pay Later</div>
|
44 |
+
</div>
|
45 |
+
</div>
|
46 |
+
</div>
|
47 |
+
</div>
|
48 |
+
|
49 |
+
<!-- FuturePay Logo -->
|
50 |
+
<?php if (Mage::getStoreConfig('payment/futurepay/custom_image') || Mage::getStoreConfig('payment/futurepay/custom_description') == ''): ?><img src="<?php if (Mage::getStoreConfig('payment/futurepay/custom_image')): echo Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA) . 'futurepay/' . Mage::getStoreConfig('payment/futurepay/custom_image'); elseif (Mage::getStoreConfig('payment/futurepay/custom_description') != ''): echo '#'; elseif (substr(Mage::getVersion(), 0, 3) == '1.8' || substr(Mage::getVersion(), 0, 3) == '1.7' || substr(Mage::getVersion(), 0, 3) == '1.6' || substr(Mage::getVersion(), 0, 3) == '1.5'): echo $this->getSkinUrl('futurepay/fpButton18.jpg'); else: echo $this->getSkinUrl('futurepay/fpButton.jpg'); endif; ?>" alt="<?php echo Mage::helper('paypal')->__('Acceptance Mark');?>" class="v-middle" width="68px" height="44px" /> <?php endif; ?>
|
51 |
+
<?php
|
52 |
+
if (Mage::getStoreConfig('payment/futurepay/custom_description') != '') {
|
53 |
+
echo '<span id="fp-custom-description">' . Mage::getStoreConfig('payment/futurepay/custom_description') . '</span>';
|
54 |
+
}
|
55 |
+
//var_dump(Mage::getBaseUrl(Mage_Core_Model_Store::URL_TYPE_MEDIA));
|
56 |
+
//var_dump(Mage::getStoreConfig('payment/futurepay/custom_image'));
|
57 |
+
?>
|
58 |
+
<a id="fp-info" href="#" onclick="return false;"><?php echo $this->__('Learn More'); ?></a>
|
59 |
+
<!-- FuturePay Logo -->
|
60 |
+
|
61 |
+
<script type="text/javascript">
|
62 |
+
$('fp-info').observe('click', function (e) {
|
63 |
+
var overlay = new Element('div');
|
64 |
+
overlay.id = 'fp-info-overlay';
|
65 |
+
overlay.setStyle({
|
66 |
+
'top': 0, // e.clientY - (overlay.getHeight() / 2), // center around pointer?
|
67 |
+
'left': 0, // e.clientY - (overlay.getWidth() / 2), // center around pointer?
|
68 |
+
'width': '100%',
|
69 |
+
'height': '100%',
|
70 |
+
'opacity': 0.5,
|
71 |
+
'position': 'fixed',
|
72 |
+
'background': '#000000',
|
73 |
+
'z-index': '10'
|
74 |
+
});
|
75 |
+
$$('body')[0].insert({
|
76 |
+
'bottom': overlay
|
77 |
+
});
|
78 |
+
overlay.observe('click', function () {
|
79 |
+
$('fp-info-popup').hide();
|
80 |
+
this.remove();
|
81 |
+
});
|
82 |
+
document.getElementById('fp-close').observe('click', function () {
|
83 |
+
$('fp-info-popup').hide();
|
84 |
+
overlay.remove();
|
85 |
+
});
|
86 |
+
<?php if (substr(Mage::getVersion(), 0, 3) == '1.8' || substr(Mage::getVersion(), 0, 3) == '1.7' || substr(Mage::getVersion(), 0, 3) == '1.6' || substr(Mage::getVersion(), 0, 3) == '1.5') { ?>
|
87 |
+
$('fp-info-popup').setStyle({
|
88 |
+
'left': '15%',
|
89 |
+
'right': '15%',
|
90 |
+
// 'top': e.clientY - (overlay.getHeight() / 2),
|
91 |
+
// 'left': e.clientY - (overlay.getWidth() / 2)
|
92 |
+
'top': '5%',
|
93 |
+
'position': 'fixed',
|
94 |
+
'background-color': '#FFFFFF',
|
95 |
+
//'padding': '20px',
|
96 |
+
});
|
97 |
+
<?php } else { ?>
|
98 |
+
$('fp-info-popup').setStyle({
|
99 |
+
'left': 0
|
100 |
+
// 'top': e.clientY - (overlay.getHeight() / 2),
|
101 |
+
// 'left': e.clientY - (overlay.getWidth() / 2)
|
102 |
+
});
|
103 |
+
<?php } ?>
|
104 |
+
$('fp-info-popup').show();
|
105 |
+
});
|
106 |
+
</script>
|
app/design/frontend/base/default/template/futurepay/form/redirect.phtml
ADDED
@@ -0,0 +1,312 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php /* <style type="text/css">
|
2 |
+
.FP_redirectmessage #fp-signup-form,
|
3 |
+
.FP_redirectmessage #fp-login-form {
|
4 |
+
max-width: 500px;
|
5 |
+
padding: 10px;
|
6 |
+
margin: 10px;
|
7 |
+
vertical-align: middle;
|
8 |
+
font-family: "Raleway", "Helvetica Neue", Verdana, Arial, sans-serif;
|
9 |
+
-webkit-border-radius: 5px;
|
10 |
+
-moz-border-radius: 5px;
|
11 |
+
border-radius: 5px;
|
12 |
+
-moz-background-clip: padding;
|
13 |
+
-webkit-background-clip: padding-box;
|
14 |
+
background-clip: padding-box;
|
15 |
+
}
|
16 |
+
.FP_redirectmessage #fp-signup-form .fp-label,
|
17 |
+
.FP_redirectmessage #fp-login-form .fp-label {
|
18 |
+
display: block;
|
19 |
+
margin-right: 20px;
|
20 |
+
padding-left: 4px;
|
21 |
+
font-weight: bold;
|
22 |
+
color: grey;
|
23 |
+
}
|
24 |
+
.FP_redirectmessage #fp-signup-form input,
|
25 |
+
.FP_redirectmessage #fp-login-form input,
|
26 |
+
.FP_redirectmessage #fp-signup-form select,
|
27 |
+
.FP_redirectmessage #fp-login-form select {
|
28 |
+
font-family: Lato, monospace !important;
|
29 |
+
width: 100%;
|
30 |
+
display: inline-block;
|
31 |
+
font-size: 1em;
|
32 |
+
margin: 5px 10px 10px 10px auto;
|
33 |
+
padding: 0 10px !important;
|
34 |
+
}
|
35 |
+
.FP_redirectmessage #fp-signup-form select,
|
36 |
+
.FP_redirectmessage #fp-login-form select {
|
37 |
+
width: 95px;
|
38 |
+
background-color: white;
|
39 |
+
}
|
40 |
+
.FP_redirectmessage #fp-signup-form #zip,
|
41 |
+
.FP_redirectmessage #fp-login-form #zip,
|
42 |
+
.FP_redirectmessage #fp-signup-form #main_phone,
|
43 |
+
.FP_redirectmessage #fp-login-form #main_phone,
|
44 |
+
.FP_redirectmessage #fp-signup-form #ssn,
|
45 |
+
.FP_redirectmessage #fp-login-form #ssn {
|
46 |
+
max-width: 305px;
|
47 |
+
}
|
48 |
+
.FP_redirectmessage #fp-signup-form img,
|
49 |
+
.FP_redirectmessage #fp-login-form img {
|
50 |
+
vertical-align: middle;
|
51 |
+
display: inline;
|
52 |
+
}
|
53 |
+
.FP_redirectmessage #fp-signup-form input[type="button"],
|
54 |
+
.FP_redirectmessage #fp-login-form input[type="button"] {
|
55 |
+
margin: 15px 0px 15px 15px;
|
56 |
+
height: 32px;
|
57 |
+
display: inline-block;
|
58 |
+
font-size: 1em;
|
59 |
+
margin-left: 89px;
|
60 |
+
text-decoration: none;
|
61 |
+
width: 120px !important;
|
62 |
+
}
|
63 |
+
.FP_redirectmessage #fp-signup-form .fp-signup-link,
|
64 |
+
.FP_redirectmessage #fp-login-form .fp-signup-link {
|
65 |
+
text-decoration: none;
|
66 |
+
font-weight: bold;
|
67 |
+
font-size: 1em !important;
|
68 |
+
float: none;
|
69 |
+
}
|
70 |
+
.FP_redirectmessage #fp-signup-form input[type="checkbox"].fp-checkbox,
|
71 |
+
.FP_redirectmessage #fp-login-form input[type="checkbox"].fp-checkbox {
|
72 |
+
text-align: left;
|
73 |
+
width: 13px !important;
|
74 |
+
height: 13px;
|
75 |
+
padding: 0;
|
76 |
+
vertical-align: middle;
|
77 |
+
}
|
78 |
+
.FP_redirectmessage #fp-signup-form .fp-terms-label,
|
79 |
+
.FP_redirectmessage #fp-login-form .fp-terms-label {
|
80 |
+
width: 300px;
|
81 |
+
}
|
82 |
+
.FP_redirectmessage #fp-signup-form .fp-error-element,
|
83 |
+
.FP_redirectmessage #fp-login-form .fp-error-element {
|
84 |
+
height: 1em;
|
85 |
+
text-align: center;
|
86 |
+
display: inline-block;
|
87 |
+
width: 100%;
|
88 |
+
}
|
89 |
+
.FP_redirectmessage #fp-signup-form .fp-error-message,
|
90 |
+
.FP_redirectmessage #fp-login-form .fp-error-message {
|
91 |
+
text-align: left;
|
92 |
+
font-family: "Raleway", "Helvetica Neue", Verdana, Arial, sans-serif;
|
93 |
+
}
|
94 |
+
</style> */ ?>
|
95 |
+
<?php if (substr(Mage::getVersion(), 0, 3) == '1.8' || substr(Mage::getVersion(), 0, 3) == '1.7' || substr(Mage::getVersion(), 0, 3) == '1.6' || substr(Mage::getVersion(), 0, 3) == '1.5') {
|
96 |
+
echo "<link href='". $this->getSkinUrl('futurepay/styles18.css') ."' rel='stylesheet' type='text/css'>";
|
97 |
+
} else {
|
98 |
+
echo "<link href='". $this->getSkinUrl('futurepay/styles19.css') ."' rel='stylesheet' type='text/css'>";
|
99 |
+
} ?>
|
100 |
+
<ul class="form-list" id="payment_form_<?php echo $this->getMethodCode() ?>" style="display:none;">
|
101 |
+
<li class="form-alt">
|
102 |
+
<div id="FP_redirectmessage" class="FP_redirectmessage">
|
103 |
+
<div id="FP_errors"><!-- futurepay errors --></div>
|
104 |
+
<div id="FP_applicationForm"><!-- futurepay form --></div>
|
105 |
+
<img src="<?php echo $this->getSkinUrl('futurepay/arrow.png')?>" width="20" height="10" style="display: block; position: absolute; top: -10px; left: 15px;" />
|
106 |
+
</div>
|
107 |
+
</li>
|
108 |
+
</ul>
|
109 |
+
<?php
|
110 |
+
$customerEmail = Mage::getSingleton('checkout/session')->getQuote()->getBillingAddress()->getEmail();
|
111 |
+
if (!$customerEmail) {
|
112 |
+
$customerEmail = Mage::getSingleton('checkout/session')->getQuote()->getCustomerEmail();
|
113 |
+
}
|
114 |
+
|
115 |
+
// get the order total
|
116 |
+
$quoteData = Mage::getModel('checkout/session')->getQuote()->getData();
|
117 |
+
$grandTotal = $quoteData['grand_total'];
|
118 |
+
?>
|
119 |
+
<script type="text/javascript">
|
120 |
+
var customerEmail = '<?php echo urlencode($customerEmail); ?>';
|
121 |
+
var FP_MerchantId = "<?php echo trim(substr(Mage::getStoreConfig('payment/futurepay/gmid'), 40, 45)); ?>";
|
122 |
+
var FP_Initialized = false;
|
123 |
+
var FP_Available = false;
|
124 |
+
var FP_Messages = {
|
125 |
+
'FPS00001': 'Congratulations! Your FuturePay account has been created successfully. Please continue on with your purchase and check your email for further details.',
|
126 |
+
'FPS00003': 'Congratulations! Your FuturePay account has been created successfully. Please continue on with your purchase and check your email for further details.',
|
127 |
+
'FPE00009': 'Your FuturePay account is not in an Active status. Please contact support at 1-855-984-1125.',
|
128 |
+
'FPE00011': 'Your FuturePay account could not be created. Please check your email for further details.',
|
129 |
+
'FPE00018': 'Your order exceeds your available FuturePay credit. Please log into your FuturePay account or contact support at 1-855-984-1125 for further details.'
|
130 |
+
};
|
131 |
+
$('p_method_<?php echo $this->getMethodCode(); ?>').checked = false;
|
132 |
+
if (customerEmail.length > 0
|
133 |
+
&& FP_MerchantId.length > 0) {
|
134 |
+
|
135 |
+
if (<?php echo Mage::getStoreConfig('payment/futurepay/is_sandbox_mode'); ?> === 1) {
|
136 |
+
var requestHost = 'sandbox.futurepay.com';
|
137 |
+
} else {
|
138 |
+
var requestHost = 'api.futurepay.com';
|
139 |
+
}
|
140 |
+
|
141 |
+
new Ajax.Request('https://' + requestHost + '/api/content/merchant_id/' + FP_MerchantId + '/email/' + customerEmail, {
|
142 |
+
method: 'get',
|
143 |
+
onCreate: function(request) {
|
144 |
+
//disable pre-flight
|
145 |
+
request.transport.setRequestHeader = Prototype.emptyFunction;
|
146 |
+
},
|
147 |
+
onSuccess: function(response) {
|
148 |
+
if (response.getResponseHeader('Content-Type') === 'text/javascript') {
|
149 |
+
try {
|
150 |
+
var functionCall = new Function(response.responseText);
|
151 |
+
} catch (e) {
|
152 |
+
if (e instanceof SyntaxError) {
|
153 |
+
console.log('Syntax error reported in FuturePay js: ' + e.message);
|
154 |
+
}
|
155 |
+
}
|
156 |
+
|
157 |
+
if (typeof(functionCall) === 'function') {
|
158 |
+
// this is the FP object
|
159 |
+
functionCall();
|
160 |
+
FP_Available = true;
|
161 |
+
}
|
162 |
+
} else {
|
163 |
+
// fp json error - insert the error into $('FP_applicationForm')
|
164 |
+
// disable the Continue button if futurepay is selected
|
165 |
+
var responseObj = response.responseText.evalJSON();
|
166 |
+
console.log('FP ERROR ON INIT', responseObj);
|
167 |
+
if (typeof(responseObj) == 'object') {
|
168 |
+
if (typeof(FP_Messages[responseObj.code]) != 'undefined') {
|
169 |
+
$('FP_applicationForm').update(FP_Messages[responseObj.code]);
|
170 |
+
} else {
|
171 |
+
$('FP_applicationForm').update('An error occurred, please try again or select another payment method.');
|
172 |
+
}
|
173 |
+
}
|
174 |
+
}
|
175 |
+
}
|
176 |
+
});
|
177 |
+
|
178 |
+
// detect a change in the rest of the payment methods
|
179 |
+
$$('input[id^=p_method_]').each(function (el) {
|
180 |
+
if (el.id != 'p_method_<?php echo $this->getMethodCode(); ?>') {
|
181 |
+
el.observe('change', function () {
|
182 |
+
// enable the continue button
|
183 |
+
$('payment-buttons-container').down('button').removeClassName('disabled');
|
184 |
+
$('payment-buttons-container').down('button').writeAttribute("disabled", false);;
|
185 |
+
});
|
186 |
+
}
|
187 |
+
});
|
188 |
+
|
189 |
+
// detect a change in ONLY the futurepay payment method
|
190 |
+
$('p_method_<?php echo $this->getMethodCode(); ?>').observe('change', function () {
|
191 |
+
|
192 |
+
// disable the continue button
|
193 |
+
$('payment-buttons-container').down('button').addClassName('disabled');
|
194 |
+
$('payment-buttons-container').down('button').writeAttribute("disabled", "disabled");
|
195 |
+
|
196 |
+
if (FP_Available && !FP_Initialized) {
|
197 |
+
FP.handleResponse = function(data)
|
198 |
+
{
|
199 |
+
if (data.status == '1') {
|
200 |
+
console.log('FP SUCCESS RESPONSE', data);
|
201 |
+
if (data.object.available_credit >= <?php echo $grandTotal; ?>) {
|
202 |
+
|
203 |
+
new Ajax.Request("<?php echo Mage::getUrl('futurepay/index/storefptoken'); ?>", {
|
204 |
+
parameters: data,
|
205 |
+
method: 'post',
|
206 |
+
onComplete: function(response) {
|
207 |
+
|
208 |
+
// login/application successful - hide the form
|
209 |
+
// and let the user carry on
|
210 |
+
$('FP_applicationForm').update();
|
211 |
+
// allow the user to click "Continue"
|
212 |
+
$('payment-buttons-container').down('button').removeClassName('disabled');
|
213 |
+
$('payment-buttons-container').down('button').writeAttribute("disabled", false);
|
214 |
+
|
215 |
+
// call the built-in function to move to the next step
|
216 |
+
payment.save();
|
217 |
+
}
|
218 |
+
});
|
219 |
+
} else {
|
220 |
+
// not enough credit available
|
221 |
+
$('FP_applicationForm').update(FP_Messages['FPE00018']);
|
222 |
+
}
|
223 |
+
} else {
|
224 |
+
console.log('FP FAIL RESPONSE', data.code, FP_Messages[data.code]);
|
225 |
+
// fp didn't accept them - insert the error into $('FP_applicationForm')
|
226 |
+
// or maybe this is handled by FP.setValidationErrorCallback?
|
227 |
+
|
228 |
+
// sometimes, we'll get this error: The Initialization Token has expired
|
229 |
+
// we'll need to re-initialize FP
|
230 |
+
if (typeof(data.code) != 'undefined'
|
231 |
+
&& (typeof(FP_Messages[data.code]) != 'undefined' || data.code == 'FPE00031')) {
|
232 |
+
|
233 |
+
// if the error message is not a failed login
|
234 |
+
if (data.code != 'FPE00031') {
|
235 |
+
$('FP_applicationForm').update(FP_Messages[data.code]);
|
236 |
+
}
|
237 |
+
} else {
|
238 |
+
$('FP_applicationForm').update('An error occurred, please try again or select another payment method.');
|
239 |
+
}
|
240 |
+
|
241 |
+
if ($('fp-submit') !== null) {
|
242 |
+
$('fp-submit').removeAttribute('disabled');
|
243 |
+
}
|
244 |
+
if ($('fp-login') !== null) {
|
245 |
+
$('fp-login').removeAttribute('disabled');
|
246 |
+
}
|
247 |
+
|
248 |
+
}
|
249 |
+
}
|
250 |
+
|
251 |
+
FP.loadCompleteCallback = function () {
|
252 |
+
|
253 |
+
FP.initializeFuturePay({
|
254 |
+
element_id: "FP_applicationForm",
|
255 |
+
first_name: '<?php echo Mage::getSingleton('checkout/session')->getQuote()->getCustomerFirstname(); ?>',
|
256 |
+
last_name: '<?php echo Mage::getSingleton('checkout/session')->getQuote()->getCustomerLastname(); ?>',
|
257 |
+
zip: '<?php echo Mage::getSingleton('checkout/session')->getQuote()->getBillingAddress()->getPostcode(); ?>',
|
258 |
+
street_address: '<?php echo Mage::getSingleton('checkout/session')->getQuote()->getBillingAddress()->getStreet(1); ?>',
|
259 |
+
phone: '<?php echo Mage::getSingleton('checkout/session')->getQuote()->getBillingAddress()->getTelephone(); ?>'
|
260 |
+
});
|
261 |
+
|
262 |
+
// Adapt the futurepay HTML to fit the current magento style
|
263 |
+
try { $("fp-submit").addClassName("button") } catch (e) {};
|
264 |
+
try { $("fp-login").addClassName("button") } catch (e) {};
|
265 |
+
|
266 |
+
if ($('fp-submit') !== null) {
|
267 |
+
$('fp-submit').observe('click', function () {
|
268 |
+
if (FP.isValid()) {
|
269 |
+
$('fp-submit').setAttribute('disabled', 'disabled');
|
270 |
+
}
|
271 |
+
});
|
272 |
+
}
|
273 |
+
if ($('fp-login') !== null) {
|
274 |
+
$('fp-login').observe('click', function () {
|
275 |
+
if (FP.isValid()) {
|
276 |
+
$('fp-login').setAttribute('disabled', 'disabled');
|
277 |
+
}
|
278 |
+
});
|
279 |
+
}
|
280 |
+
|
281 |
+
if ($('fp-signup-form') !== null) {
|
282 |
+
|
283 |
+
// force-validate the FP form
|
284 |
+
//FP.validateForm();
|
285 |
+
|
286 |
+
FP.validateNumber();
|
287 |
+
FP.validateZip();
|
288 |
+
FP.validateEmail();
|
289 |
+
FP.displayErrors();
|
290 |
+
|
291 |
+
// hide fields already populated
|
292 |
+
$('fp-signup-form').select(':input[type=text]').each(function (el) {
|
293 |
+
// unless fp marked them with an error
|
294 |
+
if (el.value.length > 0 && !el.hasClassName('fp-error')) {
|
295 |
+
try { $$('label[for=' + el.name + ']')[0].hide(); } catch (e) {};
|
296 |
+
try { $$('.error_' + el.name)[0].hide(); } catch (e) {};
|
297 |
+
el.hide();
|
298 |
+
}
|
299 |
+
});
|
300 |
+
}
|
301 |
+
|
302 |
+
FP_Initialized = true;
|
303 |
+
}
|
304 |
+
|
305 |
+
FP.loadCompleteCallback();
|
306 |
+
}
|
307 |
+
});
|
308 |
+
} else {
|
309 |
+
// the user has to select another payment option
|
310 |
+
$('FP_applicationForm').update('FuturePay is not available at this time. Please select another payment method.');
|
311 |
+
}
|
312 |
+
</script>
|
app/design/frontend/base/default/template/futurepay/getmerchantloginform.phtml
ADDED
@@ -0,0 +1,11 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<h3>FuturePay Merchant Login</h3>
|
2 |
+
<div class="fm-group">
|
3 |
+
<input id="futurepay_user_name" class="fm-input" type="text" name="futurepay_user_name" placeholder="Username">
|
4 |
+
</div>
|
5 |
+
<div class="fm-group">
|
6 |
+
<input id="futurepay_password" class="fm-input" type="password" name="futurepay_password" placeholder="Password">
|
7 |
+
</div>
|
8 |
+
<div class="fm-group last">
|
9 |
+
<input class="fm-btn" type="button" name="save" value="Login" onclick="FuturePayAdmin.doMerchantLogin(); return false;">
|
10 |
+
</div>
|
11 |
+
<div style='clear:both'></div>
|
app/design/frontend/base/default/template/futurepay/getmerchantsignupform.phtml
ADDED
@@ -0,0 +1,76 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php
|
2 |
+
$countryList = Mage::getModel('directory/country')->getResourceCollection()
|
3 |
+
->loadByStore()
|
4 |
+
->toOptionArray();
|
5 |
+
array_shift($countryList);
|
6 |
+
|
7 |
+
$storeCountryCode = Mage::getStoreConfig('general/country/default');
|
8 |
+
|
9 |
+
$regionList = Mage::getModel('directory/region')
|
10 |
+
->getResourceCollection()
|
11 |
+
->addCountryFilter($storeCountryCode)
|
12 |
+
->load()
|
13 |
+
->toArray();
|
14 |
+
|
15 |
+
?>
|
16 |
+
<h3>FuturePay Merchant Signup</h3>
|
17 |
+
<div class="fm-group">
|
18 |
+
<label class="col-lt">Email Address</label>
|
19 |
+
<div class="col-rt"><input class="fm-input" type="text" name="futurepay_contact_email" value=""/></div>
|
20 |
+
</div>
|
21 |
+
<div class="fm-group">
|
22 |
+
<label class="col-lt">First Name</label>
|
23 |
+
<div class="col-rt"><input class="fm-input" type="text" name="futurepay_first_name" value=""/></div>
|
24 |
+
</div>
|
25 |
+
<div class="fm-group">
|
26 |
+
<label class="col-lt">Last Name</label>
|
27 |
+
<div class="col-rt"><input class="fm-input" type="text" name="futurepay_last_name" value=""/></div>
|
28 |
+
</div>
|
29 |
+
<div class="fm-group">
|
30 |
+
<label class="col-lt">Phone Number</label>
|
31 |
+
<div class="col-rt"><input class="fm-input" type="text" name="futurepay_main_phone"/></div>
|
32 |
+
</div>
|
33 |
+
<div class="fm-group">
|
34 |
+
<label class="col-lt">Company Name</label>
|
35 |
+
<div class="col-rt"><input class="fm-input" type="text" name="futurepay_name" value=""/></div>
|
36 |
+
</div>
|
37 |
+
<div class="fm-group">
|
38 |
+
<label class="col-lt">Website</label>
|
39 |
+
<div class="col-rt"><input class="fm-input" type="text" name="futurepay_website" value=""/></div>
|
40 |
+
</div>
|
41 |
+
<div class="fm-group">
|
42 |
+
<label class="col-lt">Country</label>
|
43 |
+
<div class="col-rt">
|
44 |
+
<select name="futurepay_country_code" onchange="FuturePayAdmin.refreshRegionsForCountry(this);">
|
45 |
+
<?php foreach ($countryList as $countryItem) { ?>
|
46 |
+
<option value="<?php echo $countryItem['value']; ?>"<?php if ($storeCountryCode == $countryItem['value']) {?> selected="selected"<?php } ?>><?php echo $countryItem['label']; ?></option>
|
47 |
+
<?php } ?>
|
48 |
+
</select>
|
49 |
+
</div>
|
50 |
+
</div>
|
51 |
+
<div class="fm-group">
|
52 |
+
<label class="col-lt">State</label>
|
53 |
+
<div class="col-rt">
|
54 |
+
<select id="futurepay-region-code" name="futurepay_region_code">
|
55 |
+
<?php foreach ($regionList['items'] as $regionItem) { ?>
|
56 |
+
<option value="<?php echo $regionItem['code']; ?>"><?php echo $regionItem['name']; ?></option>
|
57 |
+
<?php } ?>
|
58 |
+
</select>
|
59 |
+
</div>
|
60 |
+
</div>
|
61 |
+
<div class="fm-group">
|
62 |
+
<label class="col-lt">Address</label>
|
63 |
+
<div class="col-rt"><input class="fm-input" type="text" name="futurepay_address"/></div>
|
64 |
+
</div>
|
65 |
+
<div class="fm-group">
|
66 |
+
<label class="col-lt">City</label>
|
67 |
+
<div class="col-rt"><input class="fm-input" type="text" name="futurepay_city"/></div>
|
68 |
+
</div>
|
69 |
+
<div class="fm-group">
|
70 |
+
<label class="col-lt">Zip Code</label>
|
71 |
+
<div class="col-rt"><input class="fm-input" type="text" name="futurepay_zip"/></div>
|
72 |
+
</div>
|
73 |
+
<div class="fm-group">
|
74 |
+
<div class="col-rt"><input class="fm-btn" type="button" name="futurepay_save" value="Sign up" onclick="FuturePayAdmin.doMerchantSignup(); return false;"/></div>
|
75 |
+
</div>
|
76 |
+
<div style='clear:both'></div>
|
app/design/frontend/base/default/template/futurepay/getsignuploginform.phtml
ADDED
@@ -0,0 +1,45 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php if (Mage::getStoreConfig('payment/futurepay/custom_image')) {?>
|
2 |
+
<style>
|
3 |
+
#payment_futurepay_custom_image {
|
4 |
+
color: transparent;
|
5 |
+
}
|
6 |
+
</style>
|
7 |
+
<?php } ?>
|
8 |
+
<div id="futurepay-merchant-signup-login">
|
9 |
+
<div class="futurepay-logo"></div>
|
10 |
+
In order to use FuturePay, you must either <a id="do-merchant-signup" onclick="FuturePayAdmin.doMerchantSignupClick(); return false;" href="#">sign-up</a> or <a id="do-merchant-login" onclick="FuturePayAdmin.doMerchantLoginClick(); return false;" href="#">log in</a> to retrieve your API key.
|
11 |
+
</div>
|
12 |
+
<div id="futurepay-merchant-login" style="display:none;"></div>
|
13 |
+
<div id="futurepay-merchant-signup" style="display:none;"></div>
|
14 |
+
<script type="text/javascript">
|
15 |
+
var image_checkbox = document.getElementById('payment_futurepay_custom_image_delete');
|
16 |
+
var description_box = document.getElementById('payment_futurepay_custom_description');
|
17 |
+
var custom_select = document.getElementById('payment_futurepay_custom_select');
|
18 |
+
|
19 |
+
function fpCustomImageDescription() {
|
20 |
+
if (custom_select.selectedIndex === 1) {
|
21 |
+
$('row_payment_futurepay_custom_image').show();
|
22 |
+
if (image_checkbox && image_checkbox.getAttribute('checked') === 'checked') {
|
23 |
+
image_checkbox.removeAttribute('checked');
|
24 |
+
}
|
25 |
+
$('row_payment_futurepay_custom_description').show();
|
26 |
+
} else {
|
27 |
+
$('row_payment_futurepay_custom_image').hide();
|
28 |
+
if (image_checkbox && !image_checkbox.getAttribute('checked')) {
|
29 |
+
image_checkbox.setAttribute('checked', 'checked');
|
30 |
+
}
|
31 |
+
$('row_payment_futurepay_custom_description').hide();
|
32 |
+
description_box.value = '';
|
33 |
+
}
|
34 |
+
}
|
35 |
+
|
36 |
+
$('payment_futurepay_custom_select').observe('change', function(event) {
|
37 |
+
fpCustomImageDescription();
|
38 |
+
});
|
39 |
+
|
40 |
+
fpCustomImageDescription();
|
41 |
+
|
42 |
+
$('payment_futurepay_custom_image').observe('click', function(event) {
|
43 |
+
document.getElementById('payment_futurepay_custom_image').style.color = "#000000";
|
44 |
+
});
|
45 |
+
</script>
|
app/design/frontend/base/default/template/futurepay/info/futurepay.phtml
ADDED
@@ -0,0 +1,13 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?php /*?><p><?php echo $this->getMethod()->getTitle() ?></p>*/?>
|
2 |
+
<img src="<?php echo $this->getSkinUrl('futurepay/fp_logo.png')?>" alt="FuturePay" title="FuturePay"/>
|
3 |
+
<?php if($this->getInfo()->getAdditionalData()): ?>
|
4 |
+
<?php if($this->getPayableTo()): ?>
|
5 |
+
<p><strong><?php echo $this->__('Make Check payable to:') ?></strong> <?php echo $this->htmlEscape($this->getPayableTo()) ?></p>
|
6 |
+
<?php endif; ?>
|
7 |
+
<?php if($this->getMailingAddress()): ?>
|
8 |
+
<p><strong><?php echo Mage::helper('payment')->__('Send to:') ?></strong></p>
|
9 |
+
<address class="checkmo-mailing-address">
|
10 |
+
<?php echo nl2br($this->htmlEscape($this->getMailingAddress())) ?>
|
11 |
+
</address>
|
12 |
+
<?php endif; ?>
|
13 |
+
<?php endif; ?>
|
app/design/frontend/base/default/template/futurepay/process.phtml
ADDED
@@ -0,0 +1,49 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<script type="text/javascript" src="<?php echo $this->getCartIntegrationUrl().$this->getToken()?>"></script>
|
2 |
+
<div class="futurepay-container">
|
3 |
+
<div id="futurepay-form">
|
4 |
+
</div>
|
5 |
+
<div class="button-container futurepay-button-container">
|
6 |
+
<button id="place_order" class="futurepay-placeorder"><span><span><?php echo $this->__('Pay with Futurepay')?></span></span></button>
|
7 |
+
<a href="<?php echo $this->getCalcelUrl();?>"><?php echo $this->__('Cancel Order')?></a>
|
8 |
+
</div>
|
9 |
+
</div>
|
10 |
+
<div class="fp-loading-indicator" id="fp-loading-validate-trans" style="display: none;"><label id="fp-loading-label" class="fp-loading-label"><?php echo $this->__('Validating the transaction ...')?>.</label></div>
|
11 |
+
<script type="text/javascript">
|
12 |
+
if(typeof(jQuery) != 'undefined'){
|
13 |
+
jQuery.noConflict();
|
14 |
+
}
|
15 |
+
Event.observe(window,'load',function(){
|
16 |
+
FP.CartIntegration();
|
17 |
+
$('futurepay-form').update(FP.CartIntegration.getFormContent());
|
18 |
+
|
19 |
+
FP.CartIntegration.displayFuturePay();
|
20 |
+
/*Bind the Pages pay button to the FuturePay submit action*/
|
21 |
+
$("place_order").observe('click' , function() {
|
22 |
+
FP.CartIntegration();
|
23 |
+
FP.CartIntegration.placeOrder();
|
24 |
+
});
|
25 |
+
});
|
26 |
+
|
27 |
+
|
28 |
+
function FuturePayResponseHandler(response) {
|
29 |
+
if (response.error) {
|
30 |
+
error_code = response.code;
|
31 |
+
error_reason = response.message;
|
32 |
+
setLocation('<?php echo $this->getErrorUrl()?>error_code/'+error_code+'/error_reason/'+error_reason);
|
33 |
+
} else {
|
34 |
+
$('fp_lean_overlay').setStyle({display:'block'});
|
35 |
+
$('fp-loading-validate-trans').setStyle({display:'block'});
|
36 |
+
new Ajax.Request('<?php echo $this->getSuccessUrl();?>', {
|
37 |
+
method: 'post',
|
38 |
+
parameters: {transaction_id:response.transaction_id,status:response.status, code:response.code, message:response.message},
|
39 |
+
onSuccess: function(response1) {
|
40 |
+
var res = response1.responseText.evalJSON(true);
|
41 |
+
var redirectUrl = res.url;
|
42 |
+
setLocation(redirectUrl);
|
43 |
+
/*$('fp_lean_overlay').setStyle({display:'none'});
|
44 |
+
$('fp-loading-validate-trans').setStyle({display:'none'});*/
|
45 |
+
}
|
46 |
+
});
|
47 |
+
}
|
48 |
+
}
|
49 |
+
</script>
|
app/etc/modules/Futurepay_Futurepay.xml
ADDED
@@ -0,0 +1,10 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<config>
|
3 |
+
<modules>
|
4 |
+
<FuturePay_FuturePay>
|
5 |
+
<active>true</active>
|
6 |
+
<codePool>community</codePool>
|
7 |
+
<version>2.0.0</version>
|
8 |
+
</FuturePay_FuturePay>
|
9 |
+
</modules>
|
10 |
+
</config>
|
package.xml
ADDED
@@ -0,0 +1,18 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<package>
|
3 |
+
<name>FuturePayUS</name>
|
4 |
+
<version>2.0.0</version>
|
5 |
+
<stability>stable</stability>
|
6 |
+
<license>OSL</license>
|
7 |
+
<channel>community</channel>
|
8 |
+
<extends/>
|
9 |
+
<summary>FuturePay Payment method</summary>
|
10 |
+
<description>FuturePay Payment method</description>
|
11 |
+
<notes>FuturePay Payment method</notes>
|
12 |
+
<authors><author><name>FuturePay</name><user>FuturePay</user><email>support@futurepay.com</email></author></authors>
|
13 |
+
<date>2015-11-06</date>
|
14 |
+
<time>18:47:29</time>
|
15 |
+
<contents><target name="magecommunity"><dir name="FuturePay"><dir name="FuturePay"><dir name="Block"><dir name="Adminhtml"><dir name="System"><dir name="Config"><dir name="Fieldset"><file name="Hint.php" hash="2e5330cf56d9326e6494253a722fb6a7"/></dir></dir></dir></dir><dir name="Form"><file name="Futurepay.php" hash="928319d04c917d5ddaedb078b6ff0fee"/></dir><dir name="Info"><file name="Futurepay.php" hash="391d35864d9154262ebf0efaed106e1f"/></dir><file name="Process.php" hash="08e0f633af8a85a7dc4dfd9e7f2b79ca"/></dir><file name="Exception.php" hash="b6018c078ef8ab18d69870d7913af15d"/><dir name="Helper"><file name="Data.php" hash="d5f98fb53de31ba20db08fea1b768255"/></dir><dir name="Model"><dir name="Method"><file name="Futurepay.php" hash="9b3906fbdd811b938a811e567795fe85"/></dir><file name="Observer.php" hash="efcda6724346652b53373b291e4c7f8f"/><dir name="Resource"><file name="Setup.php" hash="7d4898dfed78dd7c1f68a7eb2b2c1c2c"/></dir><dir name="Source"><dir name="Order"><file name="Status.php" hash="66070c3c22f4e77485d066bcf42fba70"/></dir><dir name="Payment"><file name="Action.php" hash="f16728d656754b7ba3c39c928befdf9b"/></dir><dir name="Title"><file name="Custom.php" hash="42f67d7690fb51bb2be34754814460fb"/></dir></dir></dir><dir name="controllers"><file name="IndexController.php" hash="bcbfeeb1f63f1dd0d933d61171946e8d"/></dir><dir name="data"><dir name="futurepay_setup"><file name="data-install-2.0.0.php" hash="2608fbf741292211099051a05ea955f1"/></dir></dir><dir name="etc"><file name="config.xml" hash="fd0393b8707005d28db4db7498e0cf60"/><file name="system.xml" hash="dfca12f7c2677e3813ca9f0dfac585ac"/></dir></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="template"><dir name="futurepay"><dir name="info"><file name="futurepay.phtml" hash="89a13ffc42f9748f540f1113fd211adb"/></dir></dir></dir></dir></dir><dir name="default"><dir name="default"><dir name="template"><dir name="futurepay"><dir name="system"><dir name="config"><dir name="fieldset"><file name="hint.phtml" hash="dc7b5558d5c1c1daf66b40777263a7b6"/></dir></dir></dir></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="futurepay.xml" hash="77794137dd0ca0f5a6303238ecf2f5fc"/></dir><dir name="template"><dir name="futurepay"><dir name="form"><file name="futurepay.phtml" hash="7213be83f4e9a57b75e8ceb98dea1672"/><file name="mark.phtml" hash="a32647fd6bd685a4a1f077e75a8b74a6"/><file name="redirect.phtml" hash="940a2366dd7d20db0a1d6f20ad0b73a5"/></dir><file name="getmerchantloginform.phtml" hash="07be55268c40cc7a9b38adb3fcc3e984"/><file name="getmerchantsignupform.phtml" hash="f19ea1db17a69235652e178fa9943815"/><file name="getsignuploginform.phtml" hash="d95ce46b1d8ea9b0946aa22452ef1352"/><dir name="info"><file name="futurepay.phtml" hash="d8c5411751e4584f1da371a52c5d68c2"/></dir><file name="process.phtml" hash="a753b7480e4e051a0d73d2d8a595755f"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Futurepay_Futurepay.xml" hash="aa4902e36c1fffd9e96095f6922e713d"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="futurepay"><file name="fp_logo.png" hash="60e4e682eef20864809ec3f926644949"/><file name="fp_logo2.png" hash="60e4e682eef20864809ec3f926644949"/><file name="futurepay-admin.js" hash="81d1e4d79a17c97767e689f1cd944e9c"/><file name="logoFuturePay.png" hash="abb71de2bc68b37977912e4080c989ec"/><file name="styles.css" hash="c02378ea658f89170c14a3cdc98ed051"/></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="futurepay"><file name="arrow.png" hash="d7a4d12c203f5ed5737d3f6a234c74d1"/><file name="fpButton.jpg" hash="f7df14b706e3b2a0b31f3d5c27f8935a"/><file name="fpButton18.jpg" hash="dbd3ef259fb82d32e44cf59614863b70"/><file name="fp_logo.png" hash="60e4e682eef20864809ec3f926644949"/><file name="fp_small_logo.png" hash="48f55b6d15211f8a3f9dfb1f235ef97b"/><file name="fplogo.png" hash="8a5b8bc294a0000e0a1e3fde72f27cbf"/><file name="icon-cart.png" hash="aa67b5e00c64c036a9a8afb52acd7298"/><file name="icon-fee.png" hash="e2febdcd148e61f150f3be0dff801e8c"/><file name="icon-secure.png" hash="56c126fdff3de22449bd056b58b31769"/><file name="styles.css" hash="fd5f32d6a9958da063233ba42f79d993"/><file name="styles18.css" hash="d0ba202a717e69ee8973c4a5369d666f"/><file name="styles19.css" hash="43b9ecac346f0fb1138c7af89e68f1ae"/></dir></dir></dir></dir></target></contents>
|
16 |
+
<compatible/>
|
17 |
+
<dependencies><required><php><min>5.1.0</min><max>6.0.0</max></php></required></dependencies>
|
18 |
+
</package>
|
skin/adminhtml/base/default/futurepay/fp_logo.png
ADDED
Binary file
|
skin/adminhtml/base/default/futurepay/fp_logo2.png
ADDED
Binary file
|
skin/adminhtml/base/default/futurepay/futurepay-admin.js
ADDED
@@ -0,0 +1,222 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
var FuturePayAdmin = {
|
2 |
+
|
3 |
+
loginTplEndpoint: null,
|
4 |
+
signupTplEndpoint: null,
|
5 |
+
signupLoginTplEndpoint: null,
|
6 |
+
countryRegionsEndpoint: null,
|
7 |
+
merchantLoginEndpoint: null,
|
8 |
+
merchantSignupEndpoint: null,
|
9 |
+
|
10 |
+
|
11 |
+
doMerchantSignupClick: function ()
|
12 |
+
{
|
13 |
+
this.displaySignupTpl();
|
14 |
+
},
|
15 |
+
|
16 |
+
doMerchantLoginClick: function ()
|
17 |
+
{
|
18 |
+
this.displayLoginTpl();
|
19 |
+
},
|
20 |
+
|
21 |
+
displayLoginTpl: function ()
|
22 |
+
{
|
23 |
+
new Ajax.Request(this.loginTplEndpoint, {
|
24 |
+
method:'get',
|
25 |
+
onSuccess: function(transport) {
|
26 |
+
$$('#futurepay-merchant-login')
|
27 |
+
.invoke('update', transport.responseText);
|
28 |
+
$('futurepay-merchant-signup').hide();
|
29 |
+
$('futurepay-merchant-login').show();
|
30 |
+
},
|
31 |
+
onFailure: function() { /*alert('Something went wrong...');*/ }
|
32 |
+
});
|
33 |
+
},
|
34 |
+
|
35 |
+
displaySignupTpl: function ()
|
36 |
+
{
|
37 |
+
new Ajax.Request(this.signupTplEndpoint, {
|
38 |
+
method:'get',
|
39 |
+
onSuccess: function(transport) {
|
40 |
+
$$('#futurepay-merchant-signup')
|
41 |
+
.invoke('update', transport.responseText);
|
42 |
+
$('futurepay-merchant-login').hide();
|
43 |
+
$('futurepay-merchant-signup').show();
|
44 |
+
},
|
45 |
+
onFailure: function() { /*alert('Something went wrong...');*/ }
|
46 |
+
});
|
47 |
+
},
|
48 |
+
|
49 |
+
displaySignupLoginTpl: function ()
|
50 |
+
{
|
51 |
+
new Ajax.Request(this.signupLoginTplEndpoint, {
|
52 |
+
method:'get',
|
53 |
+
onSuccess: function(transport) {
|
54 |
+
$$('#futurepay-ajax-container').invoke('update', transport.responseText);
|
55 |
+
},
|
56 |
+
onFailure: function() { /*alert('Something went wrong...');*/ }
|
57 |
+
});
|
58 |
+
},
|
59 |
+
|
60 |
+
refreshRegionsForCountry: function (el)
|
61 |
+
{
|
62 |
+
new Ajax.Request(this.countryRegionsEndpoint + '?country=' + el.value, {
|
63 |
+
method: 'get',
|
64 |
+
onSuccess: function (transport) {
|
65 |
+
var resp = transport.responseJSON;
|
66 |
+
|
67 |
+
if (resp.totalRecords > 0 && resp.items.length > 0) {
|
68 |
+
console.log($('futurepay-region-code').nodeName);
|
69 |
+
if ($('futurepay-region-code').nodeName == 'INPUT') {
|
70 |
+
$('futurepay-region-code').replace(
|
71 |
+
new Element('select', { id: 'futurepay-region-code', name: 'futurepay_region_code' })
|
72 |
+
);
|
73 |
+
}
|
74 |
+
|
75 |
+
// remove old options
|
76 |
+
$('futurepay-region-code').select('option').each(function (child) {
|
77 |
+
child.remove();
|
78 |
+
});
|
79 |
+
|
80 |
+
// for each, build new options
|
81 |
+
resp.items.each(function(region) {
|
82 |
+
var el = new Element('option', {
|
83 |
+
value: region.code
|
84 |
+
}).update(region.name);
|
85 |
+
$('futurepay-region-code').insert(el);
|
86 |
+
});
|
87 |
+
$('futurepay-region-code').enable();
|
88 |
+
} else {
|
89 |
+
// disable the region field
|
90 |
+
//$('futurepay-region-code').disable();
|
91 |
+
$('futurepay-region-code').replace(
|
92 |
+
new Element('input', { id: 'futurepay-region-code', name: 'futurepay_region_code', class: 'fm-input' })
|
93 |
+
);
|
94 |
+
}
|
95 |
+
},
|
96 |
+
onFailure: function () { /*alert('Something went wrong...');*/ }
|
97 |
+
});
|
98 |
+
},
|
99 |
+
|
100 |
+
doMerchantLogin: function ()
|
101 |
+
{
|
102 |
+
if (this.validateMerchantLoginForm()) {
|
103 |
+
new Ajax.Request(this.merchantLoginEndpoint, {
|
104 |
+
method: 'post',
|
105 |
+
parameters: {
|
106 |
+
// login and password
|
107 |
+
user_name: $('futurepay_user_name').value,
|
108 |
+
password: $('futurepay_password').value
|
109 |
+
},
|
110 |
+
onSuccess: function (transport) {
|
111 |
+
if (typeof(transport.responseJSON) == 'object'
|
112 |
+
&& transport.responseJSON.error == 0) {
|
113 |
+
$('payment_futurepay_gmid').value = transport.responseJSON.key;
|
114 |
+
$('futurepay-merchant-login').hide();
|
115 |
+
}
|
116 |
+
alert(transport.responseJSON.message);
|
117 |
+
},
|
118 |
+
onFailure: function () { /*alert('Something went wrong...');*/ }
|
119 |
+
});
|
120 |
+
}
|
121 |
+
},
|
122 |
+
|
123 |
+
validateMerchantLoginForm: function ()
|
124 |
+
{
|
125 |
+
if ($('futurepay_user_name').value.length < 1
|
126 |
+
|| $('futurepay_password').value.length < 1) {
|
127 |
+
alert("The login and password fields can not be blank!");
|
128 |
+
return false;
|
129 |
+
} else {
|
130 |
+
return true;
|
131 |
+
}
|
132 |
+
},
|
133 |
+
|
134 |
+
doMerchantSignup: function ()
|
135 |
+
{
|
136 |
+
// get all the form names and values
|
137 |
+
var data = {};
|
138 |
+
$('futurepay-merchant-signup').select(':input[name!=futurepay_save]').each(function (el) {
|
139 |
+
data[el.readAttribute('name')] = el.value;
|
140 |
+
});
|
141 |
+
|
142 |
+
// put the phone number together
|
143 |
+
if (data.futurepay_main_phone.match(/[0-9]{10}/)) {
|
144 |
+
data['futurepay_main_phone'] = data.futurepay_main_phone.replace(/([0-9]{3})([0-9]{3})([0-9]{4})/, "$1-$2-$3");
|
145 |
+
}
|
146 |
+
|
147 |
+
if (this.validateMerchantSignupForm(data)) {
|
148 |
+
new Ajax.Request(this.merchantSignupEndpoint, {
|
149 |
+
method: 'post',
|
150 |
+
parameters: data,
|
151 |
+
onSuccess: function (transport) {
|
152 |
+
if (typeof(transport.responseJSON) == 'object'
|
153 |
+
&& transport.responseJSON.error == 0) {
|
154 |
+
$('payment_futurepay_gmid').value = transport.responseJSON.key;
|
155 |
+
$('futurepay-merchant-signup').hide();
|
156 |
+
}
|
157 |
+
alert(transport.responseJSON.message);
|
158 |
+
|
159 |
+
},
|
160 |
+
onFailure: function () { /*alert('Something went wrong...');*/ }
|
161 |
+
});
|
162 |
+
}
|
163 |
+
|
164 |
+
},
|
165 |
+
|
166 |
+
validateMerchantSignupForm: function (data)
|
167 |
+
{
|
168 |
+
var valid = true;
|
169 |
+
var messages = {};
|
170 |
+
|
171 |
+
// check for blank fields
|
172 |
+
var blanks = false;
|
173 |
+
$H(data).each(function(pair) {
|
174 |
+
if (pair.value.length < 1) {
|
175 |
+
blanks = true;
|
176 |
+
return;
|
177 |
+
}
|
178 |
+
});
|
179 |
+
|
180 |
+
if (blanks) {
|
181 |
+
alert("Failed to create a FuturePay account. All fields are required!");
|
182 |
+
return false;
|
183 |
+
}
|
184 |
+
|
185 |
+
// contact email
|
186 |
+
if (!data.futurepay_contact_email.match(/.+\@.+\..+/)) {
|
187 |
+
messages.futurepay_contact_email = "The supplied email address is not valid.";
|
188 |
+
valid = false;
|
189 |
+
}
|
190 |
+
|
191 |
+
// phone number
|
192 |
+
if (!data.futurepay_main_phone.match(/[0-9]{3}-[0-9]{3}-[0-9]{4}/)
|
193 |
+
&& !data.futurepay_main_phone.match(/[0-9]{10}/)) {
|
194 |
+
// try with ########## instead of ###-###-####
|
195 |
+
messages.futurepay_main_phone = "The supplied phone number is not a valid 10-digit phone number.";
|
196 |
+
valid = false;
|
197 |
+
}
|
198 |
+
|
199 |
+
// zip/postal
|
200 |
+
if (data.futurepay_country_code == 'US' && !data.futurepay_zip.match(/[0-9]{5}/)) {
|
201 |
+
messages.futurepay_zip = "The supplied ZIP code is not a valid ZIP code.";
|
202 |
+
valid = false;
|
203 |
+
} else if (data.futurepay_country_code == 'CA' && !data.futurepay_zip.match(/[A-Za-z0-9]{3}[- ]{0,1}[A-Za-z0-9]{3}/)) {
|
204 |
+
messages.futurepay_zip = "The supplied postal code is not a valid postal code.";
|
205 |
+
valid = false;
|
206 |
+
}
|
207 |
+
|
208 |
+
// the form is valid!
|
209 |
+
if (valid) {
|
210 |
+
return true;
|
211 |
+
} else {
|
212 |
+
// no it's not! spit out error messages
|
213 |
+
var msg_string = 'Could not submit the merchant sign-up form. One or more fields contain incorrect data:\n\n';
|
214 |
+
$H(messages).each(function(pair) {
|
215 |
+
msg_string += pair.value + '\n';
|
216 |
+
});
|
217 |
+
|
218 |
+
alert(msg_string);
|
219 |
+
return false;
|
220 |
+
}
|
221 |
+
}
|
222 |
+
};
|
skin/adminhtml/base/default/futurepay/logoFuturePay.png
ADDED
Binary file
|
skin/adminhtml/base/default/futurepay/styles.css
ADDED
@@ -0,0 +1,137 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
/* signup/login styles (admin) */
|
2 |
+
.futurepay-logo {
|
3 |
+
background: url(logoFuturePay.png) left top no-repeat;
|
4 |
+
width: 250px;
|
5 |
+
height: 62px;
|
6 |
+
margin: 0 auto 5px;
|
7 |
+
}
|
8 |
+
|
9 |
+
#futurepay-merchant-signup h1, #futurepay-merchant-signup h2, #futurepay-merchant-signup h3, #futurepay-merchant-signup h4,
|
10 |
+
#futurepay-merchant-signup h5, #futurepay-merchant-signup h6, #futurepay-merchant-login h1, #futurepay-merchant-login h2, #futurepay-merchant-login h3, #futurepay-merchant-login h4,
|
11 |
+
#futurepay-merchant-login h5, #futurepay-merchant-login h6 {
|
12 |
+
color: #80C400 !important;
|
13 |
+
font-family: 'Roboto', sans-serif;
|
14 |
+
font-weight: 300;
|
15 |
+
}
|
16 |
+
|
17 |
+
#futurepay-merchant-signup h3, #futurepay-merchant-login h3 {
|
18 |
+
font-size: 21px;
|
19 |
+
}
|
20 |
+
|
21 |
+
|
22 |
+
/* pg-font */
|
23 |
+
#futurepay-merchant-signup, #futurepay-merchant-login, #futurepay-merchant-signup-login {
|
24 |
+
font-family: Helvetica, Arial, sans-serif;
|
25 |
+
}
|
26 |
+
|
27 |
+
|
28 |
+
/* form styles */
|
29 |
+
|
30 |
+
.fm-group {
|
31 |
+
clear: both;
|
32 |
+
float: left;
|
33 |
+
width: 100%;
|
34 |
+
margin-bottom: 10px;
|
35 |
+
}
|
36 |
+
|
37 |
+
#futurepay-merchant-login .fm-group {
|
38 |
+
float: left;
|
39 |
+
width: 200px;
|
40 |
+
clear: none;
|
41 |
+
}
|
42 |
+
|
43 |
+
#futurepay-merchant-login .fm-group.last {
|
44 |
+
width: 100px;
|
45 |
+
}
|
46 |
+
|
47 |
+
#futurepay-merchant-signup {
|
48 |
+
width: 400px;
|
49 |
+
}
|
50 |
+
|
51 |
+
#futurepay-merchant-login {
|
52 |
+
width: 600px;
|
53 |
+
}
|
54 |
+
|
55 |
+
#futurepay-merchant-signup .col-lt {
|
56 |
+
width: 40%;
|
57 |
+
float: left;
|
58 |
+
padding-right: 4px;
|
59 |
+
box-sizing: border-box;
|
60 |
+
}
|
61 |
+
|
62 |
+
#futurepay-merchant-login .fm-group {
|
63 |
+
margin-right: 5px;
|
64 |
+
}
|
65 |
+
|
66 |
+
#futurepay-merchant-signup .col-rt {
|
67 |
+
width: 60%;
|
68 |
+
float: right;
|
69 |
+
padding-left: 4px;
|
70 |
+
box-sizing: border-box;
|
71 |
+
}
|
72 |
+
|
73 |
+
#futurepay-merchant-signup label {
|
74 |
+
text-align: right;
|
75 |
+
line-height: 40px;
|
76 |
+
color: #555555;
|
77 |
+
}
|
78 |
+
|
79 |
+
#futurepay-merchant-signup .fm-input, #futurepay-merchant-signup select, #futurepay-merchant-login .fm-input, #futurepay-merchant-login select {
|
80 |
+
border: 1px solid #bcbcbc;
|
81 |
+
width: 100%;
|
82 |
+
height: 36px;
|
83 |
+
box-sizing: border-box;
|
84 |
+
font-size: 15px;
|
85 |
+
padding: 2px 3px;
|
86 |
+
color: #555;
|
87 |
+
}
|
88 |
+
|
89 |
+
#futurepay-merchant-signup .fm-btn {
|
90 |
+
width: 100%;
|
91 |
+
background: #80C400;
|
92 |
+
border: 0;
|
93 |
+
height: 40px;
|
94 |
+
font-size: 15px;
|
95 |
+
font-weight: bold;
|
96 |
+
line-height: 40px;
|
97 |
+
color: #fff;
|
98 |
+
cursor: pointer;
|
99 |
+
}
|
100 |
+
|
101 |
+
#futurepay-merchant-login .fm-btn {
|
102 |
+
width: 100%;
|
103 |
+
background: #80C400;
|
104 |
+
border: 0;
|
105 |
+
height: 36px;
|
106 |
+
font-size: 15px;
|
107 |
+
font-weight: normal;
|
108 |
+
line-height: 30px;
|
109 |
+
color: #fff;
|
110 |
+
cursor: pointer;
|
111 |
+
}
|
112 |
+
|
113 |
+
#futurepay-merchant-signup .fm-btn:hover, #futurepay-merchant-login .fm-btn:hover {
|
114 |
+
background: #70AC00;
|
115 |
+
}
|
116 |
+
|
117 |
+
|
118 |
+
/* launcher */
|
119 |
+
#futurepay-merchant-signup-login {
|
120 |
+
border: 1px solid #dddddd;
|
121 |
+
text-align: center;
|
122 |
+
padding: 20px;
|
123 |
+
color: #6FA015;
|
124 |
+
width:500px;
|
125 |
+
}
|
126 |
+
|
127 |
+
#futurepay-merchant-signup-login a {
|
128 |
+
color: #466B00;
|
129 |
+
text-decoration: underline;
|
130 |
+
}
|
131 |
+
|
132 |
+
#futurepay-merchant-signup-login a:hover {
|
133 |
+
text-decoration: none;
|
134 |
+
}
|
135 |
+
|
136 |
+
|
137 |
+
|
skin/frontend/base/default/futurepay/arrow.png
ADDED
Binary file
|
skin/frontend/base/default/futurepay/fpButton.jpg
ADDED
Binary file
|
skin/frontend/base/default/futurepay/fpButton18.jpg
ADDED
Binary file
|
skin/frontend/base/default/futurepay/fp_logo.png
ADDED
Binary file
|
skin/frontend/base/default/futurepay/fp_small_logo.png
ADDED
Binary file
|
skin/frontend/base/default/futurepay/fplogo.png
ADDED
Binary file
|
skin/frontend/base/default/futurepay/icon-cart.png
ADDED
Binary file
|
skin/frontend/base/default/futurepay/icon-fee.png
ADDED
Binary file
|
skin/frontend/base/default/futurepay/icon-secure.png
ADDED
Binary file
|
skin/frontend/base/default/futurepay/styles.css
ADDED
@@ -0,0 +1,8 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
.futurepay-container{padding: 10px 20px; border: 1px solid #d3d3d3;}
|
2 |
+
.futurepay-button-container{display: block; margin-top: 20px;}
|
3 |
+
.futurepay-button-container button.futurepay-placeorder {height: 35px;border: 0 none;border-radius: 5px; -moz-border-radius: 5px; -webkit-border-radius: 5px;background-color: #0B9EDE;font-weight: bold;transition: color 300ms ease-in-out, background-color 300ms ease-in-out;-moz-transition: color 300ms ease-in-out, background-color 300ms ease-in-out;-webkit-transition: color 300ms ease-in-out, background-color 300ms ease-in-out;-o-transition: color 300ms ease-in-out, background-color 300ms ease-in-out;}
|
4 |
+
.futurepay-button-container button.futurepay-placeorder span{color: #FFF;}
|
5 |
+
.futurepay-button-container button.futurepay-placeorder:hover{background-color: #037BB0;}
|
6 |
+
.futurepay-button-container button.futurepay-placeorder span span {height: 35px;line-height: 35px;padding: 0 25px;}
|
7 |
+
.futurepay-container div.fp-purchase-static label.error{margin-bottom: 7px;}
|
8 |
+
.futurepay-container p.fp-need-account{margin: 10px;}
|
skin/frontend/base/default/futurepay/styles18.css
ADDED
@@ -0,0 +1,847 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
body, html {
|
2 |
+
padding:0px;
|
3 |
+
margin:0px;
|
4 |
+
background-color:#ffffff;
|
5 |
+
}
|
6 |
+
|
7 |
+
.fpInfo {
|
8 |
+
width: 100%; margin:0 auto; height:auto;box-sizing:border-box;padding: 20px; display:table; background:white;
|
9 |
+
}
|
10 |
+
|
11 |
+
.fpWrap {
|
12 |
+
width:100%;float:left; border: 1px solid #ddd; font-family: 'Helvetica', Arial, sans-serif;font-size:15px; color: #666666;
|
13 |
+
}
|
14 |
+
|
15 |
+
.fpInfo h2, .fpInfo h3 {
|
16 |
+
font-family: 'Source Sans Pro', sans-serif; color: rgb(128,195,64); font-weight:300; margin:0px; padding:0px;
|
17 |
+
}
|
18 |
+
|
19 |
+
.fpInfo h2 {
|
20 |
+
font-size: 46px; text-transform: uppercase;
|
21 |
+
}
|
22 |
+
|
23 |
+
.fpInfo h3 {
|
24 |
+
font-weight:400; text-align: left; margin: 0px 0px 20px; clear:both; text-transform: uppercase;
|
25 |
+
}
|
26 |
+
|
27 |
+
.fpContent, .fpSum {
|
28 |
+
padding: 2% 5% 0%; box-sizing: border-box; line-height: 21px;
|
29 |
+
}
|
30 |
+
|
31 |
+
.fpContent {
|
32 |
+
float:left; width:100%; border-bottom: 1px solid #ddd;
|
33 |
+
}
|
34 |
+
|
35 |
+
.fpHeading {
|
36 |
+
border-bottom: 1px solid #ddd; text-align: center; padding: 18px 0;
|
37 |
+
}
|
38 |
+
|
39 |
+
.fpSum {
|
40 |
+
text-align: center; width: 87%; margin:0 auto; font-weight: normal;
|
41 |
+
}
|
42 |
+
|
43 |
+
.fpContent p {
|
44 |
+
margin:0px 0px 16px; padding:0px; text-align: left; font-weight: normal;
|
45 |
+
}
|
46 |
+
|
47 |
+
.fpContent img {
|
48 |
+
margin-bottom: 20px;
|
49 |
+
}
|
50 |
+
|
51 |
+
.fpCol {
|
52 |
+
width:33%;box-sizing:border-box; padding:0% 2% 2%; float:left;text-align: left;
|
53 |
+
}
|
54 |
+
|
55 |
+
.fpFooter {
|
56 |
+
padding: 2% 7%; width:100%; clear:both;float:left;box-sizing:border-box;
|
57 |
+
}
|
58 |
+
|
59 |
+
.fpFooter .logo {
|
60 |
+
float:left;
|
61 |
+
}
|
62 |
+
|
63 |
+
.fpFooter .tag {
|
64 |
+
font-family: 'Source Sans Pro', sans-serif; color: #888888; font-size: 18px; font-weight: 300; float:right; margin-top: 10px;
|
65 |
+
}
|
66 |
+
|
67 |
+
#fp-custom-description {
|
68 |
+
background-color: #f4f4f4; color: #636363; display: inline-block; float: none; max-width: none; min-width: none; width: auto;
|
69 |
+
}
|
70 |
+
|
71 |
+
|
72 |
+
.FP_redirectmessage {
|
73 |
+
font-size: medium;
|
74 |
+
line-height: 1;
|
75 |
+
direction: ltr;
|
76 |
+
text-align: left;
|
77 |
+
text-align: start;
|
78 |
+
color: black;
|
79 |
+
font-style: normal;
|
80 |
+
font-weight: normal;
|
81 |
+
text-decoration: none;
|
82 |
+
list-style-type: disc;
|
83 |
+
background-color: white;
|
84 |
+
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
85 |
+
}
|
86 |
+
.FP_redirectmessage h1,
|
87 |
+
.FP_redirectmessage h2,
|
88 |
+
.FP_redirectmessage h3,
|
89 |
+
.FP_redirectmessage h4,
|
90 |
+
.FP_redirectmessage h5,
|
91 |
+
.FP_redirectmessage h6,
|
92 |
+
.FP_redirectmessage p,
|
93 |
+
.FP_redirectmessage td,
|
94 |
+
.FP_redirectmessage dl,
|
95 |
+
.FP_redirectmessage tr,
|
96 |
+
.FP_redirectmessage dt,
|
97 |
+
.FP_redirectmessage ol,
|
98 |
+
.FP_redirectmessage form,
|
99 |
+
.FP_redirectmessage select,
|
100 |
+
.FP_redirectmessage option,
|
101 |
+
.FP_redirectmessage pre,
|
102 |
+
.FP_redirectmessage div,
|
103 |
+
.FP_redirectmessage table,
|
104 |
+
.FP_redirectmessage th,
|
105 |
+
.FP_redirectmessage tbody,
|
106 |
+
.FP_redirectmessage tfoot,
|
107 |
+
.FP_redirectmessage caption,
|
108 |
+
.FP_redirectmessage thead,
|
109 |
+
.FP_redirectmessage ul,
|
110 |
+
.FP_redirectmessage li,
|
111 |
+
.FP_redirectmessage address,
|
112 |
+
.FP_redirectmessage blockquote,
|
113 |
+
.FP_redirectmessage dd,
|
114 |
+
.FP_redirectmessage fieldset,
|
115 |
+
.FP_redirectmessage li,
|
116 |
+
.FP_redirectmessage iframe,
|
117 |
+
.FP_redirectmessage strong,
|
118 |
+
.FP_redirectmessage legend,
|
119 |
+
.FP_redirectmessage em,
|
120 |
+
.FP_redirectmessage summary,
|
121 |
+
.FP_redirectmessage cite,
|
122 |
+
.FP_redirectmessage span,
|
123 |
+
.FP_redirectmessage input,
|
124 |
+
.FP_redirectmessage sup,
|
125 |
+
.FP_redirectmessage label,
|
126 |
+
.FP_redirectmessage dfn,
|
127 |
+
.FP_redirectmessage object,
|
128 |
+
.FP_redirectmessage big,
|
129 |
+
.FP_redirectmessage q,
|
130 |
+
.FP_redirectmessage samp,
|
131 |
+
.FP_redirectmessage acronym,
|
132 |
+
.FP_redirectmessage small,
|
133 |
+
.FP_redirectmessage img,
|
134 |
+
.FP_redirectmessage strike,
|
135 |
+
.FP_redirectmessage code,
|
136 |
+
.FP_redirectmessage sub,
|
137 |
+
.FP_redirectmessage ins,
|
138 |
+
.FP_redirectmessage textarea,
|
139 |
+
.FP_redirectmessage button,
|
140 |
+
.FP_redirectmessage var,
|
141 |
+
.FP_redirectmessage a,
|
142 |
+
.FP_redirectmessage abbr,
|
143 |
+
.FP_redirectmessage applet,
|
144 |
+
.FP_redirectmessage del,
|
145 |
+
.FP_redirectmessage kbd,
|
146 |
+
.FP_redirectmessage tt,
|
147 |
+
.FP_redirectmessage b,
|
148 |
+
.FP_redirectmessage i,
|
149 |
+
.FP_redirectmessage hr,
|
150 |
+
.FP_redirectmessage article,
|
151 |
+
.FP_redirectmessage aside,
|
152 |
+
.FP_redirectmessage figure,
|
153 |
+
.FP_redirectmessage figcaption,
|
154 |
+
.FP_redirectmessage footer,
|
155 |
+
.FP_redirectmessage header,
|
156 |
+
.FP_redirectmessage menu,
|
157 |
+
.FP_redirectmessage nav,
|
158 |
+
.FP_redirectmessage section,
|
159 |
+
.FP_redirectmessage time,
|
160 |
+
.FP_redirectmessage mark,
|
161 |
+
.FP_redirectmessage audio,
|
162 |
+
.FP_redirectmessage video,
|
163 |
+
.FP_redirectmessage abbr,
|
164 |
+
.FP_redirectmessage address,
|
165 |
+
.FP_redirectmessage area,
|
166 |
+
.FP_redirectmessage blockquote,
|
167 |
+
.FP_redirectmessage canvas,
|
168 |
+
.FP_redirectmessage caption,
|
169 |
+
.FP_redirectmessage cite,
|
170 |
+
.FP_redirectmessage code,
|
171 |
+
.FP_redirectmessage colgroup,
|
172 |
+
.FP_redirectmessage col,
|
173 |
+
.FP_redirectmessage datalist,
|
174 |
+
.FP_redirectmessage fieldset,
|
175 |
+
.FP_redirectmessage main,
|
176 |
+
.FP_redirectmessage map,
|
177 |
+
.FP_redirectmessage meta,
|
178 |
+
.FP_redirectmessage optgroup,
|
179 |
+
.FP_redirectmessage output,
|
180 |
+
.FP_redirectmessage progress {
|
181 |
+
background-attachment: scroll;
|
182 |
+
background-color: transparent;
|
183 |
+
background-image: none;
|
184 |
+
background-position: 0 0;
|
185 |
+
background-repeat: repeat;
|
186 |
+
border-color: black;
|
187 |
+
border-color: currentColor;
|
188 |
+
border-style: none;
|
189 |
+
border-width: medium;
|
190 |
+
bottom: auto;
|
191 |
+
clear: none;
|
192 |
+
clip: auto;
|
193 |
+
color: inherit;
|
194 |
+
counter-increment: none;
|
195 |
+
counter-reset: none;
|
196 |
+
cursor: auto;
|
197 |
+
direction: inherit;
|
198 |
+
display: inline;
|
199 |
+
float: none;
|
200 |
+
font-family: inherit;
|
201 |
+
font-size: inherit;
|
202 |
+
font-style: inherit;
|
203 |
+
font-variant: normal;
|
204 |
+
font-weight: inherit;
|
205 |
+
height: auto;
|
206 |
+
left: auto;
|
207 |
+
letter-spacing: normal;
|
208 |
+
line-height: inherit;
|
209 |
+
list-style-type: inherit;
|
210 |
+
list-style-position: outside;
|
211 |
+
list-style-image: none;
|
212 |
+
margin: 0;
|
213 |
+
max-height: none;
|
214 |
+
max-width: none;
|
215 |
+
min-height: 0;
|
216 |
+
min-width: 0;
|
217 |
+
opacity: 1;
|
218 |
+
outline: invert none medium;
|
219 |
+
overflow: visible;
|
220 |
+
padding: 0;
|
221 |
+
position: static;
|
222 |
+
quotes: "" "";
|
223 |
+
right: auto;
|
224 |
+
table-layout: auto;
|
225 |
+
text-align: inherit;
|
226 |
+
text-decoration: inherit;
|
227 |
+
text-indent: 0;
|
228 |
+
text-transform: none;
|
229 |
+
top: auto;
|
230 |
+
unicode-bidi: normal;
|
231 |
+
vertical-align: baseline;
|
232 |
+
visibility: inherit;
|
233 |
+
white-space: normal;
|
234 |
+
width: auto;
|
235 |
+
word-spacing: normal;
|
236 |
+
z-index: auto;
|
237 |
+
-webkit-background-origin: padding-box;
|
238 |
+
background-origin: padding-box;
|
239 |
+
-webkit-background-clip: border-box;
|
240 |
+
background-clip: border-box;
|
241 |
+
-webkit-background-size: auto;
|
242 |
+
-moz-background-size: auto;
|
243 |
+
background-size: auto;
|
244 |
+
-webkit-border-image: none;
|
245 |
+
-moz-border-image: none;
|
246 |
+
-o-border-image: none;
|
247 |
+
border-image: none;
|
248 |
+
-webkit-border-radius: 0;
|
249 |
+
-moz-border-radius: 0;
|
250 |
+
border-radius: 0;
|
251 |
+
-webkit-box-shadow: none;
|
252 |
+
box-shadow: none;
|
253 |
+
-webkit-box-sizing: content-box;
|
254 |
+
-moz-box-sizing: content-box;
|
255 |
+
box-sizing: content-box;
|
256 |
+
-webkit-column-count: auto;
|
257 |
+
-moz-column-count: auto;
|
258 |
+
column-count: auto;
|
259 |
+
-webkit-column-gap: normal;
|
260 |
+
-moz-column-gap: normal;
|
261 |
+
column-gap: normal;
|
262 |
+
-webkit-column-rule: medium none black;
|
263 |
+
-moz-column-rule: medium none black;
|
264 |
+
column-rule: medium none black;
|
265 |
+
-webkit-column-span: 1;
|
266 |
+
-moz-column-span: 1;
|
267 |
+
column-span: 1;
|
268 |
+
-webkit-column-width: auto;
|
269 |
+
-moz-column-width: auto;
|
270 |
+
column-width: auto;
|
271 |
+
font-feature-settings: normal;
|
272 |
+
overflow-x: visible;
|
273 |
+
overflow-y: visible;
|
274 |
+
-webkit-hyphens: manual;
|
275 |
+
-moz-hyphens: manual;
|
276 |
+
hyphens: manual;
|
277 |
+
-webkit-perspective: none;
|
278 |
+
-moz-perspective: none;
|
279 |
+
-ms-perspective: none;
|
280 |
+
-o-perspective: none;
|
281 |
+
perspective: none;
|
282 |
+
-webkit-perspective-origin: 50% 50%;
|
283 |
+
-moz-perspective-origin: 50% 50%;
|
284 |
+
-ms-perspective-origin: 50% 50%;
|
285 |
+
-o-perspective-origin: 50% 50%;
|
286 |
+
perspective-origin: 50% 50%;
|
287 |
+
-webkit-backface-visibility: visible;
|
288 |
+
-moz-backface-visibility: visible;
|
289 |
+
-ms-backface-visibility: visible;
|
290 |
+
-o-backface-visibility: visible;
|
291 |
+
backface-visibility: visible;
|
292 |
+
text-shadow: none;
|
293 |
+
-webkit-transition: all 0s ease 0s;
|
294 |
+
transition: all 0s ease 0s;
|
295 |
+
-webkit-transform: none;
|
296 |
+
-moz-transform: none;
|
297 |
+
-ms-transform: none;
|
298 |
+
-o-transform: none;
|
299 |
+
transform: none;
|
300 |
+
-webkit-transform-origin: 50% 50%;
|
301 |
+
-moz-transform-origin: 50% 50%;
|
302 |
+
-ms-transform-origin: 50% 50%;
|
303 |
+
-o-transform-origin: 50% 50%;
|
304 |
+
transform-origin: 50% 50%;
|
305 |
+
-webkit-transform-style: flat;
|
306 |
+
-moz-transform-style: flat;
|
307 |
+
-ms-transform-style: flat;
|
308 |
+
-o-transform-style: flat;
|
309 |
+
transform-style: flat;
|
310 |
+
word-break: normal;
|
311 |
+
}
|
312 |
+
.FP_redirectmessage h3,
|
313 |
+
.FP_redirectmessage h5,
|
314 |
+
.FP_redirectmessage p,
|
315 |
+
.FP_redirectmessage h1,
|
316 |
+
.FP_redirectmessage dl,
|
317 |
+
.FP_redirectmessage dt,
|
318 |
+
.FP_redirectmessage h6,
|
319 |
+
.FP_redirectmessage ol,
|
320 |
+
.FP_redirectmessage form,
|
321 |
+
.FP_redirectmessage option,
|
322 |
+
.FP_redirectmessage pre,
|
323 |
+
.FP_redirectmessage div,
|
324 |
+
.FP_redirectmessage h2,
|
325 |
+
.FP_redirectmessage caption,
|
326 |
+
.FP_redirectmessage h4,
|
327 |
+
.FP_redirectmessage ul,
|
328 |
+
.FP_redirectmessage address,
|
329 |
+
.FP_redirectmessage blockquote,
|
330 |
+
.FP_redirectmessage dd,
|
331 |
+
.FP_redirectmessage fieldset,
|
332 |
+
.FP_redirectmessage hr,
|
333 |
+
.FP_redirectmessage article,
|
334 |
+
.FP_redirectmessage dialog,
|
335 |
+
.FP_redirectmessage figure,
|
336 |
+
.FP_redirectmessage footer,
|
337 |
+
.FP_redirectmessage header,
|
338 |
+
.FP_redirectmessage hgroup,
|
339 |
+
.FP_redirectmessage menu,
|
340 |
+
.FP_redirectmessage nav,
|
341 |
+
.FP_redirectmessage section,
|
342 |
+
.FP_redirectmessage audio,
|
343 |
+
.FP_redirectmessage video,
|
344 |
+
.FP_redirectmessage address,
|
345 |
+
.FP_redirectmessage blockquote,
|
346 |
+
.FP_redirectmessage colgroup,
|
347 |
+
.FP_redirectmessage main,
|
348 |
+
.FP_redirectmessage progress,
|
349 |
+
.FP_redirectmessage summary {
|
350 |
+
display: block;
|
351 |
+
}
|
352 |
+
.FP_redirectmessage h1,
|
353 |
+
.FP_redirectmessage h2,
|
354 |
+
.FP_redirectmessage h3,
|
355 |
+
.FP_redirectmessage h4,
|
356 |
+
.FP_redirectmessage h5,
|
357 |
+
.FP_redirectmessage h6 {
|
358 |
+
font-weight: bold;
|
359 |
+
}
|
360 |
+
.FP_redirectmessage h1 {
|
361 |
+
font-size: 2em;
|
362 |
+
padding: .67em 0;
|
363 |
+
}
|
364 |
+
.FP_redirectmessage h2 {
|
365 |
+
font-size: 1.5em;
|
366 |
+
padding: .83em 0;
|
367 |
+
}
|
368 |
+
.FP_redirectmessage h3 {
|
369 |
+
font-size: 1.17em;
|
370 |
+
padding: .83em 0;
|
371 |
+
}
|
372 |
+
.FP_redirectmessage h4 {
|
373 |
+
font-size: 1em;
|
374 |
+
}
|
375 |
+
.FP_redirectmessage h5 {
|
376 |
+
font-size: .83em;
|
377 |
+
}
|
378 |
+
.FP_redirectmessage p {
|
379 |
+
margin: 1em 0;
|
380 |
+
}
|
381 |
+
.FP_redirectmessage table {
|
382 |
+
display: table;
|
383 |
+
}
|
384 |
+
.FP_redirectmessage thead {
|
385 |
+
display: table-header-group;
|
386 |
+
}
|
387 |
+
.FP_redirectmessage tbody {
|
388 |
+
display: table-row-group;
|
389 |
+
}
|
390 |
+
.FP_redirectmessage tfoot {
|
391 |
+
display: table-footer-group;
|
392 |
+
}
|
393 |
+
.FP_redirectmessage tr {
|
394 |
+
display: table-row;
|
395 |
+
}
|
396 |
+
.FP_redirectmessage th,
|
397 |
+
.FP_redirectmessage td {
|
398 |
+
display: table-cell;
|
399 |
+
padding: 2px;
|
400 |
+
}
|
401 |
+
.FP_redirectmessage ol,
|
402 |
+
.FP_redirectmessage ul {
|
403 |
+
margin: 1em 0;
|
404 |
+
}
|
405 |
+
.FP_redirectmessage ul li,
|
406 |
+
.FP_redirectmessage ul ul li,
|
407 |
+
.FP_redirectmessage ul ul ul li,
|
408 |
+
.FP_redirectmessage ol li,
|
409 |
+
.FP_redirectmessage ol ol li,
|
410 |
+
.FP_redirectmessage ol ol ol li,
|
411 |
+
.FP_redirectmessage ul ol ol li,
|
412 |
+
.FP_redirectmessage ul ul ol li,
|
413 |
+
.FP_redirectmessage ol ul ul li,
|
414 |
+
.FP_redirectmessage ol ol ul li {
|
415 |
+
list-style-position: inside;
|
416 |
+
margin-top: .08em;
|
417 |
+
}
|
418 |
+
.FP_redirectmessage ol ol,
|
419 |
+
.FP_redirectmessage ol ol ol,
|
420 |
+
.FP_redirectmessage ul ul,
|
421 |
+
.FP_redirectmessage ul ul ul,
|
422 |
+
.FP_redirectmessage ol ul,
|
423 |
+
.FP_redirectmessage ol ul ul,
|
424 |
+
.FP_redirectmessage ol ol ul,
|
425 |
+
.FP_redirectmessage ul ol,
|
426 |
+
.FP_redirectmessage ul ol ol,
|
427 |
+
.FP_redirectmessage ul ul ol {
|
428 |
+
padding-left: 40px;
|
429 |
+
margin: 0;
|
430 |
+
}
|
431 |
+
.FP_redirectmessage nav ul,
|
432 |
+
.FP_redirectmessage nav ol {
|
433 |
+
list-style-type: none;
|
434 |
+
}
|
435 |
+
.FP_redirectmessage ul,
|
436 |
+
.FP_redirectmessage menu {
|
437 |
+
list-style-type: disc;
|
438 |
+
}
|
439 |
+
.FP_redirectmessage ol {
|
440 |
+
list-style-type: decimal;
|
441 |
+
}
|
442 |
+
.FP_redirectmessage ol ul,
|
443 |
+
.FP_redirectmessage ul ul,
|
444 |
+
.FP_redirectmessage menu ul,
|
445 |
+
.FP_redirectmessage ol menu,
|
446 |
+
.FP_redirectmessage ul menu,
|
447 |
+
.FP_redirectmessage menu menu {
|
448 |
+
list-style-type: circle;
|
449 |
+
}
|
450 |
+
.FP_redirectmessage ol ol ul,
|
451 |
+
.FP_redirectmessage ol ul ul,
|
452 |
+
.FP_redirectmessage ol menu ul,
|
453 |
+
.FP_redirectmessage ol ol menu,
|
454 |
+
.FP_redirectmessage ol ul menu,
|
455 |
+
.FP_redirectmessage ol menu menu,
|
456 |
+
.FP_redirectmessage ul ol ul,
|
457 |
+
.FP_redirectmessage ul ul ul,
|
458 |
+
.FP_redirectmessage ul menu ul,
|
459 |
+
.FP_redirectmessage ul ol menu,
|
460 |
+
.FP_redirectmessage ul ul menu,
|
461 |
+
.FP_redirectmessage ul menu menu,
|
462 |
+
.FP_redirectmessage menu ol ul,
|
463 |
+
.FP_redirectmessage menu ul ul,
|
464 |
+
.FP_redirectmessage menu menu ul,
|
465 |
+
.FP_redirectmessage menu ol menu,
|
466 |
+
.FP_redirectmessage menu ul menu,
|
467 |
+
.FP_redirectmessage menu menu menu {
|
468 |
+
list-style-type: square;
|
469 |
+
}
|
470 |
+
.FP_redirectmessage li {
|
471 |
+
display: list-item;
|
472 |
+
min-height: auto;
|
473 |
+
min-width: auto;
|
474 |
+
padding-left: 20px;
|
475 |
+
}
|
476 |
+
.FP_redirectmessage strong {
|
477 |
+
font-weight: bold;
|
478 |
+
}
|
479 |
+
.FP_redirectmessage em {
|
480 |
+
font-style: italic;
|
481 |
+
}
|
482 |
+
.FP_redirectmessage kbd,
|
483 |
+
.FP_redirectmessage samp,
|
484 |
+
.FP_redirectmessage code,
|
485 |
+
.FP_redirectmessage pre {
|
486 |
+
font-family: monospace;
|
487 |
+
}
|
488 |
+
.FP_redirectmessage a {
|
489 |
+
color: blue;
|
490 |
+
text-decoration: underline;
|
491 |
+
}
|
492 |
+
.FP_redirectmessage a:visited {
|
493 |
+
color: #529;
|
494 |
+
}
|
495 |
+
.FP_redirectmessage a,
|
496 |
+
.FP_redirectmessage a *,
|
497 |
+
.FP_redirectmessage input[type=submit],
|
498 |
+
.FP_redirectmessage input[type=radio],
|
499 |
+
.FP_redirectmessage input[type=checkbox],
|
500 |
+
.FP_redirectmessage select {
|
501 |
+
cursor: pointer;
|
502 |
+
}
|
503 |
+
.FP_redirectmessage button,
|
504 |
+
.FP_redirectmessage input[type=submit],
|
505 |
+
.FP_redirectmessage input[type=submit]:hover,
|
506 |
+
.FP_redirectmessage input[type=submit]:active {
|
507 |
+
text-align: center;
|
508 |
+
padding: 2px 6px 3px;
|
509 |
+
border-radius: 4px;
|
510 |
+
text-decoration: none;
|
511 |
+
font-family: arial, helvetica, sans-serif;
|
512 |
+
font-size: small;
|
513 |
+
background: white;
|
514 |
+
-webkit-appearance: push-button;
|
515 |
+
color: buttontext;
|
516 |
+
border: 1px #a6a6a6 solid;
|
517 |
+
background: lightgrey;
|
518 |
+
background: #ffffff;
|
519 |
+
background: -moz-linear-gradient(top, #ffffff 0%, #dddddd 100%, #d1d1d1 100%, #dddddd 100%);
|
520 |
+
/* FF3.6+ */
|
521 |
+
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #dddddd), color-stop(100%, #d1d1d1), color-stop(100%, #dddddd));
|
522 |
+
/* Chrome,Safari4+ */
|
523 |
+
background: -webkit-linear-gradient(top, #ffffff 0%, #dddddd 100%, #d1d1d1 100%, #dddddd 100%);
|
524 |
+
/* Chrome10+,Safari5.1+ */
|
525 |
+
background: -o-linear-gradient(top, #ffffff 0%, #dddddd 100%, #d1d1d1 100%, #dddddd 100%);
|
526 |
+
/* Opera 11.10+ */
|
527 |
+
background: -ms-linear-gradient(top, #ffffff 0%, #dddddd 100%, #d1d1d1 100%, #dddddd 100%);
|
528 |
+
/* IE10+ */
|
529 |
+
background: linear-gradient(to bottom, #ffffff 0%, #dddddd 100%, #d1d1d1 100%, #dddddd 100%);
|
530 |
+
/* W3C */
|
531 |
+
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#dddddd', GradientType=0);
|
532 |
+
/* IE6-9 */
|
533 |
+
-webkit-box-shadow: 1px 1px 0px #eee;
|
534 |
+
-moz-box-shadow: 1px 1px 0px #eee;
|
535 |
+
-o-box-shadow: 1px 1px 0px #eee;
|
536 |
+
box-shadow: 1px 1px 0px #eee;
|
537 |
+
outline: initial;
|
538 |
+
}
|
539 |
+
.FP_redirectmessage button {
|
540 |
+
padding: 1px 6px 2px 6px;
|
541 |
+
margin-right: 5px;
|
542 |
+
}
|
543 |
+
.FP_redirectmessage input[type=hidden] {
|
544 |
+
display: none;
|
545 |
+
}
|
546 |
+
.FP_redirectmessage textarea {
|
547 |
+
-webkit-appearance: textarea;
|
548 |
+
background: white;
|
549 |
+
padding: 2px;
|
550 |
+
margin-left: 4px;
|
551 |
+
word-wrap: break-word;
|
552 |
+
white-space: pre-wrap;
|
553 |
+
font-size: 11px;
|
554 |
+
font-family: arial, helvetica, sans-serif;
|
555 |
+
line-height: 13px;
|
556 |
+
resize: both;
|
557 |
+
}
|
558 |
+
.FP_redirectmessage select,
|
559 |
+
.FP_redirectmessage textarea,
|
560 |
+
.FP_redirectmessage input {
|
561 |
+
border: 1px solid #ccc;
|
562 |
+
}
|
563 |
+
.FP_redirectmessage select {
|
564 |
+
font-size: 11px;
|
565 |
+
font-family: helvetica, arial, sans-serif;
|
566 |
+
display: inline-block;
|
567 |
+
}
|
568 |
+
.FP_redirectmessage textarea:focus,
|
569 |
+
.FP_redirectmessage input:focus {
|
570 |
+
outline: auto 5px -webkit-focus-ring-color;
|
571 |
+
outline: initial;
|
572 |
+
}
|
573 |
+
.FP_redirectmessage input[type=text] {
|
574 |
+
background: white;
|
575 |
+
padding: 1px;
|
576 |
+
font-family: initial;
|
577 |
+
font-size: small;
|
578 |
+
}
|
579 |
+
.FP_redirectmessage input[type=checkbox],
|
580 |
+
.FP_redirectmessage input[type=radio] {
|
581 |
+
border: 1px #2b2b2b solid;
|
582 |
+
border-radius: 4px;
|
583 |
+
}
|
584 |
+
.FP_redirectmessage input[type=checkbox],
|
585 |
+
.FP_redirectmessage input[type=radio] {
|
586 |
+
outline: initial;
|
587 |
+
}
|
588 |
+
.FP_redirectmessage input[type=radio] {
|
589 |
+
margin: 2px 2px 3px 2px;
|
590 |
+
}
|
591 |
+
.FP_redirectmessage input[type=submit]:active,
|
592 |
+
.FP_redirectmessage button:active {
|
593 |
+
background: #3b679e;
|
594 |
+
/* Old browsers */
|
595 |
+
background: -moz-linear-gradient(top, #3b679e 0%, #2b88d9 50%, #207cca 51%, #7db9e8 100%);
|
596 |
+
/* FF3.6+ */
|
597 |
+
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #3b679e), color-stop(50%, #2b88d9), color-stop(51%, #207cca), color-stop(100%, #7db9e8));
|
598 |
+
/* Chrome,Safari4+ */
|
599 |
+
background: -webkit-linear-gradient(top, #3b679e 0%, #2b88d9 50%, #207cca 51%, #7db9e8 100%);
|
600 |
+
/* Chrome10+,Safari5.1+ */
|
601 |
+
background: -o-linear-gradient(top, #3b679e 0%, #2b88d9 50%, #207cca 51%, #7db9e8 100%);
|
602 |
+
/* Opera 11.10+ */
|
603 |
+
background: -ms-linear-gradient(top, #3b679e 0%, #2b88d9 50%, #207cca 51%, #7db9e8 100%);
|
604 |
+
/* IE10+ */
|
605 |
+
background: linear-gradient(to bottom, #3b679e 0%, #2b88d9 50%, #207cca 51%, #7db9e8 100%);
|
606 |
+
/* W3C */
|
607 |
+
border-color: #5259b0;
|
608 |
+
}
|
609 |
+
.FP_redirectmessage abbr[title],
|
610 |
+
.FP_redirectmessage acronym[title],
|
611 |
+
.FP_redirectmessage dfn[title] {
|
612 |
+
cursor: help;
|
613 |
+
border-bottom-width: 1px;
|
614 |
+
border-bottom-style: dotted;
|
615 |
+
}
|
616 |
+
.FP_redirectmessage ins {
|
617 |
+
background-color: #ff9;
|
618 |
+
color: black;
|
619 |
+
}
|
620 |
+
.FP_redirectmessage del {
|
621 |
+
text-decoration: line-through;
|
622 |
+
}
|
623 |
+
.FP_redirectmessage blockquote,
|
624 |
+
.FP_redirectmessage q {
|
625 |
+
quotes: none;
|
626 |
+
}
|
627 |
+
.FP_redirectmessage blockquote:before,
|
628 |
+
.FP_redirectmessage blockquote:after,
|
629 |
+
.FP_redirectmessage q:before,
|
630 |
+
.FP_redirectmessage q:after,
|
631 |
+
.FP_redirectmessage li:before,
|
632 |
+
.FP_redirectmessage li:after {
|
633 |
+
content: "";
|
634 |
+
}
|
635 |
+
.FP_redirectmessage input,
|
636 |
+
.FP_redirectmessage select {
|
637 |
+
vertical-align: middle;
|
638 |
+
}
|
639 |
+
.FP_redirectmessage table {
|
640 |
+
border-collapse: collapse;
|
641 |
+
border-spacing: 0;
|
642 |
+
}
|
643 |
+
.FP_redirectmessage hr {
|
644 |
+
display: block;
|
645 |
+
height: 1px;
|
646 |
+
border: 0;
|
647 |
+
border-top: 1px solid #ccc;
|
648 |
+
margin: 1em 0;
|
649 |
+
}
|
650 |
+
.FP_redirectmessage *[dir=rtl] {
|
651 |
+
direction: rtl;
|
652 |
+
}
|
653 |
+
.FP_redirectmessage mark {
|
654 |
+
background-color: #ff9;
|
655 |
+
color: black;
|
656 |
+
font-style: italic;
|
657 |
+
font-weight: bold;
|
658 |
+
}
|
659 |
+
.FP_redirectmessage menu {
|
660 |
+
padding-left: 40px;
|
661 |
+
padding-top: 8px;
|
662 |
+
}
|
663 |
+
.FP_redirectmessage [hidden],
|
664 |
+
.FP_redirectmessage template {
|
665 |
+
display: none;
|
666 |
+
}
|
667 |
+
.FP_redirectmessage abbr[title] {
|
668 |
+
border-bottom: 1px dotted;
|
669 |
+
}
|
670 |
+
.FP_redirectmessage sub,
|
671 |
+
.FP_redirectmessage sup {
|
672 |
+
font-size: 75%;
|
673 |
+
line-height: 0;
|
674 |
+
position: relative;
|
675 |
+
vertical-align: baseline;
|
676 |
+
}
|
677 |
+
.FP_redirectmessage sup {
|
678 |
+
top: -0.5em;
|
679 |
+
}
|
680 |
+
.FP_redirectmessage sub {
|
681 |
+
bottom: -0.25em;
|
682 |
+
}
|
683 |
+
.FP_redirectmessage img {
|
684 |
+
border: 0;
|
685 |
+
}
|
686 |
+
.FP_redirectmessage figure {
|
687 |
+
margin: 0;
|
688 |
+
}
|
689 |
+
.FP_redirectmessage textarea {
|
690 |
+
overflow: auto;
|
691 |
+
vertical-align: top;
|
692 |
+
}
|
693 |
+
.FP_redirectmessage pre {
|
694 |
+
white-space: pre;
|
695 |
+
}
|
696 |
+
.FP_redirectmessage #fp-signup-form,
|
697 |
+
.FP_redirectmessage #fp-login-form {
|
698 |
+
max-width: 500px;
|
699 |
+
padding: 10px;
|
700 |
+
margin: 10px;
|
701 |
+
vertical-align: middle;
|
702 |
+
-webkit-border-radius: 5px;
|
703 |
+
-moz-border-radius: 5px;
|
704 |
+
border-radius: 5px;
|
705 |
+
-moz-background-clip: padding;
|
706 |
+
-webkit-background-clip: padding-box;
|
707 |
+
background-clip: padding-box;
|
708 |
+
}
|
709 |
+
.FP_redirectmessage #fp-signup-form .fp-label,
|
710 |
+
.FP_redirectmessage #fp-login-form .fp-label {
|
711 |
+
display: block;
|
712 |
+
margin-right: 20px;
|
713 |
+
padding-left: 4px;
|
714 |
+
color: #A0A0A0;
|
715 |
+
}
|
716 |
+
.FP_redirectmessage #fp-signup-form input,
|
717 |
+
.FP_redirectmessage #fp-login-form input,
|
718 |
+
.FP_redirectmessage #fp-signup-form select,
|
719 |
+
.FP_redirectmessage #fp-login-form select {
|
720 |
+
font-family: Lato, monospace;
|
721 |
+
width: 100%;
|
722 |
+
display: inline-block;
|
723 |
+
font-size: 1em;
|
724 |
+
margin: 5px 10px 10px 10px auto;
|
725 |
+
padding: 0 10px 0 2px;
|
726 |
+
height: 1.9em;
|
727 |
+
-webkit-border-radius: 2px;
|
728 |
+
-moz-border-radius: 2px;
|
729 |
+
border-radius: 2px;
|
730 |
+
-moz-background-clip: padding;
|
731 |
+
-webkit-background-clip: padding-box;
|
732 |
+
background-clip: padding-box;
|
733 |
+
}
|
734 |
+
.FP_redirectmessage #fp-signup-form select,
|
735 |
+
.FP_redirectmessage #fp-login-form select {
|
736 |
+
width: 95px;
|
737 |
+
background-color: white;
|
738 |
+
-webkit-border-radius: 2px;
|
739 |
+
-moz-border-radius: 2px;
|
740 |
+
border-radius: 2px;
|
741 |
+
-moz-background-clip: padding;
|
742 |
+
-webkit-background-clip: padding-box;
|
743 |
+
background-clip: padding-box;
|
744 |
+
}
|
745 |
+
.FP_redirectmessage #fp-signup-form #zip,
|
746 |
+
.FP_redirectmessage #fp-login-form #zip,
|
747 |
+
.FP_redirectmessage #fp-signup-form #main_phone,
|
748 |
+
.FP_redirectmessage #fp-login-form #main_phone,
|
749 |
+
.FP_redirectmessage #fp-signup-form #ssn,
|
750 |
+
.FP_redirectmessage #fp-login-form #ssn {
|
751 |
+
max-width: 325px;
|
752 |
+
}
|
753 |
+
.FP_redirectmessage #fp-signup-form img,
|
754 |
+
.FP_redirectmessage #fp-login-form img {
|
755 |
+
vertical-align: middle;
|
756 |
+
display: inline;
|
757 |
+
margin-bottom: 15px;
|
758 |
+
}
|
759 |
+
.FP_redirectmessage #fp-signup-form input[type="button"],
|
760 |
+
.FP_redirectmessage #fp-login-form input[type="button"] {
|
761 |
+
margin: 0px 15px 15px 0px;
|
762 |
+
height: 22px;
|
763 |
+
display: inline-block;
|
764 |
+
font-size: 1em;
|
765 |
+
margin-right: 100px;
|
766 |
+
text-decoration: none;
|
767 |
+
width: 120px;
|
768 |
+
border-radius: 2px;
|
769 |
+
cursor: pointer;
|
770 |
+
transition: background-color 0.2s ease-out, border-color 0.2s ease-out, color 0.2s ease-out;
|
771 |
+
padding: 8px;
|
772 |
+
color: #34ABDD;
|
773 |
+
border-color: #34ABDD;
|
774 |
+
border: 2px solid #34ABDD;
|
775 |
+
text-align: center;
|
776 |
+
outline: none;
|
777 |
+
}
|
778 |
+
.FP_redirectmessage #fp-signup-form input[type="button"]:hover,
|
779 |
+
.FP_redirectmessage #fp-login-form input[type="button"]:hover,
|
780 |
+
.FP_redirectmessage #fp-signup-form input[type="button"]:active,
|
781 |
+
.FP_redirectmessage #fp-login-form input[type="button"]:active {
|
782 |
+
color: white;
|
783 |
+
background-color: rgba(52, 171, 221, 0.8);
|
784 |
+
border-color: rgba(52, 171, 221, 0.8);
|
785 |
+
transition: background-color 0.3s ease-in, border-color 0.3s ease-in, color 0.3s ease-in;
|
786 |
+
}
|
787 |
+
.FP_redirectmessage #fp-signup-form .fp-signup-link,
|
788 |
+
.FP_redirectmessage #fp-login-form .fp-signup-link {
|
789 |
+
text-decoration: none;
|
790 |
+
font-weight: bold;
|
791 |
+
font-size: 1em;
|
792 |
+
float: none;
|
793 |
+
}
|
794 |
+
.FP_redirectmessage #fp-signup-form .fp-signup-link:hover,
|
795 |
+
.FP_redirectmessage #fp-login-form .fp-signup-link:hover {
|
796 |
+
font-weight: bold;
|
797 |
+
font-size: 1em;
|
798 |
+
float: none;
|
799 |
+
}
|
800 |
+
.FP_redirectmessage #fp-signup-form input[type="checkbox"].fp-checkbox,
|
801 |
+
.FP_redirectmessage #fp-login-form input[type="checkbox"].fp-checkbox {
|
802 |
+
text-align: left;
|
803 |
+
width: 13px;
|
804 |
+
height: 13px;
|
805 |
+
padding: 0;
|
806 |
+
vertical-align: middle;
|
807 |
+
}
|
808 |
+
.FP_redirectmessage #fp-signup-form .fp-terms-label,
|
809 |
+
.FP_redirectmessage #fp-login-form .fp-terms-label {
|
810 |
+
width: 300px;
|
811 |
+
margin-top: 4px;
|
812 |
+
}
|
813 |
+
.FP_redirectmessage #fp-signup-form .fp-error-element,
|
814 |
+
.FP_redirectmessage #fp-login-form .fp-error-element {
|
815 |
+
height: 1.1em;
|
816 |
+
text-align: center;
|
817 |
+
display: inline-block;
|
818 |
+
width: 100%;
|
819 |
+
}
|
820 |
+
.FP_redirectmessage #fp-signup-form .fp-error-message,
|
821 |
+
.FP_redirectmessage #fp-login-form .fp-error-message {
|
822 |
+
font-size: 0.7em;
|
823 |
+
color: #dd6634;
|
824 |
+
margin-bottom: 4px;
|
825 |
+
text-align: left;
|
826 |
+
}
|
827 |
+
.FP_redirectmessage #fp-signup-form #different-email-info,
|
828 |
+
.FP_redirectmessage #fp-login-form #different-email-info {
|
829 |
+
font-size: 0.9em;
|
830 |
+
}
|
831 |
+
.FP_redirectmessage #fp-signup-form a,
|
832 |
+
.FP_redirectmessage #fp-login-form a {
|
833 |
+
margin-left: 0;
|
834 |
+
color: #34ABDD;
|
835 |
+
}
|
836 |
+
|
837 |
+
.fpWrap .close {
|
838 |
+
color: #aaa;
|
839 |
+
cursor: pointer;
|
840 |
+
font-size: 22px;
|
841 |
+
font-weight: bold;
|
842 |
+
line-height: 0.5;
|
843 |
+
position: absolute;
|
844 |
+
right: 4px;
|
845 |
+
top: 4px;
|
846 |
+
text-decoration: none;
|
847 |
+
}
|
skin/frontend/base/default/futurepay/styles19.css
ADDED
@@ -0,0 +1,863 @@
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
|
Â
|
1 |
+
.FP_redirectmessage {
|
2 |
+
font-size: medium;
|
3 |
+
line-height: 1;
|
4 |
+
direction: ltr;
|
5 |
+
text-align: left;
|
6 |
+
text-align: start;
|
7 |
+
color: black;
|
8 |
+
font-style: normal;
|
9 |
+
font-weight: normal;
|
10 |
+
text-decoration: none;
|
11 |
+
list-style-type: disc;
|
12 |
+
background-color: white;
|
13 |
+
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
14 |
+
}
|
15 |
+
.FP_redirectmessage h1,
|
16 |
+
.FP_redirectmessage h2,
|
17 |
+
.FP_redirectmessage h3,
|
18 |
+
.FP_redirectmessage h4,
|
19 |
+
.FP_redirectmessage h5,
|
20 |
+
.FP_redirectmessage h6,
|
21 |
+
.FP_redirectmessage p,
|
22 |
+
.FP_redirectmessage td,
|
23 |
+
.FP_redirectmessage dl,
|
24 |
+
.FP_redirectmessage tr,
|
25 |
+
.FP_redirectmessage dt,
|
26 |
+
.FP_redirectmessage ol,
|
27 |
+
.FP_redirectmessage form,
|
28 |
+
.FP_redirectmessage select,
|
29 |
+
.FP_redirectmessage option,
|
30 |
+
.FP_redirectmessage pre,
|
31 |
+
.FP_redirectmessage div,
|
32 |
+
.FP_redirectmessage table,
|
33 |
+
.FP_redirectmessage th,
|
34 |
+
.FP_redirectmessage tbody,
|
35 |
+
.FP_redirectmessage tfoot,
|
36 |
+
.FP_redirectmessage caption,
|
37 |
+
.FP_redirectmessage thead,
|
38 |
+
.FP_redirectmessage ul,
|
39 |
+
.FP_redirectmessage li,
|
40 |
+
.FP_redirectmessage address,
|
41 |
+
.FP_redirectmessage blockquote,
|
42 |
+
.FP_redirectmessage dd,
|
43 |
+
.FP_redirectmessage fieldset,
|
44 |
+
.FP_redirectmessage li,
|
45 |
+
.FP_redirectmessage iframe,
|
46 |
+
.FP_redirectmessage strong,
|
47 |
+
.FP_redirectmessage legend,
|
48 |
+
.FP_redirectmessage em,
|
49 |
+
.FP_redirectmessage summary,
|
50 |
+
.FP_redirectmessage cite,
|
51 |
+
.FP_redirectmessage span,
|
52 |
+
.FP_redirectmessage input,
|
53 |
+
.FP_redirectmessage sup,
|
54 |
+
.FP_redirectmessage label,
|
55 |
+
.FP_redirectmessage dfn,
|
56 |
+
.FP_redirectmessage object,
|
57 |
+
.FP_redirectmessage big,
|
58 |
+
.FP_redirectmessage q,
|
59 |
+
.FP_redirectmessage samp,
|
60 |
+
.FP_redirectmessage acronym,
|
61 |
+
.FP_redirectmessage small,
|
62 |
+
.FP_redirectmessage img,
|
63 |
+
.FP_redirectmessage strike,
|
64 |
+
.FP_redirectmessage code,
|
65 |
+
.FP_redirectmessage sub,
|
66 |
+
.FP_redirectmessage ins,
|
67 |
+
.FP_redirectmessage textarea,
|
68 |
+
.FP_redirectmessage button,
|
69 |
+
.FP_redirectmessage var,
|
70 |
+
.FP_redirectmessage a,
|
71 |
+
.FP_redirectmessage abbr,
|
72 |
+
.FP_redirectmessage applet,
|
73 |
+
.FP_redirectmessage del,
|
74 |
+
.FP_redirectmessage kbd,
|
75 |
+
.FP_redirectmessage tt,
|
76 |
+
.FP_redirectmessage b,
|
77 |
+
.FP_redirectmessage i,
|
78 |
+
.FP_redirectmessage hr,
|
79 |
+
.FP_redirectmessage article,
|
80 |
+
.FP_redirectmessage aside,
|
81 |
+
.FP_redirectmessage figure,
|
82 |
+
.FP_redirectmessage figcaption,
|
83 |
+
.FP_redirectmessage footer,
|
84 |
+
.FP_redirectmessage header,
|
85 |
+
.FP_redirectmessage menu,
|
86 |
+
.FP_redirectmessage nav,
|
87 |
+
.FP_redirectmessage section,
|
88 |
+
.FP_redirectmessage time,
|
89 |
+
.FP_redirectmessage mark,
|
90 |
+
.FP_redirectmessage audio,
|
91 |
+
.FP_redirectmessage video,
|
92 |
+
.FP_redirectmessage abbr,
|
93 |
+
.FP_redirectmessage address,
|
94 |
+
.FP_redirectmessage area,
|
95 |
+
.FP_redirectmessage blockquote,
|
96 |
+
.FP_redirectmessage canvas,
|
97 |
+
.FP_redirectmessage caption,
|
98 |
+
.FP_redirectmessage cite,
|
99 |
+
.FP_redirectmessage code,
|
100 |
+
.FP_redirectmessage colgroup,
|
101 |
+
.FP_redirectmessage col,
|
102 |
+
.FP_redirectmessage datalist,
|
103 |
+
.FP_redirectmessage fieldset,
|
104 |
+
.FP_redirectmessage main,
|
105 |
+
.FP_redirectmessage map,
|
106 |
+
.FP_redirectmessage meta,
|
107 |
+
.FP_redirectmessage optgroup,
|
108 |
+
.FP_redirectmessage output,
|
109 |
+
.FP_redirectmessage progress {
|
110 |
+
background-attachment: scroll;
|
111 |
+
background-color: transparent;
|
112 |
+
background-image: none;
|
113 |
+
background-position: 0 0;
|
114 |
+
background-repeat: repeat;
|
115 |
+
border-color: black;
|
116 |
+
border-color: currentColor;
|
117 |
+
border-style: none;
|
118 |
+
border-width: medium;
|
119 |
+
bottom: auto;
|
120 |
+
clear: none;
|
121 |
+
clip: auto;
|
122 |
+
color: inherit;
|
123 |
+
counter-increment: none;
|
124 |
+
counter-reset: none;
|
125 |
+
cursor: auto;
|
126 |
+
direction: inherit;
|
127 |
+
display: inline;
|
128 |
+
float: none;
|
129 |
+
font-family: inherit;
|
130 |
+
font-size: inherit;
|
131 |
+
font-style: inherit;
|
132 |
+
font-variant: normal;
|
133 |
+
font-weight: inherit;
|
134 |
+
height: auto;
|
135 |
+
left: auto;
|
136 |
+
letter-spacing: normal;
|
137 |
+
line-height: inherit;
|
138 |
+
list-style-type: inherit;
|
139 |
+
list-style-position: outside;
|
140 |
+
list-style-image: none;
|
141 |
+
margin: 0;
|
142 |
+
max-height: none;
|
143 |
+
max-width: none;
|
144 |
+
min-height: 0;
|
145 |
+
min-width: 0;
|
146 |
+
opacity: 1;
|
147 |
+
outline: invert none medium;
|
148 |
+
overflow: visible;
|
149 |
+
padding: 0;
|
150 |
+
position: static;
|
151 |
+
quotes: "" "";
|
152 |
+
right: auto;
|
153 |
+
table-layout: auto;
|
154 |
+
text-align: inherit;
|
155 |
+
text-decoration: inherit;
|
156 |
+
text-indent: 0;
|
157 |
+
text-transform: none;
|
158 |
+
top: auto;
|
159 |
+
unicode-bidi: normal;
|
160 |
+
vertical-align: baseline;
|
161 |
+
visibility: inherit;
|
162 |
+
white-space: normal;
|
163 |
+
width: auto;
|
164 |
+
word-spacing: normal;
|
165 |
+
z-index: auto;
|
166 |
+
-webkit-background-origin: padding-box;
|
167 |
+
background-origin: padding-box;
|
168 |
+
-webkit-background-clip: border-box;
|
169 |
+
background-clip: border-box;
|
170 |
+
-webkit-background-size: auto;
|
171 |
+
-moz-background-size: auto;
|
172 |
+
background-size: auto;
|
173 |
+
-webkit-border-image: none;
|
174 |
+
-moz-border-image: none;
|
175 |
+
-o-border-image: none;
|
176 |
+
border-image: none;
|
177 |
+
-webkit-border-radius: 0;
|
178 |
+
-moz-border-radius: 0;
|
179 |
+
border-radius: 0;
|
180 |
+
-webkit-box-shadow: none;
|
181 |
+
box-shadow: none;
|
182 |
+
-webkit-box-sizing: content-box;
|
183 |
+
-moz-box-sizing: content-box;
|
184 |
+
box-sizing: content-box;
|
185 |
+
-webkit-column-count: auto;
|
186 |
+
-moz-column-count: auto;
|
187 |
+
column-count: auto;
|
188 |
+
-webkit-column-gap: normal;
|
189 |
+
-moz-column-gap: normal;
|
190 |
+
column-gap: normal;
|
191 |
+
-webkit-column-rule: medium none black;
|
192 |
+
-moz-column-rule: medium none black;
|
193 |
+
column-rule: medium none black;
|
194 |
+
-webkit-column-span: 1;
|
195 |
+
-moz-column-span: 1;
|
196 |
+
column-span: 1;
|
197 |
+
-webkit-column-width: auto;
|
198 |
+
-moz-column-width: auto;
|
199 |
+
column-width: auto;
|
200 |
+
font-feature-settings: normal;
|
201 |
+
overflow-x: visible;
|
202 |
+
overflow-y: visible;
|
203 |
+
-webkit-hyphens: manual;
|
204 |
+
-moz-hyphens: manual;
|
205 |
+
hyphens: manual;
|
206 |
+
-webkit-perspective: none;
|
207 |
+
-moz-perspective: none;
|
208 |
+
-ms-perspective: none;
|
209 |
+
-o-perspective: none;
|
210 |
+
perspective: none;
|
211 |
+
-webkit-perspective-origin: 50% 50%;
|
212 |
+
-moz-perspective-origin: 50% 50%;
|
213 |
+
-ms-perspective-origin: 50% 50%;
|
214 |
+
-o-perspective-origin: 50% 50%;
|
215 |
+
perspective-origin: 50% 50%;
|
216 |
+
-webkit-backface-visibility: visible;
|
217 |
+
-moz-backface-visibility: visible;
|
218 |
+
-ms-backface-visibility: visible;
|
219 |
+
-o-backface-visibility: visible;
|
220 |
+
backface-visibility: visible;
|
221 |
+
text-shadow: none;
|
222 |
+
-webkit-transition: all 0s ease 0s;
|
223 |
+
transition: all 0s ease 0s;
|
224 |
+
-webkit-transform: none;
|
225 |
+
-moz-transform: none;
|
226 |
+
-ms-transform: none;
|
227 |
+
-o-transform: none;
|
228 |
+
transform: none;
|
229 |
+
-webkit-transform-origin: 50% 50%;
|
230 |
+
-moz-transform-origin: 50% 50%;
|
231 |
+
-ms-transform-origin: 50% 50%;
|
232 |
+
-o-transform-origin: 50% 50%;
|
233 |
+
transform-origin: 50% 50%;
|
234 |
+
-webkit-transform-style: flat;
|
235 |
+
-moz-transform-style: flat;
|
236 |
+
-ms-transform-style: flat;
|
237 |
+
-o-transform-style: flat;
|
238 |
+
transform-style: flat;
|
239 |
+
word-break: normal;
|
240 |
+
}
|
241 |
+
.FP_redirectmessage h3,
|
242 |
+
.FP_redirectmessage h5,
|
243 |
+
.FP_redirectmessage p,
|
244 |
+
.FP_redirectmessage h1,
|
245 |
+
.FP_redirectmessage dl,
|
246 |
+
.FP_redirectmessage dt,
|
247 |
+
.FP_redirectmessage h6,
|
248 |
+
.FP_redirectmessage ol,
|
249 |
+
.FP_redirectmessage form,
|
250 |
+
.FP_redirectmessage option,
|
251 |
+
.FP_redirectmessage pre,
|
252 |
+
.FP_redirectmessage div,
|
253 |
+
.FP_redirectmessage h2,
|
254 |
+
.FP_redirectmessage caption,
|
255 |
+
.FP_redirectmessage h4,
|
256 |
+
.FP_redirectmessage ul,
|
257 |
+
.FP_redirectmessage address,
|
258 |
+
.FP_redirectmessage blockquote,
|
259 |
+
.FP_redirectmessage dd,
|
260 |
+
.FP_redirectmessage fieldset,
|
261 |
+
.FP_redirectmessage hr,
|
262 |
+
.FP_redirectmessage article,
|
263 |
+
.FP_redirectmessage dialog,
|
264 |
+
.FP_redirectmessage figure,
|
265 |
+
.FP_redirectmessage footer,
|
266 |
+
.FP_redirectmessage header,
|
267 |
+
.FP_redirectmessage hgroup,
|
268 |
+
.FP_redirectmessage menu,
|
269 |
+
.FP_redirectmessage nav,
|
270 |
+
.FP_redirectmessage section,
|
271 |
+
.FP_redirectmessage audio,
|
272 |
+
.FP_redirectmessage video,
|
273 |
+
.FP_redirectmessage address,
|
274 |
+
.FP_redirectmessage blockquote,
|
275 |
+
.FP_redirectmessage colgroup,
|
276 |
+
.FP_redirectmessage main,
|
277 |
+
.FP_redirectmessage progress,
|
278 |
+
.FP_redirectmessage summary {
|
279 |
+
display: block;
|
280 |
+
}
|
281 |
+
.FP_redirectmessage h1,
|
282 |
+
.FP_redirectmessage h2,
|
283 |
+
.FP_redirectmessage h3,
|
284 |
+
.FP_redirectmessage h4,
|
285 |
+
.FP_redirectmessage h5,
|
286 |
+
.FP_redirectmessage h6 {
|
287 |
+
font-weight: bold;
|
288 |
+
}
|
289 |
+
.FP_redirectmessage h1 {
|
290 |
+
font-size: 2em;
|
291 |
+
padding: .67em 0;
|
292 |
+
}
|
293 |
+
.FP_redirectmessage h2 {
|
294 |
+
font-size: 1.5em;
|
295 |
+
padding: .83em 0;
|
296 |
+
}
|
297 |
+
.FP_redirectmessage h3 {
|
298 |
+
font-size: 1.17em;
|
299 |
+
padding: .83em 0;
|
300 |
+
}
|
301 |
+
.FP_redirectmessage h4 {
|
302 |
+
font-size: 1em;
|
303 |
+
}
|
304 |
+
.FP_redirectmessage h5 {
|
305 |
+
font-size: .83em;
|
306 |
+
}
|
307 |
+
.FP_redirectmessage p {
|
308 |
+
margin: 1em 0;
|
309 |
+
}
|
310 |
+
.FP_redirectmessage table {
|
311 |
+
display: table;
|
312 |
+
}
|
313 |
+
.FP_redirectmessage thead {
|
314 |
+
display: table-header-group;
|
315 |
+
}
|
316 |
+
.FP_redirectmessage tbody {
|
317 |
+
display: table-row-group;
|
318 |
+
}
|
319 |
+
.FP_redirectmessage tfoot {
|
320 |
+
display: table-footer-group;
|
321 |
+
}
|
322 |
+
.FP_redirectmessage tr {
|
323 |
+
display: table-row;
|
324 |
+
}
|
325 |
+
.FP_redirectmessage th,
|
326 |
+
.FP_redirectmessage td {
|
327 |
+
display: table-cell;
|
328 |
+
padding: 2px;
|
329 |
+
}
|
330 |
+
.FP_redirectmessage ol,
|
331 |
+
.FP_redirectmessage ul {
|
332 |
+
margin: 1em 0;
|
333 |
+
}
|
334 |
+
.FP_redirectmessage ul li,
|
335 |
+
.FP_redirectmessage ul ul li,
|
336 |
+
.FP_redirectmessage ul ul ul li,
|
337 |
+
.FP_redirectmessage ol li,
|
338 |
+
.FP_redirectmessage ol ol li,
|
339 |
+
.FP_redirectmessage ol ol ol li,
|
340 |
+
.FP_redirectmessage ul ol ol li,
|
341 |
+
.FP_redirectmessage ul ul ol li,
|
342 |
+
.FP_redirectmessage ol ul ul li,
|
343 |
+
.FP_redirectmessage ol ol ul li {
|
344 |
+
list-style-position: inside;
|
345 |
+
margin-top: .08em;
|
346 |
+
}
|
347 |
+
.FP_redirectmessage ol ol,
|
348 |
+
.FP_redirectmessage ol ol ol,
|
349 |
+
.FP_redirectmessage ul ul,
|
350 |
+
.FP_redirectmessage ul ul ul,
|
351 |
+
.FP_redirectmessage ol ul,
|
352 |
+
.FP_redirectmessage ol ul ul,
|
353 |
+
.FP_redirectmessage ol ol ul,
|
354 |
+
.FP_redirectmessage ul ol,
|
355 |
+
.FP_redirectmessage ul ol ol,
|
356 |
+
.FP_redirectmessage ul ul ol {
|
357 |
+
padding-left: 40px;
|
358 |
+
margin: 0;
|
359 |
+
}
|
360 |
+
.FP_redirectmessage nav ul,
|
361 |
+
.FP_redirectmessage nav ol {
|
362 |
+
list-style-type: none;
|
363 |
+
}
|
364 |
+
.FP_redirectmessage ul,
|
365 |
+
.FP_redirectmessage menu {
|
366 |
+
list-style-type: disc;
|
367 |
+
}
|
368 |
+
.FP_redirectmessage ol {
|
369 |
+
list-style-type: decimal;
|
370 |
+
}
|
371 |
+
.FP_redirectmessage ol ul,
|
372 |
+
.FP_redirectmessage ul ul,
|
373 |
+
.FP_redirectmessage menu ul,
|
374 |
+
.FP_redirectmessage ol menu,
|
375 |
+
.FP_redirectmessage ul menu,
|
376 |
+
.FP_redirectmessage menu menu {
|
377 |
+
list-style-type: circle;
|
378 |
+
}
|
379 |
+
.FP_redirectmessage ol ol ul,
|
380 |
+
.FP_redirectmessage ol ul ul,
|
381 |
+
.FP_redirectmessage ol menu ul,
|
382 |
+
.FP_redirectmessage ol ol menu,
|
383 |
+
.FP_redirectmessage ol ul menu,
|
384 |
+
.FP_redirectmessage ol menu menu,
|
385 |
+
.FP_redirectmessage ul ol ul,
|
386 |
+
.FP_redirectmessage ul ul ul,
|
387 |
+
.FP_redirectmessage ul menu ul,
|
388 |
+
.FP_redirectmessage ul ol menu,
|
389 |
+
.FP_redirectmessage ul ul menu,
|
390 |
+
.FP_redirectmessage ul menu menu,
|
391 |
+
.FP_redirectmessage menu ol ul,
|
392 |
+
.FP_redirectmessage menu ul ul,
|
393 |
+
.FP_redirectmessage menu menu ul,
|
394 |
+
.FP_redirectmessage menu ol menu,
|
395 |
+
.FP_redirectmessage menu ul menu,
|
396 |
+
.FP_redirectmessage menu menu menu {
|
397 |
+
list-style-type: square;
|
398 |
+
}
|
399 |
+
.FP_redirectmessage li {
|
400 |
+
display: list-item;
|
401 |
+
min-height: auto;
|
402 |
+
min-width: auto;
|
403 |
+
padding-left: 20px;
|
404 |
+
}
|
405 |
+
.FP_redirectmessage strong {
|
406 |
+
font-weight: bold;
|
407 |
+
}
|
408 |
+
.FP_redirectmessage em {
|
409 |
+
font-style: italic;
|
410 |
+
}
|
411 |
+
.FP_redirectmessage kbd,
|
412 |
+
.FP_redirectmessage samp,
|
413 |
+
.FP_redirectmessage code,
|
414 |
+
.FP_redirectmessage pre {
|
415 |
+
font-family: monospace;
|
416 |
+
}
|
417 |
+
.FP_redirectmessage a {
|
418 |
+
color: blue;
|
419 |
+
text-decoration: underline;
|
420 |
+
}
|
421 |
+
.FP_redirectmessage a:visited {
|
422 |
+
color: #529;
|
423 |
+
}
|
424 |
+
.FP_redirectmessage a,
|
425 |
+
.FP_redirectmessage a *,
|
426 |
+
.FP_redirectmessage input[type=submit],
|
427 |
+
.FP_redirectmessage input[type=radio],
|
428 |
+
.FP_redirectmessage input[type=checkbox],
|
429 |
+
.FP_redirectmessage select {
|
430 |
+
cursor: pointer;
|
431 |
+
}
|
432 |
+
.FP_redirectmessage button,
|
433 |
+
.FP_redirectmessage input[type=submit],
|
434 |
+
.FP_redirectmessage input[type=submit]:hover,
|
435 |
+
.FP_redirectmessage input[type=submit]:active {
|
436 |
+
text-align: center;
|
437 |
+
padding: 2px 6px 3px;
|
438 |
+
border-radius: 4px;
|
439 |
+
text-decoration: none;
|
440 |
+
font-family: arial, helvetica, sans-serif;
|
441 |
+
font-size: small;
|
442 |
+
background: white;
|
443 |
+
-webkit-appearance: push-button;
|
444 |
+
color: buttontext;
|
445 |
+
border: 1px #a6a6a6 solid;
|
446 |
+
background: lightgrey;
|
447 |
+
background: #ffffff;
|
448 |
+
background: -moz-linear-gradient(top, #ffffff 0%, #dddddd 100%, #d1d1d1 100%, #dddddd 100%);
|
449 |
+
/* FF3.6+ */
|
450 |
+
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #dddddd), color-stop(100%, #d1d1d1), color-stop(100%, #dddddd));
|
451 |
+
/* Chrome,Safari4+ */
|
452 |
+
background: -webkit-linear-gradient(top, #ffffff 0%, #dddddd 100%, #d1d1d1 100%, #dddddd 100%);
|
453 |
+
/* Chrome10+,Safari5.1+ */
|
454 |
+
background: -o-linear-gradient(top, #ffffff 0%, #dddddd 100%, #d1d1d1 100%, #dddddd 100%);
|
455 |
+
/* Opera 11.10+ */
|
456 |
+
background: -ms-linear-gradient(top, #ffffff 0%, #dddddd 100%, #d1d1d1 100%, #dddddd 100%);
|
457 |
+
/* IE10+ */
|
458 |
+
background: linear-gradient(to bottom, #ffffff 0%, #dddddd 100%, #d1d1d1 100%, #dddddd 100%);
|
459 |
+
/* W3C */
|
460 |
+
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#dddddd', GradientType=0);
|
461 |
+
/* IE6-9 */
|
462 |
+
-webkit-box-shadow: 1px 1px 0px #eee;
|
463 |
+
-moz-box-shadow: 1px 1px 0px #eee;
|
464 |
+
-o-box-shadow: 1px 1px 0px #eee;
|
465 |
+
box-shadow: 1px 1px 0px #eee;
|
466 |
+
outline: initial;
|
467 |
+
}
|
468 |
+
.FP_redirectmessage button {
|
469 |
+
padding: 1px 6px 2px 6px;
|
470 |
+
margin-right: 5px;
|
471 |
+
}
|
472 |
+
.FP_redirectmessage input[type=hidden] {
|
473 |
+
display: none;
|
474 |
+
}
|
475 |
+
.FP_redirectmessage textarea {
|
476 |
+
-webkit-appearance: textarea;
|
477 |
+
background: white;
|
478 |
+
padding: 2px;
|
479 |
+
margin-left: 4px;
|
480 |
+
word-wrap: break-word;
|
481 |
+
white-space: pre-wrap;
|
482 |
+
font-size: 11px;
|
483 |
+
font-family: arial, helvetica, sans-serif;
|
484 |
+
line-height: 13px;
|
485 |
+
resize: both;
|
486 |
+
}
|
487 |
+
.FP_redirectmessage select,
|
488 |
+
.FP_redirectmessage textarea,
|
489 |
+
.FP_redirectmessage input {
|
490 |
+
border: 1px solid #ccc;
|
491 |
+
}
|
492 |
+
.FP_redirectmessage select {
|
493 |
+
font-size: 11px;
|
494 |
+
font-family: helvetica, arial, sans-serif;
|
495 |
+
display: inline-block;
|
496 |
+
}
|
497 |
+
.FP_redirectmessage textarea:focus,
|
498 |
+
.FP_redirectmessage input:focus {
|
499 |
+
outline: auto 5px -webkit-focus-ring-color;
|
500 |
+
outline: initial;
|
501 |
+
}
|
502 |
+
.FP_redirectmessage input[type=text] {
|
503 |
+
background: white;
|
504 |
+
padding: 1px;
|
505 |
+
font-family: initial;
|
506 |
+
font-size: small;
|
507 |
+
}
|
508 |
+
.FP_redirectmessage input[type=checkbox],
|
509 |
+
.FP_redirectmessage input[type=radio] {
|
510 |
+
border: 1px #2b2b2b solid;
|
511 |
+
border-radius: 4px;
|
512 |
+
}
|
513 |
+
.FP_redirectmessage input[type=checkbox],
|
514 |
+
.FP_redirectmessage input[type=radio] {
|
515 |
+
outline: initial;
|
516 |
+
}
|
517 |
+
.FP_redirectmessage input[type=radio] {
|
518 |
+
margin: 2px 2px 3px 2px;
|
519 |
+
}
|
520 |
+
.FP_redirectmessage input[type=submit]:active,
|
521 |
+
.FP_redirectmessage button:active {
|
522 |
+
background: #3b679e;
|
523 |
+
/* Old browsers */
|
524 |
+
background: -moz-linear-gradient(top, #3b679e 0%, #2b88d9 50%, #207cca 51%, #7db9e8 100%);
|
525 |
+
/* FF3.6+ */
|
526 |
+
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #3b679e), color-stop(50%, #2b88d9), color-stop(51%, #207cca), color-stop(100%, #7db9e8));
|
527 |
+
/* Chrome,Safari4+ */
|
528 |
+
background: -webkit-linear-gradient(top, #3b679e 0%, #2b88d9 50%, #207cca 51%, #7db9e8 100%);
|
529 |
+
/* Chrome10+,Safari5.1+ */
|
530 |
+
background: -o-linear-gradient(top, #3b679e 0%, #2b88d9 50%, #207cca 51%, #7db9e8 100%);
|
531 |
+
/* Opera 11.10+ */
|
532 |
+
background: -ms-linear-gradient(top, #3b679e 0%, #2b88d9 50%, #207cca 51%, #7db9e8 100%);
|
533 |
+
/* IE10+ */
|
534 |
+
background: linear-gradient(to bottom, #3b679e 0%, #2b88d9 50%, #207cca 51%, #7db9e8 100%);
|
535 |
+
/* W3C */
|
536 |
+
border-color: #5259b0;
|
537 |
+
}
|
538 |
+
.FP_redirectmessage abbr[title],
|
539 |
+
.FP_redirectmessage acronym[title],
|
540 |
+
.FP_redirectmessage dfn[title] {
|
541 |
+
cursor: help;
|
542 |
+
border-bottom-width: 1px;
|
543 |
+
border-bottom-style: dotted;
|
544 |
+
}
|
545 |
+
.FP_redirectmessage ins {
|
546 |
+
background-color: #ff9;
|
547 |
+
color: black;
|
548 |
+
}
|
549 |
+
.FP_redirectmessage del {
|
550 |
+
text-decoration: line-through;
|
551 |
+
}
|
552 |
+
.FP_redirectmessage blockquote,
|
553 |
+
.FP_redirectmessage q {
|
554 |
+
quotes: none;
|
555 |
+
}
|
556 |
+
.FP_redirectmessage blockquote:before,
|
557 |
+
.FP_redirectmessage blockquote:after,
|
558 |
+
.FP_redirectmessage q:before,
|
559 |
+
.FP_redirectmessage q:after,
|
560 |
+
.FP_redirectmessage li:before,
|
561 |
+
.FP_redirectmessage li:after {
|
562 |
+
content: "";
|
563 |
+
}
|
564 |
+
.FP_redirectmessage input,
|
565 |
+
.FP_redirectmessage select {
|
566 |
+
vertical-align: middle;
|
567 |
+
}
|
568 |
+
.FP_redirectmessage table {
|
569 |
+
border-collapse: collapse;
|
570 |
+
border-spacing: 0;
|
571 |
+
}
|
572 |
+
.FP_redirectmessage hr {
|
573 |
+
display: block;
|
574 |
+
height: 1px;
|
575 |
+
border: 0;
|
576 |
+
border-top: 1px solid #ccc;
|
577 |
+
margin: 1em 0;
|
578 |
+
}
|
579 |
+
.FP_redirectmessage *[dir=rtl] {
|
580 |
+
direction: rtl;
|
581 |
+
}
|
582 |
+
.FP_redirectmessage mark {
|
583 |
+
background-color: #ff9;
|
584 |
+
color: black;
|
585 |
+
font-style: italic;
|
586 |
+
font-weight: bold;
|
587 |
+
}
|
588 |
+
.FP_redirectmessage menu {
|
589 |
+
padding-left: 40px;
|
590 |
+
padding-top: 8px;
|
591 |
+
}
|
592 |
+
.FP_redirectmessage [hidden],
|
593 |
+
.FP_redirectmessage template {
|
594 |
+
display: none;
|
595 |
+
}
|
596 |
+
.FP_redirectmessage abbr[title] {
|
597 |
+
border-bottom: 1px dotted;
|
598 |
+
}
|
599 |
+
.FP_redirectmessage sub,
|
600 |
+
.FP_redirectmessage sup {
|
601 |
+
font-size: 75%;
|
602 |
+
line-height: 0;
|
603 |
+
position: relative;
|
604 |
+
vertical-align: baseline;
|
605 |
+
}
|
606 |
+
.FP_redirectmessage sup {
|
607 |
+
top: -0.5em;
|
608 |
+
}
|
609 |
+
.FP_redirectmessage sub {
|
610 |
+
bottom: -0.25em;
|
611 |
+
}
|
612 |
+
.FP_redirectmessage img {
|
613 |
+
border: 0;
|
614 |
+
}
|
615 |
+
.FP_redirectmessage figure {
|
616 |
+
margin: 0;
|
617 |
+
}
|
618 |
+
.FP_redirectmessage textarea {
|
619 |
+
overflow: auto;
|
620 |
+
vertical-align: top;
|
621 |
+
}
|
622 |
+
.FP_redirectmessage pre {
|
623 |
+
white-space: pre;
|
624 |
+
}
|
625 |
+
.FP_redirectmessage #fp-signup-form,
|
626 |
+
.FP_redirectmessage #fp-login-form {
|
627 |
+
max-width: 500px;
|
628 |
+
padding: 10px;
|
629 |
+
margin: 10px;
|
630 |
+
vertical-align: middle;
|
631 |
+
-webkit-border-radius: 5px;
|
632 |
+
-moz-border-radius: 5px;
|
633 |
+
border-radius: 5px;
|
634 |
+
-moz-background-clip: padding;
|
635 |
+
-webkit-background-clip: padding-box;
|
636 |
+
background-clip: padding-box;
|
637 |
+
}
|
638 |
+
.FP_redirectmessage #fp-signup-form .fp-label,
|
639 |
+
.FP_redirectmessage #fp-login-form .fp-label {
|
640 |
+
display: block;
|
641 |
+
margin-right: 20px;
|
642 |
+
padding-left: 4px;
|
643 |
+
color: #A0A0A0;
|
644 |
+
}
|
645 |
+
.FP_redirectmessage #fp-signup-form input,
|
646 |
+
.FP_redirectmessage #fp-login-form input,
|
647 |
+
.FP_redirectmessage #fp-signup-form select,
|
648 |
+
.FP_redirectmessage #fp-login-form select {
|
649 |
+
font-family: Lato, monospace;
|
650 |
+
width: 100%;
|
651 |
+
display: inline-block;
|
652 |
+
font-size: 1em;
|
653 |
+
margin: 5px 10px 10px 10px auto;
|
654 |
+
padding: 0 10px 0 2px;
|
655 |
+
height: 1.9em;
|
656 |
+
-webkit-border-radius: 2px;
|
657 |
+
-moz-border-radius: 2px;
|
658 |
+
border-radius: 2px;
|
659 |
+
-moz-background-clip: padding;
|
660 |
+
-webkit-background-clip: padding-box;
|
661 |
+
background-clip: padding-box;
|
662 |
+
}
|
663 |
+
.FP_redirectmessage #fp-signup-form select,
|
664 |
+
.FP_redirectmessage #fp-login-form select {
|
665 |
+
width: 95px;
|
666 |
+
background-color: white;
|
667 |
+
-webkit-border-radius: 2px;
|
668 |
+
-moz-border-radius: 2px;
|
669 |
+
border-radius: 2px;
|
670 |
+
-moz-background-clip: padding;
|
671 |
+
-webkit-background-clip: padding-box;
|
672 |
+
background-clip: padding-box;
|
673 |
+
}
|
674 |
+
.FP_redirectmessage #fp-signup-form #zip,
|
675 |
+
.FP_redirectmessage #fp-login-form #zip,
|
676 |
+
.FP_redirectmessage #fp-signup-form #main_phone,
|
677 |
+
.FP_redirectmessage #fp-login-form #main_phone,
|
678 |
+
.FP_redirectmessage #fp-signup-form #ssn,
|
679 |
+
.FP_redirectmessage #fp-login-form #ssn {
|
680 |
+
max-width: 325px;
|
681 |
+
}
|
682 |
+
.FP_redirectmessage #fp-signup-form img,
|
683 |
+
.FP_redirectmessage #fp-login-form img {
|
684 |
+
vertical-align: middle;
|
685 |
+
display: inline;
|
686 |
+
margin-bottom: 15px;
|
687 |
+
}
|
688 |
+
.FP_redirectmessage #fp-signup-form input[type="button"],
|
689 |
+
.FP_redirectmessage #fp-login-form input[type="button"] {
|
690 |
+
margin: 0px 15px 15px 0px;
|
691 |
+
height: 22px;
|
692 |
+
display: inline-block;
|
693 |
+
font-size: 1em;
|
694 |
+
margin-right: 100px;
|
695 |
+
text-decoration: none;
|
696 |
+
width: 120px;
|
697 |
+
border-radius: 2px;
|
698 |
+
transition: background-color 0.2s ease-out, border-color 0.2s ease-out, color 0.2s ease-out;
|
699 |
+
padding: 8px;
|
700 |
+
color: #34ABDD;
|
701 |
+
border-color: #34ABDD;
|
702 |
+
border: 2px solid #34ABDD;
|
703 |
+
text-align: center;
|
704 |
+
outline: none;
|
705 |
+
}
|
706 |
+
.FP_redirectmessage #fp-signup-form input[type="button"]:hover,
|
707 |
+
.FP_redirectmessage #fp-login-form input[type="button"]:hover,
|
708 |
+
.FP_redirectmessage #fp-signup-form input[type="button"]:active,
|
709 |
+
.FP_redirectmessage #fp-login-form input[type="button"]:active {
|
710 |
+
color: white;
|
711 |
+
background-color: rgba(52, 171, 221, 0.8);
|
712 |
+
border-color: rgba(52, 171, 221, 0.8);
|
713 |
+
transition: background-color 0.3s ease-in, border-color 0.3s ease-in, color 0.3s ease-in;
|
714 |
+
}
|
715 |
+
.FP_redirectmessage #fp-signup-form .fp-signup-link,
|
716 |
+
.FP_redirectmessage #fp-login-form .fp-signup-link {
|
717 |
+
text-decoration: none;
|
718 |
+
font-weight: bold;
|
719 |
+
font-size: 1em;
|
720 |
+
float: none;
|
721 |
+
}
|
722 |
+
.FP_redirectmessage #fp-signup-form .fp-signup-link:hover,
|
723 |
+
.FP_redirectmessage #fp-login-form .fp-signup-link:hover {
|
724 |
+
font-weight: bold;
|
725 |
+
font-size: 1em;
|
726 |
+
float: none;
|
727 |
+
}
|
728 |
+
.FP_redirectmessage #fp-signup-form input[type="checkbox"].fp-checkbox,
|
729 |
+
.FP_redirectmessage #fp-login-form input[type="checkbox"].fp-checkbox {
|
730 |
+
text-align: left;
|
731 |
+
width: 13px;
|
732 |
+
height: 13px;
|
733 |
+
padding: 0;
|
734 |
+
vertical-align: middle;
|
735 |
+
}
|
736 |
+
.FP_redirectmessage #fp-signup-form .fp-terms-label,
|
737 |
+
.FP_redirectmessage #fp-login-form .fp-terms-label {
|
738 |
+
width: 300px;
|
739 |
+
margin-top: 4px;
|
740 |
+
}
|
741 |
+
.FP_redirectmessage #fp-signup-form .fp-error-element,
|
742 |
+
.FP_redirectmessage #fp-login-form .fp-error-element {
|
743 |
+
height: 1.1em;
|
744 |
+
text-align: center;
|
745 |
+
display: inline-block;
|
746 |
+
width: 100%;
|
747 |
+
}
|
748 |
+
.FP_redirectmessage #fp-signup-form .fp-error-message,
|
749 |
+
.FP_redirectmessage #fp-login-form .fp-error-message {
|
750 |
+
font-size: 0.7em;
|
751 |
+
color: #dd6634;
|
752 |
+
margin-bottom: 4px;
|
753 |
+
text-align: left;
|
754 |
+
}
|
755 |
+
.FP_redirectmessage #fp-signup-form #different-email-info,
|
756 |
+
.FP_redirectmessage #fp-login-form #different-email-info {
|
757 |
+
font-size: 0.9em;
|
758 |
+
}
|
759 |
+
.FP_redirectmessage #fp-signup-form a,
|
760 |
+
.FP_redirectmessage #fp-login-form a {
|
761 |
+
margin-left: 0;
|
762 |
+
color: #34ABDD;
|
763 |
+
}
|
764 |
+
|
765 |
+
.fpWrap .close {
|
766 |
+
color: #aaa;
|
767 |
+
cursor: pointer;
|
768 |
+
font-size: 22px;
|
769 |
+
font-weight: bold;
|
770 |
+
line-height: 0.5;
|
771 |
+
position: absolute;
|
772 |
+
right: 4px;
|
773 |
+
top: 2px;
|
774 |
+
text-decoration: none;
|
775 |
+
}
|
776 |
+
|
777 |
+
|
778 |
+
body, html {
|
779 |
+
padding:0px;
|
780 |
+
margin:0px;
|
781 |
+
background-color:#ffffff;
|
782 |
+
|
783 |
+
}
|
784 |
+
|
785 |
+
.fpInfo {
|
786 |
+
width: 100%; margin:0 auto; height:auto;box-sizing:border-box;padding: 20px; display:table; background:white;
|
787 |
+
}
|
788 |
+
|
789 |
+
.fpWrap {
|
790 |
+
width:100%;float:left; border: 1px solid #ddd; font-family: 'Helvetica', Arial, sans-serif;font-size:15px; color: #666666;
|
791 |
+
}
|
792 |
+
|
793 |
+
.fpInfo h2, .fpInfo h3 {
|
794 |
+
font-family: 'Source Sans Pro', sans-serif; color: rgb(128,195,64); font-weight:300; margin:0px; padding:0px;
|
795 |
+
}
|
796 |
+
|
797 |
+
.fpInfo h2 {
|
798 |
+
font-size: 46px;
|
799 |
+
}
|
800 |
+
|
801 |
+
.fpInfo h3 {
|
802 |
+
font-weight:400; text-align: left; margin: 0px 0px 20px; clear:both;
|
803 |
+
}
|
804 |
+
|
805 |
+
.fpContent, .fpSum {
|
806 |
+
padding: 2% 5% 0%; box-sizing: border-box; line-height: 21px;
|
807 |
+
}
|
808 |
+
|
809 |
+
.fpContent {
|
810 |
+
float:left; width:100%; border-bottom: 1px solid #ddd;
|
811 |
+
}
|
812 |
+
|
813 |
+
.fpHeading {
|
814 |
+
border-bottom: 1px solid #ddd; text-align: center; padding: 18px 0;
|
815 |
+
}
|
816 |
+
|
817 |
+
.fpSum {
|
818 |
+
text-align: center; width: 87%; margin:0 auto;
|
819 |
+
}
|
820 |
+
|
821 |
+
.fpContent p {
|
822 |
+
margin:0px 0px 16px; padding:0px; text-align: left;
|
823 |
+
}
|
824 |
+
|
825 |
+
.fpContent img {
|
826 |
+
margin-bottom: 20px;
|
827 |
+
}
|
828 |
+
|
829 |
+
.fpCol {
|
830 |
+
width:33%;box-sizing:border-box; padding:0% 2% 2%; float:left;text-align: center;
|
831 |
+
}
|
832 |
+
|
833 |
+
.fpFooter {
|
834 |
+
padding: 2% 7%; width:100%; clear:both;float:left;box-sizing:border-box;
|
835 |
+
}
|
836 |
+
|
837 |
+
.fpFooter .logo {
|
838 |
+
float:left;
|
839 |
+
}
|
840 |
+
|
841 |
+
.fpFooter .tag {
|
842 |
+
font-family: 'Source Sans Pro', sans-serif; color: #888888; font-size: 18px; font-weight: 300; float:right; margin-top: 20px;
|
843 |
+
}
|
844 |
+
|
845 |
+
#fp-custom-description {
|
846 |
+
background-color: #f4f4f4; color: #636363; display: inline-block; float: none; max-width: none; min-width: none; width: auto;
|
847 |
+
}
|
848 |
+
|
849 |
+
/*#fp-info {
|
850 |
+
position: relative; right: 5px; top: 8px;
|
851 |
+
}*/
|
852 |
+
|
853 |
+
.fpWrap .close {
|
854 |
+
color: #aaa;
|
855 |
+
cursor: pointer;
|
856 |
+
font-size: 22px;
|
857 |
+
font-weight: bold;
|
858 |
+
line-height: 0.5;
|
859 |
+
position: absolute;
|
860 |
+
right: 4px;
|
861 |
+
top: 2px;
|
862 |
+
text-decoration: none;
|
863 |
+
}
|