Version Notes
Connect your Magento store to Braintree to accept Credit Cards & PayPal using V.Zero SDK
Download this release
Release Info
Developer | Dave Macaulay |
Extension | Gene_Braintree |
Version | 2.0.1 |
Comparing to | |
See all releases |
Code changes from version 2.0.0 to 2.0.1
- app/code/community/Gene/Braintree/Model/Kount/Ens.php +38 -2
- app/code/community/Gene/Braintree/Model/Migration.php +0 -1
- app/code/community/Gene/Braintree/Model/Paymentmethod/Abstract.php +102 -0
- app/code/community/Gene/Braintree/Model/Paymentmethod/Creditcard.php +17 -1
- app/code/community/Gene/Braintree/Model/Paymentmethod/Paypal.php +1 -1
- app/code/community/Gene/Braintree/Model/Wrapper/Braintree.php +1 -1
- app/code/community/Gene/Braintree/controllers/CheckoutController.php +2 -0
- app/code/community/Gene/Braintree/controllers/ExpressController.php +131 -15
- app/code/community/Gene/Braintree/etc/config.xml +2 -1
- app/code/community/Gene/Braintree/etc/system.xml +14 -2
- app/code/community/Gene/Braintree/sql/gene_braintree_setup/upgrade-2.0.0-2.0.1.php +56 -0
- app/design/adminhtml/default/default/layout/gene/braintree.xml +1 -1
- app/design/adminhtml/default/default/template/gene/braintree/js.phtml +3 -2
- app/design/frontend/base/default/layout/gene/braintree.xml +24 -2
- app/design/frontend/base/default/template/gene/braintree/express/cart.phtml +1 -0
- app/design/frontend/base/default/template/gene/braintree/express/catalog.phtml +2 -1
- app/design/frontend/base/default/template/gene/braintree/express/error.phtml +23 -4
- app/design/frontend/base/default/template/gene/braintree/express/shipping_details.phtml +7 -3
- app/design/frontend/base/default/template/gene/braintree/js/awesomecheckout.phtml +121 -0
- js/gene/braintree/express.js +155 -2
- js/gene/braintree/vzero-0.7-min.js +1 -1
- js/gene/braintree/vzero-0.7.js +48 -13
- package.xml +4 -4
- skin/adminhtml/default/default/css/gene/braintree/config.codekit +1 -1
- skin/frontend/base/default/css/gene/braintree/aheadworks.css +1 -1
- skin/frontend/base/default/css/gene/braintree/amasty.css +1 -1
- skin/frontend/base/default/css/gene/braintree/awesomecheckout.css +255 -0
- skin/frontend/base/default/css/gene/braintree/config.codekit +62 -13
- skin/frontend/base/default/css/gene/braintree/core/_general.less +1 -1
- skin/frontend/base/default/css/gene/braintree/default.css +1 -1
- skin/frontend/base/default/css/gene/braintree/express.css +107 -95
- skin/frontend/base/default/css/gene/braintree/express.less +136 -0
- skin/frontend/base/default/css/gene/braintree/firecheckout.css +21 -1
- skin/frontend/base/default/css/gene/braintree/fme.css +1 -1
- skin/frontend/base/default/css/gene/braintree/idev.css +1 -1
- skin/frontend/base/default/css/gene/braintree/integrations/awesomecheckout.less +63 -0
- skin/frontend/base/default/css/gene/braintree/integrations/firecheckout.less +17 -0
- skin/frontend/base/default/css/gene/braintree/iwd.css +1 -1
- skin/frontend/base/default/css/gene/braintree/magestore.css +1 -1
- skin/frontend/base/default/css/gene/braintree/oye.css +1 -1
- skin/frontend/base/default/css/gene/braintree/unicode.css +1 -1
app/code/community/Gene/Braintree/Model/Kount/Ens.php
CHANGED
@@ -311,8 +311,44 @@ class Gene_Braintree_Model_Kount_Ens extends Mage_Core_Model_Abstract
|
|
311 |
*/
|
312 |
public function isValidEnsIp($ip)
|
313 |
{
|
314 |
-
$validIps =
|
315 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
316 |
}
|
317 |
|
318 |
/**
|
311 |
*/
|
312 |
public function isValidEnsIp($ip)
|
313 |
{
|
314 |
+
$validIps = explode(',', Mage::getStoreConfig('payment/gene_braintree_creditcard/kount_ens_ips'));
|
315 |
+
if (is_array($validIps) && count($validIps) > 0) {
|
316 |
+
$validIps = array_map('trim', $validIps);
|
317 |
+
foreach ($validIps as $validIp) {
|
318 |
+
if ($this->isIpInRange($ip, $validIp)) {
|
319 |
+
return true;
|
320 |
+
}
|
321 |
+
}
|
322 |
+
|
323 |
+
return false;
|
324 |
+
}
|
325 |
+
|
326 |
+
// If no IP's are set allow from all
|
327 |
+
return true;
|
328 |
+
}
|
329 |
+
|
330 |
+
/**
|
331 |
+
* Determine whether an IP is within a range
|
332 |
+
*
|
333 |
+
* @param $ip
|
334 |
+
* @param $range
|
335 |
+
*
|
336 |
+
* @return bool
|
337 |
+
*
|
338 |
+
* @author https://gist.github.com/tott/7684443
|
339 |
+
*/
|
340 |
+
protected function isIpInRange($ip, $range)
|
341 |
+
{
|
342 |
+
if ( strpos( $range, '/' ) == false ) {
|
343 |
+
$range .= '/32';
|
344 |
+
}
|
345 |
+
// $range is in IP/CIDR format eg 127.0.0.1/24
|
346 |
+
list( $range, $netmask ) = explode( '/', $range, 2 );
|
347 |
+
$range_decimal = ip2long( $range );
|
348 |
+
$ip_decimal = ip2long( $ip );
|
349 |
+
$wildcard_decimal = pow( 2, ( 32 - $netmask ) ) - 1;
|
350 |
+
$netmask_decimal = ~ $wildcard_decimal;
|
351 |
+
return ( ( $ip_decimal & $netmask_decimal ) == ( $range_decimal & $netmask_decimal ) );
|
352 |
}
|
353 |
|
354 |
/**
|
app/code/community/Gene/Braintree/Model/Migration.php
CHANGED
@@ -126,7 +126,6 @@ class Gene_Braintree_Model_Migration extends Mage_Core_Model_Abstract
|
|
126 |
'capture_action' => 'gene_braintree_creditcard/capture_action',
|
127 |
'order_status' => 'gene_braintree_creditcard/order_status',
|
128 |
'use_vault' => 'gene_braintree_creditcard/use_vault',
|
129 |
-
'useccv' => 'gene_braintree_creditcard/useccv',
|
130 |
'cctypes' => 'gene_braintree_creditcard/cctypes',
|
131 |
'three_d_secure' => 'gene_braintree_creditcard/threedsecure',
|
132 |
'kount_id' => 'gene_braintree_creditcard/kount_merchant_id',
|
126 |
'capture_action' => 'gene_braintree_creditcard/capture_action',
|
127 |
'order_status' => 'gene_braintree_creditcard/order_status',
|
128 |
'use_vault' => 'gene_braintree_creditcard/use_vault',
|
|
|
129 |
'cctypes' => 'gene_braintree_creditcard/cctypes',
|
130 |
'three_d_secure' => 'gene_braintree_creditcard/threedsecure',
|
131 |
'kount_id' => 'gene_braintree_creditcard/kount_merchant_id',
|
app/code/community/Gene/Braintree/Model/Paymentmethod/Abstract.php
CHANGED
@@ -327,6 +327,81 @@ abstract class Gene_Braintree_Model_Paymentmethod_Abstract extends Mage_Payment_
|
|
327 |
return $collection->getSize();
|
328 |
}
|
329 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
330 |
/**
|
331 |
* Update the order status within Kount
|
332 |
*
|
@@ -436,4 +511,31 @@ abstract class Gene_Braintree_Model_Paymentmethod_Abstract extends Mage_Payment_
|
|
436 |
|
437 |
return $this;
|
438 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
439 |
}
|
327 |
return $collection->getSize();
|
328 |
}
|
329 |
|
330 |
+
/**
|
331 |
+
* Accept a payment that landed in payment review
|
332 |
+
*
|
333 |
+
* @param \Mage_Payment_Model_Info $payment
|
334 |
+
*
|
335 |
+
* @return mixed
|
336 |
+
*/
|
337 |
+
public function acceptPayment(Mage_Payment_Model_Info $payment)
|
338 |
+
{
|
339 |
+
parent::acceptPayment($payment);
|
340 |
+
|
341 |
+
/* @var $order Mage_Sales_Model_Order */
|
342 |
+
$order = $payment->getOrder();
|
343 |
+
|
344 |
+
/* @var $invoice Mage_Sales_Model_Order_Invoice */
|
345 |
+
$invoice = $this->_getInvoiceForTransactionId($payment, $payment->getLastTransId());
|
346 |
+
if ($invoice && $invoice->getId()) {
|
347 |
+
if ($invoice->getState() == Mage_Sales_Model_Order_Invoice::STATE_PAID) {
|
348 |
+
// Invoice is already paid and captured, just move the order into processing
|
349 |
+
return false;
|
350 |
+
} else if ($invoice->canCapture()) {
|
351 |
+
return $invoice->capture();
|
352 |
+
}
|
353 |
+
} else if ($order->getPayment()->canCapture()) {
|
354 |
+
// We don't currently have an invoice for this order, let's create one whilst capturing
|
355 |
+
$order->getPayment()->capture(null);
|
356 |
+
/* @var $invoice Mage_Sales_Model_Order_Invoice */
|
357 |
+
$invoice = $order->getPayment()->getCreatedInvoice();
|
358 |
+
// Mark the invoice as paid
|
359 |
+
$invoice->pay();
|
360 |
+
return true;
|
361 |
+
}
|
362 |
+
|
363 |
+
Mage::throwException(Mage::helper('payment')->__('Unable to load invoice to accept the payment for this order.'));
|
364 |
+
}
|
365 |
+
|
366 |
+
/**
|
367 |
+
* Deny a payment that landed in payment review
|
368 |
+
*
|
369 |
+
* @param \Mage_Payment_Model_Info $payment
|
370 |
+
*
|
371 |
+
* @return mixed
|
372 |
+
*/
|
373 |
+
public function denyPayment(Mage_Payment_Model_Info $payment)
|
374 |
+
{
|
375 |
+
parent::denyPayment($payment);
|
376 |
+
|
377 |
+
/* @var $invoice Mage_Sales_Model_Order_Invoice */
|
378 |
+
$invoice = $this->_getInvoiceForTransactionId($payment, $payment->getLastTransId());
|
379 |
+
if ($invoice && $invoice->getId()) {
|
380 |
+
if ($invoice->getState() == Mage_Sales_Model_Order_Invoice::STATE_CANCELED) {
|
381 |
+
// Invoice has already been cancelled
|
382 |
+
return false;
|
383 |
+
} else {
|
384 |
+
return $invoice->void();
|
385 |
+
}
|
386 |
+
} else {
|
387 |
+
// The order has no invoice, let's void the payment directly
|
388 |
+
$this->_getWrapper()->init();
|
389 |
+
$transaction = Braintree_Transaction::find($payment->getLastTransId());
|
390 |
+
if ($transaction->status == Braintree_Transaction::AUTHORIZED) {
|
391 |
+
try {
|
392 |
+
Braintree_Transaction::void($payment->getLastTransId());
|
393 |
+
return true;
|
394 |
+
} catch (Exception $e) {
|
395 |
+
// Let's add the error into the session
|
396 |
+
Mage::getSingleton('adminhtml/session')->addError($e->getMessage());
|
397 |
+
return false;
|
398 |
+
}
|
399 |
+
}
|
400 |
+
}
|
401 |
+
|
402 |
+
Mage::throwException(Mage::helper('payment')->__('Unable to load invoice to deny the payment for this order.'));
|
403 |
+
}
|
404 |
+
|
405 |
/**
|
406 |
* Update the order status within Kount
|
407 |
*
|
511 |
|
512 |
return $this;
|
513 |
}
|
514 |
+
|
515 |
+
/**
|
516 |
+
* Return invoice model for transaction
|
517 |
+
*
|
518 |
+
* @param \Varien_Object $payment
|
519 |
+
* @param $transactionId
|
520 |
+
*
|
521 |
+
* @return bool
|
522 |
+
*/
|
523 |
+
protected function _getInvoiceForTransactionId(Varien_Object $payment, $transactionId)
|
524 |
+
{
|
525 |
+
foreach ($payment->getOrder()->getInvoiceCollection() as $invoice) {
|
526 |
+
if ($invoice->getTransactionId() == $transactionId) {
|
527 |
+
$invoice->load($invoice->getId());
|
528 |
+
return $invoice;
|
529 |
+
}
|
530 |
+
}
|
531 |
+
foreach ($payment->getOrder()->getInvoiceCollection() as $invoice) {
|
532 |
+
if ($invoice->getState() == Mage_Sales_Model_Order_Invoice::STATE_OPEN
|
533 |
+
&& $invoice->load($invoice->getId())
|
534 |
+
) {
|
535 |
+
$invoice->setTransactionId($transactionId);
|
536 |
+
return $invoice;
|
537 |
+
}
|
538 |
+
}
|
539 |
+
return false;
|
540 |
+
}
|
541 |
}
|
app/code/community/Gene/Braintree/Model/Paymentmethod/Creditcard.php
CHANGED
@@ -40,10 +40,17 @@ class Gene_Braintree_Model_Paymentmethod_Creditcard extends Gene_Braintree_Model
|
|
40 |
protected $_canUseForMultishipping = true;
|
41 |
protected $_isInitializeNeeded = false;
|
42 |
protected $_canFetchTransactionInfo = false;
|
43 |
-
protected $_canReviewPayment =
|
44 |
protected $_canCreateBillingAgreement = false;
|
45 |
protected $_canManageRecurringProfiles = false;
|
46 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
/**
|
48 |
* Place Braintree specific data into the additional information of the payment instance object
|
49 |
*
|
@@ -61,6 +68,10 @@ class Gene_Braintree_Model_Paymentmethod_Creditcard extends Gene_Braintree_Model
|
|
61 |
->setAdditionalInformation('save_card', $data->getData('save_card'))
|
62 |
->setAdditionalInformation('device_data', $data->getData('device_data'));
|
63 |
|
|
|
|
|
|
|
|
|
64 |
return $this;
|
65 |
}
|
66 |
|
@@ -193,6 +204,11 @@ class Gene_Braintree_Model_Paymentmethod_Creditcard extends Gene_Braintree_Model
|
|
193 |
// Run the built in Magento validation
|
194 |
parent::validate();
|
195 |
|
|
|
|
|
|
|
|
|
|
|
196 |
// Confirm that we have a nonce from Braintree
|
197 |
if (!$this->getPaymentMethodToken() || ($this->getPaymentMethodToken() && $this->getPaymentMethodToken() == 'threedsecure')) {
|
198 |
|
40 |
protected $_canUseForMultishipping = true;
|
41 |
protected $_isInitializeNeeded = false;
|
42 |
protected $_canFetchTransactionInfo = false;
|
43 |
+
protected $_canReviewPayment = true;
|
44 |
protected $_canCreateBillingAgreement = false;
|
45 |
protected $_canManageRecurringProfiles = false;
|
46 |
|
47 |
+
/**
|
48 |
+
* Are we submitting the payment after the initial payment validate?
|
49 |
+
*
|
50 |
+
* @var bool
|
51 |
+
*/
|
52 |
+
protected $_submitAfterPayment = false;
|
53 |
+
|
54 |
/**
|
55 |
* Place Braintree specific data into the additional information of the payment instance object
|
56 |
*
|
68 |
->setAdditionalInformation('save_card', $data->getData('save_card'))
|
69 |
->setAdditionalInformation('device_data', $data->getData('device_data'));
|
70 |
|
71 |
+
if ($submitAfterPayment = $data->getData('submit_after_payment')) {
|
72 |
+
$this->_submitAfterPayment = $submitAfterPayment;
|
73 |
+
}
|
74 |
+
|
75 |
return $this;
|
76 |
}
|
77 |
|
204 |
// Run the built in Magento validation
|
205 |
parent::validate();
|
206 |
|
207 |
+
// Validation doesn't need to occur now, as the payment has not yet been tokenized
|
208 |
+
if ($this->_submitAfterPayment) {
|
209 |
+
return $this;
|
210 |
+
}
|
211 |
+
|
212 |
// Confirm that we have a nonce from Braintree
|
213 |
if (!$this->getPaymentMethodToken() || ($this->getPaymentMethodToken() && $this->getPaymentMethodToken() == 'threedsecure')) {
|
214 |
|
app/code/community/Gene/Braintree/Model/Paymentmethod/Paypal.php
CHANGED
@@ -40,7 +40,7 @@ class Gene_Braintree_Model_Paymentmethod_Paypal extends Gene_Braintree_Model_Pay
|
|
40 |
protected $_canUseForMultishipping = true;
|
41 |
protected $_isInitializeNeeded = false;
|
42 |
protected $_canFetchTransactionInfo = false;
|
43 |
-
protected $_canReviewPayment =
|
44 |
protected $_canCreateBillingAgreement = false;
|
45 |
protected $_canManageRecurringProfiles = false;
|
46 |
|
40 |
protected $_canUseForMultishipping = true;
|
41 |
protected $_isInitializeNeeded = false;
|
42 |
protected $_canFetchTransactionInfo = false;
|
43 |
+
protected $_canReviewPayment = true;
|
44 |
protected $_canCreateBillingAgreement = false;
|
45 |
protected $_canManageRecurringProfiles = false;
|
46 |
|
app/code/community/Gene/Braintree/Model/Wrapper/Braintree.php
CHANGED
@@ -779,7 +779,7 @@ class Gene_Braintree_Model_Wrapper_Braintree extends Mage_Core_Model_Abstract
|
|
779 |
|
780 |
// Include level 2 data if the user has provided a VAT ID
|
781 |
if ($order->getBillingAddress()->getVatId()) {
|
782 |
-
$request['taxAmount'] = $order->getTaxAmount();
|
783 |
$request['taxExempt'] = true;
|
784 |
$request['purchaseOrderNumber'] = $order->getIncrementId();
|
785 |
}
|
779 |
|
780 |
// Include level 2 data if the user has provided a VAT ID
|
781 |
if ($order->getBillingAddress()->getVatId()) {
|
782 |
+
$request['taxAmount'] = Mage::helper('gene_braintree')->formatPrice($order->getTaxAmount());
|
783 |
$request['taxExempt'] = true;
|
784 |
$request['purchaseOrderNumber'] = $order->getIncrementId();
|
785 |
}
|
app/code/community/Gene/Braintree/controllers/CheckoutController.php
CHANGED
@@ -110,6 +110,8 @@ class Gene_Braintree_CheckoutController extends Mage_Core_Controller_Front_Actio
|
|
110 |
// Pull the billing address from the multishipping experience
|
111 |
if ($this->getRequest()->getParam('billing') == 'multishipping') {
|
112 |
$billing = Mage::getSingleton('checkout/type_multishipping')->getQuote()->getBillingAddress();
|
|
|
|
|
113 |
} else {
|
114 |
$billing = $this->getRequest()->getParam('billing');
|
115 |
}
|
110 |
// Pull the billing address from the multishipping experience
|
111 |
if ($this->getRequest()->getParam('billing') == 'multishipping') {
|
112 |
$billing = Mage::getSingleton('checkout/type_multishipping')->getQuote()->getBillingAddress();
|
113 |
+
} else if ($this->getRequest()->getParam('billing') == 'quote') {
|
114 |
+
$billing = Mage::getSingleton('checkout/session')->getQuote()->getBillingAddress();
|
115 |
} else {
|
116 |
$billing = $this->getRequest()->getParam('billing');
|
117 |
}
|
app/code/community/Gene/Braintree/controllers/ExpressController.php
CHANGED
@@ -257,14 +257,76 @@ class Gene_Braintree_ExpressController extends Mage_Core_Controller_Front_Action
|
|
257 |
}
|
258 |
}
|
259 |
|
260 |
-
|
261 |
-
|
262 |
-
|
263 |
-
|
264 |
-
|
265 |
|
266 |
-
|
267 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
268 |
}
|
269 |
|
270 |
/**
|
@@ -275,11 +337,17 @@ class Gene_Braintree_ExpressController extends Mage_Core_Controller_Front_Action
|
|
275 |
$quote = $this->_getQuote();
|
276 |
$quote->setTotalsCollectedFlag(false)->collectTotals()->save();
|
277 |
|
278 |
-
//
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
283 |
|
284 |
// Convert quote to order
|
285 |
$convert = Mage::getSingleton('sales/convert_quote');
|
@@ -296,8 +364,17 @@ class Gene_Braintree_ExpressController extends Mage_Core_Controller_Front_Action
|
|
296 |
}
|
297 |
|
298 |
// Set the order as complete
|
|
|
299 |
$service = Mage::getModel('sales/service_quote', $order->getQuote());
|
300 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
301 |
$order = $service->getOrder();
|
302 |
|
303 |
// Send the new order email
|
@@ -316,15 +393,54 @@ class Gene_Braintree_ExpressController extends Mage_Core_Controller_Front_Action
|
|
316 |
}
|
317 |
|
318 |
/**
|
319 |
-
* Display
|
|
|
|
|
320 |
*/
|
321 |
-
public function errorAction()
|
322 |
{
|
323 |
// View to select shipping method
|
|
|
324 |
$block = $this->getLayout()->createBlock('gene_braintree/express_checkout')
|
325 |
->setTemplate('gene/braintree/express/error.phtml');
|
326 |
|
|
|
|
|
|
|
|
|
327 |
$this->getResponse()->setBody($block->toHtml());
|
328 |
}
|
329 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
330 |
}
|
257 |
}
|
258 |
}
|
259 |
|
260 |
+
return $this->_returnJson(array(
|
261 |
+
'success' => true,
|
262 |
+
'totals' => $this->_returnTotals()
|
263 |
+
));
|
264 |
+
}
|
265 |
|
266 |
+
/**
|
267 |
+
* Allow customers to add coupon codes into their orders
|
268 |
+
*
|
269 |
+
* @return \Gene_Braintree_ExpressController|\Zend_Controller_Response_Abstract
|
270 |
+
*/
|
271 |
+
public function saveCouponAction()
|
272 |
+
{
|
273 |
+
$quote = $this->_getQuote();
|
274 |
+
$couponCode = $this->getRequest()->getParam('coupon');
|
275 |
+
$oldCoupon = $quote->getCouponCode();
|
276 |
+
|
277 |
+
// Don't try and re-apply the already applied coupon
|
278 |
+
if ($couponCode == $oldCoupon) {
|
279 |
+
// Just alert the front-end the response was a success
|
280 |
+
return $this->_returnJson(array(
|
281 |
+
'success' => true
|
282 |
+
));
|
283 |
+
}
|
284 |
+
|
285 |
+
// If the user is trying to remove the coupon code allow them to
|
286 |
+
if ($this->getRequest()->getParam('remove')) {
|
287 |
+
$couponCode = '';
|
288 |
+
}
|
289 |
+
|
290 |
+
// Build our response in an array to be returned as JSON
|
291 |
+
$response = array(
|
292 |
+
'success' => false
|
293 |
+
);
|
294 |
+
|
295 |
+
try {
|
296 |
+
$codeLength = strlen($couponCode);
|
297 |
+
$isCodeLengthValid = $codeLength && $codeLength <= Mage_Checkout_Helper_Cart::COUPON_CODE_MAX_LENGTH;
|
298 |
+
|
299 |
+
$this->_getQuote()->getShippingAddress()->setCollectShippingRates(true);
|
300 |
+
$this->_getQuote()->setCouponCode($isCodeLengthValid ? $couponCode : '')
|
301 |
+
->collectTotals()
|
302 |
+
->save();
|
303 |
+
|
304 |
+
if ($codeLength) {
|
305 |
+
if ($isCodeLengthValid && $couponCode == $this->_getQuote()->getCouponCode()) {
|
306 |
+
$response['success'] = true;
|
307 |
+
$response['message'] = $this->__('Coupon code "%s" was applied.', Mage::helper('core')->escapeHtml($couponCode));
|
308 |
+
} else {
|
309 |
+
$response['success'] = false;
|
310 |
+
$response['message'] = $this->__('Coupon code "%s" is not valid.', Mage::helper('core')->escapeHtml($couponCode));
|
311 |
+
}
|
312 |
+
} else {
|
313 |
+
// The coupon has been removed successfully
|
314 |
+
$response['success'] = true;
|
315 |
+
}
|
316 |
+
|
317 |
+
} catch (Mage_Core_Exception $e) {
|
318 |
+
$response['success'] = false;
|
319 |
+
$response['message'] = $e->getMessage();
|
320 |
+
} catch (Exception $e) {
|
321 |
+
$response['success'] = false;
|
322 |
+
$response['message'] = $this->__('Cannot apply the coupon code.');
|
323 |
+
Mage::logException($e);
|
324 |
+
}
|
325 |
+
|
326 |
+
// Include the totals HTML in the response
|
327 |
+
$response['totals'] = $this->_returnTotals();
|
328 |
+
|
329 |
+
return $this->_returnJson($response);
|
330 |
}
|
331 |
|
332 |
/**
|
337 |
$quote = $this->_getQuote();
|
338 |
$quote->setTotalsCollectedFlag(false)->collectTotals()->save();
|
339 |
|
340 |
+
// Handle free orders via coupon codes
|
341 |
+
if ($quote->getGrandTotal() == 0) {
|
342 |
+
$paymentMethod = $quote->getPayment();
|
343 |
+
$paymentMethod->setMethod('free');
|
344 |
+
$quote->setPayment($paymentMethod);
|
345 |
+
} else {
|
346 |
+
$paymentMethod = $quote->getPayment();
|
347 |
+
$paymentMethod->setMethod('gene_braintree_paypal');
|
348 |
+
$paymentMethod->setAdditionalInformation('payment_method_nonce', Mage::getModel('core/session')->getBraintreeNonce());
|
349 |
+
$quote->setPayment($paymentMethod);
|
350 |
+
}
|
351 |
|
352 |
// Convert quote to order
|
353 |
$convert = Mage::getSingleton('sales/convert_quote');
|
364 |
}
|
365 |
|
366 |
// Set the order as complete
|
367 |
+
/* @var $service Mage_Sales_Model_Service_Quote */
|
368 |
$service = Mage::getModel('sales/service_quote', $order->getQuote());
|
369 |
+
try {
|
370 |
+
$service->submitAll();
|
371 |
+
} catch (Mage_Core_Exception $e) {
|
372 |
+
$this->errorAction($e->getMessage());
|
373 |
+
return false;
|
374 |
+
} catch (Exception $e) {
|
375 |
+
$this->errorAction($e->getMessage());
|
376 |
+
return false;
|
377 |
+
}
|
378 |
$order = $service->getOrder();
|
379 |
|
380 |
// Send the new order email
|
393 |
}
|
394 |
|
395 |
/**
|
396 |
+
* Display an error to the user
|
397 |
+
*
|
398 |
+
* @param bool|false $errorMessage
|
399 |
*/
|
400 |
+
public function errorAction($errorMessage = false)
|
401 |
{
|
402 |
// View to select shipping method
|
403 |
+
/* @var $block Gene_Braintree_Block_Express_Checkout */
|
404 |
$block = $this->getLayout()->createBlock('gene_braintree/express_checkout')
|
405 |
->setTemplate('gene/braintree/express/error.phtml');
|
406 |
|
407 |
+
if ($errorMessage) {
|
408 |
+
$block->getLayout()->getMessagesBlock()->addError($errorMessage);
|
409 |
+
}
|
410 |
+
|
411 |
$this->getResponse()->setBody($block->toHtml());
|
412 |
}
|
413 |
|
414 |
+
/**
|
415 |
+
* Return the totals in the Ajax response
|
416 |
+
*
|
417 |
+
* @return \Zend_Controller_Response_Abstract
|
418 |
+
*/
|
419 |
+
protected function _returnTotals()
|
420 |
+
{
|
421 |
+
// Build up the totals block
|
422 |
+
/* @var $totals Mage_Checkout_Block_Cart_Totals */
|
423 |
+
$totals = $this->getLayout()->createBlock('checkout/cart_totals')
|
424 |
+
->setTemplate('checkout/cart/totals.phtml')
|
425 |
+
->setCustomQuote($this->_getQuote());
|
426 |
+
|
427 |
+
// Set the body in the response
|
428 |
+
return $totals->toHtml();
|
429 |
+
}
|
430 |
+
|
431 |
+
/**
|
432 |
+
* Return JSON to the browser
|
433 |
+
*
|
434 |
+
* @param $array
|
435 |
+
*
|
436 |
+
* @return $this
|
437 |
+
*/
|
438 |
+
protected function _returnJson($array)
|
439 |
+
{
|
440 |
+
$this->getResponse()->setBody(Mage::helper('core')->jsonEncode($array));
|
441 |
+
$this->getResponse()->setHeader('Content-type', 'application/json');
|
442 |
+
|
443 |
+
return $this;
|
444 |
+
}
|
445 |
+
|
446 |
}
|
app/code/community/Gene/Braintree/etc/config.xml
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Gene_Braintree>
|
5 |
-
<version>2.0.
|
6 |
</Gene_Braintree>
|
7 |
</modules>
|
8 |
<global>
|
@@ -106,6 +106,7 @@
|
|
106 |
<threedsecure>0</threedsecure>
|
107 |
<threedsecure_threshold>0</threedsecure_threshold>
|
108 |
<useccv>1</useccv>
|
|
|
109 |
</gene_braintree_creditcard>
|
110 |
|
111 |
</payment>
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Gene_Braintree>
|
5 |
+
<version>2.0.1</version>
|
6 |
</Gene_Braintree>
|
7 |
</modules>
|
8 |
<global>
|
106 |
<threedsecure>0</threedsecure>
|
107 |
<threedsecure_threshold>0</threedsecure_threshold>
|
108 |
<useccv>1</useccv>
|
109 |
+
<kount_ens_ips>209.81.12.0/24,64.128.91.0/24,64.128.87.0/24</kount_ens_ips>
|
110 |
</gene_braintree_creditcard>
|
111 |
|
112 |
</payment>
|
app/code/community/Gene/Braintree/etc/system.xml
CHANGED
@@ -761,10 +761,22 @@
|
|
761 |
]]></comment>
|
762 |
</kount_ens_url>
|
763 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
764 |
<display_heading translate="label">
|
765 |
<label>Display</label>
|
766 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
767 |
-
<sort_order>
|
768 |
<show_in_default>1</show_in_default>
|
769 |
<show_in_website>1</show_in_website>
|
770 |
<show_in_store>1</show_in_store>
|
@@ -773,7 +785,7 @@
|
|
773 |
<sort_order translate="label">
|
774 |
<label>Sort Order</label>
|
775 |
<frontend_type>text</frontend_type>
|
776 |
-
<sort_order>
|
777 |
<show_in_default>1</show_in_default>
|
778 |
<show_in_website>1</show_in_website>
|
779 |
<show_in_store>1</show_in_store>
|
761 |
]]></comment>
|
762 |
</kount_ens_url>
|
763 |
|
764 |
+
<kount_ens_ips>
|
765 |
+
<label>Event Notification System (ENS) Allowed IPs</label>
|
766 |
+
<frontend_type>text</frontend_type>
|
767 |
+
<sort_order>145</sort_order>
|
768 |
+
<show_in_default>1</show_in_default>
|
769 |
+
<show_in_website>1</show_in_website>
|
770 |
+
<show_in_store>1</show_in_store>
|
771 |
+
<comment><![CDATA[
|
772 |
+
The IPs that have access to the ENS endpoint above. These can be individual IP's or ranges separated with commas. To allow from all IPs leave this field empty (not recommended).
|
773 |
+
]]></comment>
|
774 |
+
</kount_ens_ips>
|
775 |
+
|
776 |
<display_heading translate="label">
|
777 |
<label>Display</label>
|
778 |
<frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
|
779 |
+
<sort_order>150</sort_order>
|
780 |
<show_in_default>1</show_in_default>
|
781 |
<show_in_website>1</show_in_website>
|
782 |
<show_in_store>1</show_in_store>
|
785 |
<sort_order translate="label">
|
786 |
<label>Sort Order</label>
|
787 |
<frontend_type>text</frontend_type>
|
788 |
+
<sort_order>155</sort_order>
|
789 |
<show_in_default>1</show_in_default>
|
790 |
<show_in_website>1</show_in_website>
|
791 |
<show_in_store>1</show_in_store>
|
app/code/community/Gene/Braintree/sql/gene_braintree_setup/upgrade-2.0.0-2.0.1.php
ADDED
@@ -0,0 +1,56 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/* @var $installer Gene_Braintree_Model_Entity_Setup */
|
4 |
+
$installer = $this;
|
5 |
+
$installer->startSetup();
|
6 |
+
|
7 |
+
// Update the white list for AnattaDesign Awesome Checkout
|
8 |
+
if (Mage::helper('core')->isModuleEnabled('AnattaDesign_AwesomeCheckout')) {
|
9 |
+
$whiteListConfigXmlPath = 'awesomecheckout/advanced/whitelisted_css_js';
|
10 |
+
$whiteList = array(
|
11 |
+
'gene/braintree/vzero-0.7-min.js',
|
12 |
+
'css/gene/braintree/awesomecheckout.css'
|
13 |
+
);
|
14 |
+
|
15 |
+
// Update values on the default scope
|
16 |
+
if ($currentWhiteList = $this->getStoreConfig($whiteListConfigXmlPath)) {
|
17 |
+
$currentWhiteListArray = explode("\n", $currentWhiteList);
|
18 |
+
if (is_array($currentWhiteListArray) && count($currentWhiteListArray) > 0) {
|
19 |
+
$whiteList = array_merge($currentWhiteListArray, $whiteList);
|
20 |
+
}
|
21 |
+
}
|
22 |
+
|
23 |
+
// Save the new default config values
|
24 |
+
Mage::getConfig()->saveConfig(
|
25 |
+
$whiteListConfigXmlPath,
|
26 |
+
implode("\n", $whiteList),
|
27 |
+
'default',
|
28 |
+
0
|
29 |
+
);
|
30 |
+
|
31 |
+
// Loop through the stores and ensure they're all up to date
|
32 |
+
$stores = Mage::getModel('core/store')->getCollection();
|
33 |
+
foreach ($stores as $store) {
|
34 |
+
|
35 |
+
// Update values on the default scope
|
36 |
+
if ($currentWhiteList = $this->getStoreConfig($whiteListConfigXmlPath, $store)) {
|
37 |
+
$currentWhiteListArray = explode("\n", $currentWhiteList);
|
38 |
+
if (is_array($currentWhiteListArray) && count($currentWhiteListArray) > 0) {
|
39 |
+
$whiteList = array_merge($currentWhiteListArray, $whiteList);
|
40 |
+
}
|
41 |
+
}
|
42 |
+
|
43 |
+
// Save the new default config values
|
44 |
+
Mage::getConfig()->saveConfig(
|
45 |
+
$whiteListConfigXmlPath,
|
46 |
+
implode("\n", $whiteList),
|
47 |
+
'stores',
|
48 |
+
$store->getId()
|
49 |
+
);
|
50 |
+
}
|
51 |
+
|
52 |
+
// Clean the cache
|
53 |
+
Mage::getConfig()->cleanCache();
|
54 |
+
}
|
55 |
+
|
56 |
+
$installer->endSetup();
|
app/design/adminhtml/default/default/layout/gene/braintree.xml
CHANGED
@@ -24,7 +24,7 @@
|
|
24 |
</reference>
|
25 |
<reference name="js">
|
26 |
<block type="core/text" name="braintree-js">
|
27 |
-
<action method="setText"><text><![CDATA[<script src="https://js.braintreegateway.com/js/braintree-2.
|
28 |
</block>
|
29 |
</reference>
|
30 |
<reference name="before_body_end">
|
24 |
</reference>
|
25 |
<reference name="js">
|
26 |
<block type="core/text" name="braintree-js">
|
27 |
+
<action method="setText"><text><![CDATA[<script src="https://js.braintreegateway.com/js/braintree-2.26.0.min.js"></script>]]></text></action>
|
28 |
</block>
|
29 |
</reference>
|
30 |
<reference name="before_body_end">
|
app/design/adminhtml/default/default/template/gene/braintree/js.phtml
CHANGED
@@ -27,8 +27,9 @@
|
|
27 |
* @returns {boolean}
|
28 |
*/
|
29 |
shouldInterceptCreditCard: function() {
|
30 |
-
|
31 |
-
|
|
|
32 |
|
33 |
});
|
34 |
|
27 |
* @returns {boolean}
|
28 |
*/
|
29 |
shouldInterceptCreditCard: function() {
|
30 |
+
// Additional check to see if the label is present for the payment method
|
31 |
+
return ($('p_method_free') == null || ($('p_method_free') != null && !$('p_method_free').checked)) && $$('[for="p_method_gene_braintree_creditcard"]').length > 0;
|
32 |
+
}
|
33 |
|
34 |
});
|
35 |
|
app/design/frontend/base/default/layout/gene/braintree.xml
CHANGED
@@ -5,9 +5,9 @@
|
|
5 |
<gene_braintree_assets>
|
6 |
<reference name="head">
|
7 |
<block type="core/text" name="braintree-js">
|
8 |
-
<action method="setText"><text><![CDATA[<script src="https://js.braintreegateway.com/js/braintree-2.
|
9 |
</block>
|
10 |
-
<action method="addJs"><file>gene/braintree/vzero-0.7
|
11 |
<!-- If Braintree_Payments is enabled remove their JS -->
|
12 |
<action method="removeItem"><type>js</type><name>braintree/braintree-1.3.4.js</name></action>
|
13 |
</reference>
|
@@ -219,6 +219,28 @@
|
|
219 |
</reference>
|
220 |
</checkout_onestep_index>
|
221 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
222 |
<!-- Add in support for Magento's mutli shipping checkout -->
|
223 |
<checkout_multishipping_billing>
|
224 |
<update handle="gene_braintree_assets" />
|
5 |
<gene_braintree_assets>
|
6 |
<reference name="head">
|
7 |
<block type="core/text" name="braintree-js">
|
8 |
+
<action method="setText"><text><![CDATA[<script src="https://js.braintreegateway.com/js/braintree-2.26.0.min.js"></script>]]></text></action>
|
9 |
</block>
|
10 |
+
<action method="addJs"><file>gene/braintree/vzero-0.7.js</file></action>
|
11 |
<!-- If Braintree_Payments is enabled remove their JS -->
|
12 |
<action method="removeItem"><type>js</type><name>braintree/braintree-1.3.4.js</name></action>
|
13 |
</reference>
|
219 |
</reference>
|
220 |
</checkout_onestep_index>
|
221 |
|
222 |
+
<!-- Add in support for AwesomeCheckout -->
|
223 |
+
<anattadesign_awesomecheckout_onepage_index>
|
224 |
+
<update handle="gene_braintree_assets" />
|
225 |
+
<reference name="head">
|
226 |
+
<action method="addCss"><file>css/gene/braintree/awesomecheckout.css</file></action>
|
227 |
+
</reference>
|
228 |
+
<!-- We have to force remove these blocks, and add blocks under a new name -->
|
229 |
+
<remove name="gene_braintree_js" />
|
230 |
+
<remove name="gene_braintree_data" />
|
231 |
+
<reference name="before_body_end">
|
232 |
+
<block type="gene_braintree/js" name="gene_braintree_js_ac" template="gene/braintree/js/awesomecheckout.phtml" />
|
233 |
+
|
234 |
+
<!-- We include device data at the end of the larger form -->
|
235 |
+
<block type="gene_braintree/js" name="gene_braintree_data_ac" template="gene/braintree/js/data.phtml">
|
236 |
+
<action method="setData">
|
237 |
+
<key>payment_form_id</key>
|
238 |
+
<value>co-payment-form</value>
|
239 |
+
</action>
|
240 |
+
</block>
|
241 |
+
</reference>
|
242 |
+
</anattadesign_awesomecheckout_onepage_index>
|
243 |
+
|
244 |
<!-- Add in support for Magento's mutli shipping checkout -->
|
245 |
<checkout_multishipping_billing>
|
246 |
<update handle="gene_braintree_assets" />
|
app/design/frontend/base/default/template/gene/braintree/express/cart.phtml
CHANGED
@@ -41,6 +41,7 @@ if( !$this->hasBeenSetup() ): ?>
|
|
41 |
locale: '<?php echo strtolower($this->getStoreLocale()); ?>',
|
42 |
authUrl: '<?php echo $this->getUrl('braintree/express/authorization') ?>',
|
43 |
shippingSaveUrl:'<?php echo $this->getUrl('braintree/express/saveShipping') ?>',
|
|
|
44 |
successUrl: '<?php echo $this->getUrl("checkout/onepage/success"); ?>',
|
45 |
buyButtonPlacement: function() {
|
46 |
var placement = document.getElementsByClassName("checkout-types");
|
41 |
locale: '<?php echo strtolower($this->getStoreLocale()); ?>',
|
42 |
authUrl: '<?php echo $this->getUrl('braintree/express/authorization') ?>',
|
43 |
shippingSaveUrl:'<?php echo $this->getUrl('braintree/express/saveShipping') ?>',
|
44 |
+
couponSaveUrl: '<?php echo $this->getUrl('braintree/express/saveCoupon') ?>',
|
45 |
successUrl: '<?php echo $this->getUrl("checkout/onepage/success"); ?>',
|
46 |
buyButtonPlacement: function() {
|
47 |
var placement = document.getElementsByClassName("checkout-types");
|
app/design/frontend/base/default/template/gene/braintree/express/catalog.phtml
CHANGED
@@ -37,7 +37,8 @@ if( !$this->hasBeenSetup() ): ?>
|
|
37 |
productId: <?php echo (int) $this->getProduct()->getId(); ?>,
|
38 |
authUrl: '<?php echo $this->getUrl('braintree/express/authorization') ?>',
|
39 |
shippingSaveUrl:'<?php echo $this->getUrl('braintree/express/saveShipping') ?>',
|
40 |
-
|
|
|
41 |
});
|
42 |
}
|
43 |
});
|
37 |
productId: <?php echo (int) $this->getProduct()->getId(); ?>,
|
38 |
authUrl: '<?php echo $this->getUrl('braintree/express/authorization') ?>',
|
39 |
shippingSaveUrl:'<?php echo $this->getUrl('braintree/express/saveShipping') ?>',
|
40 |
+
couponSaveUrl: '<?php echo $this->getUrl('braintree/express/saveCoupon') ?>',
|
41 |
+
successUrl: '<?php echo $this->getUrl("checkout/onepage/success"); ?>'
|
42 |
});
|
43 |
}
|
44 |
});
|
app/design/frontend/base/default/template/gene/braintree/express/error.phtml
CHANGED
@@ -1,4 +1,23 @@
|
|
1 |
-
|
2 |
-
|
3 |
-
|
4 |
-
<
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/* @var $this Gene_Braintree_Block_Express_Checkout */
|
3 |
+
?>
|
4 |
+
<div class="item-row order-title">
|
5 |
+
<h3><?php echo $this->__('There has been an issue whilst processing your order'); ?></h3>
|
6 |
+
<p><?php echo $this->__('The following error has occurred whilst trying to process your order:'); ?></p>
|
7 |
+
</div>
|
8 |
+
<div class="item-row">
|
9 |
+
<?php
|
10 |
+
$messages = $this->getMessagesBlock();
|
11 |
+
/* @var $message Mage_Core_Model_Message_Error */
|
12 |
+
foreach ($messages->getMessages() as $message) {
|
13 |
+
?>
|
14 |
+
<p>
|
15 |
+
<?php echo $message->getText(); ?>
|
16 |
+
</p>
|
17 |
+
<?php
|
18 |
+
}
|
19 |
+
?>
|
20 |
+
</div>
|
21 |
+
<div class="item-row order">
|
22 |
+
<button type="button" onclick="ppExpress.hideModal();" class="button"><?php echo $this->__('Close'); ?></button>
|
23 |
+
</div>
|
app/design/frontend/base/default/template/gene/braintree/express/shipping_details.phtml
CHANGED
@@ -20,7 +20,6 @@
|
|
20 |
<?php if ($this->hasShippingRates()): ?>
|
21 |
<div class="shipping-row item-row">
|
22 |
<strong><?php echo $this->__('Shipping method:'); ?></strong>
|
23 |
-
|
24 |
<?php foreach($this->getShippingRates() as $_rate): ?>
|
25 |
<label class="item-subrow">
|
26 |
<input type="radio" name="shipping_method" value="<?php echo $_rate->getCode(); ?>" onchange="ppExpress.updateShipping('<?php echo $_rate->getCode(); ?>')" />
|
@@ -29,13 +28,18 @@
|
|
29 |
<strong><?php echo Mage::helper('core')->currency($_rate->getPrice(), true, false); ?></strong>
|
30 |
</label>
|
31 |
<?php endforeach; ?>
|
32 |
-
|
|
|
|
|
|
|
|
|
|
|
33 |
</div>
|
34 |
<div class="item-row" id="paypal-express-totals">
|
35 |
<?php echo $this->getChildHtml('totals'); ?>
|
36 |
</div>
|
37 |
|
38 |
-
<button type="submit" class="button"><?php echo $this->__('Place Order'); ?></button>
|
39 |
<?php else: ?>
|
40 |
<p><?php echo $this->__('There are no shipping methods available for your address.'); ?></p>
|
41 |
<p><?php echo $this->__('Please repeat the process, selecting an address that we\'re able to deliver to.'); ?></p>
|
20 |
<?php if ($this->hasShippingRates()): ?>
|
21 |
<div class="shipping-row item-row">
|
22 |
<strong><?php echo $this->__('Shipping method:'); ?></strong>
|
|
|
23 |
<?php foreach($this->getShippingRates() as $_rate): ?>
|
24 |
<label class="item-subrow">
|
25 |
<input type="radio" name="shipping_method" value="<?php echo $_rate->getCode(); ?>" onchange="ppExpress.updateShipping('<?php echo $_rate->getCode(); ?>')" />
|
28 |
<strong><?php echo Mage::helper('core')->currency($_rate->getPrice(), true, false); ?></strong>
|
29 |
</label>
|
30 |
<?php endforeach; ?>
|
31 |
+
</div>
|
32 |
+
<div class="coupon-row item-row">
|
33 |
+
<div id="paypal-express-coupon-error" class="error" style="display: none;"></div>
|
34 |
+
<input type="text" name="coupon" id="paypal-express-coupon" placeholder="<?php echo $this->__('Coupon Code'); ?>" />
|
35 |
+
<button type="button" name="coupon-apply" id="paypal-express-coupon-apply" class="coupon-submit button" onclick="return ppExpress.updateCoupon();"><?php echo $this->__('Apply Coupon'); ?></button>
|
36 |
+
<button type="button" name="coupon-remove" id="paypal-express-coupon-remove" class="coupon-submit button" onclick="return ppExpress.removeCoupon();" style="display: none;"><?php echo $this->__('Remove Coupon'); ?></button>
|
37 |
</div>
|
38 |
<div class="item-row" id="paypal-express-totals">
|
39 |
<?php echo $this->getChildHtml('totals'); ?>
|
40 |
</div>
|
41 |
|
42 |
+
<button type="submit" class="button" id="paypal-express-submit"><?php echo $this->__('Place Order'); ?></button>
|
43 |
<?php else: ?>
|
44 |
<p><?php echo $this->__('There are no shipping methods available for your address.'); ?></p>
|
45 |
<p><?php echo $this->__('Please repeat the process, selecting an address that we\'re able to deliver to.'); ?></p>
|
app/design/frontend/base/default/template/gene/braintree/js/awesomecheckout.phtml
ADDED
@@ -0,0 +1,121 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Intercept various functions for the Awesome Checkout checkout flow
|
4 |
+
* @author Dave Macaulay <dave@gene.co.uk>
|
5 |
+
*/
|
6 |
+
?>
|
7 |
+
<!-- AWESOME CHECKOUT BRAINTREE SUPPORT -->
|
8 |
+
<script type="text/javascript">
|
9 |
+
|
10 |
+
vZeroIntegration.addMethods({
|
11 |
+
|
12 |
+
setLoading: function () {
|
13 |
+
checkout.setLoadWaiting('review');
|
14 |
+
},
|
15 |
+
|
16 |
+
resetLoading: function () {
|
17 |
+
checkout.setLoadWaiting(false);
|
18 |
+
},
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Attach observer events for saving the payment step, alongside the review step
|
22 |
+
*/
|
23 |
+
prepareSubmitObserver: function() {
|
24 |
+
|
25 |
+
// Store a pointer to the vZero integration
|
26 |
+
var vzeroIntegration = this;
|
27 |
+
|
28 |
+
// As the default checkout submits more data on the review step, we need to make sure various elements are disabled
|
29 |
+
var _originalReviewSave = Review.prototype.save;
|
30 |
+
Review.prototype.save = function () {
|
31 |
+
|
32 |
+
if (vzeroIntegration.shouldInterceptSubmit('creditcard')) {
|
33 |
+
|
34 |
+
// Store a pointer to the payment class
|
35 |
+
var paymentThis = this;
|
36 |
+
var paymentArguments = arguments;
|
37 |
+
|
38 |
+
// If everything was a success on the checkout end, let's submit the vZero integration
|
39 |
+
vzeroIntegration.submit('creditcard', function () {
|
40 |
+
return _originalReviewSave.apply(paymentThis, paymentArguments);
|
41 |
+
});
|
42 |
+
|
43 |
+
} else {
|
44 |
+
// If not run the original code
|
45 |
+
return _originalReviewSave.apply(this, arguments);
|
46 |
+
}
|
47 |
+
};
|
48 |
+
|
49 |
+
},
|
50 |
+
|
51 |
+
/**
|
52 |
+
* Attach an event to insert the PayPal button on the review step of the checkout
|
53 |
+
*/
|
54 |
+
preparePaymentMethodSwitchObserver: function () {
|
55 |
+
|
56 |
+
// Store a pointer to the vZero integration
|
57 |
+
var vzeroIntegration = this;
|
58 |
+
|
59 |
+
// Store a pointer to the original review step
|
60 |
+
var _originalReviewInitialize = Review.prototype.init;
|
61 |
+
|
62 |
+
// Intercept the save function
|
63 |
+
Review.prototype.init = function(saveUrl, successUrl, agreementsForm) {
|
64 |
+
|
65 |
+
// Do the original action
|
66 |
+
var reviewResponse = _originalReviewInitialize.apply(this, arguments);
|
67 |
+
|
68 |
+
// Run our magical function
|
69 |
+
vzeroIntegration.updatePayPalButton();
|
70 |
+
|
71 |
+
return reviewResponse;
|
72 |
+
};
|
73 |
+
|
74 |
+
// When the credit card payment methods is loaded init the hosted fields if enabled
|
75 |
+
vZero.prototype.creditCardLoaded = function() {
|
76 |
+
// When the credit card is loaded call the init hosted fields function
|
77 |
+
vzeroIntegration.initHostedFields();
|
78 |
+
vzeroIntegration.initSavedMethods();
|
79 |
+
|
80 |
+
vzeroIntegration.observeAjaxRequests();
|
81 |
+
};
|
82 |
+
vZero.prototype.paypalLoaded = function() {
|
83 |
+
vzeroIntegration.initSavedMethods();
|
84 |
+
|
85 |
+
vzeroIntegration.observeAjaxRequests();
|
86 |
+
};
|
87 |
+
|
88 |
+
},
|
89 |
+
|
90 |
+
/**
|
91 |
+
* Inform the system to retrieve the billing address from the quote
|
92 |
+
*/
|
93 |
+
getBillingAddress: function () {
|
94 |
+
return {
|
95 |
+
billing: 'quote'
|
96 |
+
};
|
97 |
+
}
|
98 |
+
|
99 |
+
});
|
100 |
+
|
101 |
+
/**
|
102 |
+
* Start a new instance of our integration
|
103 |
+
*
|
104 |
+
* @type {vZeroIntegration}
|
105 |
+
*/
|
106 |
+
new vZeroIntegration(
|
107 |
+
(window.vzero || false),
|
108 |
+
(window.vzeroPaypal || false),
|
109 |
+
'<div id="paypal-complete"><div id="paypal-container"></div></div>',
|
110 |
+
'#review-buttons-container input[type="submit"]',
|
111 |
+
false,
|
112 |
+
{
|
113 |
+
ignoreAjax: [
|
114 |
+
'anattadesign_awesomecheckout/onepage/progress',
|
115 |
+
'checkout/onepage/saveOrder'
|
116 |
+
]
|
117 |
+
},
|
118 |
+
true
|
119 |
+
);
|
120 |
+
|
121 |
+
</script>
|
js/gene/braintree/express.js
CHANGED
@@ -144,7 +144,8 @@ var ppExpress = (function() {
|
|
144 |
/**
|
145 |
* Update the grand total display within the modal
|
146 |
*/
|
147 |
-
updateShipping: function(method) {
|
|
|
148 |
new Ajax.Request(config.get('shippingSaveUrl'), {
|
149 |
method: 'POST',
|
150 |
parameters: {
|
@@ -153,14 +154,165 @@ var ppExpress = (function() {
|
|
153 |
},
|
154 |
|
155 |
onSuccess: function (data) {
|
156 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
157 |
},
|
158 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
159 |
onFailure: function () {
|
|
|
160 |
api.hideModal();
|
161 |
alert( typeof Translator === "object" ? Translator.translate("We were unable to complete the request. Please try again.") : "We were unable to complete the request. Please try again." );
|
162 |
}
|
163 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
164 |
}
|
165 |
};
|
166 |
|
@@ -197,6 +349,7 @@ var ppExpress = (function() {
|
|
197 |
onSuccess: function (data) {
|
198 |
api.getModal().classList.remove('loading');
|
199 |
api.getModal().innerHTML = data.responseText;
|
|
|
200 |
ajaxHandler();
|
201 |
},
|
202 |
|
144 |
/**
|
145 |
* Update the grand total display within the modal
|
146 |
*/
|
147 |
+
updateShipping: function (method) {
|
148 |
+
this._setLoading($('paypal-express-submit'));
|
149 |
new Ajax.Request(config.get('shippingSaveUrl'), {
|
150 |
method: 'POST',
|
151 |
parameters: {
|
154 |
},
|
155 |
|
156 |
onSuccess: function (data) {
|
157 |
+
var response = this._getJson(data);
|
158 |
+
this._unsetLoading($('paypal-express-submit'));
|
159 |
+
this._updateTotals(response);
|
160 |
+
}.bind(this),
|
161 |
+
|
162 |
+
onFailure: function () {
|
163 |
+
this._unsetLoading($('paypal-express-submit'));
|
164 |
+
api.hideModal();
|
165 |
+
alert( typeof Translator === "object" ? Translator.translate("We were unable to complete the request. Please try again.") : "We were unable to complete the request. Please try again." );
|
166 |
+
}
|
167 |
+
});
|
168 |
+
},
|
169 |
+
|
170 |
+
/**
|
171 |
+
* Prepare the coupon form by handling users hitting enter
|
172 |
+
*/
|
173 |
+
prepareCoupon: function () {
|
174 |
+
if ($('paypal-express-coupon')) {
|
175 |
+
$('paypal-express-coupon').observe('keypress', function (event) {
|
176 |
+
var key = event.which || event.keyCode;
|
177 |
+
if (key == Event.KEY_RETURN) {
|
178 |
+
Event.stop(event);
|
179 |
+
this.updateCoupon();
|
180 |
+
}
|
181 |
+
}.bind(this));
|
182 |
+
}
|
183 |
+
},
|
184 |
+
|
185 |
+
/**
|
186 |
+
* Allow customers to add coupons into their basket
|
187 |
+
*
|
188 |
+
* @param coupon
|
189 |
+
*/
|
190 |
+
updateCoupon: function (coupon) {
|
191 |
+
$('paypal-express-coupon-error').hide();
|
192 |
+
if (!coupon && $('paypal-express-coupon')) {
|
193 |
+
coupon = $('paypal-express-coupon').value;
|
194 |
+
}
|
195 |
+
|
196 |
+
// Only update if the coupon is set to something
|
197 |
+
if (coupon == '') {
|
198 |
+
return false;
|
199 |
+
}
|
200 |
+
|
201 |
+
this._setLoading($('paypal-express-coupon-apply'));
|
202 |
+
new Ajax.Request(config.get('couponSaveUrl'), {
|
203 |
+
method: 'POST',
|
204 |
+
parameters: {
|
205 |
+
'coupon': coupon
|
206 |
},
|
207 |
|
208 |
+
onSuccess: function (data) {
|
209 |
+
var response = this._getJson(data);
|
210 |
+
this._unsetLoading($('paypal-express-coupon-apply'));
|
211 |
+
this._updateTotals(response);
|
212 |
+
if (response.success == true) {
|
213 |
+
$('paypal-express-coupon-remove').show();
|
214 |
+
$('paypal-express-coupon-apply').hide();
|
215 |
+
} else if (response.message) {
|
216 |
+
$('paypal-express-coupon-error').update(response.message).show();
|
217 |
+
}
|
218 |
+
}.bind(this),
|
219 |
+
|
220 |
onFailure: function () {
|
221 |
+
this._unsetLoading($('paypal-express-coupon-submit'));
|
222 |
api.hideModal();
|
223 |
alert( typeof Translator === "object" ? Translator.translate("We were unable to complete the request. Please try again.") : "We were unable to complete the request. Please try again." );
|
224 |
}
|
225 |
});
|
226 |
+
return false;
|
227 |
+
},
|
228 |
+
|
229 |
+
/**
|
230 |
+
* Allow the user the ability to remove the coupon code from their quote
|
231 |
+
*/
|
232 |
+
removeCoupon: function () {
|
233 |
+
$('paypal-express-coupon-error').hide();
|
234 |
+
this._setLoading($('paypal-express-coupon-remove'));
|
235 |
+
new Ajax.Request(config.get('couponSaveUrl'), {
|
236 |
+
method: 'POST',
|
237 |
+
parameters: {
|
238 |
+
'remove': true
|
239 |
+
},
|
240 |
+
|
241 |
+
onSuccess: function (data) {
|
242 |
+
var response = this._getJson(data);
|
243 |
+
this._unsetLoading($('paypal-express-coupon-remove'));
|
244 |
+
this._updateTotals(response);
|
245 |
+
if (response.success == true) {
|
246 |
+
$('paypal-express-coupon-remove').hide();
|
247 |
+
$('paypal-express-coupon-apply').show();
|
248 |
+
$('paypal-express-coupon').value = '';
|
249 |
+
$('paypal-express-coupon').focus();
|
250 |
+
} else if (response.message) {
|
251 |
+
$('paypal-express-coupon-error').update(response.message).show();
|
252 |
+
}
|
253 |
+
}.bind(this),
|
254 |
+
|
255 |
+
onFailure: function () {
|
256 |
+
this._unsetLoading($('paypal-express-coupon-submit'));
|
257 |
+
api.hideModal();
|
258 |
+
alert( typeof Translator === "object" ? Translator.translate("We were unable to complete the request. Please try again.") : "We were unable to complete the request. Please try again." );
|
259 |
+
}
|
260 |
+
});
|
261 |
+
},
|
262 |
+
|
263 |
+
/**
|
264 |
+
* Update the totals from the response
|
265 |
+
*
|
266 |
+
* @param response
|
267 |
+
* @private
|
268 |
+
*/
|
269 |
+
_updateTotals: function (response) {
|
270 |
+
if (typeof response.totals !== 'undefined') {
|
271 |
+
$('paypal-express-totals').update(response.totals);
|
272 |
+
}
|
273 |
+
},
|
274 |
+
|
275 |
+
/**
|
276 |
+
* Return the JSON from the request
|
277 |
+
*
|
278 |
+
* @param data
|
279 |
+
* @returns {*}
|
280 |
+
* @private
|
281 |
+
*/
|
282 |
+
_getJson: function (data) {
|
283 |
+
if (typeof data.responseJSON !== 'undefined') {
|
284 |
+
return data.responseJSON;
|
285 |
+
} else if (typeof data.responseText === 'string') {
|
286 |
+
return data.responseText.evalJSON();
|
287 |
+
}
|
288 |
+
},
|
289 |
+
|
290 |
+
/**
|
291 |
+
* Set an element to a loading state
|
292 |
+
*
|
293 |
+
* @param element
|
294 |
+
* @private
|
295 |
+
*/
|
296 |
+
_setLoading: function (element) {
|
297 |
+
if (!element) {
|
298 |
+
return false;
|
299 |
+
}
|
300 |
+
element.setAttribute('disabled', 'disabled');
|
301 |
+
element.addClassName('loading');
|
302 |
+
},
|
303 |
+
|
304 |
+
/**
|
305 |
+
* Unset the loading state
|
306 |
+
*
|
307 |
+
* @param element
|
308 |
+
* @private
|
309 |
+
*/
|
310 |
+
_unsetLoading: function (element) {
|
311 |
+
if (!element) {
|
312 |
+
return false;
|
313 |
+
}
|
314 |
+
element.removeAttribute('disabled');
|
315 |
+
element.removeClassName('loading');
|
316 |
}
|
317 |
};
|
318 |
|
349 |
onSuccess: function (data) {
|
350 |
api.getModal().classList.remove('loading');
|
351 |
api.getModal().innerHTML = data.responseText;
|
352 |
+
api.prepareCoupon();
|
353 |
ajaxHandler();
|
354 |
},
|
355 |
|
js/gene/braintree/vzero-0.7-min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
var vZero=Class.create();vZero.prototype={initialize:function(e,t,i,n,a,o,s,r,d){this.code=e,this.clientToken=t,this.threeDSecure=i,this.hostedFields=n,a&&(this.billingName=a),o&&(this.billingPostcode=o),s&&(this.quoteUrl=s),r&&(this.tokenizeUrl=r),d&&(this.vaultToNonceUrl=d),this._hostedFieldsTokenGenerated=!1,this.acceptedCards=!1,this.closeMethod=!1,this._hostedFieldsTimeout=!1,this._updateDataXhr=!1,this._updateDataCallbacks=[],this._updateDataParams={},this._vaultToNonceXhr=!1},init:function(){this.client=new braintree.api.Client({clientToken:this.clientToken})},initHostedFields:function(e){return $$('iframe[name^="braintree-"]').length>0?!1:null===$("braintree-hosted-submit")?!1:(this.integration=e,this._hostedFieldsTokenGenerated=!1,clearTimeout(this._hostedFieldsTimeout),void(this._hostedFieldsTimeout=setTimeout(function(){if(this._hostedIntegration!==!1)try{this._hostedIntegration.teardown(function(){this._hostedIntegration=!1,this.setupHostedFieldsClient()}.bind(this))}catch(e){this.setupHostedFieldsClient()}else this.setupHostedFieldsClient()}.bind(this),50)))},teardownHostedFields:function(e){this._hostedIntegration!==!1?this._hostedIntegration.teardown(function(){this._hostedIntegration=!1,"function"==typeof e&&e()}.bind(this)):"function"==typeof e&&e()},setupHostedFieldsClient:function(){if($$('iframe[name^="braintree-"]').length>0)return!1;this._hostedIntegration=!1;var e={id:this.integration.form,hostedFields:{styles:this.getHostedFieldsStyles(),number:{selector:"#card-number",placeholder:"0000 0000 0000 0000"},expirationMonth:{selector:"#expiration-month",placeholder:"MM"},expirationYear:{selector:"#expiration-year",placeholder:"YY"},onFieldEvent:this.hostedFieldsOnFieldEvent.bind(this)},onReady:function(e){this._hostedIntegration=e,$$("#credit-card-form.loading").length&&$$("#credit-card-form.loading").first().removeClassName("loading")}.bind(this),onPaymentMethodReceived:this.hostedFieldsPaymentMethodReceived.bind(this),onError:this.hostedFieldsError.bind(this)};null!==$("cvv")&&(e.hostedFields.cvv={selector:"#cvv"}),braintree.setup(this.clientToken,"custom",e)},getHostedFieldsStyles:function(){return"function"==typeof this.integration.getHostedFieldsStyles?this.integration.getHostedFieldsStyles():{input:{"font-size":"14pt",color:"#3A3A3A"},":focus":{color:"black"},".valid":{color:"green"},".invalid":{color:"red"}}},hostedFieldsOnFieldEvent:function(e){if("fieldStateChange"===e.type&&e.card){var t={visa:"VI","american-express":"AE","master-card":"MC",discover:"DI",jcb:"JCB",maestro:"ME"};void 0!==typeof t[e.card.type]?this.updateCardType(!1,t[e.card.type]):this.updateCardType(!1,"card")}},vaultToNonce:function(nonce,callback){var parameters=this.getBillingAddress();parameters.nonce=nonce,new Ajax.Request(this.vaultToNonceUrl,{method:"post",parameters:parameters,onSuccess:function(transport){if(transport&&transport.responseText){var response;try{response=eval("("+transport.responseText+")")}catch(e){response={}}response.success&&response.nonce?callback(response.nonce):("function"==typeof this.integration.resetLoading&&this.integration.resetLoading(),response.error?alert(response.error):alert("Something wen't wrong and we're currently unable to take your payment."))}}.bind(this),onFailure:function(){"function"==typeof this.integration.resetLoading&&this.integration.resetLoading(),alert("Something wen't wrong and we're currently unable to take your payment.")}.bind(this)})},hostedFieldsPaymentMethodReceived:function(e){this.threeDSecure?("function"==typeof this.integration.setLoading&&this.integration.setLoading(),this.updateData(function(){this.vaultToNonce(e.nonce,function(e){"function"==typeof this.integration.resetLoading&&this.integration.resetLoading(),this.verify3dSecureNonce(e,{onSuccess:function(e){this.hostedFieldsNonceReceived(e.nonce)}.bind(this),onFailure:function(e,t){alert(t)}.bind(this)})}.bind(this))}.bind(this))):this.hostedFieldsNonceReceived(e.nonce)},hostedFieldsNonceReceived:function(e){$("creditcard-payment-nonce").value=e,$("creditcard-payment-nonce").setAttribute("value",e),"function"==typeof this.integration.resetLoading&&this.integration.resetLoading(),this._hostedFieldsTokenGenerated=!0,"function"==typeof this.integration.afterHostedFieldsNonceReceived&&this.integration.afterHostedFieldsNonceReceived(e)},hostedFieldsError:function(e){return"function"==typeof this.integration.resetLoading&&this.integration.resetLoading(),"undefined"!=typeof e.message&&-1==e.message.indexOf("Cannot place two elements in")&&alert(e.message),this._hostedFieldsTokenGenerated=!1,"function"==typeof this.integration.afterHostedFieldsError&&this.integration.afterHostedFieldsError(e.message),!1},usingSavedCard:function(){return void 0!=$("creditcard-saved-accounts")&&void 0!=$$("#creditcard-saved-accounts input:checked[type=radio]").first()&&"other"!==$$("#creditcard-saved-accounts input:checked[type=radio]").first().value},setThreeDSecure:function(e){this.threeDSecure=e},setAmount:function(e){this.amount=parseFloat(e)},setBillingName:function(e){this.billingName=e},getBillingName:function(){return"object"==typeof this.billingName?this.combineElementsValues(this.billingName):this.billingName},setBillingPostcode:function(e){this.billingPostcode=e},getBillingPostcode:function(){return"object"==typeof this.billingPostcode?this.combineElementsValues(this.billingPostcode):this.billingPostcode},setAcceptedCards:function(e){this.acceptedCards=e},getBillingAddress:function(){if("function"==typeof this.integration.getBillingAddress)return this.integration.getBillingAddress();var e={};return null!==$("co-billing-form")?e="FORM"==$("co-billing-form").tagName?$("co-billing-form").serialize(!0):this.extractBilling($("co-billing-form").up("form").serialize(!0)):null!==$("billing:firstname")&&(e=this.extractBilling($("billing:firstname").up("form").serialize(!0))),e?e:void 0},extractBilling:function(e){var t={};return $H(e).each(function(e){0==e.key.indexOf("billing")&&-1==e.key.indexOf("password")&&(t[e.key]=e.value)}),t},getAcceptedCards:function(){return this.acceptedCards},combineElementsValues:function(e,t){t||(t=" ");var i=[];return e.each(function(e,t){void 0!==$(e)&&(i[t]=$(e).value)}),i.join(t)},updateCardType:function(e,t){if(t||(t=this.getCardType(e)),void 0!=$("gene_braintree_creditcard_cc_type")&&("card"==t?$("gene_braintree_creditcard_cc_type").value="":$("gene_braintree_creditcard_cc_type").value=t),void 0!=$("card-type-image")){var i=$("card-type-image").src.substring(0,$("card-type-image").src.lastIndexOf("/"));$("card-type-image").setAttribute("src",i+"/"+t+".png")}},observeCardType:function(){void 0!==$$('[data-genebraintree-name="number"]').first()&&(Element.observe($$('[data-genebraintree-name="number"]').first(),"keyup",function(){vzero.updateCardType(this.value)}),$$('[data-genebraintree-name="number"]').first().oninput=function(){var e=this.value.split(" ").join("");e.length>0&&(e=e.match(new RegExp(".{1,4}","g")).join(" ")),this.value=e})},observeAjaxRequests:function(e,t){Ajax.Responders.register({onComplete:function(i){return this.handleAjaxRequest(i.url,e,t)}.bind(this)}),window.jQuery&&jQuery(document).ajaxComplete(function(i,n,a){return this.handleAjaxRequest(a.url,e,t)}.bind(this))},handleAjaxRequest:function(e,t,i){if("undefined"!=typeof i&&i instanceof Array&&i.length>0){var n=!1;if(i.each(function(t){e&&-1!=e.indexOf(t)&&(n=!0)}),n===!0)return!1}e&&-1==e.indexOf("/braintree/")&&(t?t(e):this.updateData())},updateData:function(e,t){this._updateDataCallbacks.push(e),this._updateDataParams=t,this._updateDataXhr!==!1&&this._updateDataXhr.transport.abort(),this._updateDataXhr=new Ajax.Request(this.quoteUrl,{method:"post",parameters:this._updateDataParams,onSuccess:function(e){if(e&&(e.responseJSON||e.responseText)){var t;e.responseJSON&&"object"==typeof e.responseJSON?t=e.responseJSON:e.responseText&&(t=JSON.decode(e.responseText)),void 0!=t.billingName&&(this.billingName=t.billingName),void 0!=t.billingPostcode&&(this.billingPostcode=t.billingPostcode),void 0!=t.grandTotal&&(this.amount=t.grandTotal),void 0!=t.threeDSecure&&this.setThreeDSecure(t.threeDSecure),"undefined"!=typeof vzeroPaypal&&void 0!=t.grandTotal&&void 0!=t.currencyCode&&vzeroPaypal.setPricing(t.grandTotal,t.currencyCode),this._updateDataParams={},this._updateDataXhr=!1,this._updateDataCallbacks.length&&(this._updateDataCallbacks.each(function(e){e(t)}.bind(this)),this._updateDataCallbacks=[])}}.bind(this),onFailure:function(){this._updateDataParams={},this._updateDataXhr=!1,this._updateDataCallbacks=[]}.bind(this)})},close3dSecureMethod:function(e){this.closeMethod=e},tokenize3dSavedCards:function(callback){if(this.threeDSecure)if(void 0!==$$("[data-token]").first()){var tokens=[];$$("[data-token]").each(function(e,t){tokens[t]=e.getAttribute("data-token")}),new Ajax.Request(this.tokenizeUrl,{method:"post",onSuccess:function(transport){if(transport&&transport.responseText){try{response=eval("("+transport.responseText+")")}catch(e){response={}}response.success&&$H(response.tokens).each(function(e){void 0!=$$('[data-token="'+e.key+'"]').first()&&$$('[data-token="'+e.key+'"]').first().setAttribute("data-threedsecure-nonce",e.value)}),callback&&callback(response)}}.bind(this),parameters:{tokens:Object.toJSON(tokens)}})}else callback();else callback()},onUserClose3ds:function(){this._hostedFieldsTokenGenerated=!1,this.closeMethod?this.closeMethod():checkout.setLoadWaiting(!1)},verify3dSecureNonce:function(e,t){var i={amount:this.amount,creditCard:e,onUserClose:this.onUserClose3ds.bind(this)};this.client.verify3DS(i,function(e,i){e?t.onFailure&&t.onFailure(i,e.message):t.onSuccess&&t.onSuccess(i)})},verify3dSecure:function(e){var t={amount:this.amount,creditCard:{number:$$('[data-genebraintree-name="number"]').first().value,expirationMonth:$$('[data-genebraintree-name="expiration_month"]').first().value,expirationYear:$$('[data-genebraintree-name="expiration_year"]').first().value,cardholderName:this.getBillingName()},onUserClose:this.onUserClose3ds.bind(this)};void 0!=$$('[data-genebraintree-name="cvv"]').first()&&(t.creditCard.cvv=$$('[data-genebraintree-name="cvv"]').first().value),""!=this.getBillingPostcode()&&(t.creditCard.billingAddress={postalCode:this.getBillingPostcode()}),this.client.verify3DS(t,function(t,i){t?(alert(t.message),e.onFailure?e.onFailure():checkout.setLoadWaiting(!1)):($("creditcard-payment-nonce").value=i.nonce,$("creditcard-payment-nonce").setAttribute("value",i.nonce),e.onSuccess&&e.onSuccess())})},verify3dSecureVault:function(e){var t=$$("#creditcard-saved-accounts input:checked[type=radio]").first().getAttribute("data-threedsecure-nonce");t?this.client.verify3DS({amount:this.amount,creditCard:t},function(t,i){t?(alert(t.message),e.onFailure?e.onFailure():checkout.setLoadWaiting(!1)):($("creditcard-payment-nonce").removeAttribute("disabled"),$("creditcard-payment-nonce").value=i.nonce,$("creditcard-payment-nonce").setAttribute("value",i.nonce),e.onSuccess&&e.onSuccess())}):(alert("No payment nonce present."),e.onFailure?e.onFailure():checkout.setLoadWaiting(!1))},processCard:function(e){var t={number:$$('[data-genebraintree-name="number"]').first().value,cardholderName:this.getBillingName(),expirationMonth:$$('[data-genebraintree-name="expiration_month"]').first().value,expirationYear:$$('[data-genebraintree-name="expiration_year"]').first().value};void 0!=$$('[data-genebraintree-name="cvv"]').first()&&(t.cvv=$$('[data-genebraintree-name="cvv"]').first().value),""!=this.getBillingPostcode()&&(t.billingAddress={postalCode:this.getBillingPostcode()}),this.client.tokenizeCard(t,function(t,i){if(t){for(var n=0;n<t.length;n++)alert(t[n].code+" "+t[n].message);e.onFailure?e.onFailure():checkout.setLoadWaiting(!1)}else $("creditcard-payment-nonce").value=i,$("creditcard-payment-nonce").setAttribute("value",i),e.onSuccess&&e.onSuccess()})},shouldInterceptCreditCard:function(){return!0},shouldInterceptPayPal:function(){return!0},getCardType:function(e){if(e){if(null!=e.match(/^4/))return"VI";if(null!=e.match(/^(34|37)/))return"AE";if(null!=e.match(/^5[1-5]/))return"MC";if(null!=e.match(/^6011/))return"DI";if(null!=e.match(/^(?:2131|1800|35)/))return"JCB";if(null!=e.match(/^(5018|5020|5038|6304|67[0-9]{2})/))return"ME"}return"card"},process:function(e){e=e||{},this._hostedFieldsTokenGenerated?e.onSuccess&&e.onSuccess():this.usingSavedCard()&&$$("#creditcard-saved-accounts input:checked[type=radio]").first().hasAttribute("data-threedsecure-nonce")?this.verify3dSecureVault(e):this.usingSavedCard()?e.onSuccess&&e.onSuccess():1==this.threeDSecure?this.verify3dSecure(e):this.processCard(e)},creditCardLoaded:function(){return!1},paypalLoaded:function(){return!1}};var vZeroPayPalButton=Class.create();vZeroPayPalButton.prototype={initialize:function(e,t,i,n,a){this.clientToken=e,this.storeFrontName=t,this.singleUse=i,this.locale=n,this.futureSingleUse=a,this._paypalOptions={},this._paypalIntegration=!1,this._paypalButton=!1,this._rebuildTimer=!1,this._rebuildCount=0},setPricing:function(e,t){this.amount=parseFloat(e),this.currency=t,null==$("paypal-payment-nonce")||$("paypal-payment-nonce").value||this.rebuildButton()},rebuildButton:function(){if(clearTimeout(this._rebuildTimer),this._paypalIntegration!==!1)try{this._paypalIntegration.teardown(function(){this._paypalIntegration=!1,this.addPayPalButton(this._paypalOptions)}.bind(this))}catch(e){if("Cannot teardown integration more than once"==e.message)this._paypalIntegration=!1,this.addPayPalButton(this._paypalOptions);else{if(this._rebuildCount>=10)return!1;this._rebuildTimer=setTimeout(function(){++this._rebuildCount,this.rebuildButton()}.bind(this),200)}}},addPayPalButton:function(e,t){if(null===$("paypal-container")||null===$("braintree-paypal-button"))return!1;var i=$("braintree-paypal-button").innerHTML;if($("paypal-container").update(""),$("paypal-container").insert(i),!$("paypal-container").select(">button").length)return!1;this._paypalButton=$("paypal-container").select(">button").first(),this._paypalButton.addClassName("braintree-paypal-loading"),this._paypalButton.setAttribute("disabled","disabled"),this._paypalOptions=e,this._paypalIntegration=!1;var n={paymentMethodNonceInputField:"paypal-payment-nonce",displayName:this.storeFrontName,onPaymentMethodReceived:function(t){"function"==typeof e.onSuccess?e.onSuccess(t):(payment.switchMethod("gene_braintree_paypal"),$("paypal-payment-nonce").removeAttribute("disabled"),$("paypal-complete").remove(),window.review&&review.save())},onUnsupported:function(){alert("You need to link your PayPal account with your Braintree account in your Braintree control panel to utilise the PayPal functionality of this extension.")},onReady:function(i){this._paypalIntegration=i,this._attachPayPalButtonEvent(t),"function"==typeof e.onReady&&e.onReady(i)}.bind(this),paypal:{headless:!0}};this.locale&&(n.locale=this.locale),1==this.singleUse?(n.singleUse=!0,n.amount=this.amount,n.currency=this.currency):1==this.futureSingleUse?n.singleUse=!0:n.singleUse=!1,braintree.setup(this.clientToken,"paypal",n)},_attachPayPalButtonEvent:function(e){this._paypalIntegration&&this._paypalButton&&(this._paypalButton.removeClassName("braintree-paypal-loading"),this._paypalButton.removeAttribute("disabled"),Event.stopObserving(this._paypalButton,"click"),Event.observe(this._paypalButton,"click",function(t){Event.stop(t),"object"==typeof e&&"function"==typeof e.validateAll?e.validateAll()&&this._paypalIntegration.paypal.initAuthFlow():this._paypalIntegration.paypal.initAuthFlow()}.bind(this)))},closePayPalWindow:function(e){}};var vZeroIntegration=Class.create();vZeroIntegration.prototype={initialize:function(e,t,i,n,a,o,s){return vZeroIntegration.prototype.loaded?(console.error("Your checkout is including the Braintree resources multiple times, please resolve this."),!1):(vZeroIntegration.prototype.loaded=!0,this.vzero=e||!1,this.vzeroPaypal=t||!1,this.vzero===!1&&this.vzeroPaypal===!1?(console.warn("The vzero and vzeroPaypal objects are not initiated."),!1):(this.paypalMarkUp=i||!1,this.paypalButtonClass=n||!1,this.isOnepage=a||!1,this.config=o||{},this._methodSwitchTimeout=!1,this._hostedFieldsInit=!1,document.observe("dom:loaded",function(){this.prepareSubmitObserver(),this.preparePaymentMethodSwitchObserver()}.bind(this)),this.hostedFieldsGenerated=!1,this.vzero.close3dSecureMethod(function(){this.vzero._hostedFieldsValidationRunning=!1,this.vzero.tokenize3dSavedCards(function(){this.threeDTokenizationComplete()}.bind(this))}.bind(this)),this.isOnepage&&(this.vzero.observeCardType(),this.observeAjaxRequests(),document.observe("dom:loaded",function(){this.initSavedPayPal(),this.initDefaultMethod(),null!==$("braintree-hosted-submit")&&this.initHostedFields()}.bind(this))),void document.observe("dom:loaded",function(){this.initSavedMethods(),null!==$("braintree-hosted-submit")&&this.initHostedFields()}.bind(this))))},initSavedMethods:function(){$$('#creditcard-saved-accounts input[type="radio"], #paypal-saved-accounts input[type="radio"]').each(function(e){var t="",i="";void 0!==e.up("#creditcard-saved-accounts")?(t="#creditcard-saved-accounts",i="#credit-card-form"):void 0!==e.up("#paypal-saved-accounts")&&(t="#paypal-saved-accounts",i=".paypal-info"),$(e).stopObserving("change").observe("change",function(e){return this.showHideOtherMethod(t,i)}.bind(this))}.bind(this))},showHideOtherMethod:function(e,t){void 0!==$$(e+" input:checked[type=radio]").first()&&"other"==$$(e+" input:checked[type=radio]").first().value?void 0!==$$(t).first()&&($$(t).first().show(),$$(t+" input, "+t+" select").each(function(e){e.removeAttribute("disabled")})):void 0!==$$(e+" input:checked[type=radio]").first()&&void 0!==$$(t).first()&&($$(t).first().hide(),$$(t+" input, "+t+" select").each(function(e){e.setAttribute("disabled","disabled")}))},checkSavedOther:function(){var e="",t="";"gene_braintree_creditcard"==this.getPaymentMethod()?(e="#creditcard-saved-accounts",t="#credit-card-form"):"gene_braintree_paypal"==this.getPaymentMethod()&&(e="#paypal-saved-accounts",t=".paypal-info"),void 0!==$$(e).first()&&this.showHideOtherMethod(e,t)},initHostedFields:function(){this.vzero.hostedFields&&null!==$("braintree-hosted-submit")&&(void 0!==$("braintree-hosted-submit").up("form")?(this._hostedFieldsInit=!0,this.form=$("braintree-hosted-submit").up("form"),this.vzero.initHostedFields(this)):console.error("Hosted Fields cannot be initialized as we're unable to locate the parent form."))},afterHostedFieldsNonceReceived:function(e){return this.resetLoading(),this.vzero._hostedFieldsTokenGenerated=!0,this.hostedFieldsGenerated=!0,this.isOnepage?this.submitCheckout():this.submitPayment()},afterHostedFieldsError:function(e){return this.vzero._hostedFieldsTokenGenerated=!1,this.hostedFieldsGenerated=!1,!1},initDefaultMethod:function(){this.shouldAddPayPalButton(!1)&&(this.setLoading(),this.vzero.updateData(function(){this.resetLoading(),this.updatePayPalButton("add")}.bind(this)))},observeAjaxRequests:function(){this.vzero.observeAjaxRequests(function(){this.vzero.updateData(function(){this.isOnepage&&(this.initSavedPayPal(),this.rebuildPayPalButton(),this.checkSavedOther(),this.vzero.hostedFields&&this.initHostedFields()),this.initSavedMethods()}.bind(this))}.bind(this),"undefined"!=typeof this.config.ignoreAjax?this.config.ignoreAjax:!1)},rebuildPayPalButton:function(){null==$("paypal-container")&&this.updatePayPalButton()},initSavedPayPal:function(){void 0!==$$("#paypal-saved-accounts input[type=radio]").first()&&$("paypal-saved-accounts").on("change","input[type=radio]",function(e){this.updatePayPalButton(!1,"gene_braintree_paypal")}.bind(this))},prepareSubmitObserver:function(){return!1},beforeSubmit:function(e){return this._beforeSubmit(e)},_beforeSubmit:function(e){if(this.hostedFieldsGenerated===!1&&this.vzero.hostedFields&&(void 0===$$("#creditcard-saved-accounts input:checked[type=radio]").first()||void 0!==$$("#creditcard-saved-accounts input:checked[type=radio]").first()&&"other"==$$("#creditcard-saved-accounts input:checked[type=radio]").first().value)){var t=$("braintree-hosted-submit").down("button");t.removeAttribute("disabled"),t.click()}else e()},afterSubmit:function(){return!1},submit:function(e,t,i,n){this.shouldInterceptSubmit(e)&&(this.validateAll()?(this.setLoading(),this.beforeSubmit(function(){void 0!=$$('[data-genebraintree-name="number"]').first()&&this.vzero.updateCardType($$('[data-genebraintree-name="number"]').first().value),this.vzero.updateData(function(){this.updateBilling(),this.vzero.process({onSuccess:function(){if(this.enableDeviceData(),this.disableCreditCardForm(),this.resetLoading(),this.afterSubmit(),this.enableDisableNonce(),this.vzero._hostedFieldsTokenGenerated=!1,this.hostedFieldsGenerated=!1,"function"==typeof t)var e=t();return this.setLoading(),this.enableCreditCardForm(),e}.bind(this),onFailure:function(){return this.vzero._hostedFieldsTokenGenerated=!1,this.hostedFieldsGenerated=!1,this.resetLoading(),this.afterSubmit(),"function"==typeof i?i():void 0}.bind(this)})}.bind(this),this.getUpdateDataParams())}.bind(this))):(this.vzero._hostedFieldsTokenGenerated=!1,this.hostedFieldsGenerated=!1,this.resetLoading(),"function"==typeof n&&n()))},submitCheckout:function(){window.review&&review.save()},submitPayment:function(){payment.save&&payment.save()},enableDisableNonce:function(){"gene_braintree_creditcard"==this.getPaymentMethod()?(null!==$("creditcard-payment-nonce")&&$("creditcard-payment-nonce").removeAttribute("disabled"),null!==$("paypal-payment-nonce")&&$("paypal-payment-nonce").setAttribute("disabled","disabled")):"gene_braintree_paypal"==this.getPaymentMethod()&&(null!==$("creditcard-payment-nonce")&&$("creditcard-payment-nonce").setAttribute("disabled","disabled"),null!==$("paypal-payment-nonce")&&$("paypal-payment-nonce").removeAttribute("disabled"))},preparePaymentMethodSwitchObserver:function(){return this.defaultPaymentMethodSwitch()},defaultPaymentMethodSwitch:function(){var e=this,t=Payment.prototype.switchMethod;Payment.prototype.switchMethod=function(i){return e.paymentMethodSwitch(i),t.apply(this,arguments)}},paymentMethodSwitch:function(e){clearTimeout(this._methodSwitchTimeout),this._methodSwitchTimeout=setTimeout(function(){this.shouldAddPayPalButton(e)?this.updatePayPalButton("add",e):this.updatePayPalButton("remove",e),"gene_braintree_creditcard"==(e?e:this.getPaymentMethod())&&this.initHostedFields(),this.checkSavedOther()}.bind(this),50)},completePayPal:function(e){return this.enableDisableNonce(),this.enableDeviceData(),e.nonce&&null!==$("paypal-payment-nonce")?($("paypal-payment-nonce").value=e.nonce,$("paypal-payment-nonce").setAttribute("value",e.nonce)):console.warn("Unable to update PayPal nonce, please verify that the nonce input field has the ID: paypal-payment-nonce"),this.afterPayPalComplete(),!1},afterPayPalComplete:function(){return this.resetLoading(),this.submitCheckout()},updatePayPalButton:function(e,t){if(this.paypalMarkUp===!1)return!1;if("refresh"==e)return this.updatePayPalButton("remove"),this.updatePayPalButton("add"),!0;if(this.shouldAddPayPalButton(t)&&"remove"!=e||"add"==e)if(void 0!==$$(this.paypalButtonClass).first()){if(void 0!==$$("#paypal-complete").first()&&$$("#paypal-complete").first().visible())return!0;$$(this.paypalButtonClass).first().hide(),$$(this.paypalButtonClass).first().insert({after:this.paypalMarkUp});var i={onSuccess:this.completePayPal.bind(this),onReady:this.paypalOnReady.bind(this)};this.vzeroPaypal.addPayPalButton(i,this)}else console.warn("We're unable to find the element "+this.paypalButtonClass+". Please check your integration.");else void 0!==$$(this.paypalButtonClass).first()&&$$(this.paypalButtonClass).first().show(),void 0!==$$("#paypal-complete").first()&&$("paypal-complete").remove()},paypalOnReady:function(e){return!0},setLoading:function(){checkout.setLoadWaiting("payment")},resetLoading:function(){checkout.setLoadWaiting(!1)},enableDeviceData:function(){null!==$("device_data")&&$("device_data").removeAttribute("disabled")},disableCreditCardForm:function(){$$("#credit-card-form input, #credit-card-form select").each(function(e){"creditcard-payment-nonce"!=e.id&&"gene_braintree_creditcard_store_in_vault"!=e.id&&e.setAttribute("disabled","disabled")})},enableCreditCardForm:function(){$$("#credit-card-form input, #credit-card-form select").each(function(e){e.removeAttribute("disabled")})},updateBilling:function(){(null!==$("billing-address-select")&&""==$("billing-address-select").value||null===$("billing-address-select"))&&(null!==$("billing:firstname")&&null!==$("billing:lastname")&&this.vzero.setBillingName($("billing:firstname").value+" "+$("billing:lastname").value),null!==$("billing:postcode")&&this.vzero.setBillingPostcode($("billing:postcode").value))},getUpdateDataParams:function(){var e={};return null!==$("billing-address-select")&&""!=$("billing-address-select").value&&(e.addressId=$("billing-address-select").value),e},getPaymentMethod:function(){return payment.currentMethod},shouldInterceptSubmit:function(e){switch(e){case"creditcard":return"gene_braintree_creditcard"==this.getPaymentMethod()&&this.vzero.shouldInterceptCreditCard();break;case"paypal":return"gene_braintree_paypal"==this.getPaymentMethod()&&this.vzero.shouldInterceptCreditCard()}return!1},shouldAddPayPalButton:function(e){return"gene_braintree_paypal"==(e?e:this.getPaymentMethod())&&null===$("paypal-saved-accounts")||"gene_braintree_paypal"==(e?e:this.getPaymentMethod())&&void 0!==$$("#paypal-saved-accounts input:checked[type=radio]").first()&&"other"==$$("#paypal-saved-accounts input:checked[type=radio]").first().value},threeDTokenizationComplete:function(){this.resetLoading()},validateAll:function(){return!0}},function(){for(var e,t=function(){},i=["assert","clear","count","debug","dir","dirxml","error","exception","group","groupCollapsed","groupEnd","info","log","markTimeline","profile","profileEnd","table","time","timeEnd","timeStamp","trace","warn"],n=i.length,a=window.console=window.console||{};n--;)e=i[n],a[e]||(a[e]=t)}();
|
1 |
+
var vZero=Class.create();vZero.prototype={initialize:function(e,t,i,n,a,o,s,r,d){this.code=e,this.clientToken=t,this.threeDSecure=i,this.hostedFields=n,a&&(this.billingName=a),o&&(this.billingPostcode=o),s&&(this.quoteUrl=s),r&&(this.tokenizeUrl=r),d&&(this.vaultToNonceUrl=d),this._hostedFieldsTokenGenerated=!1,this.acceptedCards=!1,this.closeMethod=!1,this._hostedFieldsTimeout=!1,this._updateDataXhr=!1,this._updateDataCallbacks=[],this._updateDataParams={},this._vaultToNonceXhr=!1},init:function(){this.client=new braintree.api.Client({clientToken:this.clientToken})},initHostedFields:function(e){return $$('iframe[name^="braintree-"]').length>0?!1:null===$("braintree-hosted-submit")?!1:(this.integration=e,this._hostedFieldsTokenGenerated=!1,clearTimeout(this._hostedFieldsTimeout),void(this._hostedFieldsTimeout=setTimeout(function(){if(this._hostedIntegration!==!1)try{this._hostedIntegration.teardown(function(){this._hostedIntegration=!1,this.setupHostedFieldsClient()}.bind(this))}catch(e){this.setupHostedFieldsClient()}else this.setupHostedFieldsClient()}.bind(this),50)))},teardownHostedFields:function(e){this._hostedIntegration!==!1?this._hostedIntegration.teardown(function(){this._hostedIntegration=!1,"function"==typeof e&&e()}.bind(this)):"function"==typeof e&&e()},setupHostedFieldsClient:function(){if($$('iframe[name^="braintree-"]').length>0)return!1;this._hostedIntegration=!1;var e={id:this.integration.form,hostedFields:{styles:this.getHostedFieldsStyles(),number:{selector:"#card-number",placeholder:"0000 0000 0000 0000"},expirationMonth:{selector:"#expiration-month",placeholder:"MM"},expirationYear:{selector:"#expiration-year",placeholder:"YY"},onFieldEvent:this.hostedFieldsOnFieldEvent.bind(this)},onReady:function(e){this._hostedIntegration=e,$$("#credit-card-form.loading").length&&$$("#credit-card-form.loading").first().removeClassName("loading")}.bind(this),onPaymentMethodReceived:this.hostedFieldsPaymentMethodReceived.bind(this),onError:this.hostedFieldsError.bind(this)};null!==$("cvv")&&(e.hostedFields.cvv={selector:"#cvv"}),braintree.setup(this.clientToken,"custom",e)},getHostedFieldsStyles:function(){return"function"==typeof this.integration.getHostedFieldsStyles?this.integration.getHostedFieldsStyles():{input:{"font-size":"14pt",color:"#3A3A3A"},":focus":{color:"black"},".valid":{color:"green"},".invalid":{color:"red"}}},hostedFieldsOnFieldEvent:function(e){if("fieldStateChange"===e.type&&e.card){var t={visa:"VI","american-express":"AE","master-card":"MC",discover:"DI",jcb:"JCB",maestro:"ME"};void 0!==typeof t[e.card.type]?this.updateCardType(!1,t[e.card.type]):this.updateCardType(!1,"card")}},vaultToNonce:function(nonce,callback){var parameters=this.getBillingAddress();parameters.nonce=nonce,new Ajax.Request(this.vaultToNonceUrl,{method:"post",parameters:parameters,onSuccess:function(transport){if(transport&&transport.responseText){var response;try{response=eval("("+transport.responseText+")")}catch(e){response={}}response.success&&response.nonce?callback(response.nonce):("function"==typeof this.integration.resetLoading&&this.integration.resetLoading(),response.error?alert(response.error):alert("Something wen't wrong and we're currently unable to take your payment."))}}.bind(this),onFailure:function(){"function"==typeof this.integration.resetLoading&&this.integration.resetLoading(),alert("Something wen't wrong and we're currently unable to take your payment.")}.bind(this)})},hostedFieldsPaymentMethodReceived:function(e){this.threeDSecure?("function"==typeof this.integration.setLoading&&this.integration.setLoading(),this.updateData(function(){this.vaultToNonce(e.nonce,function(e){"function"==typeof this.integration.resetLoading&&this.integration.resetLoading(),this.verify3dSecureNonce(e,{onSuccess:function(e){this.hostedFieldsNonceReceived(e.nonce)}.bind(this),onFailure:function(e,t){alert(t)}.bind(this)})}.bind(this))}.bind(this))):this.hostedFieldsNonceReceived(e.nonce)},hostedFieldsNonceReceived:function(e){$("creditcard-payment-nonce").value=e,$("creditcard-payment-nonce").setAttribute("value",e),"function"==typeof this.integration.resetLoading&&this.integration.resetLoading(),this._hostedFieldsTokenGenerated=!0,"function"==typeof this.integration.afterHostedFieldsNonceReceived&&this.integration.afterHostedFieldsNonceReceived(e)},hostedFieldsError:function(e){return"function"==typeof this.integration.resetLoading&&this.integration.resetLoading(),"undefined"!=typeof e.message&&-1==e.message.indexOf("Cannot place two elements in")&&-1==e.message.indexOf("Unable to find element with selector")&&alert(e.message),this._hostedFieldsTokenGenerated=!1,"function"==typeof this.integration.afterHostedFieldsError&&this.integration.afterHostedFieldsError(e.message),!1},usingSavedCard:function(){return void 0!=$("creditcard-saved-accounts")&&void 0!=$$("#creditcard-saved-accounts input:checked[type=radio]").first()&&"other"!==$$("#creditcard-saved-accounts input:checked[type=radio]").first().value},setThreeDSecure:function(e){this.threeDSecure=e},setAmount:function(e){this.amount=parseFloat(e)},setBillingName:function(e){this.billingName=e},getBillingName:function(){return"object"==typeof this.billingName?this.combineElementsValues(this.billingName):this.billingName},setBillingPostcode:function(e){this.billingPostcode=e},getBillingPostcode:function(){return"object"==typeof this.billingPostcode?this.combineElementsValues(this.billingPostcode):this.billingPostcode},setAcceptedCards:function(e){this.acceptedCards=e},getBillingAddress:function(){if("function"==typeof this.integration.getBillingAddress)return this.integration.getBillingAddress();var e={};return null!==$("co-billing-form")?e="FORM"==$("co-billing-form").tagName?$("co-billing-form").serialize(!0):this.extractBilling($("co-billing-form").up("form").serialize(!0)):null!==$("billing:firstname")&&(e=this.extractBilling($("billing:firstname").up("form").serialize(!0))),e?e:void 0},extractBilling:function(e){var t={};return $H(e).each(function(e){0==e.key.indexOf("billing")&&-1==e.key.indexOf("password")&&(t[e.key]=e.value)}),t},getAcceptedCards:function(){return this.acceptedCards},combineElementsValues:function(e,t){t||(t=" ");var i=[];return e.each(function(e,t){void 0!==$(e)&&(i[t]=$(e).value)}),i.join(t)},updateCardType:function(e,t){if(t||(t=this.getCardType(e)),void 0!=$("gene_braintree_creditcard_cc_type")&&("card"==t?$("gene_braintree_creditcard_cc_type").value="":$("gene_braintree_creditcard_cc_type").value=t),void 0!=$("card-type-image")){var i=$("card-type-image").src.substring(0,$("card-type-image").src.lastIndexOf("/"));$("card-type-image").setAttribute("src",i+"/"+t+".png")}},observeCardType:function(){void 0!==$$('[data-genebraintree-name="number"]').first()&&(Element.observe($$('[data-genebraintree-name="number"]').first(),"keyup",function(){vzero.updateCardType(this.value)}),$$('[data-genebraintree-name="number"]').first().oninput=function(){var e=this.value.split(" ").join("");e.length>0&&(e=e.match(new RegExp(".{1,4}","g")).join(" ")),this.value=e})},observeAjaxRequests:function(e,t){Ajax.Responders.register({onComplete:function(i){return this.handleAjaxRequest(i.url,e,t)}.bind(this)}),window.jQuery&&jQuery(document).ajaxComplete(function(i,n,a){return this.handleAjaxRequest(a.url,e,t)}.bind(this))},handleAjaxRequest:function(e,t,i){if("undefined"!=typeof i&&i instanceof Array&&i.length>0){var n=!1;if(i.each(function(t){e&&-1!=e.indexOf(t)&&(n=!0)}),n===!0)return!1}e&&-1==e.indexOf("/braintree/")&&(t?t(e):this.updateData())},updateData:function(e,t){this._updateDataCallbacks.push(e),this._updateDataParams=t,this._updateDataXhr!==!1&&this._updateDataXhr.transport.abort(),this._updateDataXhr=new Ajax.Request(this.quoteUrl,{method:"post",parameters:this._updateDataParams,onSuccess:function(e){if(e&&(e.responseJSON||e.responseText)){var t;e.responseJSON&&"object"==typeof e.responseJSON?t=e.responseJSON:e.responseText&&(t=JSON.decode(e.responseText)),void 0!=t.billingName&&(this.billingName=t.billingName),void 0!=t.billingPostcode&&(this.billingPostcode=t.billingPostcode),void 0!=t.grandTotal&&(this.amount=t.grandTotal),void 0!=t.threeDSecure&&this.setThreeDSecure(t.threeDSecure),"undefined"!=typeof vzeroPaypal&&void 0!=t.grandTotal&&void 0!=t.currencyCode&&vzeroPaypal.setPricing(t.grandTotal,t.currencyCode),this._updateDataParams={},this._updateDataXhr=!1,this._updateDataCallbacks.length&&(this._updateDataCallbacks.each(function(e){e(t)}.bind(this)),this._updateDataCallbacks=[])}}.bind(this),onFailure:function(){this._updateDataParams={},this._updateDataXhr=!1,this._updateDataCallbacks=[]}.bind(this)})},close3dSecureMethod:function(e){this.closeMethod=e},tokenize3dSavedCards:function(callback){if(this.threeDSecure)if(void 0!==$$("[data-token]").first()){var tokens=[];$$("[data-token]").each(function(e,t){tokens[t]=e.getAttribute("data-token")}),new Ajax.Request(this.tokenizeUrl,{method:"post",onSuccess:function(transport){if(transport&&transport.responseText){try{response=eval("("+transport.responseText+")")}catch(e){response={}}response.success&&$H(response.tokens).each(function(e){void 0!=$$('[data-token="'+e.key+'"]').first()&&$$('[data-token="'+e.key+'"]').first().setAttribute("data-threedsecure-nonce",e.value)}),callback&&callback(response)}}.bind(this),parameters:{tokens:Object.toJSON(tokens)}})}else callback();else callback()},onUserClose3ds:function(){this._hostedFieldsTokenGenerated=!1,this.closeMethod?this.closeMethod():checkout.setLoadWaiting(!1)},verify3dSecureNonce:function(e,t){var i={amount:this.amount,creditCard:e,onUserClose:this.onUserClose3ds.bind(this)};this.client.verify3DS(i,function(e,i){e?t.onFailure&&t.onFailure(i,e.message):t.onSuccess&&t.onSuccess(i)})},verify3dSecure:function(e){var t={amount:this.amount,creditCard:{number:$$('[data-genebraintree-name="number"]').first().value,expirationMonth:$$('[data-genebraintree-name="expiration_month"]').first().value,expirationYear:$$('[data-genebraintree-name="expiration_year"]').first().value,cardholderName:this.getBillingName()},onUserClose:this.onUserClose3ds.bind(this)};void 0!=$$('[data-genebraintree-name="cvv"]').first()&&(t.creditCard.cvv=$$('[data-genebraintree-name="cvv"]').first().value),""!=this.getBillingPostcode()&&(t.creditCard.billingAddress={postalCode:this.getBillingPostcode()}),this.client.verify3DS(t,function(t,i){t?(alert(t.message),e.onFailure?e.onFailure():checkout.setLoadWaiting(!1)):($("creditcard-payment-nonce").value=i.nonce,$("creditcard-payment-nonce").setAttribute("value",i.nonce),e.onSuccess&&e.onSuccess())})},verify3dSecureVault:function(e){var t=$$("#creditcard-saved-accounts input:checked[type=radio]").first().getAttribute("data-threedsecure-nonce");t?this.client.verify3DS({amount:this.amount,creditCard:t},function(t,i){t?(alert(t.message),e.onFailure?e.onFailure():checkout.setLoadWaiting(!1)):($("creditcard-payment-nonce").removeAttribute("disabled"),$("creditcard-payment-nonce").value=i.nonce,$("creditcard-payment-nonce").setAttribute("value",i.nonce),e.onSuccess&&e.onSuccess())}):(alert("No payment nonce present."),e.onFailure?e.onFailure():checkout.setLoadWaiting(!1))},processCard:function(e){var t={number:$$('[data-genebraintree-name="number"]').first().value,cardholderName:this.getBillingName(),expirationMonth:$$('[data-genebraintree-name="expiration_month"]').first().value,expirationYear:$$('[data-genebraintree-name="expiration_year"]').first().value};void 0!=$$('[data-genebraintree-name="cvv"]').first()&&(t.cvv=$$('[data-genebraintree-name="cvv"]').first().value),""!=this.getBillingPostcode()&&(t.billingAddress={postalCode:this.getBillingPostcode()}),this.client.tokenizeCard(t,function(t,i){if(t){for(var n=0;n<t.length;n++)alert(t[n].code+" "+t[n].message);e.onFailure?e.onFailure():checkout.setLoadWaiting(!1)}else $("creditcard-payment-nonce").value=i,$("creditcard-payment-nonce").setAttribute("value",i),e.onSuccess&&e.onSuccess()})},shouldInterceptCreditCard:function(){return!0},shouldInterceptPayPal:function(){return!0},getCardType:function(e){if(e){if(null!=e.match(/^4/))return"VI";if(null!=e.match(/^(34|37)/))return"AE";if(null!=e.match(/^5[1-5]/))return"MC";if(null!=e.match(/^6011/))return"DI";if(null!=e.match(/^(?:2131|1800|35)/))return"JCB";if(null!=e.match(/^(5018|5020|5038|6304|67[0-9]{2})/))return"ME"}return"card"},process:function(e){e=e||{},this._hostedFieldsTokenGenerated?e.onSuccess&&e.onSuccess():this.usingSavedCard()&&$$("#creditcard-saved-accounts input:checked[type=radio]").first().hasAttribute("data-threedsecure-nonce")?this.verify3dSecureVault(e):this.usingSavedCard()?e.onSuccess&&e.onSuccess():1==this.threeDSecure?this.verify3dSecure(e):this.processCard(e)},creditCardLoaded:function(){return!1},paypalLoaded:function(){return!1}};var vZeroPayPalButton=Class.create();vZeroPayPalButton.prototype={initialize:function(e,t,i,n,a){this.clientToken=e,this.storeFrontName=t,this.singleUse=i,this.locale=n,this.futureSingleUse=a,this._paypalOptions={},this._paypalIntegration=!1,this._paypalButton=!1,this._rebuildTimer=!1,this._rebuildCount=0},setPricing:function(e,t){this.amount=parseFloat(e),this.currency=t,null==$("paypal-payment-nonce")||$("paypal-payment-nonce").value||this.rebuildButton()},rebuildButton:function(){if(clearTimeout(this._rebuildTimer),this._paypalIntegration!==!1)try{this._paypalIntegration.teardown(function(){this._paypalIntegration=!1,this.addPayPalButton(this._paypalOptions)}.bind(this))}catch(e){if("Cannot teardown integration more than once"==e.message)this._paypalIntegration=!1,this.addPayPalButton(this._paypalOptions);else{if(this._rebuildCount>=10)return!1;this._rebuildTimer=setTimeout(function(){++this._rebuildCount,this.rebuildButton()}.bind(this),200)}}},addPayPalButton:function(e,t){if(null===$("paypal-container")||null===$("braintree-paypal-button"))return!1;var i=$("braintree-paypal-button").innerHTML;if($("paypal-container").update(""),$("paypal-container").insert(i),!$("paypal-container").select(">button").length)return!1;this._paypalButton=$("paypal-container").select(">button").first(),this._paypalButton.addClassName("braintree-paypal-loading"),this._paypalButton.setAttribute("disabled","disabled"),this._paypalOptions=e,this._paypalIntegration=!1;var n={paymentMethodNonceInputField:"paypal-payment-nonce",displayName:this.storeFrontName,onPaymentMethodReceived:function(t){"function"==typeof e.onSuccess?e.onSuccess(t):(payment.switchMethod("gene_braintree_paypal"),$("paypal-payment-nonce").removeAttribute("disabled"),$("paypal-complete").remove(),window.review&&review.save())},onUnsupported:function(){alert("You need to link your PayPal account with your Braintree account in your Braintree control panel to utilise the PayPal functionality of this extension.")},onReady:function(i){this._paypalIntegration=i,this._attachPayPalButtonEvent(t),"function"==typeof e.onReady&&e.onReady(i)}.bind(this),paypal:{headless:!0}};this.locale&&(n.locale=this.locale),1==this.singleUse?(n.singleUse=!0,n.amount=this.amount,n.currency=this.currency):1==this.futureSingleUse?n.singleUse=!0:n.singleUse=!1,braintree.setup(this.clientToken,"paypal",n)},_attachPayPalButtonEvent:function(e){this._paypalIntegration&&this._paypalButton&&(this._paypalButton.removeClassName("braintree-paypal-loading"),this._paypalButton.removeAttribute("disabled"),Event.stopObserving(this._paypalButton,"click"),Event.observe(this._paypalButton,"click",function(t){Event.stop(t),"object"==typeof e&&"function"==typeof e.validateAll?e.validateAll()&&this._paypalIntegration.paypal.initAuthFlow():this._paypalIntegration.paypal.initAuthFlow()}.bind(this)))},closePayPalWindow:function(e){}};var vZeroIntegration=Class.create();vZeroIntegration.prototype={initialize:function(e,t,i,n,a,o,s){return vZeroIntegration.prototype.loaded?(console.error("Your checkout is including the Braintree resources multiple times, please resolve this."),!1):(vZeroIntegration.prototype.loaded=!0,this.vzero=e||!1,this.vzeroPaypal=t||!1,this.vzero===!1&&this.vzeroPaypal===!1?(console.warn("The vzero and vzeroPaypal objects are not initiated."),!1):(this.paypalMarkUp=i||!1,this.paypalButtonClass=n||!1,this.isOnepage=a||!1,this.config=o||{},this._methodSwitchTimeout=!1,this._hostedFieldsInit=!1,document.observe("dom:loaded",function(){this.prepareSubmitObserver(),this.preparePaymentMethodSwitchObserver()}.bind(this)),this.hostedFieldsGenerated=!1,this.vzero.close3dSecureMethod(function(){this.vzero._hostedFieldsValidationRunning=!1,this.vzero.tokenize3dSavedCards(function(){this.threeDTokenizationComplete()}.bind(this))}.bind(this)),this.isOnepage&&(this.vzero.observeCardType(),this.observeAjaxRequests(),document.observe("dom:loaded",function(){this.initSavedPayPal(),this.initDefaultMethod(),null!==$("braintree-hosted-submit")&&this.initHostedFields()}.bind(this))),void document.observe("dom:loaded",function(){this.initSavedMethods(),null!==$("braintree-hosted-submit")&&this.initHostedFields()}.bind(this))))},initSavedMethods:function(){$$('#creditcard-saved-accounts input[type="radio"], #paypal-saved-accounts input[type="radio"]').each(function(e){var t="",i="";void 0!==e.up("#creditcard-saved-accounts")?(t="#creditcard-saved-accounts",i="#credit-card-form"):void 0!==e.up("#paypal-saved-accounts")&&(t="#paypal-saved-accounts",i=".paypal-info"),$(e).stopObserving("change").observe("change",function(e){return this.showHideOtherMethod(t,i)}.bind(this))}.bind(this))},showHideOtherMethod:function(e,t){void 0!==$$(e+" input:checked[type=radio]").first()&&"other"==$$(e+" input:checked[type=radio]").first().value?void 0!==$$(t).first()&&($$(t).first().show(),$$(t+" input, "+t+" select").each(function(e){e.removeAttribute("disabled")})):void 0!==$$(e+" input:checked[type=radio]").first()&&void 0!==$$(t).first()&&($$(t).first().hide(),$$(t+" input, "+t+" select").each(function(e){e.setAttribute("disabled","disabled")}))},checkSavedOther:function(){var e="",t="";"gene_braintree_creditcard"==this.getPaymentMethod()?(e="#creditcard-saved-accounts",t="#credit-card-form"):"gene_braintree_paypal"==this.getPaymentMethod()&&(e="#paypal-saved-accounts",t=".paypal-info"),void 0!==$$(e).first()&&this.showHideOtherMethod(e,t)},initHostedFields:function(){this.vzero.hostedFields&&null!==$("braintree-hosted-submit")&&(void 0!==$("braintree-hosted-submit").up("form")?(this._hostedFieldsInit=!0,this.form=$("braintree-hosted-submit").up("form"),this.vzero.initHostedFields(this)):console.error("Hosted Fields cannot be initialized as we're unable to locate the parent form."))},afterHostedFieldsNonceReceived:function(e){return this.resetLoading(),this.vzero._hostedFieldsTokenGenerated=!0,this.hostedFieldsGenerated=!0,this.isOnepage?this.submitCheckout():this.submitPayment()},afterHostedFieldsError:function(e){return this.vzero._hostedFieldsTokenGenerated=!1,this.hostedFieldsGenerated=!1,!1},initDefaultMethod:function(){this.shouldAddPayPalButton(!1)&&(this.setLoading(),this.vzero.updateData(function(){this.resetLoading(),this.updatePayPalButton("add")}.bind(this)))},observeAjaxRequests:function(){this.vzero.observeAjaxRequests(function(){this.vzero.updateData(function(){this.isOnepage&&(this.initSavedPayPal(),this.rebuildPayPalButton(),this.checkSavedOther(),this.vzero.hostedFields&&this.initHostedFields()),this.initSavedMethods()}.bind(this))}.bind(this),"undefined"!=typeof this.config.ignoreAjax?this.config.ignoreAjax:!1)},rebuildPayPalButton:function(){null==$("paypal-container")&&this.updatePayPalButton()},initSavedPayPal:function(){void 0!==$$("#paypal-saved-accounts input[type=radio]").first()&&$("paypal-saved-accounts").on("change","input[type=radio]",function(e){this.updatePayPalButton(!1,"gene_braintree_paypal")}.bind(this))},prepareSubmitObserver:function(){return!1},beforeSubmit:function(e){return this._beforeSubmit(e)},_beforeSubmit:function(e){if(this.hostedFieldsGenerated===!1&&this.vzero.hostedFields&&(void 0===$$("#creditcard-saved-accounts input:checked[type=radio]").first()||void 0!==$$("#creditcard-saved-accounts input:checked[type=radio]").first()&&"other"==$$("#creditcard-saved-accounts input:checked[type=radio]").first().value)){var t=$("braintree-hosted-submit").down("button");t.removeAttribute("disabled"),t.click()}else e()},afterSubmit:function(){return!1},submit:function(e,t,i,n){this.shouldInterceptSubmit(e)&&(this.validateAll()?(this.setLoading(),this.beforeSubmit(function(){void 0!=$$('[data-genebraintree-name="number"]').first()&&this.vzero.updateCardType($$('[data-genebraintree-name="number"]').first().value),this.vzero.updateData(function(){this.updateBilling(),this.vzero.process({onSuccess:function(){if(this.enableDeviceData(),this.disableCreditCardForm(),this.resetLoading(),this.afterSubmit(),this.enableDisableNonce(),this.vzero._hostedFieldsTokenGenerated=!1,this.hostedFieldsGenerated=!1,"function"==typeof t)var e=t();return this.setLoading(),this.enableCreditCardForm(),e}.bind(this),onFailure:function(){return this.vzero._hostedFieldsTokenGenerated=!1,this.hostedFieldsGenerated=!1,this.resetLoading(),this.afterSubmit(),"function"==typeof i?i():void 0}.bind(this)})}.bind(this),this.getUpdateDataParams())}.bind(this))):(this.vzero._hostedFieldsTokenGenerated=!1,this.hostedFieldsGenerated=!1,this.resetLoading(),"function"==typeof n&&n()))},submitCheckout:function(){window.review&&review.save()},submitPayment:function(){payment.save&&payment.save()},enableDisableNonce:function(){"gene_braintree_creditcard"==this.getPaymentMethod()?(null!==$("creditcard-payment-nonce")&&$("creditcard-payment-nonce").removeAttribute("disabled"),null!==$("paypal-payment-nonce")&&$("paypal-payment-nonce").setAttribute("disabled","disabled")):"gene_braintree_paypal"==this.getPaymentMethod()&&(null!==$("creditcard-payment-nonce")&&$("creditcard-payment-nonce").setAttribute("disabled","disabled"),null!==$("paypal-payment-nonce")&&$("paypal-payment-nonce").removeAttribute("disabled"))},preparePaymentMethodSwitchObserver:function(){return this.defaultPaymentMethodSwitch()},defaultPaymentMethodSwitch:function(){var e=this,t=Payment.prototype.switchMethod;Payment.prototype.switchMethod=function(i){return e.paymentMethodSwitch(i),t.apply(this,arguments)}},paymentMethodSwitch:function(e){clearTimeout(this._methodSwitchTimeout),this._methodSwitchTimeout=setTimeout(function(){this.shouldAddPayPalButton(e)?this.updatePayPalButton("add",e):this.updatePayPalButton("remove",e),"gene_braintree_creditcard"==(e?e:this.getPaymentMethod())&&this.initHostedFields(),this.checkSavedOther()}.bind(this),50)},completePayPal:function(e){return this.enableDisableNonce(),this.enableDeviceData(),e.nonce&&null!==$("paypal-payment-nonce")?($("paypal-payment-nonce").value=e.nonce,$("paypal-payment-nonce").setAttribute("value",e.nonce)):console.warn("Unable to update PayPal nonce, please verify that the nonce input field has the ID: paypal-payment-nonce"),this.afterPayPalComplete(),!1},afterPayPalComplete:function(){return this.resetLoading(),this.submitCheckout()},updatePayPalButton:function(e,t){if(this.paypalMarkUp===!1)return!1;if("refresh"==e)return this.updatePayPalButton("remove"),this.updatePayPalButton("add"),!0;if(this.shouldAddPayPalButton(t)&&"remove"!=e||"add"==e)if(void 0!==$$(this.paypalButtonClass).first()){if(void 0!==$$("#paypal-complete").first()&&$$("#paypal-complete").first().visible())return!0;$$(this.paypalButtonClass).first().hide(),$$(this.paypalButtonClass).first().insert({after:this.paypalMarkUp});var i={onSuccess:this.completePayPal.bind(this),onReady:this.paypalOnReady.bind(this)};this.vzeroPaypal.addPayPalButton(i,this)}else console.warn("We're unable to find the element "+this.paypalButtonClass+". Please check your integration.");else void 0!==$$(this.paypalButtonClass).first()&&$$(this.paypalButtonClass).first().show(),void 0!==$$("#paypal-complete").first()&&$("paypal-complete").remove()},paypalOnReady:function(e){return!0},setLoading:function(){checkout.setLoadWaiting("payment")},resetLoading:function(){checkout.setLoadWaiting(!1)},enableDeviceData:function(){null!==$("device_data")&&$("device_data").removeAttribute("disabled")},disableCreditCardForm:function(){$$("#credit-card-form input, #credit-card-form select").each(function(e){"creditcard-payment-nonce"!=e.id&&"gene_braintree_creditcard_store_in_vault"!=e.id&&e.setAttribute("disabled","disabled")})},enableCreditCardForm:function(){$$("#credit-card-form input, #credit-card-form select").each(function(e){e.removeAttribute("disabled")})},updateBilling:function(){(null!==$("billing-address-select")&&""==$("billing-address-select").value||null===$("billing-address-select"))&&(null!==$("billing:firstname")&&null!==$("billing:lastname")&&this.vzero.setBillingName($("billing:firstname").value+" "+$("billing:lastname").value),null!==$("billing:postcode")&&this.vzero.setBillingPostcode($("billing:postcode").value))},getUpdateDataParams:function(){var e={};return null!==$("billing-address-select")&&""!=$("billing-address-select").value&&(e.addressId=$("billing-address-select").value),e},getPaymentMethod:function(){return payment.currentMethod},shouldInterceptSubmit:function(e){switch(e){case"creditcard":return"gene_braintree_creditcard"==this.getPaymentMethod()&&this.vzero.shouldInterceptCreditCard();break;case"paypal":return"gene_braintree_paypal"==this.getPaymentMethod()&&this.vzero.shouldInterceptCreditCard()}return!1},shouldAddPayPalButton:function(e){return"gene_braintree_paypal"==(e?e:this.getPaymentMethod())&&null===$("paypal-saved-accounts")||"gene_braintree_paypal"==(e?e:this.getPaymentMethod())&&void 0!==$$("#paypal-saved-accounts input:checked[type=radio]").first()&&"other"==$$("#paypal-saved-accounts input:checked[type=radio]").first().value},threeDTokenizationComplete:function(){this.resetLoading()},validateAll:function(){return!0}},function(){for(var e,t=function(){},i=["assert","clear","count","debug","dir","dirxml","error","exception","group","groupCollapsed","groupEnd","info","log","markTimeline","profile","profileEnd","table","time","timeEnd","timeStamp","trace","warn"],n=i.length,a=window.console=window.console||{};n--;)e=i[n],a[e]||(a[e]=t)}();
|
js/gene/braintree/vzero-0.7.js
CHANGED
@@ -164,14 +164,7 @@ vZero.prototype = {
|
|
164 |
},
|
165 |
onFieldEvent: this.hostedFieldsOnFieldEvent.bind(this)
|
166 |
},
|
167 |
-
onReady:
|
168 |
-
this._hostedIntegration = integration;
|
169 |
-
|
170 |
-
// Unset the loading state if it's present
|
171 |
-
if ($$('#credit-card-form.loading').length) {
|
172 |
-
$$('#credit-card-form.loading').first().removeClassName('loading');
|
173 |
-
}
|
174 |
-
}.bind(this),
|
175 |
onPaymentMethodReceived: this.hostedFieldsPaymentMethodReceived.bind(this),
|
176 |
onError: this.hostedFieldsError.bind(this)
|
177 |
};
|
@@ -307,6 +300,31 @@ vZero.prototype = {
|
|
307 |
);
|
308 |
},
|
309 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
310 |
/**
|
311 |
* Action to call after receiving the payment method
|
312 |
*
|
@@ -386,7 +404,11 @@ vZero.prototype = {
|
|
386 |
|
387 |
// Stop any "Cannot place two elements in #xxx" messages being shown to the user
|
388 |
// These are non critical errors and the functionality will still work as expected
|
389 |
-
if (
|
|
|
|
|
|
|
|
|
390 |
// Let the user know what went wrong
|
391 |
alert(response.message);
|
392 |
}
|
@@ -656,6 +678,12 @@ vZero.prototype = {
|
|
656 |
*/
|
657 |
observeAjaxRequests: function (callback, ignore) {
|
658 |
|
|
|
|
|
|
|
|
|
|
|
|
|
659 |
// For every ajax request on complete update various Braintree things
|
660 |
Ajax.Responders.register({
|
661 |
onComplete: function (transport) {
|
@@ -1086,7 +1114,7 @@ vZero.prototype = {
|
|
1086 |
* @returns {boolean}
|
1087 |
*/
|
1088 |
shouldInterceptCreditCard: function () {
|
1089 |
-
return
|
1090 |
},
|
1091 |
|
1092 |
/**
|
@@ -1432,9 +1460,9 @@ vZeroIntegration.prototype = {
|
|
1432 |
* @param paypalButtonClass The class of the button we need to replace with the above mark up
|
1433 |
* @param isOnepage Is the integration a onepage checkout?
|
1434 |
* @param config Any further config the integration wants to push into the class
|
1435 |
-
* @param
|
1436 |
*/
|
1437 |
-
initialize: function (vzero, vzeroPaypal, paypalMarkUp, paypalButtonClass, isOnepage, config,
|
1438 |
|
1439 |
// Only allow the system to be initialized twice
|
1440 |
if (vZeroIntegration.prototype.loaded) {
|
@@ -1459,6 +1487,8 @@ vZeroIntegration.prototype = {
|
|
1459 |
|
1460 |
this.config = config || {};
|
1461 |
|
|
|
|
|
1462 |
this._methodSwitchTimeout = false;
|
1463 |
|
1464 |
// Hosted fields hasn't been initialized yet
|
@@ -1644,7 +1674,7 @@ vZeroIntegration.prototype = {
|
|
1644 |
this.resetLoading();
|
1645 |
this.vzero._hostedFieldsTokenGenerated = true;
|
1646 |
this.hostedFieldsGenerated = true;
|
1647 |
-
if (this.isOnepage) {
|
1648 |
return this.submitCheckout();
|
1649 |
} else {
|
1650 |
return this.submitPayment();
|
@@ -1769,6 +1799,11 @@ vZeroIntegration.prototype = {
|
|
1769 |
} else {
|
1770 |
callback();
|
1771 |
}
|
|
|
|
|
|
|
|
|
|
|
1772 |
},
|
1773 |
|
1774 |
/**
|
164 |
},
|
165 |
onFieldEvent: this.hostedFieldsOnFieldEvent.bind(this)
|
166 |
},
|
167 |
+
onReady: this.hostedFieldsOnReady.bind(this),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
168 |
onPaymentMethodReceived: this.hostedFieldsPaymentMethodReceived.bind(this),
|
169 |
onError: this.hostedFieldsError.bind(this)
|
170 |
};
|
300 |
);
|
301 |
},
|
302 |
|
303 |
+
/**
|
304 |
+
* Called when Hosted Fields integration is ready
|
305 |
+
*
|
306 |
+
* @param integration
|
307 |
+
*/
|
308 |
+
hostedFieldsOnReady: function (integration) {
|
309 |
+
this._hostedIntegration = integration;
|
310 |
+
|
311 |
+
// Unset the loading state if it's present
|
312 |
+
if ($$('#credit-card-form.loading').length) {
|
313 |
+
$$('#credit-card-form.loading').first().removeClassName('loading');
|
314 |
+
}
|
315 |
+
|
316 |
+
// Will this checkout submit the payment after the "payment" step. This is typically used in non one step checkouts
|
317 |
+
// which contains a review step.
|
318 |
+
if (this.integration.submitAfterPayment) {
|
319 |
+
var input = new Element('input', {type: 'hidden', name: 'payment[submit_after_payment]', value: 1, id: 'braintree-submit-after-payment'});
|
320 |
+
$('payment_form_gene_braintree_creditcard').insert(input);
|
321 |
+
} else {
|
322 |
+
if ($('braintree-submit-after-payment')) {
|
323 |
+
$('braintree-submit-after-payment').remove();
|
324 |
+
}
|
325 |
+
}
|
326 |
+
},
|
327 |
+
|
328 |
/**
|
329 |
* Action to call after receiving the payment method
|
330 |
*
|
404 |
|
405 |
// Stop any "Cannot place two elements in #xxx" messages being shown to the user
|
406 |
// These are non critical errors and the functionality will still work as expected
|
407 |
+
if (
|
408 |
+
typeof response.message !== 'undefined' &&
|
409 |
+
response.message.indexOf('Cannot place two elements in') == -1 &&
|
410 |
+
response.message.indexOf('Unable to find element with selector') == -1
|
411 |
+
) {
|
412 |
// Let the user know what went wrong
|
413 |
alert(response.message);
|
414 |
}
|
678 |
*/
|
679 |
observeAjaxRequests: function (callback, ignore) {
|
680 |
|
681 |
+
// Only allow one initialization of this function
|
682 |
+
if (vZero.prototype.observingAjaxRequests) {
|
683 |
+
return false;
|
684 |
+
}
|
685 |
+
vZero.prototype.observingAjaxRequests = true;
|
686 |
+
|
687 |
// For every ajax request on complete update various Braintree things
|
688 |
Ajax.Responders.register({
|
689 |
onComplete: function (transport) {
|
1114 |
* @returns {boolean}
|
1115 |
*/
|
1116 |
shouldInterceptCreditCard: function () {
|
1117 |
+
return (this.amount != '0.00');
|
1118 |
},
|
1119 |
|
1120 |
/**
|
1460 |
* @param paypalButtonClass The class of the button we need to replace with the above mark up
|
1461 |
* @param isOnepage Is the integration a onepage checkout?
|
1462 |
* @param config Any further config the integration wants to push into the class
|
1463 |
+
* @param submitAfterPayment Is the checkout going to submit the actual payment after the payment step? For instance a checkout with a review step
|
1464 |
*/
|
1465 |
+
initialize: function (vzero, vzeroPaypal, paypalMarkUp, paypalButtonClass, isOnepage, config, submitAfterPayment) {
|
1466 |
|
1467 |
// Only allow the system to be initialized twice
|
1468 |
if (vZeroIntegration.prototype.loaded) {
|
1487 |
|
1488 |
this.config = config || {};
|
1489 |
|
1490 |
+
this.submitAfterPayment = submitAfterPayment || false;
|
1491 |
+
|
1492 |
this._methodSwitchTimeout = false;
|
1493 |
|
1494 |
// Hosted fields hasn't been initialized yet
|
1674 |
this.resetLoading();
|
1675 |
this.vzero._hostedFieldsTokenGenerated = true;
|
1676 |
this.hostedFieldsGenerated = true;
|
1677 |
+
if (this.isOnepage || this.submitAfterPayment) {
|
1678 |
return this.submitCheckout();
|
1679 |
} else {
|
1680 |
return this.submitPayment();
|
1799 |
} else {
|
1800 |
callback();
|
1801 |
}
|
1802 |
+
|
1803 |
+
// Remove the save after payment to ensure validation fires correctly
|
1804 |
+
if (this.submitAfterPayment && $('braintree-submit-after-payment')) {
|
1805 |
+
$('braintree-submit-after-payment').remove();
|
1806 |
+
}
|
1807 |
},
|
1808 |
|
1809 |
/**
|
package.xml
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Gene_Braintree</name>
|
4 |
-
<version>2.0.
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://opensource.org/licenses/mit-license.php">MIT License</license>
|
7 |
<channel>community</channel>
|
@@ -36,9 +36,9 @@
|
|
36 |
</ul></description>
|
37 |
<notes>Connect your Magento store to Braintree to accept Credit Cards &amp; PayPal using V.Zero SDK</notes>
|
38 |
<authors><author><name>Dave Macaulay</name><user>dave</user><email>support@gene.co.uk</email></author></authors>
|
39 |
-
<date>2016-
|
40 |
-
<time>
|
41 |
-
<contents><target name="magecommunity"><dir name="Gene"><dir name="Braintree"><dir name="Block"><dir name="Adminhtml"><dir name="Report"><dir name="Transactions"><file name="Grid.php" hash="32b32086548f62ae4aca4baf456b9ed2"/><file name="Search.php" hash="81d57c3744530f36c37782ce9d0f3a70"/></dir><file name="Transactions.php" hash="7afe45b49353e52b432aa0392d76a08e"/></dir><dir name="System"><dir name="Config"><dir name="Braintree"><file name="Config.php" hash="40a2eb78ee6c004b749ec62aaa690bf4"/><file name="Currency.php" hash="9976cc7d6ff80c3ea351ddff9b10b9d8"/><dir name="Kount"><file name="Ens.php" hash="56ef3f1e4da9d09b6bc8d0814a882358"/></dir><file name="Moduleversion.php" hash="eed1f9bcb139b6062e7972d3f98e13c8"/><file name="Version.php" hash="ce58278a4faf965301cc2d8b2da4483c"/></dir><file name="Migration.php" hash="e57911ecb5fb301147cd4940b3f1e4f4"/></dir></dir></dir><dir name="Cart"><file name="Totals.php" hash="a03c441e8143896f92d02931a809f666"/></dir><dir name="Creditcard"><file name="Info.php" hash="6faf4be87ad62f13373a6b2e852a478b"/><file name="Saved.php" hash="2d0a3c3543d8eecc7c94a50cea7810d9"/><file name="Threedsecure.php" hash="7848d4ecac743be985f328fa969318bf"/></dir><file name="Creditcard.php" hash="7871f210f4009cfe53ecfaf5164e43ca"/><dir name="Express"><file name="Button.php" hash="b7bb6fa7e6f80aa4809d1d1dc7dc6950"/><file name="Checkout.php" hash="d0c9bc6f656e93031189e7d6bb1c8533"/></dir><file name="Info.php" hash="4d9513f53e20bf7752c1f826bbd63b0e"/><file name="Js.php" hash="35e604171e4a5d1250732c4a5ad33d9b"/><dir name="Paypal"><file name="Info.php" hash="0874c0839a27c14ec9be47fed152e880"/><file name="Saved.php" hash="6a99ef8a384d7ab8f4537e995867ec85"/></dir><file name="Paypal.php" hash="10cbb40f8801153ac0c04725843f4eee"/><dir name="Saved"><file name="Edit.php" hash="ae2d80ecab7cdda39b18054b057f2dc5"/></dir><file name="Saved.php" hash="782f17589219da087e57035a1c0b9a4a"/></dir><dir name="Helper"><file name="Data.php" hash="b3e5025957b496d3be5cdb865a20e5be"/></dir><dir name="Model"><file name="Debug.php" hash="f3360f71e2346881f93424792ed9f209"/><dir name="Entity"><file name="Setup.php" hash="c580e73ec53ac455698ee6b0ff005e39"/></dir><dir name="Kount"><file name="Ens.php" hash="0929b4b909c1baea965b77b011aff49e"/><file name="Rest.php" hash="5dfb5265a431da0210cb87dba023b7b6"/></dir><file name="Migration.php" hash="f6642a8ddf000b731f2b7044072d1adf"/><file name="Observer.php" hash="e1ac13f65517ef889cc41fc8b421cafb"/><dir name="Paymentmethod"><file name="Abstract.php" hash="f90b0dfa2890402af044dd9e3717c161"/><file name="Creditcard.php" hash="98c528e9db7d336d7e3c8a897e5e5de8"/><dir name="Legacy"><file name="Creditcard.php" hash="cfc791157f3a173ff8ed838e69c96f51"/><file name="Paypal.php" hash="59ef3cfb64f4c4c878015147412c78a7"/></dir><file name="Paypal.php" hash="ceba6e4eca55e5dcfeff4318800a18e5"/></dir><file name="Saved.php" hash="3c9318122fbe56bdb915c837d834f392"/><dir name="Source"><file name="Cctype.php" hash="d76aa6c3a4bd798e3a47695f579d21d4"/><dir name="Creditcard"><file name="CaptureAction.php" hash="d39ff81be4b54620410ceeda7f960f0f"/><file name="FormIntegration.php" hash="9788f349430e0d48c9e13c262da3fe06"/><file name="PaymentAction.php" hash="d6e997ae4f6ed57129bf4d5da06a0a82"/></dir><file name="Environment.php" hash="5c2f5ce4d6d9f6f178102b90ec15aa2c"/><dir name="Paypal"><file name="CaptureAction.php" hash="0dd0c6da578aee4b7508f78cab982176"/><file name="Locale.php" hash="adc0ab30619eb3a34d8f5fe1087b07b0"/><file name="PaymentAction.php" hash="ab430eaf7ced39e9d6fd80ad0a7f6b3c"/><file name="Paymenttype.php" hash="48225fa7b3f5e54d81711397dd5bd96b"/></dir></dir><dir name="System"><dir name="Config"><dir name="Backend"><file name="Currency.php" hash="73cb15b1de303e88c487db4c585ef94e"/></dir></dir></dir><dir name="Wrapper"><file name="Braintree.php" hash="40c4fc221552e35c9cb26e66e82930b6"/></dir></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Braintree"><file name="MigrationController.php" hash="cb9ffed24551fb7fff6ccd871a589101"/></dir><file name="BraintreeController.php" hash="d7ece21342a7b4b37ee41ea0e7ff20ad"/></dir><file name="CheckoutController.php" hash="42ac29d6b91aaf40a3a1e1678be7f5b3"/><file name="ExpressController.php" hash="897ba6b4f1557ed7f7baf8b332f0bc87"/><dir name="Kount"><file name="EnsController.php" hash="1db795afa1df901c37bbe48a3f01db2f"/></dir><file name="SavedController.php" hash="083777b1536e8dda604107af9f0081a9"/></dir><dir name="etc"><file name="adminhtml.xml" hash="c9c940beffa0ec19e4a1499a66f7fd12"/><file name="config.xml" hash="5e37801ecd00956a55f664d2057c682c"/><file name="system.xml" hash="ddd778a4d2a9a3f500fe41758c83e237"/></dir><dir name="sql"><dir name="gene_braintree_setup"><file name="install-0.1.0.php" hash="503f428384f687d3f55a19ea57450212"/><file name="upgrade-1.0.5.4-2.0.0.php" hash="62d37c35ba39a77ea14cad842f143393"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><dir name="gene"><file name="braintree.xml" hash="7a028487a5d85fd4034883eb11b908b4"/></dir></dir><dir name="template"><dir name="gene"><dir name="braintree"><dir name="creditcard"><file name="hostedfields.phtml" hash="bfa98d63527cba0990c5cd793325a013"/><file name="info.phtml" hash="2ae1e397b3a633dd305bc26c7b9c1065"/><file name="saved.phtml" hash="579ec8ca726de3b5bea8600663d1e61f"/><file name="threedsecure.phtml" hash="ee8ad689afde041c39dd92ffa5274883"/></dir><file name="creditcard.phtml" hash="2cf07e28ebd141ea73e6e9082096304e"/><dir name="customer"><file name="edit.phtml" hash="ed8a9533f07fbfa36ec78623afd1a04d"/><file name="methods.phtml" hash="794ad8cb20314d1657a746b365c82540"/><file name="saved.phtml" hash="0457b0fa38f9db788133e54f359baa63"/></dir><dir name="express"><file name="cart.phtml" hash="430af653061c7d6f1074bd2ca5e9b04d"/><file name="catalog.phtml" hash="78bb957f8e650cf095f00a0f665f2945"/><file name="error.phtml" hash="dc2c40f1914a5d68e220e3aa82abb1e6"/><file name="shipping_details.phtml" hash="d89af997ad75ed875e3a18d2f38e6571"/></dir><dir name="js"><file name="aheadworks.phtml" hash="533ba9aebbba6768649668386a74a1c2"/><file name="amasty.phtml" hash="2bfc5623dd9a98721b53a4d8cd13c0c3"/><file name="data.phtml" hash="f8b04e3d0d7154cc75332eb5bec3e54e"/><file name="default.phtml" hash="fdcfb27a06ebab20268ef4ed820625c1"/><file name="firecheckout.phtml" hash="06acaa71a28ff9029242c4906cc05314"/><file name="fme.phtml" hash="263fb201b77696cf21cc677696c53fdd"/><file name="idev.phtml" hash="f8677f5296e573b8bfc3e63603e62bf6"/><file name="iwd.phtml" hash="d7e12c84b629306529d3d8beb0c4814d"/><file name="magestore.phtml" hash="ff6a622a4048b8e533f3e672a40e6296"/><file name="multishipping.phtml" hash="a1e777e99df26d81f7c4b9e7b4a7c109"/><file name="oye.phtml" hash="51ef48f818e79acb6d1e8b9eb7889cc9"/><file name="setup.phtml" hash="804d63a30f8d6c985644b545a768da97"/><file name="unicode.phtml" hash="dd07e924a01b0a28ef46c9a62f22e3b5"/></dir><dir name="paypal"><file name="info.phtml" hash="5149b273730121e4dec3c3179820f747"/><file name="saved.phtml" hash="3dd56f96bcdd14be594d355ae8fff329"/></dir><file name="paypal.phtml" hash="d12c20e5fb76f31270a5d47061e42715"/></dir></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><dir name="gene"><file name="braintree.xml" hash="a80683ffe99332dffa0c2e563120ef75"/></dir></dir><dir name="template"><dir name="gene"><dir name="braintree"><dir name="creditcard"><file name="hostedfields.phtml" hash="152e09ed938c47ffc056a7c11247375a"/><file name="info.phtml" hash="24c67bab482ea7383ce57d9a06bb9d6f"/><file name="saved.phtml" hash="ca27adb601aebf97cd25a892082a8663"/></dir><file name="creditcard.phtml" hash="2d77487c6b7e9e6c77b2ddb25597bd8b"/><file name="js.phtml" hash="40866b2bdd056310fa0622c3aac3f7db"/><dir name="paypal"><file name="info.phtml" hash="a8f92f312f8aa5a9463f1d5c2a38cd1b"/><file name="saved.phtml" hash="779ca8e907d7d463eafce58dfaf94f0c"/></dir><file name="paypal.phtml" hash="f81578f64c8a30560299bd993d8e996d"/><dir name="system"><dir name="config"><file name="migration.phtml" hash="4cfe0ffb6a9e03d1297eb66a51f77429"/></dir></dir><dir name="transactions"><file name="index.phtml" hash="1791b6393f319616dd79c0b46e391847"/><file name="search.phtml" hash="1682ce6200681681f0ce3c848e2e6694"/></dir></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Gene_Braintree.xml" hash="8c0ffda8566dca2f0b98a999921e3e55"/></dir></target><target name="mageweb"><dir name="js"><dir name="gene"><dir name="braintree"><file name="braintree-0.1.js" hash="a72cc4545d0d01dd0947dae1474516dd"/><file name="config.codekit" hash="ac2da34ea9ef3ca9c6dd616a0ae830d6"/><file name="express.js" hash="616046de857e85d0736839dfd192a133"/><file name="vzero-0.7-min.js" hash="e0a5babca1118aeb94f0655827317e20"/><file name="vzero-0.7-min.js.map" hash="1fc5d50c5cdcb138131930ac92362053"/><file name="vzero-0.7.js" hash="effafba9ab6fa9012da9b352b7996109"/></dir></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="images"><dir name="gene"><dir name="braintree"><file name="AE.png" hash="6b6f405105413b0723a62ee498f88bf6"/><file name="DI.png" hash="d8e3c3022dda9e723f466b8976ae428f"/><file name="JCB.png" hash="3aa9a71ed8a1d6610bbe0dfe2040e29e"/><file name="MC.png" hash="1fcd14928245139962b72f9368bdbe32"/><file name="ME.png" hash="b9389913c47b9546a67f907fcca73706"/><file name="PP.png" hash="b4946bccba574e86c9716a4986e21c36"/><file name="VI.png" hash="c9f74d1d54e61ab2c748f45a4bdface0"/><file name="card.png" hash="66e16f8c573fad93bb0d62258dce28bb"/><file name="paypal-loading.gif" hash="078a2daf55245b227c09a7bed86750c6"/><file name="paypal.png" hash="40d5f74305e565bd14aef19bcf696541"/></dir><file name="loader.gif" hash="f48ee069890b16455c3ddcacee9b5f75"/><file name="loader-white.gif" hash="1fc0e911558e8dfe77cfdfafa0d38f88"/></dir></dir><dir name="css"><dir name="gene"><dir name="braintree"><dir name="account"><file name="account.less" hash="ddf6bf208f290316300ab20682f34473"/></dir><file name="account.css" hash="73bb46f85320b2f2b4de9beb6c0e0bd6"/><file name="aheadworks.css" hash="548efcbb5b31d1e8811aa1f352111af9"/><file name="amasty.css" hash="0b5ffece72469b63cebdfde108ad2e13"/><file name="config.codekit" hash="7fac910f64b164f32f561db17f19cbba"/><dir name="core"><file name="_general.less" hash="bdadf4fc85ee76b514f03298be1a7e58"/><file name="_hostedfields.less" hash="555bd4655d78a3b379c4b86a3e2d86e5"/><file name="_paypal.less" hash="e7e55d959247956253a0af1df0c9e899"/><file name="_saved.less" hash="66ec8d894e336f9934a1e54972c4b220"/></dir><file name="default.css" hash="80bb5eaa02405ce35ee960537204a62f"/><file name="express.css" hash="13fffafad7ed0cf5fbb85dc167f2a7bb"/><file name="firecheckout.css" hash="9be117bd43f83a15843b599e955896a2"/><file name="fme.css" hash="1139d2b8f32806f781639872c97df5cb"/><file name="idev.css" hash="bae7b82bb27e4b21a31c5e8e26d7672b"/><dir name="integrations"><file name="aheadworks.less" hash="09b0304383e198885f030119c15641f7"/><file name="amasty.less" hash="4cdf236e1d44112205750cefa11448b4"/><file name="default.less" hash="d366d4560ed1ce3e9e120309e56bec2f"/><file name="firecheckout.less" hash="9ce8a9a8fd82553e9a3dbf76f030872a"/><file name="fme.less" hash="580ed66608560fcd1195246c22e3559c"/><file name="idev.less" hash="47485cc963e16d12e673c06cd9efe4b1"/><file name="iwd.less" hash="5081477c7946e0f5cf8cc4198895ca11"/><file name="magestore.less" hash="0af5cd105be3995dc2044d33f990bbb5"/><file name="oye.less" hash="06a0f79190b16dfbce3aec6d14f07461"/><file name="unicode.less" hash="1416abe9a38965d9aead022b238f7d4f"/></dir><file name="iwd.css" hash="b1aa43d7bb9c97ab54d5392a24b703fb"/><file name="magestore.css" hash="529a595d9aef634527b8fe8e72aa1b84"/><file name="oye.css" hash="80906d460c6f5490e5e303a0a7fc6e20"/><file name="unicode.css" hash="46ca21b52eb30fbae49ce91c9300d9b4"/><file name=".DS_Store" hash="1405352d803d5c88cf3ec19a82f173d0"/></dir></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="css"><dir name="gene"><dir name="braintree"><file name="adminhtml.css" hash="2847eb017b959db61659562d1e8cfaea"/><file name="adminhtml.less" hash="6456950844fcd86471cf78400f922915"/><file name="config.codekit" hash="1be78e1e754fe681b3d1be469b4d0386"/><file name="migration.css" hash="c67c92df36fe23fecaa1db9f1f1cd996"/><file name="migration.less" hash="2f76dd2f55cc5268bd70197bfe344b20"/><file name=".DS_Store" hash="63617e9dd9988a3d3773937a3f7e2f9a"/></dir></dir></dir><dir name="images"><dir name="gene"><dir name="braintree"><file name="AE.png" hash="6b6f405105413b0723a62ee498f88bf6"/><file name="DI.png" hash="d8e3c3022dda9e723f466b8976ae428f"/><file name="JCB.png" hash="3aa9a71ed8a1d6610bbe0dfe2040e29e"/><file name="MC.png" hash="1fcd14928245139962b72f9368bdbe32"/><file name="ME.png" hash="b9389913c47b9546a67f907fcca73706"/><file name="PP.png" hash="b4946bccba574e86c9716a4986e21c36"/><file name="VI.png" hash="c9f74d1d54e61ab2c748f45a4bdface0"/><file name="card.png" hash="66e16f8c573fad93bb0d62258dce28bb"/><dir name="migration"><file name="braintree.png" hash="396d721824a86b169ce0055090ce9766"/><file name="gene-logo.png" hash="16efb1b148acc59c46c84a21d726b6e9"/><file name="loader.gif" hash="66b9100930b8e58d46acf2e13d41f7ea"/></dir></dir><file name="loader.gif" hash="f48ee069890b16455c3ddcacee9b5f75"/></dir></dir></dir></dir></dir></target><target name="magelib"><dir name="Gene"><dir name="Braintree"><file name="AddOn.php" hash="e8bbb6db343ba99192346b1dcbf45677"/><file name="AddOnGateway.php" hash="d8698ffe89c01fba78a8a06a2fc68122"/><file name="Address.php" hash="004d3d36d39fc6fcc3d510f4b15b1fca"/><file name="AddressGateway.php" hash="41b5a3be7bdb2fe326a49a1554e1b0c3"/><file name="AndroidPayCard.php" hash="bb4a81807fefc76db286e615128c5d8c"/><file name="ApplePayCard.php" hash="b895256bcb867854bcaaffc1ce833fbd"/><file name="Base.php" hash="60d52fd1bef5655bcb607fba45bb4c1c"/><file name="ClientToken.php" hash="358c0a1dba687baf635db818cb7d1dac"/><file name="ClientTokenGateway.php" hash="9c24bb9de2c419c7e377c046da2a1ffa"/><file name="CoinbaseAccount.php" hash="ee5cb6963f675a9a71293c453b128866"/><file name="Collection.php" hash="0e7d31ffcbd9780fb554186bd2c194b0"/><file name="Configuration.php" hash="2a416a1eae0c22329d9bef88b25039b2"/><file name="CredentialsParser.php" hash="c4bb2248a33129d8523a6120ce44108b"/><file name="CreditCard.php" hash="d32b8d8e64b2d046d3d9e4f00c67f1ed"/><file name="CreditCardGateway.php" hash="0d120ed06f06fd614468d6e3f0ad22d2"/><file name="CreditCardVerification.php" hash="48d6ea546914278f4bea2fefb75e7836"/><file name="CreditCardVerificationGateway.php" hash="6a07430c9437f6e6c1516d5b4572a749"/><file name="CreditCardVerificationSearch.php" hash="18efe7d508c2bd5fea1c0e68fc26182f"/><file name="Customer.php" hash="62d0937de86f7a14a512ad66edba7569"/><file name="CustomerGateway.php" hash="5367d9d8a878572106e3a94c60132b1b"/><file name="CustomerSearch.php" hash="8aacc83dac341cd9afec5a3deab17593"/><file name="Descriptor.php" hash="3f5db5e817280ce7f2fa18a205281ad9"/><file name="Digest.php" hash="9d12d067770f55b123b8498fce4478fa"/><file name="Disbursement.php" hash="ad122f0f33b27dfd98bcdd38ea138ae4"/><file name="DisbursementDetails.php" hash="ae632207d0982e288a83aed401c880d9"/><file name="Discount.php" hash="763b3f9cde0ff3af3e8795cac4097595"/><file name="DiscountGateway.php" hash="47796edb8ac2fa68e9af8fb8a13aacb1"/><dir name="Dispute"><file name="TransactionDetails.php" hash="7fdea673a1295055508f42286ad57f4e"/></dir><file name="Dispute.php" hash="c3a4e93fa2b3b0e20ddcb593dcdc7b2b"/><file name="EqualityNode.php" hash="cfd6aa184186233b8d6d1ec0f0e79298"/><dir name="Error"><file name="Codes.php" hash="a7f98ff690e725b7fcd198b4b22d0637"/><file name="ErrorCollection.php" hash="e28d638db56524f5bf3609fa725e6d55"/><file name="Validation.php" hash="bf4e2198300019c52ba56f16269d66ce"/><file name="ValidationErrorCollection.php" hash="9ef25d0126a0b4f6951da5334ae6f0dc"/></dir><file name="EuropeBankAccount.php" hash="82ae4f4d1c45ce2c421305bf9397c866"/><dir name="Exception"><file name="Authentication.php" hash="f9e13654988452cca2ac5228a80adae4"/><file name="Authorization.php" hash="5f8c017c6e9fd79a556dade8e15a72e8"/><file name="Configuration.php" hash="b50f67e8ea36cff0d9f6ad718126c6fc"/><file name="DownForMaintenance.php" hash="7fd30b1f8976ed7e38b7e9fae5c20f03"/><file name="ForgedQueryString.php" hash="6884dbae1e86767834b77c821df2db62"/><file name="InvalidChallenge.php" hash="1c283a1c9dac65feb137594d0dcf0e35"/><file name="InvalidSignature.php" hash="b83f5b16735cb3a8e0a8111c4f32711e"/><file name="NotFound.php" hash="f832f771d20b381c2780eb2a572b9f44"/><file name="SSLCaFileNotFound.php" hash="e927c7307bf1761814dc8a755238070d"/><file name="SSLCertificate.php" hash="d509b6a6206bd7c5563ac142dfe3801f"/><file name="ServerError.php" hash="b4645290229ab228a257047d08ef63d7"/><file name="TestOperationPerformedInProduction.php" hash="fde4c6a8b708420b26785fb67a2548ef"/><file name="Unexpected.php" hash="01ea2800fb91995ec2a15aee5024611e"/><file name="UpgradeRequired.php" hash="7f40b174df891cc3b3e206d1be884a58"/><file name="ValidationsFailed.php" hash="cd2d30c69911f81b55279c3d6bf88c61"/></dir><file name="Exception.php" hash="f14c94bf67206184eb3e4e7aeb4a608a"/><file name="Gateway.php" hash="d2fac69479243ef4cea7d7a8add798f7"/><file name="Http.php" hash="1baa32e0efcae13c4d6294d1233512a1"/><file name="Instance.php" hash="f0603b3f9213b53687e079c5621ac8f3"/><file name="IsNode.php" hash="e4b1f7bbfcbd24b1d08b97f94df592be"/><file name="KeyValueNode.php" hash="255595ec01a16906dd0c49faf67d9efb"/><file name="Merchant.php" hash="5053ebe889c854d11f2686bffdeb58be"/><dir name="MerchantAccount"><file name="AddressDetails.php" hash="1d265d864a884ebcf2504f55207cc0dd"/><file name="BusinessDetails.php" hash="3e80148bac9fda676844aa19d5b2dc28"/><file name="FundingDetails.php" hash="7368f653fcbcc3d87924447b1763e616"/><file name="IndividualDetails.php" hash="777b6f28f643e78616c7ed753a39c0cd"/></dir><file name="MerchantAccount.php" hash="496c93182d824bb2967cc9366dec1ac3"/><file name="MerchantAccountGateway.php" hash="e2073aff6f8b3c5f2e64b23b210c44f7"/><file name="MerchantGateway.php" hash="e0a2e3a28c68dac8bd082973b269ed1b"/><file name="Modification.php" hash="0abe992d4f821327f617ca883c4eb2d1"/><file name="MultipleValueNode.php" hash="92700fa03011eaa9561010b3a160449c"/><file name="MultipleValueOrTextNode.php" hash="ef06bac18e2bc40974bdc0bcb854890f"/><file name="OAuthCredentials.php" hash="e992dca9dfedb27e3d050af55971a968"/><file name="OAuthGateway.php" hash="9a0b2b692eaf8fb5f337922044b20cc1"/><file name="PartialMatchNode.php" hash="370c7e0ab8a445cfeef6b19ef1755f4d"/><file name="PartnerMerchant.php" hash="bdb69ebdc75d67009710be9703a47e80"/><file name="PayPalAccount.php" hash="672a7d424f94e590c5e66a21e62d7bc2"/><file name="PayPalAccountGateway.php" hash="d73f5744ebaca6cc882c42d0e9c1a05e"/><file name="PaymentInstrumentType.php" hash="be97a30c7d8fbbb180864dc4efea71f2"/><file name="PaymentMethod.php" hash="5bc31d3e97610e7218c95aba2422cc9a"/><file name="PaymentMethodGateway.php" hash="4c93b070cb79c86ec9384e069fbae777"/><file name="PaymentMethodNonce.php" hash="e99302e2468f55c8fb4b2ceeb1bce68e"/><file name="PaymentMethodNonceGateway.php" hash="22a0d89eee071a28b530c6be477dcc6e"/><file name="Plan.php" hash="22ab0117d462352aecb9531d4a26619e"/><file name="PlanGateway.php" hash="95e093b55ad20f8b652ee5f2fc2a0fcf"/><file name="RangeNode.php" hash="4ad9a92547423b3d54d69097114c3daf"/><file name="ResourceCollection.php" hash="8f437cb5014148c0e2f6049347ae795c"/><dir name="Result"><file name="CreditCardVerification.php" hash="7c41787025ec7cffb269f53e3ce479e2"/><file name="Error.php" hash="0e0460f1eea017bc7591e05351f51eb0"/><file name="Successful.php" hash="03f1c379fcedaef499296ab7778d1e36"/></dir><file name="RiskData.php" hash="8bef1074f9f1c50c841a7c7cf627c9cf"/><file name="SettlementBatchSummary.php" hash="388d88e8cea7bec61ee78f388fb78c2c"/><file name="SettlementBatchSummaryGateway.php" hash="bc54658b75fa0505e072331799c2d9ad"/><file name="SignatureService.php" hash="4b78d3e5897e715dcc877c5f65b3cfae"/><dir name="Subscription"><file name="StatusDetails.php" hash="29e375f02150bfd7147591f0eb27cb4f"/></dir><file name="Subscription.php" hash="cde05aa61192d5b930b57330db308835"/><file name="SubscriptionGateway.php" hash="bd1b2aa2d4d41a595463bead64ed34e0"/><file name="SubscriptionSearch.php" hash="1874ebe5cb42d7d2836617810cced1af"/><dir name="Test"><file name="CreditCardNumbers.php" hash="676a9100354eb679e7ca1e0f0d67293f"/><file name="MerchantAccount.php" hash="612e7e30cca364c0d14cbff3b54ebf3f"/><file name="Nonces.php" hash="d39c75e07c12c005c837c33003cb9ec2"/><file name="Transaction.php" hash="f7ef8730ede38eda778679c7056ae7c7"/><file name="TransactionAmounts.php" hash="ed9bf1f57d871542c32d11de9e031f05"/><file name="VenmoSdk.php" hash="6ce94deccd1f968596011487c7e69cc7"/></dir><file name="TestingGateway.php" hash="ccb1126142799ac3dc9f8d6f1a1f48d4"/><file name="TextNode.php" hash="94c95ec9645de57acace2179fef7fb43"/><file name="ThreeDSecureInfo.php" hash="542550c4e03a24551d00e8aad5493035"/><dir name="Transaction"><file name="AddressDetails.php" hash="ff52a4a48248085b7ea92e992160e413"/><file name="AndroidPayCardDetails.php" hash="0d7716a3c992dfb0833e7ecd437ef346"/><file name="ApplePayCardDetails.php" hash="23f7ba70521889585fa40f4f0388524d"/><file name="CoinbaseDetails.php" hash="d19a625f8de98698b8277c25660358f0"/><file name="CreditCardDetails.php" hash="aac5eb1f5804d4f979b9c71f7b98cb36"/><file name="CustomerDetails.php" hash="e137895c646127312be44292c84a2d81"/><file name="EuropeBankAccountDetails.php" hash="afe4fdc3ab3714ef2995f514ce2be2a6"/><file name="PayPalDetails.php" hash="06903d1ee21879f7329b920138df9ac6"/><file name="StatusDetails.php" hash="7c6e719c51bf13bdfd07615030100ac6"/><file name="SubscriptionDetails.php" hash="1cf1f511d1545a2e27b8d3f4bee800ca"/></dir><file name="Transaction.php" hash="afe5d8ef7fc73633424d26b942c4e5a1"/><file name="TransactionGateway.php" hash="39684956db79fe58891876e5c7845413"/><file name="TransactionSearch.php" hash="aa58846182b909fb8747e165ec7e9b92"/><file name="TransparentRedirect.php" hash="154c9850be5175a5cd1b35bdf78ae939"/><file name="TransparentRedirectGateway.php" hash="5ead181bf0d5484db5eb305efa13bec4"/><file name="UnknownPaymentMethod.php" hash="9107498774ab5bc2b25de98838736b47"/><file name="Util.php" hash="9832a44da18b97a55248cadc4bb9a4ad"/><file name="Version.php" hash="43e074bc53780cb92af4a9ef4887c63e"/><file name="WebhookNotification.php" hash="4097fb57d46368d903c42bb20fbd49ca"/><file name="WebhookTesting.php" hash="c40311458bb64e37b4c08eb88df37805"/><dir name="Xml"><file name="Generator.php" hash="19f9c9b9b61d4f97f65775f527ac408d"/><file name="Parser.php" hash="c06b1ae155ac7687eaa856fac472656d"/></dir><file name="Xml.php" hash="dc69e05bea21e3d1185d45d53e4747db"/></dir><file name="Braintree.php" hash="2c75cf27b3c9a6e1bc557e6b239d2594"/><dir name="ssl"><file name="api_braintreegateway_com.ca.crt" hash="04beb23c767547e980c76eb68c7eab15"/><file name="sandbox_braintreegateway_com.ca.crt" hash="f1b529883c7c2cbb4251658f5da7b4c9"/></dir></dir></target><target name="magelocale"><dir><dir name="en_US"><file name="Gene_Braintree.csv" hash="b0c520cbdf0f42b11c8c6dfafbe999bd"/></dir></dir></target></contents>
|
42 |
<compatible/>
|
43 |
<dependencies><required><php><min>5.4.0</min><max>6.0.0</max></php><package><name></name><channel>connect.magentocommerce.com/core</channel><min></min><max></max></package></required></dependencies>
|
44 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Gene_Braintree</name>
|
4 |
+
<version>2.0.1</version>
|
5 |
<stability>stable</stability>
|
6 |
<license uri="http://opensource.org/licenses/mit-license.php">MIT License</license>
|
7 |
<channel>community</channel>
|
36 |
</ul></description>
|
37 |
<notes>Connect your Magento store to Braintree to accept Credit Cards &amp; PayPal using V.Zero SDK</notes>
|
38 |
<authors><author><name>Dave Macaulay</name><user>dave</user><email>support@gene.co.uk</email></author></authors>
|
39 |
+
<date>2016-07-07</date>
|
40 |
+
<time>13:53:56</time>
|
41 |
+
<contents><target name="magecommunity"><dir name="Gene"><dir name="Braintree"><dir name="Block"><dir name="Adminhtml"><dir name="Report"><dir name="Transactions"><file name="Grid.php" hash="32b32086548f62ae4aca4baf456b9ed2"/><file name="Search.php" hash="81d57c3744530f36c37782ce9d0f3a70"/></dir><file name="Transactions.php" hash="7afe45b49353e52b432aa0392d76a08e"/></dir><dir name="System"><dir name="Config"><dir name="Braintree"><file name="Config.php" hash="40a2eb78ee6c004b749ec62aaa690bf4"/><file name="Currency.php" hash="9976cc7d6ff80c3ea351ddff9b10b9d8"/><dir name="Kount"><file name="Ens.php" hash="56ef3f1e4da9d09b6bc8d0814a882358"/></dir><file name="Moduleversion.php" hash="eed1f9bcb139b6062e7972d3f98e13c8"/><file name="Version.php" hash="ce58278a4faf965301cc2d8b2da4483c"/></dir><file name="Migration.php" hash="e57911ecb5fb301147cd4940b3f1e4f4"/></dir></dir></dir><dir name="Cart"><file name="Totals.php" hash="a03c441e8143896f92d02931a809f666"/></dir><dir name="Creditcard"><file name="Info.php" hash="6faf4be87ad62f13373a6b2e852a478b"/><file name="Saved.php" hash="2d0a3c3543d8eecc7c94a50cea7810d9"/><file name="Threedsecure.php" hash="7848d4ecac743be985f328fa969318bf"/></dir><file name="Creditcard.php" hash="7871f210f4009cfe53ecfaf5164e43ca"/><dir name="Express"><file name="Button.php" hash="b7bb6fa7e6f80aa4809d1d1dc7dc6950"/><file name="Checkout.php" hash="d0c9bc6f656e93031189e7d6bb1c8533"/></dir><file name="Info.php" hash="4d9513f53e20bf7752c1f826bbd63b0e"/><file name="Js.php" hash="35e604171e4a5d1250732c4a5ad33d9b"/><dir name="Paypal"><file name="Info.php" hash="0874c0839a27c14ec9be47fed152e880"/><file name="Saved.php" hash="6a99ef8a384d7ab8f4537e995867ec85"/></dir><file name="Paypal.php" hash="10cbb40f8801153ac0c04725843f4eee"/><dir name="Saved"><file name="Edit.php" hash="ae2d80ecab7cdda39b18054b057f2dc5"/></dir><file name="Saved.php" hash="782f17589219da087e57035a1c0b9a4a"/></dir><dir name="Helper"><file name="Data.php" hash="b3e5025957b496d3be5cdb865a20e5be"/></dir><dir name="Model"><file name="Debug.php" hash="f3360f71e2346881f93424792ed9f209"/><dir name="Entity"><file name="Setup.php" hash="c580e73ec53ac455698ee6b0ff005e39"/></dir><dir name="Kount"><file name="Ens.php" hash="3f672b000d43363406b1df7e2b52f620"/><file name="Rest.php" hash="5dfb5265a431da0210cb87dba023b7b6"/></dir><file name="Migration.php" hash="cb9cec0c7d57c406e9bad66efe68b07d"/><file name="Observer.php" hash="e1ac13f65517ef889cc41fc8b421cafb"/><dir name="Paymentmethod"><file name="Abstract.php" hash="5a950bf2273b99ceae0eaf8482d67052"/><file name="Creditcard.php" hash="c336f9e0a43459beb57a907cae7f436c"/><dir name="Legacy"><file name="Creditcard.php" hash="cfc791157f3a173ff8ed838e69c96f51"/><file name="Paypal.php" hash="59ef3cfb64f4c4c878015147412c78a7"/></dir><file name="Paypal.php" hash="363575d74739bda8f2446f0f6d87c284"/></dir><file name="Saved.php" hash="3c9318122fbe56bdb915c837d834f392"/><dir name="Source"><file name="Cctype.php" hash="d76aa6c3a4bd798e3a47695f579d21d4"/><dir name="Creditcard"><file name="CaptureAction.php" hash="d39ff81be4b54620410ceeda7f960f0f"/><file name="FormIntegration.php" hash="9788f349430e0d48c9e13c262da3fe06"/><file name="PaymentAction.php" hash="d6e997ae4f6ed57129bf4d5da06a0a82"/></dir><file name="Environment.php" hash="5c2f5ce4d6d9f6f178102b90ec15aa2c"/><dir name="Paypal"><file name="CaptureAction.php" hash="0dd0c6da578aee4b7508f78cab982176"/><file name="Locale.php" hash="adc0ab30619eb3a34d8f5fe1087b07b0"/><file name="PaymentAction.php" hash="ab430eaf7ced39e9d6fd80ad0a7f6b3c"/><file name="Paymenttype.php" hash="48225fa7b3f5e54d81711397dd5bd96b"/></dir></dir><dir name="System"><dir name="Config"><dir name="Backend"><file name="Currency.php" hash="73cb15b1de303e88c487db4c585ef94e"/></dir></dir></dir><dir name="Wrapper"><file name="Braintree.php" hash="dd319741658ff63fd96495772df213a9"/></dir></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Braintree"><file name="MigrationController.php" hash="cb9ffed24551fb7fff6ccd871a589101"/></dir><file name="BraintreeController.php" hash="d7ece21342a7b4b37ee41ea0e7ff20ad"/></dir><file name="CheckoutController.php" hash="223de3639574a686a68e9210f39c1fad"/><file name="ExpressController.php" hash="89aaef3ec80d0793e918a3674139b4f6"/><dir name="Kount"><file name="EnsController.php" hash="1db795afa1df901c37bbe48a3f01db2f"/></dir><file name="SavedController.php" hash="083777b1536e8dda604107af9f0081a9"/></dir><dir name="etc"><file name="adminhtml.xml" hash="c9c940beffa0ec19e4a1499a66f7fd12"/><file name="config.xml" hash="cc0b3c389edbe9ad5564b8051f9af8b7"/><file name="system.xml" hash="de3781d5454488230602588b69aac3d2"/></dir><dir name="sql"><dir name="gene_braintree_setup"><file name="install-0.1.0.php" hash="503f428384f687d3f55a19ea57450212"/><file name="upgrade-1.0.5.4-2.0.0.php" hash="62d37c35ba39a77ea14cad842f143393"/><file name="upgrade-2.0.0-2.0.1.php" hash="90bd92f8c00e4d4088314ddd8f9ad2f9"/></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><dir name="gene"><file name="braintree.xml" hash="37554a4ee99b24d44fdccd83f54b1aed"/></dir></dir><dir name="template"><dir name="gene"><dir name="braintree"><dir name="creditcard"><file name="hostedfields.phtml" hash="bfa98d63527cba0990c5cd793325a013"/><file name="info.phtml" hash="2ae1e397b3a633dd305bc26c7b9c1065"/><file name="saved.phtml" hash="579ec8ca726de3b5bea8600663d1e61f"/><file name="threedsecure.phtml" hash="ee8ad689afde041c39dd92ffa5274883"/></dir><file name="creditcard.phtml" hash="2cf07e28ebd141ea73e6e9082096304e"/><dir name="customer"><file name="edit.phtml" hash="ed8a9533f07fbfa36ec78623afd1a04d"/><file name="methods.phtml" hash="794ad8cb20314d1657a746b365c82540"/><file name="saved.phtml" hash="0457b0fa38f9db788133e54f359baa63"/></dir><dir name="express"><file name="cart.phtml" hash="dc6546baaa5c0c37fe3a6221ed978e87"/><file name="catalog.phtml" hash="e24ee8a37661e4cc82c19aaae3b669c3"/><file name="error.phtml" hash="0ec2ea2f9b909d9f0543e5df83eea055"/><file name="shipping_details.phtml" hash="0bb6ceafaac0ba522278df310d6136e2"/></dir><dir name="js"><file name="aheadworks.phtml" hash="533ba9aebbba6768649668386a74a1c2"/><file name="amasty.phtml" hash="2bfc5623dd9a98721b53a4d8cd13c0c3"/><file name="awesomecheckout.phtml" hash="ee42abb3b9211a31b3d4454ba1e92fe9"/><file name="data.phtml" hash="f8b04e3d0d7154cc75332eb5bec3e54e"/><file name="default.phtml" hash="fdcfb27a06ebab20268ef4ed820625c1"/><file name="firecheckout.phtml" hash="06acaa71a28ff9029242c4906cc05314"/><file name="fme.phtml" hash="263fb201b77696cf21cc677696c53fdd"/><file name="idev.phtml" hash="f8677f5296e573b8bfc3e63603e62bf6"/><file name="iwd.phtml" hash="d7e12c84b629306529d3d8beb0c4814d"/><file name="magestore.phtml" hash="ff6a622a4048b8e533f3e672a40e6296"/><file name="multishipping.phtml" hash="a1e777e99df26d81f7c4b9e7b4a7c109"/><file name="oye.phtml" hash="51ef48f818e79acb6d1e8b9eb7889cc9"/><file name="setup.phtml" hash="804d63a30f8d6c985644b545a768da97"/><file name="unicode.phtml" hash="dd07e924a01b0a28ef46c9a62f22e3b5"/></dir><dir name="paypal"><file name="info.phtml" hash="5149b273730121e4dec3c3179820f747"/><file name="saved.phtml" hash="3dd56f96bcdd14be594d355ae8fff329"/></dir><file name="paypal.phtml" hash="d12c20e5fb76f31270a5d47061e42715"/></dir></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><dir name="gene"><file name="braintree.xml" hash="9d57a85acb47d23341af91f4143b4f5e"/></dir></dir><dir name="template"><dir name="gene"><dir name="braintree"><dir name="creditcard"><file name="hostedfields.phtml" hash="152e09ed938c47ffc056a7c11247375a"/><file name="info.phtml" hash="24c67bab482ea7383ce57d9a06bb9d6f"/><file name="saved.phtml" hash="ca27adb601aebf97cd25a892082a8663"/></dir><file name="creditcard.phtml" hash="2d77487c6b7e9e6c77b2ddb25597bd8b"/><file name="js.phtml" hash="7253799710792ed1f8611e21c2b100bf"/><dir name="paypal"><file name="info.phtml" hash="a8f92f312f8aa5a9463f1d5c2a38cd1b"/><file name="saved.phtml" hash="779ca8e907d7d463eafce58dfaf94f0c"/></dir><file name="paypal.phtml" hash="f81578f64c8a30560299bd993d8e996d"/><dir name="system"><dir name="config"><file name="migration.phtml" hash="4cfe0ffb6a9e03d1297eb66a51f77429"/></dir></dir><dir name="transactions"><file name="index.phtml" hash="1791b6393f319616dd79c0b46e391847"/><file name="search.phtml" hash="1682ce6200681681f0ce3c848e2e6694"/></dir></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Gene_Braintree.xml" hash="8c0ffda8566dca2f0b98a999921e3e55"/></dir></target><target name="mageweb"><dir name="js"><dir name="gene"><dir name="braintree"><file name="braintree-0.1.js" hash="a72cc4545d0d01dd0947dae1474516dd"/><file name="config.codekit" hash="ac2da34ea9ef3ca9c6dd616a0ae830d6"/><file name="express.js" hash="a32735940fb8313c150e6567a59a1f0e"/><file name="vzero-0.7-min.js" hash="2ed17ce02180373bec9cb1bc4f8f7c89"/><file name="vzero-0.7-min.js.map" hash="1fc5d50c5cdcb138131930ac92362053"/><file name="vzero-0.7.js" hash="128cd8642deca1fdb0ce1a2afe9e3c76"/></dir></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="images"><dir name="gene"><dir name="braintree"><file name="AE.png" hash="6b6f405105413b0723a62ee498f88bf6"/><file name="DI.png" hash="d8e3c3022dda9e723f466b8976ae428f"/><file name="JCB.png" hash="3aa9a71ed8a1d6610bbe0dfe2040e29e"/><file name="MC.png" hash="1fcd14928245139962b72f9368bdbe32"/><file name="ME.png" hash="b9389913c47b9546a67f907fcca73706"/><file name="PP.png" hash="b4946bccba574e86c9716a4986e21c36"/><file name="VI.png" hash="c9f74d1d54e61ab2c748f45a4bdface0"/><file name="card.png" hash="66e16f8c573fad93bb0d62258dce28bb"/><file name="paypal-loading.gif" hash="078a2daf55245b227c09a7bed86750c6"/><file name="paypal.png" hash="40d5f74305e565bd14aef19bcf696541"/></dir><file name="loader.gif" hash="f48ee069890b16455c3ddcacee9b5f75"/><file name="loader-white.gif" hash="1fc0e911558e8dfe77cfdfafa0d38f88"/></dir></dir><dir name="css"><dir name="gene"><dir name="braintree"><dir name="account"><file name="account.less" hash="ddf6bf208f290316300ab20682f34473"/></dir><file name="account.css" hash="73bb46f85320b2f2b4de9beb6c0e0bd6"/><file name="aheadworks.css" hash="f5a06971e4dbac94df48fb0ff1912f98"/><file name="amasty.css" hash="5a4a845ea4a16cca2195cb836e25571e"/><file name="awesomecheckout.css" hash="5f858ec9549f6b04b0c2885fbf193e7b"/><file name="config.codekit" hash="abccddbb4a8dc17b0126bd223c2a2ac0"/><dir name="core"><file name="_general.less" hash="5848708373d8ed5eda5e5b23c3e4e05c"/><file name="_hostedfields.less" hash="555bd4655d78a3b379c4b86a3e2d86e5"/><file name="_paypal.less" hash="e7e55d959247956253a0af1df0c9e899"/><file name="_saved.less" hash="66ec8d894e336f9934a1e54972c4b220"/></dir><file name="default.css" hash="229df9c1e39496d64a96c1b17e7a1823"/><file name="express.css" hash="23fdeca7804baa026615f4e54eeaf66b"/><file name="express.less" hash="0d752abca5f300beadc5a2948b5565ae"/><file name="firecheckout.css" hash="6605fd097c6b509fd8ef758a5a2ea236"/><file name="fme.css" hash="5809c809abc0cc6dde9ff2accebe4f38"/><file name="idev.css" hash="89104fad2a084ec8ed229d119d9c276c"/><dir name="integrations"><file name="aheadworks.less" hash="09b0304383e198885f030119c15641f7"/><file name="amasty.less" hash="4cdf236e1d44112205750cefa11448b4"/><file name="awesomecheckout.less" hash="e774da637a5c6bbdb2e5decc998afae1"/><file name="default.less" hash="d366d4560ed1ce3e9e120309e56bec2f"/><file name="firecheckout.less" hash="459704b8b6efca52fcee7c335b3ad625"/><file name="fme.less" hash="580ed66608560fcd1195246c22e3559c"/><file name="idev.less" hash="47485cc963e16d12e673c06cd9efe4b1"/><file name="iwd.less" hash="5081477c7946e0f5cf8cc4198895ca11"/><file name="magestore.less" hash="0af5cd105be3995dc2044d33f990bbb5"/><file name="oye.less" hash="06a0f79190b16dfbce3aec6d14f07461"/><file name="unicode.less" hash="1416abe9a38965d9aead022b238f7d4f"/></dir><file name="iwd.css" hash="651ba890cc76d1f9fdaa7d6137b2a106"/><file name="magestore.css" hash="fdeca676628bd2e1c732a15640a42ff3"/><file name="oye.css" hash="ec24b4a2541dd3d01540d1f065025d7b"/><file name="unicode.css" hash="82acd70dca47bb484a17296c2ca11e81"/><file name=".DS_Store" hash="1405352d803d5c88cf3ec19a82f173d0"/></dir></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="css"><dir name="gene"><dir name="braintree"><file name="adminhtml.css" hash="2847eb017b959db61659562d1e8cfaea"/><file name="adminhtml.less" hash="6456950844fcd86471cf78400f922915"/><file name="config.codekit" hash="a41f2e0e0faacce3bd7f194f03bdd365"/><file name="migration.css" hash="c67c92df36fe23fecaa1db9f1f1cd996"/><file name="migration.less" hash="2f76dd2f55cc5268bd70197bfe344b20"/><file name=".DS_Store" hash="63617e9dd9988a3d3773937a3f7e2f9a"/></dir></dir></dir><dir name="images"><dir name="gene"><dir name="braintree"><file name="AE.png" hash="6b6f405105413b0723a62ee498f88bf6"/><file name="DI.png" hash="d8e3c3022dda9e723f466b8976ae428f"/><file name="JCB.png" hash="3aa9a71ed8a1d6610bbe0dfe2040e29e"/><file name="MC.png" hash="1fcd14928245139962b72f9368bdbe32"/><file name="ME.png" hash="b9389913c47b9546a67f907fcca73706"/><file name="PP.png" hash="b4946bccba574e86c9716a4986e21c36"/><file name="VI.png" hash="c9f74d1d54e61ab2c748f45a4bdface0"/><file name="card.png" hash="66e16f8c573fad93bb0d62258dce28bb"/><dir name="migration"><file name="braintree.png" hash="396d721824a86b169ce0055090ce9766"/><file name="gene-logo.png" hash="16efb1b148acc59c46c84a21d726b6e9"/><file name="loader.gif" hash="66b9100930b8e58d46acf2e13d41f7ea"/></dir></dir><file name="loader.gif" hash="f48ee069890b16455c3ddcacee9b5f75"/></dir></dir></dir></dir></dir></target><target name="magelib"><dir name="Gene"><dir name="Braintree"><file name="AddOn.php" hash="e8bbb6db343ba99192346b1dcbf45677"/><file name="AddOnGateway.php" hash="d8698ffe89c01fba78a8a06a2fc68122"/><file name="Address.php" hash="004d3d36d39fc6fcc3d510f4b15b1fca"/><file name="AddressGateway.php" hash="41b5a3be7bdb2fe326a49a1554e1b0c3"/><file name="AndroidPayCard.php" hash="bb4a81807fefc76db286e615128c5d8c"/><file name="ApplePayCard.php" hash="b895256bcb867854bcaaffc1ce833fbd"/><file name="Base.php" hash="60d52fd1bef5655bcb607fba45bb4c1c"/><file name="ClientToken.php" hash="358c0a1dba687baf635db818cb7d1dac"/><file name="ClientTokenGateway.php" hash="9c24bb9de2c419c7e377c046da2a1ffa"/><file name="CoinbaseAccount.php" hash="ee5cb6963f675a9a71293c453b128866"/><file name="Collection.php" hash="0e7d31ffcbd9780fb554186bd2c194b0"/><file name="Configuration.php" hash="2a416a1eae0c22329d9bef88b25039b2"/><file name="CredentialsParser.php" hash="c4bb2248a33129d8523a6120ce44108b"/><file name="CreditCard.php" hash="d32b8d8e64b2d046d3d9e4f00c67f1ed"/><file name="CreditCardGateway.php" hash="0d120ed06f06fd614468d6e3f0ad22d2"/><file name="CreditCardVerification.php" hash="48d6ea546914278f4bea2fefb75e7836"/><file name="CreditCardVerificationGateway.php" hash="6a07430c9437f6e6c1516d5b4572a749"/><file name="CreditCardVerificationSearch.php" hash="18efe7d508c2bd5fea1c0e68fc26182f"/><file name="Customer.php" hash="62d0937de86f7a14a512ad66edba7569"/><file name="CustomerGateway.php" hash="5367d9d8a878572106e3a94c60132b1b"/><file name="CustomerSearch.php" hash="8aacc83dac341cd9afec5a3deab17593"/><file name="Descriptor.php" hash="3f5db5e817280ce7f2fa18a205281ad9"/><file name="Digest.php" hash="9d12d067770f55b123b8498fce4478fa"/><file name="Disbursement.php" hash="ad122f0f33b27dfd98bcdd38ea138ae4"/><file name="DisbursementDetails.php" hash="ae632207d0982e288a83aed401c880d9"/><file name="Discount.php" hash="763b3f9cde0ff3af3e8795cac4097595"/><file name="DiscountGateway.php" hash="47796edb8ac2fa68e9af8fb8a13aacb1"/><dir name="Dispute"><file name="TransactionDetails.php" hash="7fdea673a1295055508f42286ad57f4e"/></dir><file name="Dispute.php" hash="c3a4e93fa2b3b0e20ddcb593dcdc7b2b"/><file name="EqualityNode.php" hash="cfd6aa184186233b8d6d1ec0f0e79298"/><dir name="Error"><file name="Codes.php" hash="a7f98ff690e725b7fcd198b4b22d0637"/><file name="ErrorCollection.php" hash="e28d638db56524f5bf3609fa725e6d55"/><file name="Validation.php" hash="bf4e2198300019c52ba56f16269d66ce"/><file name="ValidationErrorCollection.php" hash="9ef25d0126a0b4f6951da5334ae6f0dc"/></dir><file name="EuropeBankAccount.php" hash="82ae4f4d1c45ce2c421305bf9397c866"/><dir name="Exception"><file name="Authentication.php" hash="f9e13654988452cca2ac5228a80adae4"/><file name="Authorization.php" hash="5f8c017c6e9fd79a556dade8e15a72e8"/><file name="Configuration.php" hash="b50f67e8ea36cff0d9f6ad718126c6fc"/><file name="DownForMaintenance.php" hash="7fd30b1f8976ed7e38b7e9fae5c20f03"/><file name="ForgedQueryString.php" hash="6884dbae1e86767834b77c821df2db62"/><file name="InvalidChallenge.php" hash="1c283a1c9dac65feb137594d0dcf0e35"/><file name="InvalidSignature.php" hash="b83f5b16735cb3a8e0a8111c4f32711e"/><file name="NotFound.php" hash="f832f771d20b381c2780eb2a572b9f44"/><file name="SSLCaFileNotFound.php" hash="e927c7307bf1761814dc8a755238070d"/><file name="SSLCertificate.php" hash="d509b6a6206bd7c5563ac142dfe3801f"/><file name="ServerError.php" hash="b4645290229ab228a257047d08ef63d7"/><file name="TestOperationPerformedInProduction.php" hash="fde4c6a8b708420b26785fb67a2548ef"/><file name="Unexpected.php" hash="01ea2800fb91995ec2a15aee5024611e"/><file name="UpgradeRequired.php" hash="7f40b174df891cc3b3e206d1be884a58"/><file name="ValidationsFailed.php" hash="cd2d30c69911f81b55279c3d6bf88c61"/></dir><file name="Exception.php" hash="f14c94bf67206184eb3e4e7aeb4a608a"/><file name="Gateway.php" hash="d2fac69479243ef4cea7d7a8add798f7"/><file name="Http.php" hash="1baa32e0efcae13c4d6294d1233512a1"/><file name="Instance.php" hash="f0603b3f9213b53687e079c5621ac8f3"/><file name="IsNode.php" hash="e4b1f7bbfcbd24b1d08b97f94df592be"/><file name="KeyValueNode.php" hash="255595ec01a16906dd0c49faf67d9efb"/><file name="Merchant.php" hash="5053ebe889c854d11f2686bffdeb58be"/><dir name="MerchantAccount"><file name="AddressDetails.php" hash="1d265d864a884ebcf2504f55207cc0dd"/><file name="BusinessDetails.php" hash="3e80148bac9fda676844aa19d5b2dc28"/><file name="FundingDetails.php" hash="7368f653fcbcc3d87924447b1763e616"/><file name="IndividualDetails.php" hash="777b6f28f643e78616c7ed753a39c0cd"/></dir><file name="MerchantAccount.php" hash="496c93182d824bb2967cc9366dec1ac3"/><file name="MerchantAccountGateway.php" hash="e2073aff6f8b3c5f2e64b23b210c44f7"/><file name="MerchantGateway.php" hash="e0a2e3a28c68dac8bd082973b269ed1b"/><file name="Modification.php" hash="0abe992d4f821327f617ca883c4eb2d1"/><file name="MultipleValueNode.php" hash="92700fa03011eaa9561010b3a160449c"/><file name="MultipleValueOrTextNode.php" hash="ef06bac18e2bc40974bdc0bcb854890f"/><file name="OAuthCredentials.php" hash="e992dca9dfedb27e3d050af55971a968"/><file name="OAuthGateway.php" hash="9a0b2b692eaf8fb5f337922044b20cc1"/><file name="PartialMatchNode.php" hash="370c7e0ab8a445cfeef6b19ef1755f4d"/><file name="PartnerMerchant.php" hash="bdb69ebdc75d67009710be9703a47e80"/><file name="PayPalAccount.php" hash="672a7d424f94e590c5e66a21e62d7bc2"/><file name="PayPalAccountGateway.php" hash="d73f5744ebaca6cc882c42d0e9c1a05e"/><file name="PaymentInstrumentType.php" hash="be97a30c7d8fbbb180864dc4efea71f2"/><file name="PaymentMethod.php" hash="5bc31d3e97610e7218c95aba2422cc9a"/><file name="PaymentMethodGateway.php" hash="4c93b070cb79c86ec9384e069fbae777"/><file name="PaymentMethodNonce.php" hash="e99302e2468f55c8fb4b2ceeb1bce68e"/><file name="PaymentMethodNonceGateway.php" hash="22a0d89eee071a28b530c6be477dcc6e"/><file name="Plan.php" hash="22ab0117d462352aecb9531d4a26619e"/><file name="PlanGateway.php" hash="95e093b55ad20f8b652ee5f2fc2a0fcf"/><file name="RangeNode.php" hash="4ad9a92547423b3d54d69097114c3daf"/><file name="ResourceCollection.php" hash="8f437cb5014148c0e2f6049347ae795c"/><dir name="Result"><file name="CreditCardVerification.php" hash="7c41787025ec7cffb269f53e3ce479e2"/><file name="Error.php" hash="0e0460f1eea017bc7591e05351f51eb0"/><file name="Successful.php" hash="03f1c379fcedaef499296ab7778d1e36"/></dir><file name="RiskData.php" hash="8bef1074f9f1c50c841a7c7cf627c9cf"/><file name="SettlementBatchSummary.php" hash="388d88e8cea7bec61ee78f388fb78c2c"/><file name="SettlementBatchSummaryGateway.php" hash="bc54658b75fa0505e072331799c2d9ad"/><file name="SignatureService.php" hash="4b78d3e5897e715dcc877c5f65b3cfae"/><dir name="Subscription"><file name="StatusDetails.php" hash="29e375f02150bfd7147591f0eb27cb4f"/></dir><file name="Subscription.php" hash="cde05aa61192d5b930b57330db308835"/><file name="SubscriptionGateway.php" hash="bd1b2aa2d4d41a595463bead64ed34e0"/><file name="SubscriptionSearch.php" hash="1874ebe5cb42d7d2836617810cced1af"/><dir name="Test"><file name="CreditCardNumbers.php" hash="676a9100354eb679e7ca1e0f0d67293f"/><file name="MerchantAccount.php" hash="612e7e30cca364c0d14cbff3b54ebf3f"/><file name="Nonces.php" hash="d39c75e07c12c005c837c33003cb9ec2"/><file name="Transaction.php" hash="f7ef8730ede38eda778679c7056ae7c7"/><file name="TransactionAmounts.php" hash="ed9bf1f57d871542c32d11de9e031f05"/><file name="VenmoSdk.php" hash="6ce94deccd1f968596011487c7e69cc7"/></dir><file name="TestingGateway.php" hash="ccb1126142799ac3dc9f8d6f1a1f48d4"/><file name="TextNode.php" hash="94c95ec9645de57acace2179fef7fb43"/><file name="ThreeDSecureInfo.php" hash="542550c4e03a24551d00e8aad5493035"/><dir name="Transaction"><file name="AddressDetails.php" hash="ff52a4a48248085b7ea92e992160e413"/><file name="AndroidPayCardDetails.php" hash="0d7716a3c992dfb0833e7ecd437ef346"/><file name="ApplePayCardDetails.php" hash="23f7ba70521889585fa40f4f0388524d"/><file name="CoinbaseDetails.php" hash="d19a625f8de98698b8277c25660358f0"/><file name="CreditCardDetails.php" hash="aac5eb1f5804d4f979b9c71f7b98cb36"/><file name="CustomerDetails.php" hash="e137895c646127312be44292c84a2d81"/><file name="EuropeBankAccountDetails.php" hash="afe4fdc3ab3714ef2995f514ce2be2a6"/><file name="PayPalDetails.php" hash="06903d1ee21879f7329b920138df9ac6"/><file name="StatusDetails.php" hash="7c6e719c51bf13bdfd07615030100ac6"/><file name="SubscriptionDetails.php" hash="1cf1f511d1545a2e27b8d3f4bee800ca"/></dir><file name="Transaction.php" hash="afe5d8ef7fc73633424d26b942c4e5a1"/><file name="TransactionGateway.php" hash="39684956db79fe58891876e5c7845413"/><file name="TransactionSearch.php" hash="aa58846182b909fb8747e165ec7e9b92"/><file name="TransparentRedirect.php" hash="154c9850be5175a5cd1b35bdf78ae939"/><file name="TransparentRedirectGateway.php" hash="5ead181bf0d5484db5eb305efa13bec4"/><file name="UnknownPaymentMethod.php" hash="9107498774ab5bc2b25de98838736b47"/><file name="Util.php" hash="9832a44da18b97a55248cadc4bb9a4ad"/><file name="Version.php" hash="43e074bc53780cb92af4a9ef4887c63e"/><file name="WebhookNotification.php" hash="4097fb57d46368d903c42bb20fbd49ca"/><file name="WebhookTesting.php" hash="c40311458bb64e37b4c08eb88df37805"/><dir name="Xml"><file name="Generator.php" hash="19f9c9b9b61d4f97f65775f527ac408d"/><file name="Parser.php" hash="c06b1ae155ac7687eaa856fac472656d"/></dir><file name="Xml.php" hash="dc69e05bea21e3d1185d45d53e4747db"/></dir><file name="Braintree.php" hash="2c75cf27b3c9a6e1bc557e6b239d2594"/><dir name="ssl"><file name="api_braintreegateway_com.ca.crt" hash="04beb23c767547e980c76eb68c7eab15"/><file name="sandbox_braintreegateway_com.ca.crt" hash="f1b529883c7c2cbb4251658f5da7b4c9"/></dir></dir></target><target name="magelocale"><dir><dir name="en_US"><file name="Gene_Braintree.csv" hash="b0c520cbdf0f42b11c8c6dfafbe999bd"/></dir></dir></target></contents>
|
42 |
<compatible/>
|
43 |
<dependencies><required><php><min>5.4.0</min><max>6.0.0</max></php><package><name></name><channel>connect.magentocommerce.com/core</channel><min></min><max></max></package></required></dependencies>
|
44 |
</package>
|
skin/adminhtml/default/default/css/gene/braintree/config.codekit
CHANGED
@@ -227,7 +227,7 @@
|
|
227 |
"coffeeMinifyOutput": 1,
|
228 |
"coffeeOutputStyle": 0,
|
229 |
"coffeeSyntaxCheckerStyle": 1,
|
230 |
-
"externalServerAddress": "http:\/\/
|
231 |
"externalServerPreviewPathAddition": "",
|
232 |
"genericWebpageFileExtensionsString": "html, htm, shtml, shtm, xhtml, php, jsp, asp, aspx, erb, ctp",
|
233 |
"hamlAutoOutputPathEnabled": 1,
|
227 |
"coffeeMinifyOutput": 1,
|
228 |
"coffeeOutputStyle": 0,
|
229 |
"coffeeSyntaxCheckerStyle": 1,
|
230 |
+
"externalServerAddress": "http:\/\/default.braintree.dave.gene.co.uk\/",
|
231 |
"externalServerPreviewPathAddition": "",
|
232 |
"genericWebpageFileExtensionsString": "html, htm, shtml, shtm, xhtml, php, jsp, asp, aspx, erb, ctp",
|
233 |
"hamlAutoOutputPathEnabled": 1,
|
skin/frontend/base/default/css/gene/braintree/aheadworks.css
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
/* Accepted Cards */
|
2 |
#braintree-accepted-cards img {
|
3 |
-
|
4 |
margin-right: 4px;
|
5 |
}
|
6 |
/* Hosted Fields Loading State */
|
1 |
/* Accepted Cards */
|
2 |
#braintree-accepted-cards img {
|
3 |
+
display: inline-block;
|
4 |
margin-right: 4px;
|
5 |
}
|
6 |
/* Hosted Fields Loading State */
|
skin/frontend/base/default/css/gene/braintree/amasty.css
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
/* Accepted Cards */
|
2 |
#braintree-accepted-cards img {
|
3 |
-
|
4 |
margin-right: 4px;
|
5 |
}
|
6 |
/* Hosted Fields Loading State */
|
1 |
/* Accepted Cards */
|
2 |
#braintree-accepted-cards img {
|
3 |
+
display: inline-block;
|
4 |
margin-right: 4px;
|
5 |
}
|
6 |
/* Hosted Fields Loading State */
|
skin/frontend/base/default/css/gene/braintree/awesomecheckout.css
ADDED
@@ -0,0 +1,255 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* Accepted Cards */
|
2 |
+
#braintree-accepted-cards img {
|
3 |
+
display: inline-block;
|
4 |
+
margin-right: 4px;
|
5 |
+
}
|
6 |
+
/* Hosted Fields Loading State */
|
7 |
+
#credit-card-form.loading {
|
8 |
+
position: relative;
|
9 |
+
}
|
10 |
+
#credit-card-form .braintree-hostedfield {
|
11 |
+
opacity: 1;
|
12 |
+
}
|
13 |
+
#credit-card-form .credit-card-loading {
|
14 |
+
display: none;
|
15 |
+
}
|
16 |
+
#credit-card-form.loading .credit-card-loading {
|
17 |
+
position: absolute;
|
18 |
+
top: 30%;
|
19 |
+
left: 0;
|
20 |
+
right: 0;
|
21 |
+
width: 100%;
|
22 |
+
height: 70%;
|
23 |
+
text-align: center;
|
24 |
+
display: block;
|
25 |
+
}
|
26 |
+
#credit-card-form.loading .credit-card-loading img {
|
27 |
+
margin: 16px auto;
|
28 |
+
}
|
29 |
+
#credit-card-form.loading .braintree-hostedfield {
|
30 |
+
opacity: 0;
|
31 |
+
}
|
32 |
+
/* Hosted Fields */
|
33 |
+
#braintree-hosted-submit {
|
34 |
+
display: none;
|
35 |
+
}
|
36 |
+
.braintree-input-field {
|
37 |
+
height: 42px;
|
38 |
+
max-width: 340px;
|
39 |
+
padding: 0 10px;
|
40 |
+
border: 1px solid lightgrey;
|
41 |
+
background: white;
|
42 |
+
}
|
43 |
+
.braintree-card-input-field {
|
44 |
+
height: 50px;
|
45 |
+
width: 100%;
|
46 |
+
max-width: 372px;
|
47 |
+
border: 1px solid lightgrey;
|
48 |
+
position: relative;
|
49 |
+
background: white;
|
50 |
+
}
|
51 |
+
.braintree-card-input-field .card-type {
|
52 |
+
position: absolute;
|
53 |
+
top: 0;
|
54 |
+
left: 0;
|
55 |
+
bottom: 0;
|
56 |
+
padding: 0 10px 0 8px;
|
57 |
+
}
|
58 |
+
.braintree-card-input-field .card-type img {
|
59 |
+
height: 48px;
|
60 |
+
}
|
61 |
+
.braintree-card-input-field #card-number {
|
62 |
+
float: left;
|
63 |
+
height: 48px;
|
64 |
+
width: 100%;
|
65 |
+
padding-left: 66px;
|
66 |
+
box-sizing: border-box;
|
67 |
+
}
|
68 |
+
#braintree-expiration-container {
|
69 |
+
display: block;
|
70 |
+
width: 100%;
|
71 |
+
vertical-align: middle;
|
72 |
+
font-size: 0;
|
73 |
+
}
|
74 |
+
.braintree-expiration {
|
75 |
+
width: 70px;
|
76 |
+
display: inline-block;
|
77 |
+
*zoom: 1;
|
78 |
+
*display: inline;
|
79 |
+
}
|
80 |
+
.braintree-expiration-seperator {
|
81 |
+
vertical-align: top;
|
82 |
+
line-height: 42px;
|
83 |
+
display: inline-block;
|
84 |
+
*zoom: 1;
|
85 |
+
*display: inline;
|
86 |
+
font-size: 30px;
|
87 |
+
padding: 0 8px;
|
88 |
+
}
|
89 |
+
.braintree-cvv {
|
90 |
+
width: 80px;
|
91 |
+
}
|
92 |
+
.braintree-hostedfield .cvv-what-is-this {
|
93 |
+
margin-left: 0;
|
94 |
+
}
|
95 |
+
#paypal-container iframe {
|
96 |
+
display: none;
|
97 |
+
}
|
98 |
+
/* PayPal headless button */
|
99 |
+
button.braintree-paypal-button {
|
100 |
+
background: #019cde;
|
101 |
+
color: white;
|
102 |
+
height: 46px;
|
103 |
+
line-height: 46px;
|
104 |
+
padding: 0 20px 0 18px;
|
105 |
+
border: none;
|
106 |
+
border-radius: 3px;
|
107 |
+
-webkit-border-radius: 3px;
|
108 |
+
font-size: 14px;
|
109 |
+
float: left;
|
110 |
+
cursor: pointer;
|
111 |
+
}
|
112 |
+
button.braintree-paypal-button.braintree-paypal-loading {
|
113 |
+
background: #014c6b url('../../../images/gene/braintree/paypal-loading.gif') center center no-repeat;
|
114 |
+
background-size: 32px;
|
115 |
+
}
|
116 |
+
button.braintree-paypal-button.braintree-paypal-loading > span {
|
117 |
+
opacity: 0;
|
118 |
+
}
|
119 |
+
button.braintree-paypal-button.braintree-paypal-loading:hover {
|
120 |
+
background: #014c6b url('../../../images/gene/braintree/paypal-loading.gif') center center no-repeat;
|
121 |
+
}
|
122 |
+
button.braintree-paypal-button:hover {
|
123 |
+
background: #0175a6;
|
124 |
+
}
|
125 |
+
button.braintree-paypal-button > span {
|
126 |
+
display: block;
|
127 |
+
height: 46px;
|
128 |
+
line-height: 46px;
|
129 |
+
background: url('../../../images/gene/braintree/paypal.png') right center no-repeat;
|
130 |
+
background-size: 80px;
|
131 |
+
padding-right: 94px;
|
132 |
+
}
|
133 |
+
/* Saved Accounts */
|
134 |
+
#creditcard-saved-accounts,
|
135 |
+
#paypal-saved-accounts {
|
136 |
+
font-size: 0;
|
137 |
+
width: 100%;
|
138 |
+
}
|
139 |
+
#creditcard-saved-accounts tr,
|
140 |
+
#paypal-saved-accounts tr {
|
141 |
+
border-bottom: 1px dotted lightgrey;
|
142 |
+
}
|
143 |
+
#creditcard-saved-accounts tr td,
|
144 |
+
#paypal-saved-accounts tr td {
|
145 |
+
vertical-align: middle;
|
146 |
+
}
|
147 |
+
#payment_form_gene_braintree_creditcard #creditcard-saved-accounts label,
|
148 |
+
#payment_form_gene_braintree_paypal #paypal-saved-accounts label,
|
149 |
+
#payment_form_gene_braintree_creditcard #creditcard-saved-accounts .label,
|
150 |
+
#payment_form_gene_braintree_paypal #paypal-saved-accounts .label {
|
151 |
+
width: 100%;
|
152 |
+
padding: 0;
|
153 |
+
text-align: left;
|
154 |
+
float: none;
|
155 |
+
}
|
156 |
+
#payment_form_gene_braintree_creditcard p,
|
157 |
+
#payment_form_gene_braintree_paypal p {
|
158 |
+
padding: 0;
|
159 |
+
}
|
160 |
+
#creditcard-saved-accounts tr.other-row,
|
161 |
+
#paypal-saved-accounts tr.other-row {
|
162 |
+
border-bottom: 0;
|
163 |
+
}
|
164 |
+
#creditcard-saved-accounts label {
|
165 |
+
float: left;
|
166 |
+
padding: 10px 0;
|
167 |
+
line-height: 40px;
|
168 |
+
width: 100%;
|
169 |
+
}
|
170 |
+
#creditcard-saved-accounts tr.other-row label,
|
171 |
+
#paypal-saved-accounts tr.other-row label {
|
172 |
+
padding: 8px 0;
|
173 |
+
}
|
174 |
+
#paypal-saved-accounts label {
|
175 |
+
padding: 6px 0;
|
176 |
+
line-height: 40px;
|
177 |
+
}
|
178 |
+
#creditcard-saved-accounts label img,
|
179 |
+
#paypal-saved-accounts label img {
|
180 |
+
margin-left: 6px;
|
181 |
+
height: 40px;
|
182 |
+
float: left;
|
183 |
+
}
|
184 |
+
#creditcard-saved-accounts label .saved-card-info,
|
185 |
+
#paypal-saved-accounts label .saved-paypal-email {
|
186 |
+
margin-left: 14px;
|
187 |
+
float: left;
|
188 |
+
}
|
189 |
+
#creditcard-saved-accounts label .saved-card-info span {
|
190 |
+
line-height: 40px;
|
191 |
+
}
|
192 |
+
#creditcard-saved-accounts label .saved-card-info span.saved-expiry-date {
|
193 |
+
font-size: 12px;
|
194 |
+
font-weight: normal;
|
195 |
+
margin-left: 14px;
|
196 |
+
}
|
197 |
+
#gene_braintree_creditcard_store_in_vault_div label,
|
198 |
+
label[for="gene_braintree_paypal_store_in_vault"] {
|
199 |
+
width: auto!important;
|
200 |
+
}
|
201 |
+
#ac-page #checkout-payment-method-load #payment_form_gene_braintree_creditcard,
|
202 |
+
#ac-page #checkout-payment-method-load #payment_form_gene_braintree_paypal {
|
203 |
+
padding: 12px 0;
|
204 |
+
}
|
205 |
+
#ac-page #checkout-payment-method-load #payment_form_gene_braintree_creditcard > label,
|
206 |
+
#ac-page #checkout-payment-method-load #payment_form_gene_braintree_paypal > label {
|
207 |
+
font-weight: bold;
|
208 |
+
}
|
209 |
+
#ac-page #checkout-payment-method-load #payment_form_gene_braintree_creditcard > p,
|
210 |
+
#ac-page #checkout-payment-method-load #payment_form_gene_braintree_paypal > p {
|
211 |
+
margin-top: 6px;
|
212 |
+
}
|
213 |
+
#ac-page #checkout-payment-method-load #payment_form_gene_braintree_creditcard #creditcard-saved-accounts,
|
214 |
+
#ac-page #checkout-payment-method-load #payment_form_gene_braintree_paypal #creditcard-saved-accounts,
|
215 |
+
#ac-page #checkout-payment-method-load #payment_form_gene_braintree_creditcard #paypal-saved-accounts,
|
216 |
+
#ac-page #checkout-payment-method-load #payment_form_gene_braintree_paypal #paypal-saved-accounts {
|
217 |
+
font-size: inherit!important;
|
218 |
+
margin: 8px 0;
|
219 |
+
}
|
220 |
+
#ac-page #checkout-payment-method-load #payment_form_gene_braintree_creditcard #creditcard-saved-accounts tr td,
|
221 |
+
#ac-page #checkout-payment-method-load #payment_form_gene_braintree_paypal #creditcard-saved-accounts tr td,
|
222 |
+
#ac-page #checkout-payment-method-load #payment_form_gene_braintree_creditcard #paypal-saved-accounts tr td,
|
223 |
+
#ac-page #checkout-payment-method-load #payment_form_gene_braintree_paypal #paypal-saved-accounts tr td {
|
224 |
+
padding: 6px 0;
|
225 |
+
}
|
226 |
+
#ac-page #checkout-payment-method-load #payment_form_gene_braintree_creditcard #creditcard-saved-accounts label .saved-card-info,
|
227 |
+
#ac-page #checkout-payment-method-load #payment_form_gene_braintree_paypal #creditcard-saved-accounts label .saved-card-info,
|
228 |
+
#ac-page #checkout-payment-method-load #payment_form_gene_braintree_creditcard #paypal-saved-accounts label .saved-card-info,
|
229 |
+
#ac-page #checkout-payment-method-load #payment_form_gene_braintree_paypal #paypal-saved-accounts label .saved-card-info {
|
230 |
+
margin-left: 10px;
|
231 |
+
}
|
232 |
+
#ac-page #checkout-payment-method-load #payment_form_gene_braintree_creditcard #credit-card-form li,
|
233 |
+
#ac-page #checkout-payment-method-load #payment_form_gene_braintree_paypal #credit-card-form li {
|
234 |
+
margin-bottom: 12px;
|
235 |
+
}
|
236 |
+
#ac-page #checkout-payment-method-load #payment_form_gene_braintree_creditcard #credit-card-form li > label,
|
237 |
+
#ac-page #checkout-payment-method-load #payment_form_gene_braintree_paypal #credit-card-form li > label {
|
238 |
+
margin-bottom: 6px;
|
239 |
+
display: block;
|
240 |
+
}
|
241 |
+
#ac-page #checkout-payment-method-load #payment_form_gene_braintree_creditcard #credit-card-form li .cvv-what-is-this,
|
242 |
+
#ac-page #checkout-payment-method-load #payment_form_gene_braintree_paypal #credit-card-form li .cvv-what-is-this {
|
243 |
+
top: -40px;
|
244 |
+
}
|
245 |
+
#ac-page #checkout-payment-method-load #payment_form_gene_braintree_creditcard #credit-card-form #gene_braintree_creditcard_store_in_vault_div label,
|
246 |
+
#ac-page #checkout-payment-method-load #payment_form_gene_braintree_paypal #credit-card-form #gene_braintree_creditcard_store_in_vault_div label {
|
247 |
+
display: inline;
|
248 |
+
}
|
249 |
+
#ac-page #checkout-payment-method-load #payment_form_gene_braintree_creditcard .paypal-info > p,
|
250 |
+
#ac-page #checkout-payment-method-load #payment_form_gene_braintree_paypal .paypal-info > p {
|
251 |
+
margin-bottom: 8px;
|
252 |
+
}
|
253 |
+
#paypal-complete {
|
254 |
+
float: right;
|
255 |
+
}
|
skin/frontend/base/default/css/gene/braintree/config.codekit
CHANGED
@@ -49,6 +49,15 @@
|
|
49 |
"outputPathIsOutsideProject": 0,
|
50 |
"outputPathIsSetByUser": 0
|
51 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
52 |
"\/core\/_general.less": {
|
53 |
"allowInsecureImports": 0,
|
54 |
"createSourceMap": 0,
|
@@ -140,13 +149,33 @@
|
|
140 |
},
|
141 |
"\/express.css": {
|
142 |
"fileType": 16,
|
143 |
-
"ignore":
|
144 |
"ignoreWasSetByUser": 0,
|
145 |
"inputAbbreviatedPath": "\/express.css",
|
146 |
"outputAbbreviatedPath": "No Output Path",
|
147 |
"outputPathIsOutsideProject": 0,
|
148 |
"outputPathIsSetByUser": 0
|
149 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
150 |
"\/firecheckout.css": {
|
151 |
"fileType": 16,
|
152 |
"ignore": 1,
|
@@ -183,7 +212,7 @@
|
|
183 |
"ignore": 0,
|
184 |
"ignoreWasSetByUser": 0,
|
185 |
"inputAbbreviatedPath": "\/integrations\/aheadworks.less",
|
186 |
-
"outputAbbreviatedPath": "\/aheadworks
|
187 |
"outputPathIsOutsideProject": 0,
|
188 |
"outputPathIsSetByUser": 1,
|
189 |
"outputStyle": 0,
|
@@ -203,7 +232,27 @@
|
|
203 |
"ignore": 0,
|
204 |
"ignoreWasSetByUser": 0,
|
205 |
"inputAbbreviatedPath": "\/integrations\/amasty.less",
|
206 |
-
"outputAbbreviatedPath": "\/amasty
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
207 |
"outputPathIsOutsideProject": 0,
|
208 |
"outputPathIsSetByUser": 1,
|
209 |
"outputStyle": 0,
|
@@ -223,7 +272,7 @@
|
|
223 |
"ignore": 0,
|
224 |
"ignoreWasSetByUser": 0,
|
225 |
"inputAbbreviatedPath": "\/integrations\/default.less",
|
226 |
-
"outputAbbreviatedPath": "\/default
|
227 |
"outputPathIsOutsideProject": 0,
|
228 |
"outputPathIsSetByUser": 1,
|
229 |
"outputStyle": 0,
|
@@ -241,9 +290,9 @@
|
|
241 |
"fileType": 1,
|
242 |
"ieCompatibility": 1,
|
243 |
"ignore": 0,
|
244 |
-
"ignoreWasSetByUser":
|
245 |
"inputAbbreviatedPath": "\/integrations\/firecheckout.less",
|
246 |
-
"outputAbbreviatedPath": "\/firecheckout
|
247 |
"outputPathIsOutsideProject": 0,
|
248 |
"outputPathIsSetByUser": 1,
|
249 |
"outputStyle": 0,
|
@@ -263,7 +312,7 @@
|
|
263 |
"ignore": 0,
|
264 |
"ignoreWasSetByUser": 0,
|
265 |
"inputAbbreviatedPath": "\/integrations\/fme.less",
|
266 |
-
"outputAbbreviatedPath": "\/fme
|
267 |
"outputPathIsOutsideProject": 0,
|
268 |
"outputPathIsSetByUser": 1,
|
269 |
"outputStyle": 0,
|
@@ -283,7 +332,7 @@
|
|
283 |
"ignore": 0,
|
284 |
"ignoreWasSetByUser": 0,
|
285 |
"inputAbbreviatedPath": "\/integrations\/idev.less",
|
286 |
-
"outputAbbreviatedPath": "\/idev
|
287 |
"outputPathIsOutsideProject": 0,
|
288 |
"outputPathIsSetByUser": 1,
|
289 |
"outputStyle": 0,
|
@@ -303,7 +352,7 @@
|
|
303 |
"ignore": 0,
|
304 |
"ignoreWasSetByUser": 0,
|
305 |
"inputAbbreviatedPath": "\/integrations\/iwd.less",
|
306 |
-
"outputAbbreviatedPath": "\/iwd
|
307 |
"outputPathIsOutsideProject": 0,
|
308 |
"outputPathIsSetByUser": 1,
|
309 |
"outputStyle": 0,
|
@@ -323,7 +372,7 @@
|
|
323 |
"ignore": 0,
|
324 |
"ignoreWasSetByUser": 0,
|
325 |
"inputAbbreviatedPath": "\/integrations\/magestore.less",
|
326 |
-
"outputAbbreviatedPath": "\/magestore
|
327 |
"outputPathIsOutsideProject": 0,
|
328 |
"outputPathIsSetByUser": 1,
|
329 |
"outputStyle": 0,
|
@@ -343,7 +392,7 @@
|
|
343 |
"ignore": 0,
|
344 |
"ignoreWasSetByUser": 0,
|
345 |
"inputAbbreviatedPath": "\/integrations\/oye.less",
|
346 |
-
"outputAbbreviatedPath": "\/oye
|
347 |
"outputPathIsOutsideProject": 0,
|
348 |
"outputPathIsSetByUser": 1,
|
349 |
"outputStyle": 0,
|
@@ -363,7 +412,7 @@
|
|
363 |
"ignore": 0,
|
364 |
"ignoreWasSetByUser": 0,
|
365 |
"inputAbbreviatedPath": "\/integrations\/unicode.less",
|
366 |
-
"outputAbbreviatedPath": "\/unicode
|
367 |
"outputPathIsOutsideProject": 0,
|
368 |
"outputPathIsSetByUser": 1,
|
369 |
"outputStyle": 0,
|
@@ -577,7 +626,7 @@
|
|
577 |
"coffeeMinifyOutput": 1,
|
578 |
"coffeeOutputStyle": 0,
|
579 |
"coffeeSyntaxCheckerStyle": 1,
|
580 |
-
"externalServerAddress": "http:\/\/braintree.dave.gene.co.uk\/",
|
581 |
"externalServerPreviewPathAddition": "",
|
582 |
"genericWebpageFileExtensionsString": "html, htm, shtml, shtm, xhtml, php, jsp, asp, aspx, erb, ctp",
|
583 |
"hamlAutoOutputPathEnabled": 1,
|
49 |
"outputPathIsOutsideProject": 0,
|
50 |
"outputPathIsSetByUser": 0
|
51 |
},
|
52 |
+
"\/awesomecheckout.css": {
|
53 |
+
"fileType": 16,
|
54 |
+
"ignore": 1,
|
55 |
+
"ignoreWasSetByUser": 0,
|
56 |
+
"inputAbbreviatedPath": "\/awesomecheckout.css",
|
57 |
+
"outputAbbreviatedPath": "No Output Path",
|
58 |
+
"outputPathIsOutsideProject": 0,
|
59 |
+
"outputPathIsSetByUser": 0
|
60 |
+
},
|
61 |
"\/core\/_general.less": {
|
62 |
"allowInsecureImports": 0,
|
63 |
"createSourceMap": 0,
|
149 |
},
|
150 |
"\/express.css": {
|
151 |
"fileType": 16,
|
152 |
+
"ignore": 1,
|
153 |
"ignoreWasSetByUser": 0,
|
154 |
"inputAbbreviatedPath": "\/express.css",
|
155 |
"outputAbbreviatedPath": "No Output Path",
|
156 |
"outputPathIsOutsideProject": 0,
|
157 |
"outputPathIsSetByUser": 0
|
158 |
},
|
159 |
+
"\/express.less": {
|
160 |
+
"allowInsecureImports": 0,
|
161 |
+
"createSourceMap": 0,
|
162 |
+
"disableJavascript": 0,
|
163 |
+
"fileType": 1,
|
164 |
+
"ieCompatibility": 1,
|
165 |
+
"ignore": 0,
|
166 |
+
"ignoreWasSetByUser": 0,
|
167 |
+
"inputAbbreviatedPath": "\/express.less",
|
168 |
+
"outputAbbreviatedPath": "\/express.css",
|
169 |
+
"outputPathIsOutsideProject": 0,
|
170 |
+
"outputPathIsSetByUser": 1,
|
171 |
+
"outputStyle": 0,
|
172 |
+
"relativeURLS": 0,
|
173 |
+
"shouldRunAutoprefixer": 0,
|
174 |
+
"shouldRunBless": 0,
|
175 |
+
"strictImports": 0,
|
176 |
+
"strictMath": 0,
|
177 |
+
"strictUnits": 0
|
178 |
+
},
|
179 |
"\/firecheckout.css": {
|
180 |
"fileType": 16,
|
181 |
"ignore": 1,
|
212 |
"ignore": 0,
|
213 |
"ignoreWasSetByUser": 0,
|
214 |
"inputAbbreviatedPath": "\/integrations\/aheadworks.less",
|
215 |
+
"outputAbbreviatedPath": "\/aheadworks.css",
|
216 |
"outputPathIsOutsideProject": 0,
|
217 |
"outputPathIsSetByUser": 1,
|
218 |
"outputStyle": 0,
|
232 |
"ignore": 0,
|
233 |
"ignoreWasSetByUser": 0,
|
234 |
"inputAbbreviatedPath": "\/integrations\/amasty.less",
|
235 |
+
"outputAbbreviatedPath": "\/amasty.css",
|
236 |
+
"outputPathIsOutsideProject": 0,
|
237 |
+
"outputPathIsSetByUser": 1,
|
238 |
+
"outputStyle": 0,
|
239 |
+
"relativeURLS": 0,
|
240 |
+
"shouldRunAutoprefixer": 0,
|
241 |
+
"shouldRunBless": 0,
|
242 |
+
"strictImports": 0,
|
243 |
+
"strictMath": 0,
|
244 |
+
"strictUnits": 0
|
245 |
+
},
|
246 |
+
"\/integrations\/awesomecheckout.less": {
|
247 |
+
"allowInsecureImports": 0,
|
248 |
+
"createSourceMap": 0,
|
249 |
+
"disableJavascript": 0,
|
250 |
+
"fileType": 1,
|
251 |
+
"ieCompatibility": 1,
|
252 |
+
"ignore": 0,
|
253 |
+
"ignoreWasSetByUser": 0,
|
254 |
+
"inputAbbreviatedPath": "\/integrations\/awesomecheckout.less",
|
255 |
+
"outputAbbreviatedPath": "\/awesomecheckout.css",
|
256 |
"outputPathIsOutsideProject": 0,
|
257 |
"outputPathIsSetByUser": 1,
|
258 |
"outputStyle": 0,
|
272 |
"ignore": 0,
|
273 |
"ignoreWasSetByUser": 0,
|
274 |
"inputAbbreviatedPath": "\/integrations\/default.less",
|
275 |
+
"outputAbbreviatedPath": "\/default.css",
|
276 |
"outputPathIsOutsideProject": 0,
|
277 |
"outputPathIsSetByUser": 1,
|
278 |
"outputStyle": 0,
|
290 |
"fileType": 1,
|
291 |
"ieCompatibility": 1,
|
292 |
"ignore": 0,
|
293 |
+
"ignoreWasSetByUser": 1,
|
294 |
"inputAbbreviatedPath": "\/integrations\/firecheckout.less",
|
295 |
+
"outputAbbreviatedPath": "\/firecheckout.css",
|
296 |
"outputPathIsOutsideProject": 0,
|
297 |
"outputPathIsSetByUser": 1,
|
298 |
"outputStyle": 0,
|
312 |
"ignore": 0,
|
313 |
"ignoreWasSetByUser": 0,
|
314 |
"inputAbbreviatedPath": "\/integrations\/fme.less",
|
315 |
+
"outputAbbreviatedPath": "\/fme.css",
|
316 |
"outputPathIsOutsideProject": 0,
|
317 |
"outputPathIsSetByUser": 1,
|
318 |
"outputStyle": 0,
|
332 |
"ignore": 0,
|
333 |
"ignoreWasSetByUser": 0,
|
334 |
"inputAbbreviatedPath": "\/integrations\/idev.less",
|
335 |
+
"outputAbbreviatedPath": "\/idev.css",
|
336 |
"outputPathIsOutsideProject": 0,
|
337 |
"outputPathIsSetByUser": 1,
|
338 |
"outputStyle": 0,
|
352 |
"ignore": 0,
|
353 |
"ignoreWasSetByUser": 0,
|
354 |
"inputAbbreviatedPath": "\/integrations\/iwd.less",
|
355 |
+
"outputAbbreviatedPath": "\/iwd.css",
|
356 |
"outputPathIsOutsideProject": 0,
|
357 |
"outputPathIsSetByUser": 1,
|
358 |
"outputStyle": 0,
|
372 |
"ignore": 0,
|
373 |
"ignoreWasSetByUser": 0,
|
374 |
"inputAbbreviatedPath": "\/integrations\/magestore.less",
|
375 |
+
"outputAbbreviatedPath": "\/magestore.css",
|
376 |
"outputPathIsOutsideProject": 0,
|
377 |
"outputPathIsSetByUser": 1,
|
378 |
"outputStyle": 0,
|
392 |
"ignore": 0,
|
393 |
"ignoreWasSetByUser": 0,
|
394 |
"inputAbbreviatedPath": "\/integrations\/oye.less",
|
395 |
+
"outputAbbreviatedPath": "\/oye.css",
|
396 |
"outputPathIsOutsideProject": 0,
|
397 |
"outputPathIsSetByUser": 1,
|
398 |
"outputStyle": 0,
|
412 |
"ignore": 0,
|
413 |
"ignoreWasSetByUser": 0,
|
414 |
"inputAbbreviatedPath": "\/integrations\/unicode.less",
|
415 |
+
"outputAbbreviatedPath": "\/unicode.css",
|
416 |
"outputPathIsOutsideProject": 0,
|
417 |
"outputPathIsSetByUser": 1,
|
418 |
"outputStyle": 0,
|
626 |
"coffeeMinifyOutput": 1,
|
627 |
"coffeeOutputStyle": 0,
|
628 |
"coffeeSyntaxCheckerStyle": 1,
|
629 |
+
"externalServerAddress": "http:\/\/default.braintree.dave.gene.co.uk\/",
|
630 |
"externalServerPreviewPathAddition": "",
|
631 |
"genericWebpageFileExtensionsString": "html, htm, shtml, shtm, xhtml, php, jsp, asp, aspx, erb, ctp",
|
632 |
"hamlAutoOutputPathEnabled": 1,
|
skin/frontend/base/default/css/gene/braintree/core/_general.less
CHANGED
@@ -1,5 +1,5 @@
|
|
1 |
/* Accepted Cards */
|
2 |
#braintree-accepted-cards img {
|
3 |
-
|
4 |
margin-right: 4px;
|
5 |
}
|
1 |
/* Accepted Cards */
|
2 |
#braintree-accepted-cards img {
|
3 |
+
display: inline-block;
|
4 |
margin-right: 4px;
|
5 |
}
|
skin/frontend/base/default/css/gene/braintree/default.css
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
/* Accepted Cards */
|
2 |
#braintree-accepted-cards img {
|
3 |
-
|
4 |
margin-right: 4px;
|
5 |
}
|
6 |
/* Hosted Fields Loading State */
|
1 |
/* Accepted Cards */
|
2 |
#braintree-accepted-cards img {
|
3 |
+
display: inline-block;
|
4 |
margin-right: 4px;
|
5 |
}
|
6 |
/* Hosted Fields Loading State */
|
skin/frontend/base/default/css/gene/braintree/express.css
CHANGED
@@ -1,119 +1,131 @@
|
|
1 |
#pp-express-overlay {
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
}
|
11 |
-
|
12 |
#pp-express-modal {
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
overflow: auto;
|
29 |
-
}
|
30 |
-
|
31 |
-
@media (max-width: 770px) {
|
32 |
-
#pp-express-modal {
|
33 |
-
width: 70%;
|
34 |
-
height: 80%;
|
35 |
-
top: 10%;
|
36 |
-
left: 15%;
|
37 |
-
}
|
38 |
-
}
|
39 |
-
|
40 |
-
@media (max-width: 500px) {
|
41 |
-
#pp-express-modal {
|
42 |
-
width: 100%;
|
43 |
-
height: 100%;
|
44 |
-
top: 0;
|
45 |
-
left: 0;
|
46 |
-
border: none;
|
47 |
-
border-radius: 0;
|
48 |
-
padding: 25px;
|
49 |
-
}
|
50 |
-
}
|
51 |
-
|
52 |
-
#pp-express-modal.loading:before {
|
53 |
-
content: " ";
|
54 |
-
background: url('../../../images/gene/loader.gif') no-repeat;
|
55 |
-
height: 48px;
|
56 |
-
width: 48px;
|
57 |
-
position: absolute;
|
58 |
-
top: 30%;
|
59 |
-
left: 44%;
|
60 |
-
left: calc(50% - 24px);
|
61 |
-
}
|
62 |
-
|
63 |
#pp-express-modal .button {
|
64 |
-
|
65 |
-
|
66 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
67 |
}
|
68 |
-
|
69 |
#pp-express-modal .button2 {
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
}
|
75 |
-
|
76 |
#pp-express-modal .product-row {
|
77 |
-
|
78 |
-
|
79 |
}
|
80 |
-
|
81 |
#pp-express-modal .item-row {
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
|
|
|
|
|
|
|
|
86 |
}
|
87 |
-
|
88 |
#pp-express-modal .item-subrow {
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
}
|
93 |
-
|
94 |
#pp-express-modal .product-image {
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
}
|
101 |
#pp-express-modal .product-image img {
|
102 |
-
|
103 |
}
|
104 |
-
|
105 |
#pp-express-modal .product-info {
|
106 |
-
|
107 |
-
|
108 |
}
|
109 |
-
|
110 |
#pp-express-modal .product-qty {
|
111 |
-
|
112 |
}
|
113 |
-
|
114 |
#pp-express-modal #shopping-cart-totals-table {
|
115 |
-
|
116 |
}
|
117 |
#pp-express-modal #shopping-cart-totals-table td {
|
118 |
-
|
119 |
-
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
#pp-express-overlay {
|
2 |
+
display: none;
|
3 |
+
position: fixed;
|
4 |
+
top: 0;
|
5 |
+
left: 0;
|
6 |
+
right: 0;
|
7 |
+
bottom: 0;
|
8 |
+
z-index: 100;
|
9 |
+
background: rgba(0, 0, 0, 0.701961);
|
10 |
}
|
|
|
11 |
#pp-express-modal {
|
12 |
+
box-sizing: border-box;
|
13 |
+
display: none;
|
14 |
+
position: fixed;
|
15 |
+
top: 20%;
|
16 |
+
left: 40%;
|
17 |
+
left: calc(50% - 175px);
|
18 |
+
z-index: 101;
|
19 |
+
width: 350px;
|
20 |
+
height: 390px;
|
21 |
+
padding: 15px;
|
22 |
+
background: #fff;
|
23 |
+
border: 3px solid #ccc;
|
24 |
+
border-radius: 4px;
|
25 |
+
overflow: auto;
|
26 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
#pp-express-modal .button {
|
28 |
+
display: block;
|
29 |
+
width: 100%;
|
30 |
+
margin-top: 30px;
|
31 |
+
}
|
32 |
+
#pp-express-modal .button.coupon-submit {
|
33 |
+
margin: 0;
|
34 |
+
float: right;
|
35 |
+
width: 50%;
|
36 |
+
box-sizing: border-box;
|
37 |
+
}
|
38 |
+
#pp-express-modal .button.loading {
|
39 |
+
background-image: url('../../../images/gene/loader-transparent.gif');
|
40 |
+
background-repeat: no-repeat;
|
41 |
+
background-position: center center;
|
42 |
+
background-size: auto 60%;
|
43 |
+
text-indent: -9999px;
|
44 |
+
}
|
45 |
+
#pp-express-modal #paypal-express-coupon {
|
46 |
+
float: left;
|
47 |
+
width: 50%;
|
48 |
+
box-sizing: border-box;
|
49 |
+
height: 33px;
|
50 |
+
line-height: 33px;
|
51 |
+
}
|
52 |
+
#pp-express-modal #paypal-express-coupon-error {
|
53 |
+
margin-bottom: 6px;
|
54 |
}
|
|
|
55 |
#pp-express-modal .button2 {
|
56 |
+
display: block;
|
57 |
+
width: 100%;
|
58 |
+
margin-top: 6px;
|
59 |
+
font-size: 0.9rem;
|
60 |
}
|
|
|
61 |
#pp-express-modal .product-row {
|
62 |
+
min-height: 60px;
|
63 |
+
margin: 0;
|
64 |
}
|
|
|
65 |
#pp-express-modal .item-row {
|
66 |
+
border-bottom: 1px solid #ccc;
|
67 |
+
padding-bottom: 10px;
|
68 |
+
margin-bottom: 10px;
|
69 |
+
display: block;
|
70 |
+
}
|
71 |
+
#pp-express-modal .item-row.coupon-row {
|
72 |
+
float: left;
|
73 |
+
width: 100%;
|
74 |
}
|
|
|
75 |
#pp-express-modal .item-subrow {
|
76 |
+
margin-top: 5px;
|
77 |
+
margin-bottom: 5px;
|
78 |
+
display: block;
|
79 |
}
|
|
|
80 |
#pp-express-modal .product-image {
|
81 |
+
float: left;
|
82 |
+
width: 50px;
|
83 |
+
height: 50px;
|
84 |
+
margin: 0;
|
85 |
+
overflow: hidden;
|
86 |
}
|
87 |
#pp-express-modal .product-image img {
|
88 |
+
max-width: 100%;
|
89 |
}
|
|
|
90 |
#pp-express-modal .product-info {
|
91 |
+
margin-left: 60px;
|
92 |
+
padding-top: 5px;
|
93 |
}
|
|
|
94 |
#pp-express-modal .product-qty {
|
95 |
+
font-size: 0.8rem;
|
96 |
}
|
|
|
97 |
#pp-express-modal #shopping-cart-totals-table {
|
98 |
+
width: 100%;
|
99 |
}
|
100 |
#pp-express-modal #shopping-cart-totals-table td {
|
101 |
+
padding-left: 10px;
|
102 |
+
}
|
103 |
+
#pp-express-modal.loading:before {
|
104 |
+
content: " ";
|
105 |
+
background: url('../../../images/gene/loader.gif') no-repeat;
|
106 |
+
height: 48px;
|
107 |
+
width: 48px;
|
108 |
+
position: absolute;
|
109 |
+
top: 30%;
|
110 |
+
left: 44%;
|
111 |
+
left: calc(50% - 24px);
|
112 |
+
}
|
113 |
+
@media (max-width: 770px) {
|
114 |
+
#pp-express-modal {
|
115 |
+
width: 70%;
|
116 |
+
height: 80%;
|
117 |
+
top: 10%;
|
118 |
+
left: 15%;
|
119 |
+
}
|
120 |
+
}
|
121 |
+
@media (max-width: 500px) {
|
122 |
+
#pp-express-modal {
|
123 |
+
width: 100%;
|
124 |
+
height: 100%;
|
125 |
+
top: 0;
|
126 |
+
left: 0;
|
127 |
+
border: none;
|
128 |
+
border-radius: 0;
|
129 |
+
padding: 25px;
|
130 |
+
}
|
131 |
+
}
|
skin/frontend/base/default/css/gene/braintree/express.less
ADDED
@@ -0,0 +1,136 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
#pp-express-overlay {
|
3 |
+
display: none;
|
4 |
+
position: fixed;
|
5 |
+
top: 0;
|
6 |
+
left: 0;
|
7 |
+
right: 0;
|
8 |
+
bottom: 0;
|
9 |
+
z-index: 100;
|
10 |
+
background: rgba(0, 0, 0, 0.701961);
|
11 |
+
}
|
12 |
+
#pp-express-modal {
|
13 |
+
box-sizing: border-box;
|
14 |
+
display: none;
|
15 |
+
position: fixed;
|
16 |
+
top: 20%;
|
17 |
+
left: 40%;
|
18 |
+
left: ~"calc(50% - 175px)";
|
19 |
+
z-index: 101;
|
20 |
+
width: 350px;
|
21 |
+
height: 390px;
|
22 |
+
padding: 15px;
|
23 |
+
background: #fff;
|
24 |
+
border: 3px solid #ccc;
|
25 |
+
border-radius: 4px;
|
26 |
+
overflow: auto;
|
27 |
+
.button {
|
28 |
+
display: block;
|
29 |
+
width: 100%;
|
30 |
+
margin-top: 30px;
|
31 |
+
|
32 |
+
&.coupon-submit {
|
33 |
+
margin: 0;
|
34 |
+
float: right;
|
35 |
+
width: 50%;
|
36 |
+
box-sizing: border-box;
|
37 |
+
}
|
38 |
+
&.loading {
|
39 |
+
background-image: url('../../../images/gene/loader-transparent.gif');
|
40 |
+
background-repeat: no-repeat;
|
41 |
+
background-position: center center;
|
42 |
+
background-size: auto 60%;
|
43 |
+
text-indent: -9999px;
|
44 |
+
}
|
45 |
+
}
|
46 |
+
#paypal-express-coupon {
|
47 |
+
float: left;
|
48 |
+
width: 50%;
|
49 |
+
box-sizing: border-box;
|
50 |
+
height: 33px;
|
51 |
+
line-height: 33px;
|
52 |
+
}
|
53 |
+
#paypal-express-coupon-error {
|
54 |
+
margin-bottom: 6px;
|
55 |
+
}
|
56 |
+
.button2 {
|
57 |
+
display: block;
|
58 |
+
width: 100%;
|
59 |
+
margin-top: 6px;
|
60 |
+
font-size: 0.9rem;
|
61 |
+
}
|
62 |
+
.product-row {
|
63 |
+
min-height: 60px;
|
64 |
+
margin: 0;
|
65 |
+
}
|
66 |
+
.item-row {
|
67 |
+
border-bottom: 1px solid #ccc;
|
68 |
+
padding-bottom: 10px;
|
69 |
+
margin-bottom: 10px;
|
70 |
+
display: block;
|
71 |
+
|
72 |
+
&.coupon-row {
|
73 |
+
float: left;
|
74 |
+
width: 100%;
|
75 |
+
}
|
76 |
+
}
|
77 |
+
.item-subrow {
|
78 |
+
margin-top: 5px;
|
79 |
+
margin-bottom: 5px;
|
80 |
+
display: block;
|
81 |
+
}
|
82 |
+
.product-image {
|
83 |
+
float: left;
|
84 |
+
width: 50px;
|
85 |
+
height: 50px;
|
86 |
+
margin: 0;
|
87 |
+
overflow: hidden;
|
88 |
+
img {
|
89 |
+
max-width: 100%;
|
90 |
+
}
|
91 |
+
}
|
92 |
+
.product-info {
|
93 |
+
margin-left: 60px;
|
94 |
+
padding-top: 5px;
|
95 |
+
}
|
96 |
+
.product-qty {
|
97 |
+
font-size: 0.8rem;
|
98 |
+
}
|
99 |
+
#shopping-cart-totals-table {
|
100 |
+
width: 100%;
|
101 |
+
td {
|
102 |
+
padding-left: 10px;
|
103 |
+
}
|
104 |
+
}
|
105 |
+
}
|
106 |
+
#pp-express-modal.loading {
|
107 |
+
&:before {
|
108 |
+
content: " ";
|
109 |
+
background: url('../../../images/gene/loader.gif') no-repeat;
|
110 |
+
height: 48px;
|
111 |
+
width: 48px;
|
112 |
+
position: absolute;
|
113 |
+
top: 30%;
|
114 |
+
left: 44%;
|
115 |
+
left: ~"calc(50% - 24px)";
|
116 |
+
}
|
117 |
+
}
|
118 |
+
@media (max-width: 770px) {
|
119 |
+
#pp-express-modal {
|
120 |
+
width: 70%;
|
121 |
+
height: 80%;
|
122 |
+
top: 10%;
|
123 |
+
left: 15%;
|
124 |
+
}
|
125 |
+
}
|
126 |
+
@media (max-width: 500px) {
|
127 |
+
#pp-express-modal {
|
128 |
+
width: 100%;
|
129 |
+
height: 100%;
|
130 |
+
top: 0;
|
131 |
+
left: 0;
|
132 |
+
border: none;
|
133 |
+
border-radius: 0;
|
134 |
+
padding: 25px;
|
135 |
+
}
|
136 |
+
}
|
skin/frontend/base/default/css/gene/braintree/firecheckout.css
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
/* Accepted Cards */
|
2 |
#braintree-accepted-cards img {
|
3 |
-
|
4 |
margin-right: 4px;
|
5 |
}
|
6 |
/* Hosted Fields Loading State */
|
@@ -217,3 +217,23 @@ label[for="gene_braintree_paypal_store_in_vault"] {
|
|
217 |
padding-top: 6px;
|
218 |
padding-bottom: 6px;
|
219 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
/* Accepted Cards */
|
2 |
#braintree-accepted-cards img {
|
3 |
+
display: inline-block;
|
4 |
margin-right: 4px;
|
5 |
}
|
6 |
/* Hosted Fields Loading State */
|
217 |
padding-top: 6px;
|
218 |
padding-bottom: 6px;
|
219 |
}
|
220 |
+
#payment_form_gene_braintree_paypal label,
|
221 |
+
#payment_form_gene_braintree_creditcard label {
|
222 |
+
float: left;
|
223 |
+
width: 100%;
|
224 |
+
margin-bottom: 4px;
|
225 |
+
}
|
226 |
+
#payment_form_gene_braintree_paypal .braintree-card-input-field,
|
227 |
+
#payment_form_gene_braintree_creditcard .braintree-card-input-field {
|
228 |
+
float: left;
|
229 |
+
width: 100%;
|
230 |
+
}
|
231 |
+
#payment_form_gene_braintree_paypal #cvv,
|
232 |
+
#payment_form_gene_braintree_creditcard #cvv {
|
233 |
+
float: left;
|
234 |
+
}
|
235 |
+
#payment_form_gene_braintree_paypal a.cvv-what-is-this,
|
236 |
+
#payment_form_gene_braintree_creditcard a.cvv-what-is-this {
|
237 |
+
display: block;
|
238 |
+
clear: both;
|
239 |
+
}
|
skin/frontend/base/default/css/gene/braintree/fme.css
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
/* Accepted Cards */
|
2 |
#braintree-accepted-cards img {
|
3 |
-
|
4 |
margin-right: 4px;
|
5 |
}
|
6 |
/* Hosted Fields Loading State */
|
1 |
/* Accepted Cards */
|
2 |
#braintree-accepted-cards img {
|
3 |
+
display: inline-block;
|
4 |
margin-right: 4px;
|
5 |
}
|
6 |
/* Hosted Fields Loading State */
|
skin/frontend/base/default/css/gene/braintree/idev.css
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
/* Accepted Cards */
|
2 |
#braintree-accepted-cards img {
|
3 |
-
|
4 |
margin-right: 4px;
|
5 |
}
|
6 |
/* Hosted Fields Loading State */
|
1 |
/* Accepted Cards */
|
2 |
#braintree-accepted-cards img {
|
3 |
+
display: inline-block;
|
4 |
margin-right: 4px;
|
5 |
}
|
6 |
/* Hosted Fields Loading State */
|
skin/frontend/base/default/css/gene/braintree/integrations/awesomecheckout.less
ADDED
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
@import '../core/_general';
|
2 |
+
@import '../core/_hostedfields';
|
3 |
+
@import '../core/_paypal';
|
4 |
+
@import '../core/_saved';
|
5 |
+
|
6 |
+
#ac-page #checkout-payment-method-load {
|
7 |
+
#payment_form_gene_braintree_creditcard, #payment_form_gene_braintree_paypal {
|
8 |
+
padding: 12px 0;
|
9 |
+
> label {
|
10 |
+
font-weight: bold;
|
11 |
+
}
|
12 |
+
> p {
|
13 |
+
margin-top: 6px;
|
14 |
+
}
|
15 |
+
|
16 |
+
#creditcard-saved-accounts, #paypal-saved-accounts {
|
17 |
+
font-size: inherit!important;
|
18 |
+
margin: 8px 0;
|
19 |
+
|
20 |
+
tr {
|
21 |
+
td {
|
22 |
+
padding: 6px 0;
|
23 |
+
}
|
24 |
+
}
|
25 |
+
|
26 |
+
label {
|
27 |
+
.saved-card-info {
|
28 |
+
margin-left: 10px;
|
29 |
+
}
|
30 |
+
}
|
31 |
+
}
|
32 |
+
|
33 |
+
#credit-card-form {
|
34 |
+
li {
|
35 |
+
margin-bottom: 12px;
|
36 |
+
|
37 |
+
> label {
|
38 |
+
margin-bottom: 6px;
|
39 |
+
display: block;
|
40 |
+
}
|
41 |
+
|
42 |
+
.cvv-what-is-this {
|
43 |
+
top: -40px;
|
44 |
+
}
|
45 |
+
}
|
46 |
+
#gene_braintree_creditcard_store_in_vault_div {
|
47 |
+
label {
|
48 |
+
display: inline;
|
49 |
+
}
|
50 |
+
}
|
51 |
+
}
|
52 |
+
|
53 |
+
.paypal-info {
|
54 |
+
>p {
|
55 |
+
margin-bottom: 8px;
|
56 |
+
}
|
57 |
+
}
|
58 |
+
}
|
59 |
+
}
|
60 |
+
|
61 |
+
#paypal-complete {
|
62 |
+
float: right;
|
63 |
+
}
|
skin/frontend/base/default/css/gene/braintree/integrations/firecheckout.less
CHANGED
@@ -21,4 +21,21 @@
|
|
21 |
#payment_form_gene_braintree_paypal, #payment_form_gene_braintree_creditcard {
|
22 |
padding-top: 6px;
|
23 |
padding-bottom: 6px;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
24 |
}
|
21 |
#payment_form_gene_braintree_paypal, #payment_form_gene_braintree_creditcard {
|
22 |
padding-top: 6px;
|
23 |
padding-bottom: 6px;
|
24 |
+
|
25 |
+
label {
|
26 |
+
float: left;
|
27 |
+
width: 100%;
|
28 |
+
margin-bottom: 4px;
|
29 |
+
}
|
30 |
+
.braintree-card-input-field {
|
31 |
+
float: left;
|
32 |
+
width: 100%;
|
33 |
+
}
|
34 |
+
#cvv {
|
35 |
+
float: left;
|
36 |
+
}
|
37 |
+
a.cvv-what-is-this {
|
38 |
+
display: block;
|
39 |
+
clear: both;
|
40 |
+
}
|
41 |
}
|
skin/frontend/base/default/css/gene/braintree/iwd.css
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
/* Accepted Cards */
|
2 |
#braintree-accepted-cards img {
|
3 |
-
|
4 |
margin-right: 4px;
|
5 |
}
|
6 |
/* Hosted Fields Loading State */
|
1 |
/* Accepted Cards */
|
2 |
#braintree-accepted-cards img {
|
3 |
+
display: inline-block;
|
4 |
margin-right: 4px;
|
5 |
}
|
6 |
/* Hosted Fields Loading State */
|
skin/frontend/base/default/css/gene/braintree/magestore.css
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
/* Accepted Cards */
|
2 |
#braintree-accepted-cards img {
|
3 |
-
|
4 |
margin-right: 4px;
|
5 |
}
|
6 |
/* Hosted Fields Loading State */
|
1 |
/* Accepted Cards */
|
2 |
#braintree-accepted-cards img {
|
3 |
+
display: inline-block;
|
4 |
margin-right: 4px;
|
5 |
}
|
6 |
/* Hosted Fields Loading State */
|
skin/frontend/base/default/css/gene/braintree/oye.css
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
/* Accepted Cards */
|
2 |
#braintree-accepted-cards img {
|
3 |
-
|
4 |
margin-right: 4px;
|
5 |
}
|
6 |
/* Hosted Fields Loading State */
|
1 |
/* Accepted Cards */
|
2 |
#braintree-accepted-cards img {
|
3 |
+
display: inline-block;
|
4 |
margin-right: 4px;
|
5 |
}
|
6 |
/* Hosted Fields Loading State */
|
skin/frontend/base/default/css/gene/braintree/unicode.css
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
/* Accepted Cards */
|
2 |
#braintree-accepted-cards img {
|
3 |
-
|
4 |
margin-right: 4px;
|
5 |
}
|
6 |
/* Hosted Fields Loading State */
|
1 |
/* Accepted Cards */
|
2 |
#braintree-accepted-cards img {
|
3 |
+
display: inline-block;
|
4 |
margin-right: 4px;
|
5 |
}
|
6 |
/* Hosted Fields Loading State */
|