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 | 1.0.2 |
Comparing to | |
See all releases |
Code changes from version 1.0.1 to 1.0.2
- app/code/community/Gene/Braintree/Block/Creditcard/Info.php +19 -9
- app/code/community/Gene/Braintree/Block/Creditcard/Threedsecure.php +3 -3
- app/code/community/Gene/Braintree/Block/Js.php +2 -7
- app/code/community/Gene/Braintree/Model/Paymentmethod/Abstract.php +34 -0
- app/code/community/Gene/Braintree/Model/Paymentmethod/Creditcard.php +41 -17
- app/code/community/Gene/Braintree/Model/Paymentmethod/Paypal.php +3 -0
- app/code/community/Gene/Braintree/Model/System/Config/Backend/Currency.php +2 -2
- app/code/community/Gene/Braintree/Model/Wrapper/Braintree.php +41 -22
- app/code/community/Gene/Braintree/controllers/CheckoutController.php +27 -3
- app/code/community/Gene/Braintree/etc/config.xml +3 -1
- app/code/community/Gene/Braintree/etc/system.xml +17 -2
- app/design/adminhtml/default/default/template/gene/braintree/js.phtml +1 -1
- app/design/frontend/base/default/template/gene/braintree/creditcard.phtml +8 -0
- app/design/frontend/base/default/template/gene/braintree/js/amasty.phtml +57 -41
- app/design/frontend/base/default/template/gene/braintree/js/idev.phtml +51 -34
- js/gene/braintree/vzero.js +33 -11
- package.xml +4 -4
app/code/community/Gene/Braintree/Block/Creditcard/Info.php
CHANGED
@@ -28,7 +28,13 @@ class Gene_Braintree_Block_Creditcard_Info extends Mage_Payment_Block_Info
|
|
28 |
return Mage::registry('current_order');
|
29 |
} else if(Mage::registry('current_invoice')) {
|
30 |
return Mage::registry('current_invoice')->getOrder();
|
|
|
|
|
|
|
|
|
31 |
}
|
|
|
|
|
32 |
}
|
33 |
|
34 |
/**
|
@@ -55,16 +61,20 @@ class Gene_Braintree_Block_Creditcard_Info extends Mage_Payment_Block_Info
|
|
55 |
// Transaction ID won't matter for customers
|
56 |
$data[$this->__('Braintree Transaction ID')] = $this->getInfo()->getLastTransId();
|
57 |
|
58 |
-
//
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
}
|
66 |
-
} catch (Exception $e) {
|
67 |
-
$data[$this->__('Status')] = $this->__('<span style="color:red;"><strong>Warning:</strong> Unable to connect to Braintree to load transaction.</span>');
|
68 |
}
|
69 |
|
70 |
// What additional information should we show
|
28 |
return Mage::registry('current_order');
|
29 |
} else if(Mage::registry('current_invoice')) {
|
30 |
return Mage::registry('current_invoice')->getOrder();
|
31 |
+
} else if(Mage::registry('current_shipment')) {
|
32 |
+
return Mage::registry('current_shipment')->getOrder();
|
33 |
+
} else if(Mage::registry('current_creditmemo')) {
|
34 |
+
return Mage::registry('current_creditmemo')->getOrder();
|
35 |
}
|
36 |
+
|
37 |
+
return false;
|
38 |
}
|
39 |
|
40 |
/**
|
61 |
// Transaction ID won't matter for customers
|
62 |
$data[$this->__('Braintree Transaction ID')] = $this->getInfo()->getLastTransId();
|
63 |
|
64 |
+
// Only display transaction if we can load the order
|
65 |
+
if($this->getOrder()) {
|
66 |
+
|
67 |
+
// Add in the current status
|
68 |
+
try {
|
69 |
+
$transaction = Mage::getModel('gene_braintree/wrapper_braintree')->init($this->getOrder()->getStoreId())->findTransaction($this->getInfo()->getLastTransId());
|
70 |
+
if ($transaction) {
|
71 |
+
$data[$this->__('Status')] = $this->convertStatus($transaction->status);
|
72 |
+
} else {
|
73 |
+
$data[$this->__('Status')] = $this->__('<span style="color:red;"><strong>Warning:</strong> Cannot load payment in Braintree.</span>');
|
74 |
+
}
|
75 |
+
} catch (Exception $e) {
|
76 |
+
$data[$this->__('Status')] = $this->__('<span style="color:red;"><strong>Warning:</strong> Unable to connect to Braintree to load transaction.</span>');
|
77 |
}
|
|
|
|
|
78 |
}
|
79 |
|
80 |
// What additional information should we show
|
app/code/community/Gene/Braintree/Block/Creditcard/Threedsecure.php
CHANGED
@@ -15,9 +15,9 @@ class Gene_Braintree_Block_Creditcard_Threedsecure extends Mage_Core_Block_Templ
|
|
15 |
protected function _toHtml()
|
16 |
{
|
17 |
// Check the payment method is active
|
18 |
-
if (Mage::
|
19 |
-
|
20 |
-
|
21 |
return parent::_toHtml();
|
22 |
}
|
23 |
|
15 |
protected function _toHtml()
|
16 |
{
|
17 |
// Check the payment method is active
|
18 |
+
if (Mage::getSingleton('gene_braintree/paymentmethod_creditcard')->isAvailable()) {
|
19 |
+
|
20 |
+
// Due to the introduction of the 3Ds threshold we need this block to always be present
|
21 |
return parent::_toHtml();
|
22 |
}
|
23 |
|
app/code/community/Gene/Braintree/Block/Js.php
CHANGED
@@ -52,16 +52,11 @@ class Gene_Braintree_Block_Js extends Mage_Core_Block_Template
|
|
52 |
/**
|
53 |
* is 3D secure enabled?
|
54 |
*
|
55 |
-
* @return
|
56 |
*/
|
57 |
protected function is3DEnabled()
|
58 |
{
|
59 |
-
|
60 |
-
if(Mage::getModel('gene_braintree/paymentmethod_creditcard')->is3DEnabled()) {
|
61 |
-
return 1;
|
62 |
-
} else {
|
63 |
-
return 0;
|
64 |
-
}
|
65 |
}
|
66 |
|
67 |
/**
|
52 |
/**
|
53 |
* is 3D secure enabled?
|
54 |
*
|
55 |
+
* @return string
|
56 |
*/
|
57 |
protected function is3DEnabled()
|
58 |
{
|
59 |
+
return var_export(Mage::getModel('gene_braintree/paymentmethod_creditcard')->is3DEnabled(), true);
|
|
|
|
|
|
|
|
|
|
|
60 |
}
|
61 |
|
62 |
/**
|
app/code/community/Gene/Braintree/Model/Paymentmethod/Abstract.php
CHANGED
@@ -7,6 +7,11 @@
|
|
7 |
*/
|
8 |
abstract class Gene_Braintree_Model_Paymentmethod_Abstract extends Mage_Payment_Model_Method_Abstract
|
9 |
{
|
|
|
|
|
|
|
|
|
|
|
10 |
|
11 |
/**
|
12 |
* Verify that the module has been setup
|
@@ -72,4 +77,33 @@ abstract class Gene_Braintree_Model_Paymentmethod_Abstract extends Mage_Payment_
|
|
72 |
return $this->_getConfig('use_vault');
|
73 |
}
|
74 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
75 |
}
|
7 |
*/
|
8 |
abstract class Gene_Braintree_Model_Paymentmethod_Abstract extends Mage_Payment_Model_Method_Abstract
|
9 |
{
|
10 |
+
/**
|
11 |
+
* The decision responses from braintree
|
12 |
+
*/
|
13 |
+
const ADVANCED_FRAUD_REVIEW = 'Review';
|
14 |
+
const ADVANCED_FRAUD_DECLINE = 'Decline';
|
15 |
|
16 |
/**
|
17 |
* Verify that the module has been setup
|
77 |
return $this->_getConfig('use_vault');
|
78 |
}
|
79 |
|
80 |
+
/**
|
81 |
+
* Handle any risk decision returned from Braintree
|
82 |
+
*
|
83 |
+
* @param $result
|
84 |
+
* @param \Varien_Object $payment
|
85 |
+
*
|
86 |
+
* @return $this
|
87 |
+
*/
|
88 |
+
protected function handleFraud($result, Varien_Object $payment)
|
89 |
+
{
|
90 |
+
// Verify we have risk data
|
91 |
+
if(isset($result->transaction) && isset($result->transaction->riskData) && isset($result->transaction->riskData->decision)) {
|
92 |
+
|
93 |
+
// If the decision is to review the payment mark the payment as such
|
94 |
+
if($result->transaction->riskData->decision == self::ADVANCED_FRAUD_REVIEW || $result->transaction->riskData->decision == self::ADVANCED_FRAUD_DECLINE) {
|
95 |
+
|
96 |
+
// Mark the payment as pending
|
97 |
+
$payment->setIsTransactionPending(true);
|
98 |
+
|
99 |
+
// If the payment got marked as fraud/decline, we mark it as fraud
|
100 |
+
if($result->transaction->riskData->decision == self::ADVANCED_FRAUD_DECLINE) {
|
101 |
+
$payment->setIsFraudDetected(true);
|
102 |
+
}
|
103 |
+
}
|
104 |
+
}
|
105 |
+
|
106 |
+
return $this;
|
107 |
+
}
|
108 |
+
|
109 |
}
|
app/code/community/Gene/Braintree/Model/Paymentmethod/Creditcard.php
CHANGED
@@ -68,9 +68,23 @@ class Gene_Braintree_Model_Paymentmethod_Creditcard extends Gene_Braintree_Model
|
|
68 |
return false;
|
69 |
}
|
70 |
|
|
|
71 |
if($this->_getConfig('threedsecure')) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
72 |
return true;
|
73 |
}
|
|
|
74 |
return false;
|
75 |
}
|
76 |
|
@@ -224,6 +238,13 @@ class Gene_Braintree_Model_Paymentmethod_Creditcard extends Gene_Braintree_Model
|
|
224 |
// Log the initial sale array, no protected data is included
|
225 |
Gene_Braintree_Model_Debug::log(array('_authorize:result' => $result));
|
226 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
227 |
// If the sale has failed
|
228 |
if ($result->success != true) {
|
229 |
|
@@ -231,30 +252,30 @@ class Gene_Braintree_Model_Paymentmethod_Creditcard extends Gene_Braintree_Model
|
|
231 |
Mage::dispatchEvent('gene_braintree_creditcard_failed', array('payment' => $payment, 'result' => $result));
|
232 |
|
233 |
// Return a different message for declined cards
|
234 |
-
if(isset($result->transaction->status)
|
235 |
-
Mage::throwException($this->_getHelper()->__('Your transaction has been declined, please try another payment method or contacting your issuing bank.'));
|
236 |
-
}
|
237 |
|
238 |
-
|
239 |
-
|
240 |
|
241 |
-
|
242 |
-
if($this->is3DEnabled()) {
|
243 |
|
244 |
-
|
245 |
-
|
|
|
|
|
246 |
|
247 |
-
|
248 |
-
|
249 |
|
250 |
-
|
251 |
-
|
252 |
|
253 |
-
|
254 |
-
|
255 |
-
|
256 |
-
);
|
257 |
}
|
|
|
|
|
258 |
}
|
259 |
|
260 |
$this->_processSuccessResult($payment, $result, $amount);
|
@@ -353,6 +374,9 @@ class Gene_Braintree_Model_Paymentmethod_Creditcard extends Gene_Braintree_Model
|
|
353 |
'threeDSecure'
|
354 |
);
|
355 |
|
|
|
|
|
|
|
356 |
// If 3D secure is enabled, presume it's passed
|
357 |
if($this->is3DEnabled()) {
|
358 |
$additionalInfo['threeDSecure'] = Mage::helper('gene_braintree')->__('Passed');
|
68 |
return false;
|
69 |
}
|
70 |
|
71 |
+
// Is 3Ds enabled within the configuration?
|
72 |
if($this->_getConfig('threedsecure')) {
|
73 |
+
|
74 |
+
// Do we have a requirement on the threshold
|
75 |
+
if($this->_getConfig('threedsecure_threshold') > 0) {
|
76 |
+
|
77 |
+
// Check to see if the base grand total is bigger then the threshold
|
78 |
+
if(Mage::getSingleton('checkout/cart')->getQuote()->collectTotals()->getBaseGrandTotal() > $this->_getConfig('threedsecure_threshold')) {
|
79 |
+
return true;
|
80 |
+
}
|
81 |
+
|
82 |
+
return false;
|
83 |
+
}
|
84 |
+
|
85 |
return true;
|
86 |
}
|
87 |
+
|
88 |
return false;
|
89 |
}
|
90 |
|
238 |
// Log the initial sale array, no protected data is included
|
239 |
Gene_Braintree_Model_Debug::log(array('_authorize:result' => $result));
|
240 |
|
241 |
+
// If the transaction was 3Ds but doesn't contain a 3Ds response
|
242 |
+
if(($this->is3DEnabled() && isset($saleArray['options']['three_d_secure']['required']) && $saleArray['options']['three_d_secure']['required'] == true) && (!isset($result->transaction->threeDSecureInfo) || (isset($result->transaction->threeDSecureInfo) && is_null($result->transaction->threeDSecureInfo)))) {
|
243 |
+
|
244 |
+
// Inform the user that their payment didn't go through 3Ds and thus failed
|
245 |
+
Mage::throwException($this->_getHelper()->__('This transaction must be passed through 3D secure, please try again or consider using an alternate payment method.'));
|
246 |
+
}
|
247 |
+
|
248 |
// If the sale has failed
|
249 |
if ($result->success != true) {
|
250 |
|
252 |
Mage::dispatchEvent('gene_braintree_creditcard_failed', array('payment' => $payment, 'result' => $result));
|
253 |
|
254 |
// Return a different message for declined cards
|
255 |
+
if(isset($result->transaction->status)) {
|
|
|
|
|
256 |
|
257 |
+
// Return a custom response for processor declined messages
|
258 |
+
if($result->transaction->status == Braintree_Transaction::PROCESSOR_DECLINED) {
|
259 |
|
260 |
+
Mage::throwException($this->_getHelper()->__('Your transaction has been declined, please try another payment method or contacting your issuing bank.'));
|
|
|
261 |
|
262 |
+
} else if($result->transaction->status == Braintree_Transaction::GATEWAY_REJECTED
|
263 |
+
&& isset($result->transaction->gatewayRejectionReason)
|
264 |
+
&& $result->transaction->gatewayRejectionReason == Braintree_Transaction::THREE_D_SECURE)
|
265 |
+
{
|
266 |
|
267 |
+
// An event for when 3D secure fails
|
268 |
+
Mage::dispatchEvent('gene_braintree_creditcard_failed_threed', array('payment' => $payment, 'result' => $result));
|
269 |
|
270 |
+
// Log it
|
271 |
+
Gene_Braintree_Model_Debug::log('Transaction failed with 3D secure');
|
272 |
|
273 |
+
// Politely inform the user
|
274 |
+
Mage::throwException($this->_getHelper()->__('Your card has failed 3D secure validation, please try again or consider using an alternate payment method.'));
|
275 |
+
}
|
|
|
276 |
}
|
277 |
+
|
278 |
+
Mage::throwException($this->_getHelper()->__('%s. Please try again or attempt refreshing the page.', $result->message));
|
279 |
}
|
280 |
|
281 |
$this->_processSuccessResult($payment, $result, $amount);
|
374 |
'threeDSecure'
|
375 |
);
|
376 |
|
377 |
+
// Handle any fraud response from Braintree
|
378 |
+
$this->handleFraud($result, $payment);
|
379 |
+
|
380 |
// If 3D secure is enabled, presume it's passed
|
381 |
if($this->is3DEnabled()) {
|
382 |
$additionalInfo['threeDSecure'] = Mage::helper('gene_braintree')->__('Passed');
|
app/code/community/Gene/Braintree/Model/Paymentmethod/Paypal.php
CHANGED
@@ -196,6 +196,9 @@ class Gene_Braintree_Model_Paymentmethod_Paypal extends Gene_Braintree_Model_Pay
|
|
196 |
)
|
197 |
);
|
198 |
|
|
|
|
|
|
|
199 |
// Store the PayPal token if we have one
|
200 |
if (isset($result->transaction->paypal['token']) && !empty($result->transaction->paypal['token'])) {
|
201 |
$payment->setAdditionalInformation('token', $result->transaction->paypal['token']);
|
196 |
)
|
197 |
);
|
198 |
|
199 |
+
// Handle any fraud response from Braintree
|
200 |
+
$this->handleFraud($result, $payment);
|
201 |
+
|
202 |
// Store the PayPal token if we have one
|
203 |
if (isset($result->transaction->paypal['token']) && !empty($result->transaction->paypal['token'])) {
|
204 |
$payment->setAdditionalInformation('token', $result->transaction->paypal['token']);
|
app/code/community/Gene/Braintree/Model/System/Config/Backend/Currency.php
CHANGED
@@ -15,7 +15,7 @@ class Gene_Braintree_Model_System_Config_Backend_Currency extends Mage_Core_Mode
|
|
15 |
{
|
16 |
if (!is_array($this->getValue())) {
|
17 |
$value = $this->getValue();
|
18 |
-
$this->setValue(empty($value) ? false :
|
19 |
}
|
20 |
}
|
21 |
|
@@ -25,7 +25,7 @@ class Gene_Braintree_Model_System_Config_Backend_Currency extends Mage_Core_Mode
|
|
25 |
protected function _beforeSave()
|
26 |
{
|
27 |
if (is_array($this->getValue())) {
|
28 |
-
$this->setValue(
|
29 |
}
|
30 |
}
|
31 |
|
15 |
{
|
16 |
if (!is_array($this->getValue())) {
|
17 |
$value = $this->getValue();
|
18 |
+
$this->setValue(empty($value) ? false : Mage::helper('core')->jsonDecode($value, Zend_Json::TYPE_OBJECT));
|
19 |
}
|
20 |
}
|
21 |
|
25 |
protected function _beforeSave()
|
26 |
{
|
27 |
if (is_array($this->getValue())) {
|
28 |
+
$this->setValue(Mage::helper('core')->jsonEncode($this->getValue()));
|
29 |
}
|
30 |
}
|
31 |
|
app/code/community/Gene/Braintree/Model/Wrapper/Braintree.php
CHANGED
@@ -149,7 +149,9 @@ class Gene_Braintree_Model_Wrapper_Braintree extends Mage_Core_Model_Abstract
|
|
149 |
public function generateToken()
|
150 |
{
|
151 |
// Use the class to generate the token
|
152 |
-
return Braintree_ClientToken::generate(
|
|
|
|
|
153 |
}
|
154 |
|
155 |
|
@@ -252,7 +254,7 @@ class Gene_Braintree_Model_Wrapper_Braintree extends Mage_Core_Model_Abstract
|
|
252 |
*
|
253 |
* @return bool
|
254 |
*/
|
255 |
-
public function validateCredentials($prettyResponse = false, $alreadyInit = false, $merchantAccountId = false)
|
256 |
{
|
257 |
// Try to init the environment
|
258 |
try {
|
@@ -268,11 +270,23 @@ class Gene_Braintree_Model_Wrapper_Braintree extends Mage_Core_Model_Abstract
|
|
268 |
$this->init();
|
269 |
}
|
270 |
}
|
|
|
|
|
|
|
|
|
271 |
} catch (Exception $e) {
|
272 |
|
|
|
|
|
|
|
|
|
|
|
|
|
273 |
if($prettyResponse) {
|
274 |
return '<span style="color: red;font-weight: bold;" id="braintree-valid-config">' . Mage::helper('gene_braintree')->__('Invalid Credentials') . '</span><br />' . Mage::helper('gene_braintree')->__('Payments cannot be processed until this is resolved, due to this the methods will be hidden within the checkout');
|
275 |
}
|
|
|
|
|
276 |
return false;
|
277 |
}
|
278 |
|
@@ -289,9 +303,18 @@ class Gene_Braintree_Model_Wrapper_Braintree extends Mage_Core_Model_Abstract
|
|
289 |
try {
|
290 |
Braintree_Configuration::gateway()->merchantAccount()->find($merchantAccountId);
|
291 |
} catch (Exception $e) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
292 |
if($prettyResponse) {
|
293 |
return '<span style="color: orange;font-weight: bold;" id="braintree-valid-config">' . Mage::helper('gene_braintree')->__('Invalid Merchant Account ID') . '</span><br />' . Mage::helper('gene_braintree')->__('Payments cannot be processed until this is resolved. We cannot find your merchant account ID associated with the other credentials you\'ve provided, please update this field');
|
294 |
}
|
|
|
|
|
295 |
return false;
|
296 |
}
|
297 |
|
@@ -326,36 +349,32 @@ class Gene_Braintree_Model_Wrapper_Braintree extends Mage_Core_Model_Abstract
|
|
326 |
|
327 |
} else {
|
328 |
|
329 |
-
//
|
330 |
-
|
331 |
-
|
332 |
-
// Only add this in if it's not the last notice
|
333 |
-
$latestNotice = Mage::getModel('adminnotification/inbox')->loadLatestNotice();
|
334 |
-
|
335 |
-
// Validate there is a latest notice
|
336 |
-
if ($latestNotice && $latestNotice->getId()) {
|
337 |
|
338 |
-
|
339 |
-
|
340 |
-
if (strpos($latestNotice->getTitle(), 'Braintree Configuration Invalid') === false) {
|
341 |
|
342 |
-
|
343 |
-
|
344 |
-
}
|
345 |
|
346 |
} else {
|
347 |
|
348 |
-
//
|
349 |
-
|
|
|
350 |
}
|
351 |
|
352 |
-
|
353 |
|
354 |
-
|
|
|
|
|
355 |
|
356 |
-
//
|
357 |
-
$this->validated =
|
358 |
}
|
|
|
359 |
}
|
360 |
}
|
361 |
}
|
149 |
public function generateToken()
|
150 |
{
|
151 |
// Use the class to generate the token
|
152 |
+
return Braintree_ClientToken::generate(
|
153 |
+
array("merchantAccountId" => $this->getMerchantAccountId())
|
154 |
+
);
|
155 |
}
|
156 |
|
157 |
|
254 |
*
|
255 |
* @return bool
|
256 |
*/
|
257 |
+
public function validateCredentials($prettyResponse = false, $alreadyInit = false, $merchantAccountId = false, $throwException = false)
|
258 |
{
|
259 |
// Try to init the environment
|
260 |
try {
|
270 |
$this->init();
|
271 |
}
|
272 |
}
|
273 |
+
|
274 |
+
// Attempt to retrieve the gateway plans to check
|
275 |
+
Braintree_Configuration::gateway()->plan()->all();
|
276 |
+
|
277 |
} catch (Exception $e) {
|
278 |
|
279 |
+
// Do we want to rethrow the exception?
|
280 |
+
if($throwException) {
|
281 |
+
throw $e;
|
282 |
+
}
|
283 |
+
|
284 |
+
// Otherwise give the user a little bit more information
|
285 |
if($prettyResponse) {
|
286 |
return '<span style="color: red;font-weight: bold;" id="braintree-valid-config">' . Mage::helper('gene_braintree')->__('Invalid Credentials') . '</span><br />' . Mage::helper('gene_braintree')->__('Payments cannot be processed until this is resolved, due to this the methods will be hidden within the checkout');
|
287 |
}
|
288 |
+
|
289 |
+
// Otherwise return with a boolean
|
290 |
return false;
|
291 |
}
|
292 |
|
303 |
try {
|
304 |
Braintree_Configuration::gateway()->merchantAccount()->find($merchantAccountId);
|
305 |
} catch (Exception $e) {
|
306 |
+
|
307 |
+
// Do we want to rethrow the exception?
|
308 |
+
if($throwException) {
|
309 |
+
throw $e;
|
310 |
+
}
|
311 |
+
|
312 |
+
// Otherwise do we want a pretty response?
|
313 |
if($prettyResponse) {
|
314 |
return '<span style="color: orange;font-weight: bold;" id="braintree-valid-config">' . Mage::helper('gene_braintree')->__('Invalid Merchant Account ID') . '</span><br />' . Mage::helper('gene_braintree')->__('Payments cannot be processed until this is resolved. We cannot find your merchant account ID associated with the other credentials you\'ve provided, please update this field');
|
315 |
}
|
316 |
+
|
317 |
+
// Finally return a boolean
|
318 |
return false;
|
319 |
}
|
320 |
|
349 |
|
350 |
} else {
|
351 |
|
352 |
+
// Attempt to validate credentials
|
353 |
+
try {
|
|
|
|
|
|
|
|
|
|
|
|
|
354 |
|
355 |
+
// Passing true will cause the system to rethrow exceptions
|
356 |
+
if(Mage::getModel('gene_braintree/wrapper_braintree')->validateCredentials(false, false, false, true)) {
|
|
|
357 |
|
358 |
+
// Mark our flag as true
|
359 |
+
$this->validated = true;
|
|
|
360 |
|
361 |
} else {
|
362 |
|
363 |
+
// Mark our flag as false, this shouldn't even return false it should always throw an
|
364 |
+
// Exception but just in case
|
365 |
+
$this->validated = false;
|
366 |
}
|
367 |
|
368 |
+
} catch (Exception $e) {
|
369 |
|
370 |
+
// If it fails log it
|
371 |
+
Gene_Braintree_Model_Debug::log('CRITICAL ERROR: The system was unable to connect to Braintree, error is below');
|
372 |
+
Gene_Braintree_Model_Debug::log($e);
|
373 |
|
374 |
+
// If the validateCredentials throws an exception it has failed
|
375 |
+
$this->validated = false;
|
376 |
}
|
377 |
+
|
378 |
}
|
379 |
}
|
380 |
}
|
app/code/community/Gene/Braintree/controllers/CheckoutController.php
CHANGED
@@ -7,20 +7,42 @@
|
|
7 |
*/
|
8 |
class Gene_Braintree_CheckoutController extends Mage_Core_Controller_Front_Action
|
9 |
{
|
|
|
10 |
/**
|
11 |
* The front-end is requesting the grand total of the quote
|
|
|
|
|
12 |
*/
|
13 |
public function quoteTotalAction()
|
14 |
{
|
15 |
// Grab the quote
|
16 |
$quote = Mage::getSingleton('checkout/type_onepage')->getQuote();
|
17 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
// Build up our JSON response
|
19 |
$jsonResponse = array(
|
20 |
-
'billingName' => $
|
21 |
-
'billingPostcode' => $
|
22 |
'grandTotal' => number_format($quote->getGrandTotal(), 2),
|
23 |
-
'currencyCode' => $quote->getQuoteCurrencyCode()
|
|
|
24 |
);
|
25 |
|
26 |
// Set the response
|
@@ -30,6 +52,8 @@ class Gene_Braintree_CheckoutController extends Mage_Core_Controller_Front_Actio
|
|
30 |
|
31 |
/**
|
32 |
* Tokenize the card tokens via Ajax
|
|
|
|
|
33 |
*/
|
34 |
public function tokenizeCardAction()
|
35 |
{
|
7 |
*/
|
8 |
class Gene_Braintree_CheckoutController extends Mage_Core_Controller_Front_Action
|
9 |
{
|
10 |
+
|
11 |
/**
|
12 |
* The front-end is requesting the grand total of the quote
|
13 |
+
*
|
14 |
+
* @return bool
|
15 |
*/
|
16 |
public function quoteTotalAction()
|
17 |
{
|
18 |
// Grab the quote
|
19 |
$quote = Mage::getSingleton('checkout/type_onepage')->getQuote();
|
20 |
|
21 |
+
// Retrieve the billing information from the quote
|
22 |
+
$billingName = $quote->getBillingAddress()->getName();
|
23 |
+
$billingPostcode = $quote->getBillingAddress()->getPostcode();
|
24 |
+
|
25 |
+
// Has the request supplied the billing address ID?
|
26 |
+
if($addressId = $this->getRequest()->getParam('addressId') && Mage::getSingleton('customer/session')->isLoggedIn()) {
|
27 |
+
|
28 |
+
// Retrieve the address
|
29 |
+
$billingAddress = $quote->getCustomer()->getAddressById($addressId);
|
30 |
+
|
31 |
+
// If the address loads override the values
|
32 |
+
if($billingAddress && $billingAddress->getId()) {
|
33 |
+
$billingName = $billingAddress->getName();
|
34 |
+
$billingPostcode = $billingAddress->getPostcode();
|
35 |
+
}
|
36 |
+
|
37 |
+
}
|
38 |
+
|
39 |
// Build up our JSON response
|
40 |
$jsonResponse = array(
|
41 |
+
'billingName' => $billingName,
|
42 |
+
'billingPostcode' => $billingPostcode,
|
43 |
'grandTotal' => number_format($quote->getGrandTotal(), 2),
|
44 |
+
'currencyCode' => $quote->getQuoteCurrencyCode(),
|
45 |
+
'threeDSecure' => Mage::getSingleton('gene_braintree/paymentmethod_creditcard')->is3DEnabled()
|
46 |
);
|
47 |
|
48 |
// Set the response
|
52 |
|
53 |
/**
|
54 |
* Tokenize the card tokens via Ajax
|
55 |
+
*
|
56 |
+
* @return bool
|
57 |
*/
|
58 |
public function tokenizeCardAction()
|
59 |
{
|
app/code/community/Gene/Braintree/etc/config.xml
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Gene_Braintree>
|
5 |
-
<version>1.0.
|
6 |
</Gene_Braintree>
|
7 |
</modules>
|
8 |
<global>
|
@@ -87,6 +87,8 @@
|
|
87 |
<environment>sandbox</environment>
|
88 |
<allowspecific>0</allowspecific>
|
89 |
<use_vault>0</use_vault>
|
|
|
|
|
90 |
<useccv>1</useccv>
|
91 |
</gene_braintree_creditcard>
|
92 |
|
2 |
<config>
|
3 |
<modules>
|
4 |
<Gene_Braintree>
|
5 |
+
<version>1.0.2</version>
|
6 |
</Gene_Braintree>
|
7 |
</modules>
|
8 |
<global>
|
87 |
<environment>sandbox</environment>
|
88 |
<allowspecific>0</allowspecific>
|
89 |
<use_vault>0</use_vault>
|
90 |
+
<threedsecure>0</threedsecure>
|
91 |
+
<threedsecure_threshold>0</threedsecure_threshold>
|
92 |
<useccv>1</useccv>
|
93 |
</gene_braintree_creditcard>
|
94 |
|
app/code/community/Gene/Braintree/etc/system.xml
CHANGED
@@ -404,11 +404,26 @@
|
|
404 |
]]></comment>
|
405 |
</threedsecure>
|
406 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
407 |
<useccv translate="label comment">
|
408 |
<label>CVV Verification</label>
|
409 |
<frontend_type>select</frontend_type>
|
410 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
411 |
-
<sort_order>
|
412 |
<show_in_default>1</show_in_default>
|
413 |
<show_in_website>1</show_in_website>
|
414 |
<show_in_store>1</show_in_store>
|
@@ -420,7 +435,7 @@
|
|
420 |
<kount_merchant_id translate="label comment">
|
421 |
<label>Kount Merchant ID</label>
|
422 |
<frontend_type>text</frontend_type>
|
423 |
-
<sort_order>
|
424 |
<show_in_default>1</show_in_default>
|
425 |
<show_in_website>1</show_in_website>
|
426 |
<show_in_store>1</show_in_store>
|
404 |
]]></comment>
|
405 |
</threedsecure>
|
406 |
|
407 |
+
<threedsecure_threshold translate="label comment">
|
408 |
+
<label>3D Secure Threshold</label>
|
409 |
+
<frontend_type>text</frontend_type>
|
410 |
+
<sort_order>77</sort_order>
|
411 |
+
<show_in_default>1</show_in_default>
|
412 |
+
<show_in_website>1</show_in_website>
|
413 |
+
<show_in_store>1</show_in_store>
|
414 |
+
<comment><![CDATA[
|
415 |
+
The threshold which requires a transaction to be passed through 3D secure. Set this to 0 to pass all transactions through 3D secure.
|
416 |
+
]]></comment>
|
417 |
+
<depends>
|
418 |
+
<threedsecure>1</threedsecure>
|
419 |
+
</depends>
|
420 |
+
</threedsecure_threshold>
|
421 |
+
|
422 |
<useccv translate="label comment">
|
423 |
<label>CVV Verification</label>
|
424 |
<frontend_type>select</frontend_type>
|
425 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
426 |
+
<sort_order>78</sort_order>
|
427 |
<show_in_default>1</show_in_default>
|
428 |
<show_in_website>1</show_in_website>
|
429 |
<show_in_store>1</show_in_store>
|
435 |
<kount_merchant_id translate="label comment">
|
436 |
<label>Kount Merchant ID</label>
|
437 |
<frontend_type>text</frontend_type>
|
438 |
+
<sort_order>79</sort_order>
|
439 |
<show_in_default>1</show_in_default>
|
440 |
<show_in_website>1</show_in_website>
|
441 |
<show_in_store>1</show_in_store>
|
app/design/adminhtml/default/default/template/gene/braintree/js.phtml
CHANGED
@@ -19,7 +19,7 @@
|
|
19 |
AdminOrder.prototype.submit = function() {
|
20 |
|
21 |
// Check we're using the braintree card method
|
22 |
-
if(order.paymentMethod == 'gene_braintree_creditcard') {
|
23 |
|
24 |
// Validate the form contents
|
25 |
if (editForm.validate()) {
|
19 |
AdminOrder.prototype.submit = function() {
|
20 |
|
21 |
// Check we're using the braintree card method
|
22 |
+
if(order.paymentMethod == 'gene_braintree_creditcard' && $('p_method_free') == null) {
|
23 |
|
24 |
// Validate the form contents
|
25 |
if (editForm.validate()) {
|
app/design/frontend/base/default/template/gene/braintree/creditcard.phtml
CHANGED
@@ -158,6 +158,14 @@ $_code = $this->getMethodCode()
|
|
158 |
|
159 |
// Set the accepted cards
|
160 |
vzero.setAcceptedCards(<?php echo $this->getCcAvailableTypes(); ?>);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
161 |
}
|
162 |
|
163 |
// Loop through each saved card being selected
|
158 |
|
159 |
// Set the accepted cards
|
160 |
vzero.setAcceptedCards(<?php echo $this->getCcAvailableTypes(); ?>);
|
161 |
+
|
162 |
+
<?php
|
163 |
+
// Dynamically swap the 3Ds flag in the JS class
|
164 |
+
if($this->getMethod()->is3DEnabled()): ?>
|
165 |
+
vzero.setThreeDSecure(true);
|
166 |
+
<?php else: ?>
|
167 |
+
vzero.setThreeDSecure(false);
|
168 |
+
<?php endif; ?>
|
169 |
}
|
170 |
|
171 |
// Loop through each saved card being selected
|
app/design/frontend/base/default/template/gene/braintree/js/amasty.phtml
CHANGED
@@ -34,60 +34,76 @@
|
|
34 |
// Are we dealing with the credit card method?
|
35 |
if (payment.currentMethod == 'gene_braintree_creditcard') {
|
36 |
|
37 |
-
//
|
38 |
-
|
39 |
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
vzero.setBillingPostcode($('billing:postcode').value);
|
46 |
-
}
|
47 |
|
48 |
-
|
49 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
50 |
|
51 |
-
|
52 |
-
|
53 |
|
54 |
-
|
55 |
-
|
56 |
-
onSuccess: function () {
|
57 |
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
formElement.setAttribute('disabled', 'disabled');
|
62 |
-
}
|
63 |
-
});
|
64 |
|
65 |
-
|
66 |
-
|
|
|
|
|
|
|
|
|
67 |
|
68 |
-
|
69 |
-
|
70 |
|
71 |
-
|
72 |
-
|
73 |
-
formElement.removeAttribute('disabled');
|
74 |
-
});
|
75 |
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
|
81 |
-
|
82 |
-
|
|
|
|
|
83 |
|
84 |
-
|
85 |
-
|
86 |
|
87 |
-
|
88 |
-
|
|
|
|
|
|
|
89 |
|
90 |
-
|
|
|
|
|
91 |
|
92 |
// We're updating data don't do anything else for now
|
93 |
return false;
|
34 |
// Are we dealing with the credit card method?
|
35 |
if (payment.currentMethod == 'gene_braintree_creditcard') {
|
36 |
|
37 |
+
// Do we want to pass any extra paramters into the updateData request
|
38 |
+
var parameters = {};
|
39 |
|
40 |
+
// If the billing address is selected and we're wanting to ship to that address we need to pass the addressId
|
41 |
+
if($('billing-address-select') != undefined && $('billing-address-select').value != '')
|
42 |
+
{
|
43 |
+
parameters.addressId = $('billing-address-select').value;
|
44 |
+
}
|
|
|
|
|
45 |
|
46 |
+
// Update the data as we're in a one step
|
47 |
+
vzero.updateData(
|
48 |
+
function() {
|
49 |
+
|
50 |
+
// Verify we're not using a saved address
|
51 |
+
if($('billing-address-select') != undefined && $('billing-address-select').value == '' || $('billing-address-select') == undefined) {
|
52 |
+
|
53 |
+
// Grab these directly from the form and update
|
54 |
+
if ($('billing:firstname') != undefined && $('billing:lastname') != undefined) {
|
55 |
+
vzero.setBillingName($('billing:firstname').value + ' ' + $('billing:lastname').value);
|
56 |
+
}
|
57 |
+
if ($('billing:postcode') != undefined) {
|
58 |
+
vzero.setBillingPostcode($('billing:postcode').value);
|
59 |
+
}
|
60 |
+
}
|
61 |
|
62 |
+
// Check is running
|
63 |
+
checkoutRunning = true;
|
64 |
|
65 |
+
// Show the loading
|
66 |
+
showLoading();
|
|
|
67 |
|
68 |
+
// Process the card
|
69 |
+
vzero.process({
|
70 |
+
onSuccess: function () {
|
|
|
|
|
|
|
71 |
|
72 |
+
// Disable the standard credit card form so the values don't get passed through to the checkout
|
73 |
+
$$('#credit-card-form input, #credit-card-form select').each(function (formElement) {
|
74 |
+
if (formElement.id != 'creditcard-payment-nonce' && formElement.getAttribute('data-genebraintree-name') != 'cvv' && formElement.id != 'gene_braintree_creditcard_store_in_vault' && formElement.id != 'device_data') {
|
75 |
+
formElement.setAttribute('disabled', 'disabled');
|
76 |
+
}
|
77 |
+
});
|
78 |
|
79 |
+
// No longer running
|
80 |
+
checkoutRunning = false;
|
81 |
|
82 |
+
// Fire the original event and return the response
|
83 |
+
completeCheckoutResponse = originalCompleteCheckout.apply(this, arguments);
|
|
|
|
|
84 |
|
85 |
+
// Re-enable any form elements which were disabled
|
86 |
+
$$('#credit-card-form input, #credit-card-form select').each(function (formElement) {
|
87 |
+
formElement.removeAttribute('disabled');
|
88 |
+
});
|
89 |
|
90 |
+
// Run the original function
|
91 |
+
return completeCheckoutResponse;
|
92 |
+
},
|
93 |
+
onFailure: function() {
|
94 |
|
95 |
+
// Reset the waiting for the parent function
|
96 |
+
hideLoading();
|
97 |
|
98 |
+
// No longer running
|
99 |
+
checkoutRunning = false;
|
100 |
+
|
101 |
+
}
|
102 |
+
});
|
103 |
|
104 |
+
},
|
105 |
+
parameters
|
106 |
+
);
|
107 |
|
108 |
// We're updating data don't do anything else for now
|
109 |
return false;
|
app/design/frontend/base/default/template/gene/braintree/js/idev.phtml
CHANGED
@@ -48,52 +48,69 @@
|
|
48 |
|
49 |
startLoading();
|
50 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
// Update the data as we're in a one step
|
52 |
-
vzero.updateData(
|
|
|
53 |
|
54 |
-
|
55 |
-
|
56 |
-
vzero.setBillingName($('billing:firstname').value + ' ' + $('billing:lastname').value);
|
57 |
-
}
|
58 |
-
if ($('billing:postcode') != undefined) {
|
59 |
-
vzero.setBillingPostcode($('billing:postcode').value);
|
60 |
-
}
|
61 |
|
62 |
-
|
63 |
-
|
64 |
-
|
|
|
|
|
|
|
|
|
65 |
|
66 |
-
|
67 |
-
$$('#credit-card-form input, #credit-card-form select').each(function (formElement) {
|
68 |
-
if (formElement.id != 'creditcard-payment-nonce' && formElement.getAttribute('data-genebraintree-name') != 'cvv' && formElement.id != 'gene_braintree_creditcard_store_in_vault' && formElement.id != 'device_data') {
|
69 |
-
formElement.setAttribute('disabled', 'disabled');
|
70 |
-
}
|
71 |
-
});
|
72 |
|
73 |
-
|
|
|
|
|
74 |
|
75 |
-
|
76 |
-
|
|
|
|
|
|
|
|
|
77 |
|
78 |
-
|
79 |
-
already_placing_order = false;
|
80 |
|
81 |
-
|
82 |
-
|
83 |
-
},
|
84 |
-
onFailure: function() {
|
85 |
|
86 |
-
|
87 |
-
|
88 |
|
89 |
-
|
|
|
|
|
|
|
90 |
|
91 |
-
|
92 |
-
|
93 |
|
94 |
-
|
95 |
-
|
96 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
97 |
|
98 |
}
|
99 |
}
|
48 |
|
49 |
startLoading();
|
50 |
|
51 |
+
// Do we want to pass any extra paramters into the updateData request
|
52 |
+
var parameters = {};
|
53 |
+
|
54 |
+
// If the billing address is selected and we're wanting to ship to that address we need to pass the addressId
|
55 |
+
if($('billing-address-select') != undefined && $('billing-address-select').value != '')
|
56 |
+
{
|
57 |
+
parameters.addressId = $('billing-address-select').value;
|
58 |
+
}
|
59 |
+
|
60 |
// Update the data as we're in a one step
|
61 |
+
vzero.updateData(
|
62 |
+
function() {
|
63 |
|
64 |
+
// Verify we're not using a saved address
|
65 |
+
if($('billing-address-select') != undefined && $('billing-address-select').value == '' || $('billing-address-select') == undefined) {
|
|
|
|
|
|
|
|
|
|
|
66 |
|
67 |
+
// Grab these directly from the form and update
|
68 |
+
if ($('billing:firstname') != undefined && $('billing:lastname') != undefined) {
|
69 |
+
vzero.setBillingName($('billing:firstname').value + ' ' + $('billing:lastname').value);
|
70 |
+
}
|
71 |
+
if ($('billing:postcode') != undefined) {
|
72 |
+
vzero.setBillingPostcode($('billing:postcode').value);
|
73 |
+
}
|
74 |
|
75 |
+
}
|
|
|
|
|
|
|
|
|
|
|
76 |
|
77 |
+
// Process the card
|
78 |
+
vzero.process({
|
79 |
+
onSuccess: function () {
|
80 |
|
81 |
+
// Disable the standard credit card form so the values don't get passed through to the checkout
|
82 |
+
$$('#credit-card-form input, #credit-card-form select').each(function (formElement) {
|
83 |
+
if (formElement.id != 'creditcard-payment-nonce' && formElement.getAttribute('data-genebraintree-name') != 'cvv' && formElement.id != 'gene_braintree_creditcard_store_in_vault' && formElement.id != 'device_data') {
|
84 |
+
formElement.setAttribute('disabled', 'disabled');
|
85 |
+
}
|
86 |
+
});
|
87 |
|
88 |
+
stopLoading();
|
|
|
89 |
|
90 |
+
// Set the flag to true
|
91 |
+
processedVZero = true;
|
|
|
|
|
92 |
|
93 |
+
// We're no longer stopping the events
|
94 |
+
already_placing_order = false;
|
95 |
|
96 |
+
// Fire the same event over again
|
97 |
+
$(elem).click();
|
98 |
+
},
|
99 |
+
onFailure: function() {
|
100 |
|
101 |
+
// Set the flag to true
|
102 |
+
processedVZero = false;
|
103 |
|
104 |
+
stopLoading();
|
105 |
+
|
106 |
+
// We're no longer stopping the events
|
107 |
+
already_placing_order = false;
|
108 |
+
|
109 |
+
}
|
110 |
+
});
|
111 |
+
},
|
112 |
+
parameters
|
113 |
+
);
|
114 |
|
115 |
}
|
116 |
}
|
js/gene/braintree/vzero.js
CHANGED
@@ -61,6 +61,15 @@ vZero.prototype = {
|
|
61 |
|
62 |
},
|
63 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
/**
|
65 |
* Set the amount within the checkout, this is only used in the default integration
|
66 |
* For any other checkouts see the updateData method, this is used by 3D secure
|
@@ -132,7 +141,7 @@ vZero.prototype = {
|
|
132 |
/**
|
133 |
* Push through the selected accepted cards from the admin
|
134 |
*
|
135 |
-
* @param cards
|
136 |
*/
|
137 |
setAcceptedCards: function(cards) {
|
138 |
this.acceptedCards = cards;
|
@@ -253,14 +262,16 @@ vZero.prototype = {
|
|
253 |
* Make an Ajax request to the server and request up to date information regarding the quote
|
254 |
*
|
255 |
* @param callback A defined callback function if needed
|
|
|
256 |
*/
|
257 |
-
updateData: function(callback) {
|
258 |
|
259 |
// Make a new ajax request to the server
|
260 |
new Ajax.Request(
|
261 |
this.quoteUrl,
|
262 |
{
|
263 |
method:'post',
|
|
|
264 |
onSuccess: function(transport) {
|
265 |
|
266 |
// Verify we have some response text
|
@@ -283,11 +294,14 @@ vZero.prototype = {
|
|
283 |
if(response.grandTotal != undefined) {
|
284 |
this.amount = response.grandTotal;
|
285 |
}
|
|
|
|
|
|
|
286 |
|
287 |
// If PayPal is active update it
|
288 |
if(typeof vzeroPaypal != "undefined") {
|
289 |
|
290 |
-
//
|
291 |
if(response.grandTotal != undefined && response.currencyCode != undefined) {
|
292 |
vzeroPaypal.setPricing(response.grandTotal, response.currencyCode);
|
293 |
}
|
@@ -415,10 +429,7 @@ vZero.prototype = {
|
|
415 |
number: $$('[data-genebraintree-name="number"]').first().value,
|
416 |
expirationMonth: $$('[data-genebraintree-name="expiration_month"]').first().value,
|
417 |
expirationYear: $$('[data-genebraintree-name="expiration_year"]').first().value,
|
418 |
-
cardholderName: this.getBillingName()
|
419 |
-
billingAddress: {
|
420 |
-
postalCode: this.getBillingPostcode()
|
421 |
-
}
|
422 |
}
|
423 |
};
|
424 |
|
@@ -427,6 +438,13 @@ vZero.prototype = {
|
|
427 |
threeDSecureRequest.creditCard.cvv = $$('[data-genebraintree-name="cvv"]').first().value;
|
428 |
}
|
429 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
430 |
// Run the verify function on the braintree client
|
431 |
this.client.verify3DS(threeDSecureRequest, function (error, response) {
|
432 |
|
@@ -517,10 +535,7 @@ vZero.prototype = {
|
|
517 |
number: $$('[data-genebraintree-name="number"]').first().value,
|
518 |
cardholderName: this.getBillingName(),
|
519 |
expirationMonth: $$('[data-genebraintree-name="expiration_month"]').first().value,
|
520 |
-
expirationYear: $$('[data-genebraintree-name="expiration_year"]').first().value
|
521 |
-
billingAddress: {
|
522 |
-
postalCode: this.getBillingPostcode()
|
523 |
-
}
|
524 |
};
|
525 |
|
526 |
// If the CVV field exists include it
|
@@ -528,6 +543,13 @@ vZero.prototype = {
|
|
528 |
tokenizeRequest.cvv = $$('[data-genebraintree-name="cvv"]').first().value;
|
529 |
}
|
530 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
531 |
// Attempt to tokenize the card
|
532 |
this.client.tokenizeCard(tokenizeRequest, function (errors, nonce) {
|
533 |
|
61 |
|
62 |
},
|
63 |
|
64 |
+
/**
|
65 |
+
* Set the 3Ds flag
|
66 |
+
*
|
67 |
+
* @param flag a boolean value
|
68 |
+
*/
|
69 |
+
setThreeDSecure: function(flag) {
|
70 |
+
this.threeDSecure = flag;
|
71 |
+
},
|
72 |
+
|
73 |
/**
|
74 |
* Set the amount within the checkout, this is only used in the default integration
|
75 |
* For any other checkouts see the updateData method, this is used by 3D secure
|
141 |
/**
|
142 |
* Push through the selected accepted cards from the admin
|
143 |
*
|
144 |
+
* @param cards an array of accepted cards
|
145 |
*/
|
146 |
setAcceptedCards: function(cards) {
|
147 |
this.acceptedCards = cards;
|
262 |
* Make an Ajax request to the server and request up to date information regarding the quote
|
263 |
*
|
264 |
* @param callback A defined callback function if needed
|
265 |
+
* @param params any extra data to be passed to the controller
|
266 |
*/
|
267 |
+
updateData: function(callback, params) {
|
268 |
|
269 |
// Make a new ajax request to the server
|
270 |
new Ajax.Request(
|
271 |
this.quoteUrl,
|
272 |
{
|
273 |
method:'post',
|
274 |
+
parameters: params,
|
275 |
onSuccess: function(transport) {
|
276 |
|
277 |
// Verify we have some response text
|
294 |
if(response.grandTotal != undefined) {
|
295 |
this.amount = response.grandTotal;
|
296 |
}
|
297 |
+
if(response.threeDSecure != undefined) {
|
298 |
+
this.setThreeDSecure(response.threeDSecure);
|
299 |
+
}
|
300 |
|
301 |
// If PayPal is active update it
|
302 |
if(typeof vzeroPaypal != "undefined") {
|
303 |
|
304 |
+
// Update the totals within the PayPal system
|
305 |
if(response.grandTotal != undefined && response.currencyCode != undefined) {
|
306 |
vzeroPaypal.setPricing(response.grandTotal, response.currencyCode);
|
307 |
}
|
429 |
number: $$('[data-genebraintree-name="number"]').first().value,
|
430 |
expirationMonth: $$('[data-genebraintree-name="expiration_month"]').first().value,
|
431 |
expirationYear: $$('[data-genebraintree-name="expiration_year"]').first().value,
|
432 |
+
cardholderName: this.getBillingName()
|
|
|
|
|
|
|
433 |
}
|
434 |
};
|
435 |
|
438 |
threeDSecureRequest.creditCard.cvv = $$('[data-genebraintree-name="cvv"]').first().value;
|
439 |
}
|
440 |
|
441 |
+
// If we have the billing postcode add it into the request
|
442 |
+
if(this.getBillingPostcode() != "") {
|
443 |
+
threeDSecureRequest.creditCard.billingAddress = {
|
444 |
+
postalCode: this.getBillingPostcode()
|
445 |
+
};
|
446 |
+
}
|
447 |
+
|
448 |
// Run the verify function on the braintree client
|
449 |
this.client.verify3DS(threeDSecureRequest, function (error, response) {
|
450 |
|
535 |
number: $$('[data-genebraintree-name="number"]').first().value,
|
536 |
cardholderName: this.getBillingName(),
|
537 |
expirationMonth: $$('[data-genebraintree-name="expiration_month"]').first().value,
|
538 |
+
expirationYear: $$('[data-genebraintree-name="expiration_year"]').first().value
|
|
|
|
|
|
|
539 |
};
|
540 |
|
541 |
// If the CVV field exists include it
|
543 |
tokenizeRequest.cvv = $$('[data-genebraintree-name="cvv"]').first().value;
|
544 |
}
|
545 |
|
546 |
+
// If we have the billing postcode add it into the request
|
547 |
+
if(this.getBillingPostcode() != "") {
|
548 |
+
tokenizeRequest.billingAddress = {
|
549 |
+
postalCode: this.getBillingPostcode()
|
550 |
+
};
|
551 |
+
}
|
552 |
+
|
553 |
// Attempt to tokenize the card
|
554 |
this.client.tokenizeCard(tokenizeRequest, function (errors, nonce) {
|
555 |
|
package.xml
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Gene_Braintree</name>
|
4 |
-
<version>1.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 @@ Easily add PayPal to your checkout. We've built the best PayPal integration arou
|
|
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>magento@gene.co.uk</email></author></authors>
|
39 |
-
<date>2015-
|
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="eaaf6c74be4233a315d5aa5932f7c9ca"/><file name="Currency.php" hash="9ffa8a2ded53be75e88a60a024883b07"/><file name="Moduleversion.php" hash="fe3836bde24bb31c4c4585f2cd2f20ed"/><file name="Version.php" hash="ce58278a4faf965301cc2d8b2da4483c"/></dir></dir></dir></dir><dir name="Cart"><file name="Totals.php" hash="a03c441e8143896f92d02931a809f666"/></dir><dir name="Creditcard"><file name="Info.php" hash="40aa92bed04bd3744048befca2a0217a"/><file name="Threedsecure.php" hash="8eae09e8167e787f24eb80bc7ad7cd4a"/></dir><file name="Creditcard.php" hash="989678324ff3fcddcc99cbe4613019fa"/><file name="Js.php" hash="d1b2dbd2ba187100ecbbedefc633b845"/><dir name="Paypal"><file name="Info.php" hash="a0206fad8b91aa382c3ac16b9651c723"/></dir><file name="Paypal.php" hash="36294a461378cceee66e99d45753c6e1"/><file name="Saved.php" hash="74ed8e70a404a814b94f21f88c1ca737"/></dir><dir name="Helper"><file name="Data.php" hash="a5b64dd6760e881b1823adfaeb7c1501"/></dir><dir name="Model"><file name="Debug.php" hash="f3360f71e2346881f93424792ed9f209"/><file name="Observer.php" hash="176b48ac3b74bfaa3c28f4126093b49b"/><dir name="Paymentmethod"><file name="Abstract.php" hash="4043a0ac548fe0ec9acbc2dd0c57dfb4"/><file name="Creditcard.php" hash="822df144f2731ef4ceeade79f899e570"/><file name="Paypal.php" hash="445bb04b3b1d5d41383962ec8ef9daa3"/></dir><file name="Saved.php" hash="3b235b454a3692d1c3d5343e2a1c91e9"/><dir name="Source"><file name="Cctype.php" hash="d76aa6c3a4bd798e3a47695f579d21d4"/><dir name="Creditcard"><file name="CaptureAction.php" hash="6444cfc430de44f06e85bd9c8b80d77b"/><file name="PaymentAction.php" hash="a2f3f3d36a98df4d12f76b6ab77f9c47"/></dir><file name="Environment.php" hash="02567d2ddba74d06ac000b4ddb12723a"/><dir name="Paypal"><file name="Locale.php" hash="8988ca77f9c2aa2d19ff0b614a4b7621"/><file name="Paymenttype.php" hash="fe1fe4ee89d5b7a87c7c28716bb2f1cb"/></dir></dir><dir name="System"><dir name="Config"><dir name="Backend"><file name="Currency.php" hash="f0cca96917d3c4c2bc05aa255544f25a"/></dir></dir></dir><dir name="Wrapper"><file name="Braintree.php" hash="618fa6b53c0201545f178543506803d4"/></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="BraintreeController.php" hash="7c621fa1548c04e24bb1136bcbbe1d72"/></dir><file name="CheckoutController.php" hash="7494f5fa81cbae80778fac80fa577101"/><file name="SavedController.php" hash="036e97703c853a5bae064dd7cf5030a8"/></dir><dir name="etc"><file name="adminhtml.xml" hash="c9c940beffa0ec19e4a1499a66f7fd12"/><file name="config.xml" hash="24ec6bab4f5c48eda6e74daac4a6d2e4"/><file name="system.xml" hash="077114993f5d60f16e8d33221cbd19ff"/></dir><dir name="sql"><dir name="gene_braintree_setup"><file name="install-0.1.0.php" hash="7ef62b7c19b9da5990974da6edb3e77c"/></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="1ded19331e4656bd31d052eb729ff7c2"/></dir></dir><dir name="template"><dir name="gene"><dir name="braintree"><dir name="creditcard"><file name="info.phtml" hash="2ae1e397b3a633dd305bc26c7b9c1065"/><file name="threedsecure.phtml" hash="ee8ad689afde041c39dd92ffa5274883"/></dir><file name="creditcard.phtml" hash="a083837c8b7d32b61336f891c5a87cb8"/><dir name="customer"><file name="methods.phtml" hash="eb5e2d8f4a0f419fcf720c12062f808a"/><file name="saved.phtml" hash="691162b89ed085599f76072226ca2307"/></dir><dir name="js"><file name="amasty.phtml" hash="652f7d6b1c9dfe6249b29ca8ee8abf82"/><file name="data.phtml" hash="7c77e2c13c9037ab993b7c7f8aa72d98"/><file name="default.phtml" hash="4fde57aa847f06bc02feaaf9097b1f57"/><file name="idev.phtml" hash="9328346d501ca6ab91451d5a99fdc287"/><file name="setup.phtml" hash="86a6da43f073b5fc75ce170a50af3bcd"/></dir><dir name="paypal"><file name="info.phtml" hash="5149b273730121e4dec3c3179820f747"/></dir><file name="paypal.phtml" hash="3c579ad7ba3290c15fcce027cdd66d16"/></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="1995e85eb47b909120ce8b9b537bf5db"/></dir></dir><dir name="template"><dir name="gene"><dir name="braintree"><dir name="creditcard"><file name="info.phtml" hash="3c5f033eb99ab8d78517ae5eb45a3a1a"/></dir><file name="creditcard.phtml" hash="0c6b7806732c336ead14fab596f1b923"/><file name="js.phtml" hash="9d51d9d573ada5f3222e29e4b9b7aaa1"/><dir name="paypal"><file name="info.phtml" hash="53fae03530369f101f5eaed49508a1ee"/></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.js" hash="4a074b2952d6e3c0052f85442b284abc"/><file name="vzero.js" hash="7e9bf97aee5e7bfe9c2d465b0609d238"/></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=".DS_Store" hash="194577a7e20bdcc7afbb718f502c134c"/></dir></dir></dir></dir></dir></dir></target><target name="magelib"><dir name="Braintree"><file name="AddOn.php" hash="07bc690cf426276dfdd802c49cfd72a3"/><file name="AddOnGateway.php" hash="ed9a94155c1c13ba37910fd48bdad40a"/><file name="Address.php" hash="1d4e7f964ed208a381b352d21fc370b8"/><file name="AddressGateway.php" hash="11716dc4ede8b7455197d08b88c91568"/><file name="ApplePayCard.php" hash="6fdbe99722514408f613c417e0e48711"/><file name="ClientToken.php" hash="f606f4bbafaea470333290be52b0030d"/><file name="ClientTokenGateway.php" hash="ede93fa63f0e96d296f315180f5ff1ad"/><file name="CoinbaseAccount.php" hash="7a4992ed13c26ad3785cf7d3455ef5fb"/><file name="Collection.php" hash="0e7d31ffcbd9780fb554186bd2c194b0"/><file name="Configuration.php" hash="6414dae20a80d926c28bd681bb535934"/><file name="CreditCard.php" hash="cf0aab2bcdcc7c231ccedc05a0f853e4"/><file name="CreditCardGateway.php" hash="3c5c3d9cee27da71e338b51d42b685ee"/><file name="CreditCardVerification.php" hash="48d6ea546914278f4bea2fefb75e7836"/><file name="CreditCardVerificationGateway.php" hash="e020dd1c26cd8c3bd7eb55eed2f72346"/><file name="CreditCardVerificationSearch.php" hash="baa6ed22471ea1f142a4195d1e36f89a"/><file name="Customer.php" hash="69d834344b93277dbeadb4ee6a881a60"/><file name="CustomerGateway.php" hash="bde59d4c6d7418fcbd87d4484384705b"/><file name="CustomerSearch.php" hash="8aacc83dac341cd9afec5a3deab17593"/><file name="Descriptor.php" hash="3f5db5e817280ce7f2fa18a205281ad9"/><file name="Digest.php" hash="9d12d067770f55b123b8498fce4478fa"/><file name="Disbursement.php" hash="589534043e466d17fede916fd7986edc"/><file name="DisbursementDetails.php" hash="ae632207d0982e288a83aed401c880d9"/><file name="Discount.php" hash="763b3f9cde0ff3af3e8795cac4097595"/><file name="DiscountGateway.php" hash="42ca6f2f11074ec18eecd1506996a393"/><dir name="Dispute"><file name="TransactionDetails.php" hash="7fdea673a1295055508f42286ad57f4e"/></dir><file name="Dispute.php" hash="2ee0f4a77b7cfec4763b55627a57e348"/><file name="EqualityNode.php" hash="cfd6aa184186233b8d6d1ec0f0e79298"/><dir name="Error"><file name="Codes.php" hash="d0d1007255af20889a4874d028ebeab2"/><file name="ErrorCollection.php" hash="e28d638db56524f5bf3609fa725e6d55"/><file name="Validation.php" hash="bf4e2198300019c52ba56f16269d66ce"/><file name="ValidationErrorCollection.php" hash="9ef25d0126a0b4f6951da5334ae6f0dc"/></dir><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="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="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="8b214a63ed50539e75031caff78d4560"/><file name="Http.php" hash="5f6a9990a14684c82b6952937889412b"/><file name="Instance.php" hash="f0603b3f9213b53687e079c5621ac8f3"/><file name="IsNode.php" hash="e4b1f7bbfcbd24b1d08b97f94df592be"/><file name="KeyValueNode.php" hash="255595ec01a16906dd0c49faf67d9efb"/><dir name="MerchantAccount"><file name="AddressDetails.php" hash="1d265d864a884ebcf2504f55207cc0dd"/><file name="BusinessDetails.php" hash="c9ae627c4a4b526c2ecb0c07d70b3017"/><file name="FundingDetails.php" hash="7368f653fcbcc3d87924447b1763e616"/><file name="IndividualDetails.php" hash="68daf00759335cde82f176f0844e0d9b"/></dir><file name="MerchantAccount.php" hash="489844cfd91dcc6a53024af97b85f3c7"/><file name="MerchantAccountGateway.php" hash="6a9033758b8c02501fd835a96fc385b7"/><file name="Modification.php" hash="fcce6784af2e658affe4a67ca75d8230"/><file name="MultipleValueNode.php" hash="92700fa03011eaa9561010b3a160449c"/><file name="MultipleValueOrTextNode.php" hash="ef06bac18e2bc40974bdc0bcb854890f"/><file name="PartialMatchNode.php" hash="370c7e0ab8a445cfeef6b19ef1755f4d"/><file name="PartnerMerchant.php" hash="20c87322d040eac1abcdf12b8838ec1c"/><file name="PayPalAccount.php" hash="1bbe86a33bbf3e3620364ba0c2e9b6fe"/><file name="PayPalAccountGateway.php" hash="bdf94548085765927368c49bcf028f47"/><file name="PaymentInstrumentType.php" hash="84e2d2fcfe45cf7cf188dc46f302fac8"/><file name="PaymentMethod.php" hash="8aca88278367fcbd5404a0abae848a45"/><file name="PaymentMethodGateway.php" hash="ed81d66dcb097021c4f6518b9ea5e5cf"/><file name="PaymentMethodNonce.php" hash="a72e8ed6506327cdac92d8b082e4dd74"/><file name="PaymentMethodNonceGateway.php" hash="e8ee61d15b73bd2ef9efef8a6b5f4132"/><file name="Plan.php" hash="f73f24fcc57cfeb2e6f0e6312e531073"/><file name="PlanGateway.php" hash="8392fc6b714b30d16fe0308a1e81db4f"/><file name="RangeNode.php" hash="4ad9a92547423b3d54d69097114c3daf"/><file name="ResourceCollection.php" hash="8f437cb5014148c0e2f6049347ae795c"/><dir name="Result"><file name="CreditCardVerification.php" hash="27b965f1e197b0392879e24cccf6dd9c"/><file name="Error.php" hash="81b616e25f182c0c571ad4e9e6fbc611"/><file name="Successful.php" hash="56c6f9a3e5996d18e01a8d382cc03cde"/></dir><file name="RiskData.php" hash="dd74658f351fe8af26cee3016a076fb9"/><file name="SettlementBatchSummary.php" hash="0dcc2b5dd7071d9037cf5970fafe8668"/><file name="SettlementBatchSummaryGateway.php" hash="4ec1a7a1c8875693123430aa51410b22"/><file name="SignatureService.php" hash="4b78d3e5897e715dcc877c5f65b3cfae"/><dir name="Subscription"><file name="StatusDetails.php" hash="29e375f02150bfd7147591f0eb27cb4f"/></dir><file name="Subscription.php" hash="96db82b5b67a72d4287d79b7c691b3d7"/><file name="SubscriptionGateway.php" hash="34118ee95b83d8904a47b388cbb8cfea"/><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="89bb29ef4552037973fe04d344f657ef"/><file name="TransactionAmounts.php" hash="ed9bf1f57d871542c32d11de9e031f05"/><file name="VenmoSdk.php" hash="6ce94deccd1f968596011487c7e69cc7"/></dir><file name="TextNode.php" hash="94c95ec9645de57acace2179fef7fb43"/><dir name="Transaction"><file name="AddressDetails.php" hash="ff52a4a48248085b7ea92e992160e413"/><file name="ApplePayCardDetails.php" hash="c4dd87cd46fe7269e1bd51c867adf7cb"/><file name="CoinbaseDetails.php" hash="d19a625f8de98698b8277c25660358f0"/><file name="CreditCardDetails.php" hash="aac5eb1f5804d4f979b9c71f7b98cb36"/><file name="CustomerDetails.php" hash="e137895c646127312be44292c84a2d81"/><file name="PayPalDetails.php" hash="ede299e376bce7714838d79ca3d40842"/><file name="StatusDetails.php" hash="7c6e719c51bf13bdfd07615030100ac6"/><file name="SubscriptionDetails.php" hash="1cf1f511d1545a2e27b8d3f4bee800ca"/></dir><file name="Transaction.php" hash="9970a0fa9d6af3e543703426da99a3c4"/><file name="TransactionGateway.php" hash="37500b8a181a18375c171d4a5a4938c6"/><file name="TransactionSearch.php" hash="41dd086066fa57582161032249b3d8ee"/><file name="TransparentRedirect.php" hash="154c9850be5175a5cd1b35bdf78ae939"/><file name="TransparentRedirectGateway.php" hash="89f002df5a2abafcaa9676a3e2935c75"/><file name="UnknownPaymentMethod.php" hash="811394ea4bee98a651dc5e1cba8223da"/><file name="Util.php" hash="2cf47c3acd49da4a6c2b0a9a55701d7b"/><file name="Version.php" hash="1ebf13fcec95da846f917f74e030714b"/><file name="WebhookNotification.php" hash="f58be59156e5728f491da4235a58e994"/><file name="WebhookTesting.php" hash="c40311458bb64e37b4c08eb88df37805"/><dir name="Xml"><file name="Generator.php" hash="f82af40e5759c3d46909f3dec2498d02"/><file name="Parser.php" hash="4e6df3327a04915715333460733df93c"/></dir><file name="Xml.php" hash="dc69e05bea21e3d1185d45d53e4747db"/></dir><dir name="."><file name="Braintree.php" hash="ee3e665877882e5b5076ff51dc8111bd"/></dir><dir name="ssl"><file name="api_braintreegateway_com.ca.crt" hash="04beb23c767547e980c76eb68c7eab15"/><file name="sandbox_braintreegateway_com.ca.crt" hash="f1b529883c7c2cbb4251658f5da7b4c9"/></dir></target><target name="magelocale"><dir><dir name="en_US"><file name="Gene_Braintree.csv" hash="00ae6dc359bc0d9c48bfc90a865232a3"/></dir></dir></target></contents>
|
42 |
<compatible/>
|
43 |
<dependencies><required><php><min>5.2.1</min><max>6.0.0</max></php><package><name/><channel>connect.magentocommerce.com/core</channel><min/><max/></package></required></dependencies>
|
44 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Gene_Braintree</name>
|
4 |
+
<version>1.0.2</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>magento@gene.co.uk</email></author></authors>
|
39 |
+
<date>2015-05-29</date>
|
40 |
+
<time>08:44:09</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="eaaf6c74be4233a315d5aa5932f7c9ca"/><file name="Currency.php" hash="9ffa8a2ded53be75e88a60a024883b07"/><file name="Moduleversion.php" hash="fe3836bde24bb31c4c4585f2cd2f20ed"/><file name="Version.php" hash="ce58278a4faf965301cc2d8b2da4483c"/></dir></dir></dir></dir><dir name="Cart"><file name="Totals.php" hash="a03c441e8143896f92d02931a809f666"/></dir><dir name="Creditcard"><file name="Info.php" hash="adb06dab5fb625e4bf71e8cd62230f9c"/><file name="Threedsecure.php" hash="7848d4ecac743be985f328fa969318bf"/></dir><file name="Creditcard.php" hash="989678324ff3fcddcc99cbe4613019fa"/><file name="Js.php" hash="50cdd6d01eddfbdcc0061f4369cbeb58"/><dir name="Paypal"><file name="Info.php" hash="a0206fad8b91aa382c3ac16b9651c723"/></dir><file name="Paypal.php" hash="36294a461378cceee66e99d45753c6e1"/><file name="Saved.php" hash="74ed8e70a404a814b94f21f88c1ca737"/></dir><dir name="Helper"><file name="Data.php" hash="a5b64dd6760e881b1823adfaeb7c1501"/></dir><dir name="Model"><file name="Debug.php" hash="f3360f71e2346881f93424792ed9f209"/><file name="Observer.php" hash="176b48ac3b74bfaa3c28f4126093b49b"/><dir name="Paymentmethod"><file name="Abstract.php" hash="cebdcee57db8ed28760313b6078348c3"/><file name="Creditcard.php" hash="4c1256ff5aef5c958a5059e3a3d3a1b3"/><file name="Paypal.php" hash="f7802643b422628d09ae2b5ae03163fb"/></dir><file name="Saved.php" hash="3b235b454a3692d1c3d5343e2a1c91e9"/><dir name="Source"><file name="Cctype.php" hash="d76aa6c3a4bd798e3a47695f579d21d4"/><dir name="Creditcard"><file name="CaptureAction.php" hash="6444cfc430de44f06e85bd9c8b80d77b"/><file name="PaymentAction.php" hash="a2f3f3d36a98df4d12f76b6ab77f9c47"/></dir><file name="Environment.php" hash="02567d2ddba74d06ac000b4ddb12723a"/><dir name="Paypal"><file name="Locale.php" hash="8988ca77f9c2aa2d19ff0b614a4b7621"/><file name="Paymenttype.php" hash="fe1fe4ee89d5b7a87c7c28716bb2f1cb"/></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="203dbffc8be8e9827f92c971bdb15337"/></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="BraintreeController.php" hash="7c621fa1548c04e24bb1136bcbbe1d72"/></dir><file name="CheckoutController.php" hash="6c97fd8d9894cebcd1f5d839c0901dd5"/><file name="SavedController.php" hash="036e97703c853a5bae064dd7cf5030a8"/></dir><dir name="etc"><file name="adminhtml.xml" hash="c9c940beffa0ec19e4a1499a66f7fd12"/><file name="config.xml" hash="0394250964f9b7207d4e2d4f2c5e99d7"/><file name="system.xml" hash="01fc95e2c590d2fad81b007e361cfa63"/></dir><dir name="sql"><dir name="gene_braintree_setup"><file name="install-0.1.0.php" hash="7ef62b7c19b9da5990974da6edb3e77c"/></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="1ded19331e4656bd31d052eb729ff7c2"/></dir></dir><dir name="template"><dir name="gene"><dir name="braintree"><dir name="creditcard"><file name="info.phtml" hash="2ae1e397b3a633dd305bc26c7b9c1065"/><file name="threedsecure.phtml" hash="ee8ad689afde041c39dd92ffa5274883"/></dir><file name="creditcard.phtml" hash="1d1795c1d29b37ac9cf090ad76f22bb5"/><dir name="customer"><file name="methods.phtml" hash="eb5e2d8f4a0f419fcf720c12062f808a"/><file name="saved.phtml" hash="691162b89ed085599f76072226ca2307"/></dir><dir name="js"><file name="amasty.phtml" hash="2f0601e50fc2fcf0ffe03a013737186c"/><file name="data.phtml" hash="7c77e2c13c9037ab993b7c7f8aa72d98"/><file name="default.phtml" hash="4fde57aa847f06bc02feaaf9097b1f57"/><file name="idev.phtml" hash="5fd739089dbe0191c1f44640f7ef2f76"/><file name="setup.phtml" hash="86a6da43f073b5fc75ce170a50af3bcd"/></dir><dir name="paypal"><file name="info.phtml" hash="5149b273730121e4dec3c3179820f747"/></dir><file name="paypal.phtml" hash="3c579ad7ba3290c15fcce027cdd66d16"/></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="1995e85eb47b909120ce8b9b537bf5db"/></dir></dir><dir name="template"><dir name="gene"><dir name="braintree"><dir name="creditcard"><file name="info.phtml" hash="3c5f033eb99ab8d78517ae5eb45a3a1a"/></dir><file name="creditcard.phtml" hash="0c6b7806732c336ead14fab596f1b923"/><file name="js.phtml" hash="0a66005bfd1452be665299b11b6fbf8b"/><dir name="paypal"><file name="info.phtml" hash="53fae03530369f101f5eaed49508a1ee"/></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.js" hash="4a074b2952d6e3c0052f85442b284abc"/><file name="vzero.js" hash="0ea7d83df34c94eae8fa9d1c112d6824"/></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=".DS_Store" hash="194577a7e20bdcc7afbb718f502c134c"/></dir></dir></dir></dir></dir></dir></target><target name="magelib"><dir name="Braintree"><file name="AddOn.php" hash="07bc690cf426276dfdd802c49cfd72a3"/><file name="AddOnGateway.php" hash="ed9a94155c1c13ba37910fd48bdad40a"/><file name="Address.php" hash="1d4e7f964ed208a381b352d21fc370b8"/><file name="AddressGateway.php" hash="11716dc4ede8b7455197d08b88c91568"/><file name="ApplePayCard.php" hash="6fdbe99722514408f613c417e0e48711"/><file name="ClientToken.php" hash="f606f4bbafaea470333290be52b0030d"/><file name="ClientTokenGateway.php" hash="ede93fa63f0e96d296f315180f5ff1ad"/><file name="CoinbaseAccount.php" hash="7a4992ed13c26ad3785cf7d3455ef5fb"/><file name="Collection.php" hash="0e7d31ffcbd9780fb554186bd2c194b0"/><file name="Configuration.php" hash="6414dae20a80d926c28bd681bb535934"/><file name="CreditCard.php" hash="cf0aab2bcdcc7c231ccedc05a0f853e4"/><file name="CreditCardGateway.php" hash="3c5c3d9cee27da71e338b51d42b685ee"/><file name="CreditCardVerification.php" hash="48d6ea546914278f4bea2fefb75e7836"/><file name="CreditCardVerificationGateway.php" hash="e020dd1c26cd8c3bd7eb55eed2f72346"/><file name="CreditCardVerificationSearch.php" hash="baa6ed22471ea1f142a4195d1e36f89a"/><file name="Customer.php" hash="69d834344b93277dbeadb4ee6a881a60"/><file name="CustomerGateway.php" hash="bde59d4c6d7418fcbd87d4484384705b"/><file name="CustomerSearch.php" hash="8aacc83dac341cd9afec5a3deab17593"/><file name="Descriptor.php" hash="3f5db5e817280ce7f2fa18a205281ad9"/><file name="Digest.php" hash="9d12d067770f55b123b8498fce4478fa"/><file name="Disbursement.php" hash="589534043e466d17fede916fd7986edc"/><file name="DisbursementDetails.php" hash="ae632207d0982e288a83aed401c880d9"/><file name="Discount.php" hash="763b3f9cde0ff3af3e8795cac4097595"/><file name="DiscountGateway.php" hash="42ca6f2f11074ec18eecd1506996a393"/><dir name="Dispute"><file name="TransactionDetails.php" hash="7fdea673a1295055508f42286ad57f4e"/></dir><file name="Dispute.php" hash="2ee0f4a77b7cfec4763b55627a57e348"/><file name="EqualityNode.php" hash="cfd6aa184186233b8d6d1ec0f0e79298"/><dir name="Error"><file name="Codes.php" hash="d0d1007255af20889a4874d028ebeab2"/><file name="ErrorCollection.php" hash="e28d638db56524f5bf3609fa725e6d55"/><file name="Validation.php" hash="bf4e2198300019c52ba56f16269d66ce"/><file name="ValidationErrorCollection.php" hash="9ef25d0126a0b4f6951da5334ae6f0dc"/></dir><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="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="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="8b214a63ed50539e75031caff78d4560"/><file name="Http.php" hash="5f6a9990a14684c82b6952937889412b"/><file name="Instance.php" hash="f0603b3f9213b53687e079c5621ac8f3"/><file name="IsNode.php" hash="e4b1f7bbfcbd24b1d08b97f94df592be"/><file name="KeyValueNode.php" hash="255595ec01a16906dd0c49faf67d9efb"/><dir name="MerchantAccount"><file name="AddressDetails.php" hash="1d265d864a884ebcf2504f55207cc0dd"/><file name="BusinessDetails.php" hash="c9ae627c4a4b526c2ecb0c07d70b3017"/><file name="FundingDetails.php" hash="7368f653fcbcc3d87924447b1763e616"/><file name="IndividualDetails.php" hash="68daf00759335cde82f176f0844e0d9b"/></dir><file name="MerchantAccount.php" hash="489844cfd91dcc6a53024af97b85f3c7"/><file name="MerchantAccountGateway.php" hash="6a9033758b8c02501fd835a96fc385b7"/><file name="Modification.php" hash="fcce6784af2e658affe4a67ca75d8230"/><file name="MultipleValueNode.php" hash="92700fa03011eaa9561010b3a160449c"/><file name="MultipleValueOrTextNode.php" hash="ef06bac18e2bc40974bdc0bcb854890f"/><file name="PartialMatchNode.php" hash="370c7e0ab8a445cfeef6b19ef1755f4d"/><file name="PartnerMerchant.php" hash="20c87322d040eac1abcdf12b8838ec1c"/><file name="PayPalAccount.php" hash="1bbe86a33bbf3e3620364ba0c2e9b6fe"/><file name="PayPalAccountGateway.php" hash="bdf94548085765927368c49bcf028f47"/><file name="PaymentInstrumentType.php" hash="84e2d2fcfe45cf7cf188dc46f302fac8"/><file name="PaymentMethod.php" hash="8aca88278367fcbd5404a0abae848a45"/><file name="PaymentMethodGateway.php" hash="ed81d66dcb097021c4f6518b9ea5e5cf"/><file name="PaymentMethodNonce.php" hash="a72e8ed6506327cdac92d8b082e4dd74"/><file name="PaymentMethodNonceGateway.php" hash="e8ee61d15b73bd2ef9efef8a6b5f4132"/><file name="Plan.php" hash="f73f24fcc57cfeb2e6f0e6312e531073"/><file name="PlanGateway.php" hash="8392fc6b714b30d16fe0308a1e81db4f"/><file name="RangeNode.php" hash="4ad9a92547423b3d54d69097114c3daf"/><file name="ResourceCollection.php" hash="8f437cb5014148c0e2f6049347ae795c"/><dir name="Result"><file name="CreditCardVerification.php" hash="27b965f1e197b0392879e24cccf6dd9c"/><file name="Error.php" hash="81b616e25f182c0c571ad4e9e6fbc611"/><file name="Successful.php" hash="56c6f9a3e5996d18e01a8d382cc03cde"/></dir><file name="RiskData.php" hash="dd74658f351fe8af26cee3016a076fb9"/><file name="SettlementBatchSummary.php" hash="0dcc2b5dd7071d9037cf5970fafe8668"/><file name="SettlementBatchSummaryGateway.php" hash="4ec1a7a1c8875693123430aa51410b22"/><file name="SignatureService.php" hash="4b78d3e5897e715dcc877c5f65b3cfae"/><dir name="Subscription"><file name="StatusDetails.php" hash="29e375f02150bfd7147591f0eb27cb4f"/></dir><file name="Subscription.php" hash="96db82b5b67a72d4287d79b7c691b3d7"/><file name="SubscriptionGateway.php" hash="34118ee95b83d8904a47b388cbb8cfea"/><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="89bb29ef4552037973fe04d344f657ef"/><file name="TransactionAmounts.php" hash="ed9bf1f57d871542c32d11de9e031f05"/><file name="VenmoSdk.php" hash="6ce94deccd1f968596011487c7e69cc7"/></dir><file name="TextNode.php" hash="94c95ec9645de57acace2179fef7fb43"/><dir name="Transaction"><file name="AddressDetails.php" hash="ff52a4a48248085b7ea92e992160e413"/><file name="ApplePayCardDetails.php" hash="c4dd87cd46fe7269e1bd51c867adf7cb"/><file name="CoinbaseDetails.php" hash="d19a625f8de98698b8277c25660358f0"/><file name="CreditCardDetails.php" hash="aac5eb1f5804d4f979b9c71f7b98cb36"/><file name="CustomerDetails.php" hash="e137895c646127312be44292c84a2d81"/><file name="PayPalDetails.php" hash="ede299e376bce7714838d79ca3d40842"/><file name="StatusDetails.php" hash="7c6e719c51bf13bdfd07615030100ac6"/><file name="SubscriptionDetails.php" hash="1cf1f511d1545a2e27b8d3f4bee800ca"/></dir><file name="Transaction.php" hash="9970a0fa9d6af3e543703426da99a3c4"/><file name="TransactionGateway.php" hash="37500b8a181a18375c171d4a5a4938c6"/><file name="TransactionSearch.php" hash="41dd086066fa57582161032249b3d8ee"/><file name="TransparentRedirect.php" hash="154c9850be5175a5cd1b35bdf78ae939"/><file name="TransparentRedirectGateway.php" hash="89f002df5a2abafcaa9676a3e2935c75"/><file name="UnknownPaymentMethod.php" hash="811394ea4bee98a651dc5e1cba8223da"/><file name="Util.php" hash="2cf47c3acd49da4a6c2b0a9a55701d7b"/><file name="Version.php" hash="1ebf13fcec95da846f917f74e030714b"/><file name="WebhookNotification.php" hash="f58be59156e5728f491da4235a58e994"/><file name="WebhookTesting.php" hash="c40311458bb64e37b4c08eb88df37805"/><dir name="Xml"><file name="Generator.php" hash="f82af40e5759c3d46909f3dec2498d02"/><file name="Parser.php" hash="4e6df3327a04915715333460733df93c"/></dir><file name="Xml.php" hash="dc69e05bea21e3d1185d45d53e4747db"/></dir><dir name="."><file name="Braintree.php" hash="ee3e665877882e5b5076ff51dc8111bd"/></dir><dir name="ssl"><file name="api_braintreegateway_com.ca.crt" hash="04beb23c767547e980c76eb68c7eab15"/><file name="sandbox_braintreegateway_com.ca.crt" hash="f1b529883c7c2cbb4251658f5da7b4c9"/></dir></target><target name="magelocale"><dir><dir name="en_US"><file name="Gene_Braintree.csv" hash="00ae6dc359bc0d9c48bfc90a865232a3"/></dir></dir></target></contents>
|
42 |
<compatible/>
|
43 |
<dependencies><required><php><min>5.2.1</min><max>6.0.0</max></php><package><name/><channel>connect.magentocommerce.com/core</channel><min/><max/></package></required></dependencies>
|
44 |
</package>
|