Version Notes
Fix: Issue with Magento card type validation when not using iframes
Update: Add authorization data to payment information block for admin users
Fix: Card type during checkout. Uses value from frontend.
Fix: iframes when IWD isn't present
Fix: OPC transfer on failed payment
Fix: Issue with checkout using multi-use token
Update: Add basic velocity check based on IP
Update: Add support for partial refunds
Download this release
Release Info
Developer | Heartland Payment Systems |
Extension | Hps_Securesubmit |
Version | 1.2.8 |
Comparing to | |
See all releases |
Code changes from version 1.2.7 to 1.2.8
- app/code/community/Hps/Securesubmit/Block/Info.php +46 -4
- app/code/community/Hps/Securesubmit/Model/Payment.php +263 -44
- app/code/community/Hps/Securesubmit/etc/config.xml +2 -0
- app/code/community/Hps/Securesubmit/etc/system.xml +79 -37
- app/design/frontend/base/default/template/securesubmit/form.phtml +1 -0
- js/securesubmit/checkout-form.js +89 -33
- lib/SecureSubmit/src/Services/Gateway/HpsCreditService.php +17 -3
- lib/SecureSubmit/src/Services/Gateway/HpsSoapGatewayService.php +1 -1
- package.xml +14 -6
app/code/community/Hps/Securesubmit/Block/Info.php
CHANGED
@@ -18,16 +18,58 @@ class Hps_SecureSubmit_Block_Info extends Mage_Payment_Block_Info
|
|
18 |
$gift = '';
|
19 |
|
20 |
if (isset($additionalData['giftcard_number'])) {
|
21 |
-
$gift =
|
22 |
-
|
23 |
|
24 |
$type = $gift;
|
25 |
if (!$skipCC) {
|
26 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
}
|
28 |
|
29 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30 |
|
31 |
return $transport->setData(array_merge($data, $transport->getData()));
|
32 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
33 |
}
|
18 |
$gift = '';
|
19 |
|
20 |
if (isset($additionalData['giftcard_number'])) {
|
21 |
+
$gift = 'Gift Card' . (!$skipCC ? ' & ' : '');
|
22 |
+
}
|
23 |
|
24 |
$type = $gift;
|
25 |
if (!$skipCC) {
|
26 |
+
$cardType = isset($additionalData['cc_type'])
|
27 |
+
? $additionalData['cc_type']
|
28 |
+
: ($info->getCcType() ? $info->getCcType() : '');
|
29 |
+
$type .= sprintf(
|
30 |
+
'%s ending with %s (%s/%s)',
|
31 |
+
strtoupper($cardType),
|
32 |
+
$info->getCcLast4(),
|
33 |
+
$info->getCcExpMonth(),
|
34 |
+
$info->getCcExpYear()
|
35 |
+
);
|
36 |
+
}
|
37 |
+
|
38 |
+
$data[Mage::helper('payment')->__('Payment Type')] = $type;
|
39 |
+
|
40 |
+
if ($this->isAdmin() && isset($additionalData['auth_code'])) {
|
41 |
+
$data[Mage::helper('payment')->__('Authorization Code')] = $additionalData['auth_code'];
|
42 |
}
|
43 |
|
44 |
+
if ($this->isAdmin() && isset($additionalData['avs_response_code'])) {
|
45 |
+
$data[Mage::helper('payment')->__('AVS Response')] = sprintf(
|
46 |
+
'%s (%s)',
|
47 |
+
$additionalData['avs_response_text'],
|
48 |
+
$additionalData['avs_response_code']
|
49 |
+
);
|
50 |
+
}
|
51 |
+
|
52 |
+
if ($this->isAdmin() && isset($additionalData['cvv_response_code'])) {
|
53 |
+
$data[Mage::helper('payment')->__('CVV Response')] = sprintf(
|
54 |
+
'%s (%s)',
|
55 |
+
$additionalData['cvv_response_text'],
|
56 |
+
$additionalData['cvv_response_code']
|
57 |
+
);
|
58 |
+
}
|
59 |
|
60 |
return $transport->setData(array_merge($data, $transport->getData()));
|
61 |
}
|
62 |
+
|
63 |
+
protected function isAdmin()
|
64 |
+
{
|
65 |
+
if (Mage::app()->getStore()->isAdmin()) {
|
66 |
+
return true;
|
67 |
+
}
|
68 |
+
|
69 |
+
if (Mage::getDesign()->getArea() == 'adminhtml') {
|
70 |
+
return true;
|
71 |
+
}
|
72 |
+
|
73 |
+
return false;
|
74 |
+
}
|
75 |
}
|
app/code/community/Hps/Securesubmit/Model/Payment.php
CHANGED
@@ -9,6 +9,10 @@ require_once Mage::getBaseDir('lib').DS.'SecureSubmit'.DS.'Hps.php';
|
|
9 |
*/
|
10 |
class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
|
11 |
{
|
|
|
|
|
|
|
|
|
12 |
protected $_code = 'hps_securesubmit';
|
13 |
protected $_isGateway = true;
|
14 |
protected $_canCapture = true;
|
@@ -22,11 +26,14 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
|
|
22 |
protected $_formBlockType = 'hps_securesubmit/form';
|
23 |
protected $_formBlockTypeAdmin = 'hps_securesubmit/adminhtml_form';
|
24 |
protected $_infoBlockType = 'hps_securesubmit/info';
|
|
|
25 |
protected $_allow_fraud = null;
|
26 |
protected $_email_fraud = null;
|
27 |
protected $_fraud_address = null;
|
28 |
protected $_fraud_text = null;
|
29 |
protected $_use_iframes = null;
|
|
|
|
|
30 |
|
31 |
/**
|
32 |
* Fields that should be replaced in debug with '***'
|
@@ -82,6 +89,8 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
|
|
82 |
*/
|
83 |
private function _authorize(Varien_Object $payment, $amount, $capture)
|
84 |
{
|
|
|
|
|
85 |
$order = $payment->getOrder(); /* @var $order Mage_Sales_Model_Order */
|
86 |
$multiToken = false;
|
87 |
$cardData = null;
|
@@ -104,6 +113,8 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
|
|
104 |
if ($giftResponse->balanceAmount > $amount) {
|
105 |
// 2.yes. process full to gift
|
106 |
try {
|
|
|
|
|
107 |
if (strpos($this->getConfigData('secretapikey'), '_cert_') !== false) {
|
108 |
$giftresp = $giftService->sale($giftcard, 10.00);
|
109 |
} else {
|
@@ -123,21 +134,33 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
|
|
123 |
$this->closeTransaction($payment,$amount,$giftresp);
|
124 |
return $this;
|
125 |
} catch (Exception $e) {
|
|
|
|
|
126 |
Mage::logException($e);
|
127 |
$payment->setStatus(self::STATUS_ERROR);
|
128 |
$this->throwUserError($e->getMessage(), null, true);
|
129 |
}
|
130 |
} else {
|
131 |
// 2.no. process full gift card amt and card process remainder
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
141 |
// 3. TODO: if the card payment fails later, refund the gift transaction
|
142 |
}
|
143 |
}
|
@@ -158,6 +181,8 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
|
|
158 |
$cardOrToken->tokenValue = $secureToken;
|
159 |
|
160 |
try {
|
|
|
|
|
161 |
if ($capture) {
|
162 |
if ($payment->getCcTransId()) {
|
163 |
$response = $chargeService->capture(
|
@@ -187,7 +212,7 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
|
|
187 |
|
188 |
$this->_debugChargeService($chargeService);
|
189 |
// \Hps_Securesubmit_Model_Payment::closeTransaction
|
190 |
-
$this->closeTransaction($payment
|
191 |
|
192 |
if ($giftCardNumber) {
|
193 |
$order->addStatusHistoryComment('Remaining amount to be charged to credit card ' .$this->_formatAmount((string)$amount) . '. [partial payment]')->save();
|
@@ -197,8 +222,9 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
|
|
197 |
$this->saveMultiUseToken($response, $cardData, $customerId, $cardType);
|
198 |
}
|
199 |
} catch (HpsCreditException $e) {
|
|
|
|
|
200 |
Mage::logException($e);
|
201 |
-
$this->getFraudSettings();
|
202 |
$this->_debugChargeService($chargeService, $e);
|
203 |
|
204 |
// refund gift (if used)
|
@@ -250,19 +276,37 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
|
|
250 |
* @param Mage_Payment_Model_Method_Abstract::STATUS_UNKNOWN|STATUS_APPROVED|STATUS_ERROR|STATUS_DECLINED|STATUS_VOID|STATUS_SUCCESS $status
|
251 |
*/
|
252 |
protected function closeTransaction($payment, $amount, $response, $status = self::STATUS_APPROVED){
|
|
|
|
|
|
|
253 |
$payment->setStatus($status);
|
254 |
$payment->setAmount($amount);
|
255 |
-
if (property_exists($response,'authorizationCode')){
|
256 |
-
$payment->setCcApproval($response->authorizationCode);
|
257 |
-
}
|
258 |
-
if (property_exists($response,'avsResultCode')){
|
259 |
-
$payment->setCcAvsStatus($response->avsResultCode);
|
260 |
-
}
|
261 |
$payment->setLastTransId($response->transactionId);
|
262 |
$payment->setCcTransId($response->transactionId);
|
263 |
$payment->setTransactionId($response->transactionId);
|
264 |
$payment->setIsTransactionClosed(0);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
265 |
}
|
|
|
266 |
protected function saveMultiUseToken($response, $cardData, $customerId, $cardType)
|
267 |
{
|
268 |
$tokenData = $response->tokenData; /* @var $tokenData HpsTokenData */
|
@@ -284,18 +328,142 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
|
|
284 |
}
|
285 |
}
|
286 |
|
287 |
-
protected function _formatAmount($amount)
|
|
|
288 |
return Mage::helper('core')->currency($amount, true, false);
|
289 |
}
|
290 |
|
291 |
protected function getFraudSettings()
|
292 |
{
|
293 |
-
$this->
|
294 |
-
|
295 |
-
|
296 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
297 |
}
|
298 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
299 |
/**
|
300 |
* @param Varien_Object|Mage_Sales_Model_Order_Payment $payment
|
301 |
* @param float $amount
|
@@ -303,8 +471,13 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
|
|
303 |
*/
|
304 |
public function refund(Varien_Object $payment, $amount)
|
305 |
{
|
306 |
-
|
307 |
-
|
|
|
|
|
|
|
|
|
|
|
308 |
} else {
|
309 |
$this->_refund($payment, $amount);
|
310 |
}
|
@@ -312,6 +485,27 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
|
|
312 |
return $this;
|
313 |
}
|
314 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
315 |
public function getParentTransactionId(Varien_Object $payment)
|
316 |
{
|
317 |
$transaction = Mage::getModel('sales/order_payment_transaction')->getCollection()
|
@@ -326,21 +520,6 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
|
|
326 |
}
|
327 |
}
|
328 |
|
329 |
-
public function transactionActiveOnGateway(Varien_Object $payment)
|
330 |
-
{
|
331 |
-
$transactionId = null;
|
332 |
-
|
333 |
-
if (false !== ($parentId = $this->getParentTransactionId($payment))) {
|
334 |
-
$transactionId = $parentId;
|
335 |
-
} else {
|
336 |
-
$transactionId = $payment->getCcTransId();
|
337 |
-
}
|
338 |
-
|
339 |
-
$service = $this->_getChargeService();
|
340 |
-
$transaction = $service->get($transactionId);
|
341 |
-
|
342 |
-
return $transaction->transactionStatus == 'A';
|
343 |
-
}
|
344 |
|
345 |
/**
|
346 |
* Void payment abstract method
|
@@ -418,6 +597,45 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
|
|
418 |
return $this;
|
419 |
}
|
420 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
421 |
/**
|
422 |
* @param null|Mage_Sales_Model_Quote $quote
|
423 |
* @return bool
|
@@ -511,12 +729,13 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
|
|
511 |
}
|
512 |
|
513 |
// Send checkout session back to payment section to avoid double-attempt to charge single-use token
|
514 |
-
if ($goToPaymentSection
|
515 |
-
Mage::
|
|
|
|
|
|
|
|
|
516 |
}
|
517 |
-
|
518 |
-
Mage::log('throwing user error with Mage_Core_Exception: ' . $error);
|
519 |
-
throw new Mage_Core_Exception($error);
|
520 |
}
|
521 |
|
522 |
/**
|
9 |
*/
|
10 |
class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
|
11 |
{
|
12 |
+
const FRAUD_TEXT_DEFAULT = '%s';
|
13 |
+
const FRAUD_VELOCITY_ATTEMPTS_DEFAULT = 3;
|
14 |
+
const FRAUD_VELOCITY_TIMEOUT_DEFAULT = 10;
|
15 |
+
|
16 |
protected $_code = 'hps_securesubmit';
|
17 |
protected $_isGateway = true;
|
18 |
protected $_canCapture = true;
|
26 |
protected $_formBlockType = 'hps_securesubmit/form';
|
27 |
protected $_formBlockTypeAdmin = 'hps_securesubmit/adminhtml_form';
|
28 |
protected $_infoBlockType = 'hps_securesubmit/info';
|
29 |
+
protected $_enable_anti_fraud = null;
|
30 |
protected $_allow_fraud = null;
|
31 |
protected $_email_fraud = null;
|
32 |
protected $_fraud_address = null;
|
33 |
protected $_fraud_text = null;
|
34 |
protected $_use_iframes = null;
|
35 |
+
protected $_fraud_velocity_attempts = null;
|
36 |
+
protected $_fraud_velocity_timeout = null;
|
37 |
|
38 |
/**
|
39 |
* Fields that should be replaced in debug with '***'
|
89 |
*/
|
90 |
private function _authorize(Varien_Object $payment, $amount, $capture)
|
91 |
{
|
92 |
+
$this->getFraudSettings();
|
93 |
+
|
94 |
$order = $payment->getOrder(); /* @var $order Mage_Sales_Model_Order */
|
95 |
$multiToken = false;
|
96 |
$cardData = null;
|
113 |
if ($giftResponse->balanceAmount > $amount) {
|
114 |
// 2.yes. process full to gift
|
115 |
try {
|
116 |
+
$this->checkVelocity();
|
117 |
+
|
118 |
if (strpos($this->getConfigData('secretapikey'), '_cert_') !== false) {
|
119 |
$giftresp = $giftService->sale($giftcard, 10.00);
|
120 |
} else {
|
134 |
$this->closeTransaction($payment,$amount,$giftresp);
|
135 |
return $this;
|
136 |
} catch (Exception $e) {
|
137 |
+
$this->updateVelocity($e);
|
138 |
+
|
139 |
Mage::logException($e);
|
140 |
$payment->setStatus(self::STATUS_ERROR);
|
141 |
$this->throwUserError($e->getMessage(), null, true);
|
142 |
}
|
143 |
} else {
|
144 |
// 2.no. process full gift card amt and card process remainder
|
145 |
+
try {
|
146 |
+
$this->checkVelocity($e);
|
147 |
+
|
148 |
+
$giftresp = $giftService->sale($giftcard, $giftResponse->balanceAmount);
|
149 |
+
$order->addStatusHistoryComment('Used Heartland Gift Card ' . $giftCardNumber . ' for amount $' . $giftResponse->balanceAmount . '. [partial payment]')->save();
|
150 |
+
$payment->setTransactionAdditionalInfo(Mage_Sales_Model_Order_Payment_Transaction::RAW_DETAILS,
|
151 |
+
array(
|
152 |
+
'gift_card_number' => $giftCardNumber,
|
153 |
+
'gift_card_transaction' => $giftresp->transactionId,
|
154 |
+
'gift_card_amount_charged' => $giftResponse->balanceAmount));
|
155 |
+
$payment->setAmount($giftResponse->balanceAmount)->save();
|
156 |
+
$amount = $amount - $giftResponse->balanceAmount; // remainder
|
157 |
+
} catch (Exception $e) {
|
158 |
+
$this->updateVelocity($e);
|
159 |
+
|
160 |
+
Mage::logException($e);
|
161 |
+
$payment->setStatus(self::STATUS_ERROR);
|
162 |
+
$this->throwUserError($e->getMessage(), null, true);
|
163 |
+
}
|
164 |
// 3. TODO: if the card payment fails later, refund the gift transaction
|
165 |
}
|
166 |
}
|
181 |
$cardOrToken->tokenValue = $secureToken;
|
182 |
|
183 |
try {
|
184 |
+
$this->checkVelocity();
|
185 |
+
|
186 |
if ($capture) {
|
187 |
if ($payment->getCcTransId()) {
|
188 |
$response = $chargeService->capture(
|
212 |
|
213 |
$this->_debugChargeService($chargeService);
|
214 |
// \Hps_Securesubmit_Model_Payment::closeTransaction
|
215 |
+
$this->closeTransaction($payment, $amount, $response);
|
216 |
|
217 |
if ($giftCardNumber) {
|
218 |
$order->addStatusHistoryComment('Remaining amount to be charged to credit card ' .$this->_formatAmount((string)$amount) . '. [partial payment]')->save();
|
222 |
$this->saveMultiUseToken($response, $cardData, $customerId, $cardType);
|
223 |
}
|
224 |
} catch (HpsCreditException $e) {
|
225 |
+
$this->updateVelocity($e);
|
226 |
+
|
227 |
Mage::logException($e);
|
|
|
228 |
$this->_debugChargeService($chargeService, $e);
|
229 |
|
230 |
// refund gift (if used)
|
276 |
* @param Mage_Payment_Model_Method_Abstract::STATUS_UNKNOWN|STATUS_APPROVED|STATUS_ERROR|STATUS_DECLINED|STATUS_VOID|STATUS_SUCCESS $status
|
277 |
*/
|
278 |
protected function closeTransaction($payment, $amount, $response, $status = self::STATUS_APPROVED){
|
279 |
+
$info = $this->getInfoInstance();
|
280 |
+
$details = unserialize($info->getAdditionalData());
|
281 |
+
|
282 |
$payment->setStatus($status);
|
283 |
$payment->setAmount($amount);
|
|
|
|
|
|
|
|
|
|
|
|
|
284 |
$payment->setLastTransId($response->transactionId);
|
285 |
$payment->setCcTransId($response->transactionId);
|
286 |
$payment->setTransactionId($response->transactionId);
|
287 |
$payment->setIsTransactionClosed(0);
|
288 |
+
|
289 |
+
$details['cc_type'] = $payment->getCcType();
|
290 |
+
|
291 |
+
if (property_exists($response, 'authorizationCode')) {
|
292 |
+
$payment->setCcApproval($response->authorizationCode);
|
293 |
+
$details['auth_code'] = $response->authorizationCode;
|
294 |
+
}
|
295 |
+
|
296 |
+
if (property_exists($response, 'avsResultCode')) {
|
297 |
+
$payment->setCcAvsStatus($response->avsResultCode);
|
298 |
+
$details['avs_response_code'] = $response->avsResultCode;
|
299 |
+
$details['avs_response_text'] = $response->avsResultText;
|
300 |
+
}
|
301 |
+
|
302 |
+
if (property_exists($response, 'cvvResultCode')) {
|
303 |
+
$details['cvv_response_code'] = $response->cvvResultCode;
|
304 |
+
$details['cvv_response_text'] = $response->cvvResultText;
|
305 |
+
}
|
306 |
+
|
307 |
+
$info->setAdditionalData(serialize($details));
|
308 |
}
|
309 |
+
|
310 |
protected function saveMultiUseToken($response, $cardData, $customerId, $cardType)
|
311 |
{
|
312 |
$tokenData = $response->tokenData; /* @var $tokenData HpsTokenData */
|
328 |
}
|
329 |
}
|
330 |
|
331 |
+
protected function _formatAmount($amount)
|
332 |
+
{
|
333 |
return Mage::helper('core')->currency($amount, true, false);
|
334 |
}
|
335 |
|
336 |
protected function getFraudSettings()
|
337 |
{
|
338 |
+
if ($this->_enable_anti_fraud === null) {
|
339 |
+
$this->_enable_anti_fraud = Mage::getStoreConfig('payment/hps_securesubmit/enable_anti_fraud') == 1;
|
340 |
+
$this->_allow_fraud = Mage::getStoreConfig('payment/hps_securesubmit/allow_fraud') == 1;
|
341 |
+
$this->_email_fraud = Mage::getStoreConfig('payment/hps_securesubmit/email_fraud') == 1;
|
342 |
+
$this->_fraud_address = (string)Mage::getStoreConfig('payment/hps_securesubmit/fraud_address');
|
343 |
+
$this->_fraud_text = (string)Mage::getStoreConfig('payment/hps_securesubmit/fraud_text');
|
344 |
+
$this->_fraud_velocity_attempts = (int)Mage::getStoreConfig('payment/hps_securesubmit/fraud_velocity_attempts');
|
345 |
+
$this->_fraud_velocity_timeout = (int)Mage::getStoreConfig('payment/hps_securesubmit/fraud_velocity_timeout');
|
346 |
+
|
347 |
+
if ($this->_fraud_text === null) {
|
348 |
+
$this->_fraud_text = self::FRAUD_TEXT_DEFAULT;
|
349 |
+
}
|
350 |
+
|
351 |
+
if ($this->_fraud_velocity_attempts === null
|
352 |
+
|| !is_numeric($this->_fraud_velocity_attempts)
|
353 |
+
) {
|
354 |
+
$this->_fraud_velocity_attempts = self::FRAUD_VELOCITY_ATTEMPTS_DEFAULT;
|
355 |
+
}
|
356 |
+
|
357 |
+
if ($this->_fraud_velocity_timeout === null
|
358 |
+
|| !is_numeric($this->_fraud_velocity_timeout)
|
359 |
+
) {
|
360 |
+
$this->_fraud_velocity_timeout = self::FRAUD_VELOCITY_TIMEOUT_DEFAULT;
|
361 |
+
}
|
362 |
+
}
|
363 |
+
}
|
364 |
+
|
365 |
+
protected function maybeResetVelocityTimeout()
|
366 |
+
{
|
367 |
+
$timeoutSeconds = $this->_fraud_velocity_timeout * 60;
|
368 |
+
$timeoutExpiration = (int)$this->getVelocityVar('TimeoutExpiration');
|
369 |
+
|
370 |
+
if (time() < $timeoutExpiration) {
|
371 |
+
return;
|
372 |
+
}
|
373 |
+
|
374 |
+
$this->unsVelocityVar('Count');
|
375 |
+
$this->unsVelocityVar('IssuerResponse');
|
376 |
+
$this->unsVelocityVar('TimeoutExpiration');
|
377 |
+
}
|
378 |
+
|
379 |
+
protected function checkVelocity()
|
380 |
+
{
|
381 |
+
if ($this->_enable_anti_fraud !== true) {
|
382 |
+
return;
|
383 |
+
}
|
384 |
+
|
385 |
+
$this->maybeResetVelocityTimeout();
|
386 |
+
|
387 |
+
$count = (int)$this->getVelocityVar('Count');
|
388 |
+
$issuerResponse = (string)$this->getVelocityVar('IssuerResponse');
|
389 |
+
$timeoutExpiration = (int)$this->getVelocityVar('TimeoutExpiration');
|
390 |
+
|
391 |
+
if ($count >= $this->_fraud_velocity_attempts
|
392 |
+
&& time() < $timeoutExpiration) {
|
393 |
+
sleep(5);
|
394 |
+
throw new HpsException(sprintf($this->_fraud_text, $issuerResponse));
|
395 |
+
}
|
396 |
+
}
|
397 |
+
|
398 |
+
protected function updateVelocity($e)
|
399 |
+
{
|
400 |
+
if ($this->_enable_anti_fraud !== true) {
|
401 |
+
return;
|
402 |
+
}
|
403 |
+
|
404 |
+
$this->maybeResetVelocityTimeout();
|
405 |
+
|
406 |
+
$count = (int)$this->getVelocityVar('Count');
|
407 |
+
$issuerResponse = (string)$this->getVelocityVar('IssuerResponse');
|
408 |
+
if ($issuerResponse !== $e->getMessage()) {
|
409 |
+
$issuerResponse = $e->getMessage();
|
410 |
+
}
|
411 |
+
// NOW + (fraud velocity timeout in seconds)
|
412 |
+
$timeoutExpiration = time() + ($this->_fraud_velocity_timeout * 60);
|
413 |
+
|
414 |
+
$this->setVelocityVar('Count', $count + 1);
|
415 |
+
$this->setVelocityVar('IssuerResponse', $issuerResponse);
|
416 |
+
$this->setVelocityVar('TimeoutExpiration', $timeoutExpiration);
|
417 |
+
}
|
418 |
+
|
419 |
+
protected function getVelocityVar($var)
|
420 |
+
{
|
421 |
+
return Mage::getSingleton('checkout/session')
|
422 |
+
->getData($this->getVelocityVarPrefix() . $var);
|
423 |
+
}
|
424 |
+
|
425 |
+
protected function setVelocityVar($var, $data = null)
|
426 |
+
{
|
427 |
+
return Mage::getSingleton('checkout/session')
|
428 |
+
->setData($this->getVelocityVarPrefix() . $var, $data);
|
429 |
+
}
|
430 |
+
|
431 |
+
protected function unsVelocityVar($var)
|
432 |
+
{
|
433 |
+
return Mage::getSingleton('checkout/session')
|
434 |
+
->unsetData($this->getVelocityVarPrefix() . $var);
|
435 |
}
|
436 |
|
437 |
+
protected function getVelocityVarPrefix()
|
438 |
+
{
|
439 |
+
return sprintf('HeartlandHPS_Velocity%s', md5($this->getRemoteIP()));
|
440 |
+
}
|
441 |
+
|
442 |
+
protected function getRemoteIP()
|
443 |
+
{
|
444 |
+
static $remoteIP = '';
|
445 |
+
if ($remoteIP !== '') {
|
446 |
+
return $remoteIP;
|
447 |
+
}
|
448 |
+
if (array_key_exists('HTTP_X_FORWARDED_FOR', $_SERVER)
|
449 |
+
&& $_SERVER['HTTP_X_FORWARDED_FOR'] != ''
|
450 |
+
) {
|
451 |
+
$remoteIPArray = array_values(
|
452 |
+
array_filter(
|
453 |
+
explode(
|
454 |
+
',',
|
455 |
+
$_SERVER['HTTP_X_FORWARDED_FOR']
|
456 |
+
)
|
457 |
+
)
|
458 |
+
);
|
459 |
+
$remoteIP = end($remoteIPArray);
|
460 |
+
} else {
|
461 |
+
$remoteIP = $_SERVER['REMOTE_ADDR'];
|
462 |
+
}
|
463 |
+
return $remoteIP;
|
464 |
+
}
|
465 |
+
|
466 |
+
|
467 |
/**
|
468 |
* @param Varien_Object|Mage_Sales_Model_Order_Payment $payment
|
469 |
* @param float $amount
|
471 |
*/
|
472 |
public function refund(Varien_Object $payment, $amount)
|
473 |
{
|
474 |
+
$transactionDetails = $this->getTransactionDetails($payment);
|
475 |
+
if ($this->canVoid($payment) && $this->transactionActiveOnGateway($transactionDetails)) {
|
476 |
+
if ($transactionDetails->authorizedAmount > $amount) {
|
477 |
+
$this->_reversal($payment, $transactionDetails, $amount);
|
478 |
+
} else {
|
479 |
+
$this->void($payment);
|
480 |
+
}
|
481 |
} else {
|
482 |
$this->_refund($payment, $amount);
|
483 |
}
|
485 |
return $this;
|
486 |
}
|
487 |
|
488 |
+
|
489 |
+
public function getTransactionDetails(Varien_Object $payment)
|
490 |
+
{
|
491 |
+
$transactionId = null;
|
492 |
+
|
493 |
+
if (false !== ($parentId = $this->getParentTransactionId($payment))) {
|
494 |
+
$transactionId = $parentId;
|
495 |
+
} else {
|
496 |
+
$transactionId = $payment->getCcTransId();
|
497 |
+
}
|
498 |
+
|
499 |
+
$service = $this->_getChargeService();
|
500 |
+
return $service->get($transactionId);
|
501 |
+
}
|
502 |
+
|
503 |
+
|
504 |
+
public function transactionActiveOnGateway($transactionDetail)
|
505 |
+
{
|
506 |
+
return $transactionDetail->transactionStatus == 'A';
|
507 |
+
}
|
508 |
+
|
509 |
public function getParentTransactionId(Varien_Object $payment)
|
510 |
{
|
511 |
$transaction = Mage::getModel('sales/order_payment_transaction')->getCollection()
|
520 |
}
|
521 |
}
|
522 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
523 |
|
524 |
/**
|
525 |
* Void payment abstract method
|
597 |
return $this;
|
598 |
}
|
599 |
|
600 |
+
|
601 |
+
/**
|
602 |
+
* @param Varien_Object|Mage_Sales_Model_Order_Payment $payment
|
603 |
+
* @param HpsReportTransactionDetails $transactionDetails
|
604 |
+
* @param float $newAuthAmount
|
605 |
+
* @return Hps_Securesubmit_Model_Payment
|
606 |
+
*/
|
607 |
+
public function _reversal(Varien_Object $payment, $transactionDetails, $newAuthAmount)
|
608 |
+
{
|
609 |
+
$transactionId = $payment->getCcTransId();
|
610 |
+
$order = $payment->getOrder();
|
611 |
+
/* @var $order Mage_Sales_Model_Order */
|
612 |
+
$chargeService = $this->_getChargeService();
|
613 |
+
$details = $this->_getTxnDetailsData($order);
|
614 |
+
try {
|
615 |
+
$reverseResponse = $chargeService->reverse(
|
616 |
+
$transactionId,
|
617 |
+
$transactionDetails->authorizedAmount,
|
618 |
+
strtolower($order->getBaseCurrencyCode()),
|
619 |
+
$details,
|
620 |
+
$newAuthAmount
|
621 |
+
);
|
622 |
+
$payment
|
623 |
+
->setTransactionId($reverseResponse->transactionId)
|
624 |
+
->setParentTransactionId($transactionId)
|
625 |
+
->setIsTransactionClosed(1)
|
626 |
+
->setShouldCloseParentTransaction(1);
|
627 |
+
} catch (HpsException $e) {
|
628 |
+
|
629 |
+
$this->_debugChargeService($chargeService, $e);
|
630 |
+
$this->throwUserError($e->getMessage());
|
631 |
+
} catch (Exception $e) {
|
632 |
+
$this->_debugChargeService($chargeService, $e);
|
633 |
+
Mage::logException($e);
|
634 |
+
$this->throwUserError($e->getMessage());
|
635 |
+
}
|
636 |
+
|
637 |
+
return $this;
|
638 |
+
}
|
639 |
/**
|
640 |
* @param null|Mage_Sales_Model_Quote $quote
|
641 |
* @return bool
|
729 |
}
|
730 |
|
731 |
// Send checkout session back to payment section to avoid double-attempt to charge single-use token
|
732 |
+
if ($goToPaymentSection === true) {
|
733 |
+
Mage::log('throwing user error with Mage_Payment_Model_Info_Exception: ' . $error);
|
734 |
+
throw new Mage_Payment_Model_Info_Exception($error);
|
735 |
+
} else {
|
736 |
+
Mage::log('throwing user error with Mage_Core_Exception: ' . $error);
|
737 |
+
throw new Mage_Core_Exception($error);
|
738 |
}
|
|
|
|
|
|
|
739 |
}
|
740 |
|
741 |
/**
|
app/code/community/Hps/Securesubmit/etc/config.xml
CHANGED
@@ -75,6 +75,8 @@
|
|
75 |
<min_order_total/>
|
76 |
<secretapikey backend_model="adminhtml/system_config_backend_encrypted" />
|
77 |
<publicapikey backend_model="adminhtml/system_config_backend_encrypted" />
|
|
|
|
|
78 |
<use_http_proxy>0</use_http_proxy>
|
79 |
<debug>0</debug>
|
80 |
</hps_securesubmit>
|
75 |
<min_order_total/>
|
76 |
<secretapikey backend_model="adminhtml/system_config_backend_encrypted" />
|
77 |
<publicapikey backend_model="adminhtml/system_config_backend_encrypted" />
|
78 |
+
<fraud_velocity_attempts>3</fraud_velocity_attempts>
|
79 |
+
<fraud_velocity_timeout>10</fraud_velocity_timeout>
|
80 |
<use_http_proxy>0</use_http_proxy>
|
81 |
<debug>0</debug>
|
82 |
</hps_securesubmit>
|
app/code/community/Hps/Securesubmit/etc/system.xml
CHANGED
@@ -12,11 +12,12 @@
|
|
12 |
<show_in_store>1</show_in_store>
|
13 |
<comment><![CDATA[<a href="http://developer.heartlandpaymentsystems.com/SecureSubmit" target="_blank">Click here to sign up for SecureSubmit account</a>]]></comment>
|
14 |
<fields>
|
|
|
15 |
<active translate="label">
|
16 |
<label>Enabled</label>
|
17 |
<frontend_type>select</frontend_type>
|
18 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
19 |
-
<sort_order>
|
20 |
<show_in_default>1</show_in_default>
|
21 |
<show_in_website>1</show_in_website>
|
22 |
<show_in_store>0</show_in_store>
|
@@ -25,7 +26,7 @@
|
|
25 |
<label>New order status</label>
|
26 |
<frontend_type>select</frontend_type>
|
27 |
<source_model>adminhtml/system_config_source_order_status_processing</source_model>
|
28 |
-
<sort_order>
|
29 |
<show_in_default>1</show_in_default>
|
30 |
<show_in_website>1</show_in_website>
|
31 |
<show_in_store>0</show_in_store>
|
@@ -33,15 +34,16 @@
|
|
33 |
<title translate="label">
|
34 |
<label>Title</label>
|
35 |
<frontend_type>text</frontend_type>
|
36 |
-
<sort_order>
|
37 |
<show_in_default>1</show_in_default>
|
38 |
<show_in_website>1</show_in_website>
|
39 |
<show_in_store>1</show_in_store>
|
40 |
</title>
|
|
|
41 |
<publicapikey translate="label">
|
42 |
<label>Public Api Key</label>
|
43 |
<backend_model>adminhtml/system_config_backend_encrypted</backend_model>
|
44 |
-
<sort_order>
|
45 |
<show_in_default>1</show_in_default>
|
46 |
<show_in_website>1</show_in_website>
|
47 |
<show_in_store>1</show_in_store>
|
@@ -50,16 +52,17 @@
|
|
50 |
<label>Secret Api Key</label>
|
51 |
<frontend_type>obscure</frontend_type>
|
52 |
<backend_model>adminhtml/system_config_backend_encrypted</backend_model>
|
53 |
-
<sort_order>
|
54 |
<show_in_default>1</show_in_default>
|
55 |
<show_in_website>1</show_in_website>
|
56 |
<show_in_store>1</show_in_store>
|
57 |
</secretapikey>
|
|
|
58 |
<cctypes translate="label">
|
59 |
<label>Credit Card Types</label>
|
60 |
<frontend_type>multiselect</frontend_type>
|
61 |
<source_model>hps_securesubmit/source_cctype</source_model>
|
62 |
-
<sort_order>
|
63 |
<show_in_default>1</show_in_default>
|
64 |
<show_in_website>1</show_in_website>
|
65 |
<show_in_store>0</show_in_store>
|
@@ -68,16 +71,17 @@
|
|
68 |
<label>Payment Action</label>
|
69 |
<frontend_type>select</frontend_type>
|
70 |
<source_model>hps_securesubmit/source_paymentAction</source_model>
|
71 |
-
<sort_order>
|
72 |
<show_in_default>1</show_in_default>
|
73 |
<show_in_website>1</show_in_website>
|
74 |
<show_in_store>0</show_in_store>
|
75 |
</payment_action>
|
|
|
76 |
<allow_card_saving translate="label">
|
77 |
<label>Allow Card Saving</label>
|
78 |
<frontend_type>select</frontend_type>
|
79 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
80 |
-
<sort_order>
|
81 |
<show_in_default>1</show_in_default>
|
82 |
<show_in_website>1</show_in_website>
|
83 |
<show_in_store>1</show_in_store>
|
@@ -85,11 +89,22 @@
|
|
85 |
Heartland Account must be configured for multi-use tokenization.]]>
|
86 |
</comment>
|
87 |
</allow_card_saving>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
<allow_heartland_gift translate="label">
|
89 |
<label>Allow Heartland Gift Cards</label>
|
90 |
<frontend_type>select</frontend_type>
|
91 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
92 |
-
<sort_order>
|
93 |
<show_in_default>1</show_in_default>
|
94 |
<show_in_website>1</show_in_website>
|
95 |
<show_in_store>1</show_in_store>
|
@@ -97,57 +112,82 @@
|
|
97 |
Heartland Account must already be signed up to accept Gift Cards.]]>
|
98 |
</comment>
|
99 |
</allow_heartland_gift>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
100 |
<allow_fraud translate="label">
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
|
|
109 |
</allow_fraud>
|
110 |
<email_fraud translate="label">
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
|
|
118 |
</email_fraud>
|
119 |
<fraud_address translate="label">
|
120 |
<label>Notification Email Address</label>
|
121 |
<frontend_type>text</frontend_type>
|
122 |
-
<sort_order>
|
123 |
<show_in_default>1</show_in_default>
|
124 |
<show_in_website>1</show_in_website>
|
125 |
<show_in_store>1</show_in_store>
|
126 |
<comment><![CDATA[This email address will be notified of suspicious orders.]]></comment>
|
|
|
127 |
</fraud_address>
|
128 |
<fraud_text translate="label">
|
129 |
<label>Fraud Text</label>
|
130 |
<frontend_type>textarea</frontend_type>
|
131 |
-
<sort_order>
|
132 |
<show_in_default>1</show_in_default>
|
133 |
<show_in_website>1</show_in_website>
|
134 |
<show_in_store>1</show_in_store>
|
135 |
<comment><![CDATA[This is the text that will display to the customer when fraud is detected and the transaction fails.]]></comment>
|
|
|
136 |
</fraud_text>
|
137 |
-
<
|
138 |
-
<label>
|
139 |
-
<frontend_type>
|
140 |
-
<source_model>adminhtml/system_config_source_yesno</source_model>
|
141 |
<sort_order>65</sort_order>
|
142 |
<show_in_default>1</show_in_default>
|
143 |
<show_in_website>1</show_in_website>
|
144 |
<show_in_store>1</show_in_store>
|
145 |
-
<comment><![CDATA[
|
146 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
147 |
<custom_message translate="label">
|
148 |
<label>Custom Error Message</label>
|
149 |
<frontend_type>textarea</frontend_type>
|
150 |
-
<sort_order>
|
151 |
<show_in_default>1</show_in_default>
|
152 |
<show_in_website>1</show_in_website>
|
153 |
<show_in_store>1</show_in_store>
|
@@ -159,17 +199,18 @@
|
|
159 |
<sort_order translate="label">
|
160 |
<label>Sort Order</label>
|
161 |
<frontend_type>text</frontend_type>
|
162 |
-
<sort_order>
|
163 |
<show_in_default>1</show_in_default>
|
164 |
<show_in_website>1</show_in_website>
|
165 |
<show_in_store>0</show_in_store>
|
166 |
</sort_order>
|
|
|
167 |
<use_http_proxy translate="label">
|
168 |
<label>Use HTTP Proxy</label>
|
169 |
<frontend_type>select</frontend_type>
|
170 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
171 |
<backend_model>hps_securesubmit/system_config_backend_proxy</backend_model>
|
172 |
-
<sort_order>
|
173 |
<show_in_default>1</show_in_default>
|
174 |
<show_in_website>1</show_in_website>
|
175 |
<show_in_store>0</show_in_store>
|
@@ -177,7 +218,7 @@
|
|
177 |
<http_proxy_host translate="label">
|
178 |
<label>HTTP Proxy Host</label>
|
179 |
<frontend_type>text</frontend_type>
|
180 |
-
<sort_order>
|
181 |
<show_in_default>1</show_in_default>
|
182 |
<show_in_website>1</show_in_website>
|
183 |
<show_in_store>0</show_in_store>
|
@@ -187,13 +228,14 @@
|
|
187 |
<http_proxy_port translate="label">
|
188 |
<label>HTTP Proxy Port</label>
|
189 |
<frontend_type>text</frontend_type>
|
190 |
-
<sort_order>
|
191 |
<show_in_default>1</show_in_default>
|
192 |
<show_in_website>1</show_in_website>
|
193 |
<show_in_store>0</show_in_store>
|
194 |
<comment>Example: 8888</comment>
|
195 |
<depends><use_http_proxy>1</use_http_proxy></depends>
|
196 |
</http_proxy_port>
|
|
|
197 |
<debug translate="label">
|
198 |
<label>Debug</label>
|
199 |
<frontend_type>select</frontend_type>
|
12 |
<show_in_store>1</show_in_store>
|
13 |
<comment><![CDATA[<a href="http://developer.heartlandpaymentsystems.com/SecureSubmit" target="_blank">Click here to sign up for SecureSubmit account</a>]]></comment>
|
14 |
<fields>
|
15 |
+
<!-- Basic -->
|
16 |
<active translate="label">
|
17 |
<label>Enabled</label>
|
18 |
<frontend_type>select</frontend_type>
|
19 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
20 |
+
<sort_order>1</sort_order>
|
21 |
<show_in_default>1</show_in_default>
|
22 |
<show_in_website>1</show_in_website>
|
23 |
<show_in_store>0</show_in_store>
|
26 |
<label>New order status</label>
|
27 |
<frontend_type>select</frontend_type>
|
28 |
<source_model>adminhtml/system_config_source_order_status_processing</source_model>
|
29 |
+
<sort_order>2</sort_order>
|
30 |
<show_in_default>1</show_in_default>
|
31 |
<show_in_website>1</show_in_website>
|
32 |
<show_in_store>0</show_in_store>
|
34 |
<title translate="label">
|
35 |
<label>Title</label>
|
36 |
<frontend_type>text</frontend_type>
|
37 |
+
<sort_order>3</sort_order>
|
38 |
<show_in_default>1</show_in_default>
|
39 |
<show_in_website>1</show_in_website>
|
40 |
<show_in_store>1</show_in_store>
|
41 |
</title>
|
42 |
+
<!-- Authentication -->
|
43 |
<publicapikey translate="label">
|
44 |
<label>Public Api Key</label>
|
45 |
<backend_model>adminhtml/system_config_backend_encrypted</backend_model>
|
46 |
+
<sort_order>10</sort_order>
|
47 |
<show_in_default>1</show_in_default>
|
48 |
<show_in_website>1</show_in_website>
|
49 |
<show_in_store>1</show_in_store>
|
52 |
<label>Secret Api Key</label>
|
53 |
<frontend_type>obscure</frontend_type>
|
54 |
<backend_model>adminhtml/system_config_backend_encrypted</backend_model>
|
55 |
+
<sort_order>11</sort_order>
|
56 |
<show_in_default>1</show_in_default>
|
57 |
<show_in_website>1</show_in_website>
|
58 |
<show_in_store>1</show_in_store>
|
59 |
</secretapikey>
|
60 |
+
<!-- Payment -->
|
61 |
<cctypes translate="label">
|
62 |
<label>Credit Card Types</label>
|
63 |
<frontend_type>multiselect</frontend_type>
|
64 |
<source_model>hps_securesubmit/source_cctype</source_model>
|
65 |
+
<sort_order>20</sort_order>
|
66 |
<show_in_default>1</show_in_default>
|
67 |
<show_in_website>1</show_in_website>
|
68 |
<show_in_store>0</show_in_store>
|
71 |
<label>Payment Action</label>
|
72 |
<frontend_type>select</frontend_type>
|
73 |
<source_model>hps_securesubmit/source_paymentAction</source_model>
|
74 |
+
<sort_order>21</sort_order>
|
75 |
<show_in_default>1</show_in_default>
|
76 |
<show_in_website>1</show_in_website>
|
77 |
<show_in_store>0</show_in_store>
|
78 |
</payment_action>
|
79 |
+
<!-- Tokenization -->
|
80 |
<allow_card_saving translate="label">
|
81 |
<label>Allow Card Saving</label>
|
82 |
<frontend_type>select</frontend_type>
|
83 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
84 |
+
<sort_order>30</sort_order>
|
85 |
<show_in_default>1</show_in_default>
|
86 |
<show_in_website>1</show_in_website>
|
87 |
<show_in_store>1</show_in_store>
|
89 |
Heartland Account must be configured for multi-use tokenization.]]>
|
90 |
</comment>
|
91 |
</allow_card_saving>
|
92 |
+
<use_iframes translate="label">
|
93 |
+
<label>Host the payment fields on Heartland's servers</label>
|
94 |
+
<frontend_type>select</frontend_type>
|
95 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
96 |
+
<sort_order>31</sort_order>
|
97 |
+
<show_in_default>1</show_in_default>
|
98 |
+
<show_in_website>1</show_in_website>
|
99 |
+
<show_in_store>1</show_in_store>
|
100 |
+
<comment><![CDATA[Note: The customer will remain on your site throughout the checkout process, and there will be no redirect. This option only helps reduce your PCI scope.]]></comment>
|
101 |
+
</use_iframes>
|
102 |
+
<!-- Gift -->
|
103 |
<allow_heartland_gift translate="label">
|
104 |
<label>Allow Heartland Gift Cards</label>
|
105 |
<frontend_type>select</frontend_type>
|
106 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
107 |
+
<sort_order>40</sort_order>
|
108 |
<show_in_default>1</show_in_default>
|
109 |
<show_in_website>1</show_in_website>
|
110 |
<show_in_store>1</show_in_store>
|
112 |
Heartland Account must already be signed up to accept Gift Cards.]]>
|
113 |
</comment>
|
114 |
</allow_heartland_gift>
|
115 |
+
<!-- Anti-Fraud -->
|
116 |
+
<enable_anti_fraud translate="label">
|
117 |
+
<label>Enable Anti-Fraud Controls</label>
|
118 |
+
<frontend_type>select</frontend_type>
|
119 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
120 |
+
<sort_order>60</sort_order>
|
121 |
+
<show_in_default>1</show_in_default>
|
122 |
+
<show_in_website>1</show_in_website>
|
123 |
+
<show_in_store>1</show_in_store>
|
124 |
+
</enable_anti_fraud>
|
125 |
<allow_fraud translate="label">
|
126 |
+
<label>Allow Suspicious</label>
|
127 |
+
<frontend_type>select</frontend_type>
|
128 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
129 |
+
<sort_order>61</sort_order>
|
130 |
+
<show_in_default>1</show_in_default>
|
131 |
+
<show_in_website>1</show_in_website>
|
132 |
+
<show_in_store>1</show_in_store>
|
133 |
+
<comment><![CDATA[Note: You will have 72 hours from the original authorization date to manually review suspicious orders in the virtual terminal and make a final decision (either to accept the gateway fraud decision or to manually override).]]></comment>
|
134 |
+
<depends><enable_anti_fraud>1</enable_anti_fraud></depends>
|
135 |
</allow_fraud>
|
136 |
<email_fraud translate="label">
|
137 |
+
<label>Email Store Owner on Suspicious Orders</label>
|
138 |
+
<frontend_type>select</frontend_type>
|
139 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
140 |
+
<sort_order>62</sort_order>
|
141 |
+
<show_in_default>1</show_in_default>
|
142 |
+
<show_in_website>1</show_in_website>
|
143 |
+
<show_in_store>1</show_in_store>
|
144 |
+
<depends><enable_anti_fraud>1</enable_anti_fraud></depends>
|
145 |
</email_fraud>
|
146 |
<fraud_address translate="label">
|
147 |
<label>Notification Email Address</label>
|
148 |
<frontend_type>text</frontend_type>
|
149 |
+
<sort_order>63</sort_order>
|
150 |
<show_in_default>1</show_in_default>
|
151 |
<show_in_website>1</show_in_website>
|
152 |
<show_in_store>1</show_in_store>
|
153 |
<comment><![CDATA[This email address will be notified of suspicious orders.]]></comment>
|
154 |
+
<depends><enable_anti_fraud>1</enable_anti_fraud></depends>
|
155 |
</fraud_address>
|
156 |
<fraud_text translate="label">
|
157 |
<label>Fraud Text</label>
|
158 |
<frontend_type>textarea</frontend_type>
|
159 |
+
<sort_order>64</sort_order>
|
160 |
<show_in_default>1</show_in_default>
|
161 |
<show_in_website>1</show_in_website>
|
162 |
<show_in_store>1</show_in_store>
|
163 |
<comment><![CDATA[This is the text that will display to the customer when fraud is detected and the transaction fails.]]></comment>
|
164 |
+
<depends><enable_anti_fraud>1</enable_anti_fraud></depends>
|
165 |
</fraud_text>
|
166 |
+
<fraud_velocity_attempts translate="label">
|
167 |
+
<label>Max Velocity Attempts</label>
|
168 |
+
<frontend_type>text</frontend_type>
|
|
|
169 |
<sort_order>65</sort_order>
|
170 |
<show_in_default>1</show_in_default>
|
171 |
<show_in_website>1</show_in_website>
|
172 |
<show_in_store>1</show_in_store>
|
173 |
+
<comment><![CDATA[The maximum number of attempts allowed before additional attempts are blocked.]]></comment>
|
174 |
+
<depends><enable_anti_fraud>1</enable_anti_fraud></depends>
|
175 |
+
</fraud_velocity_attempts>
|
176 |
+
<fraud_velocity_timeout translate="label">
|
177 |
+
<label>Velocity Attempts Timeout</label>
|
178 |
+
<frontend_type>text</frontend_type>
|
179 |
+
<sort_order>66</sort_order>
|
180 |
+
<show_in_default>1</show_in_default>
|
181 |
+
<show_in_website>1</show_in_website>
|
182 |
+
<show_in_store>1</show_in_store>
|
183 |
+
<comment><![CDATA[The amount of time (in minutes) before recent failures are ignored.]]></comment>
|
184 |
+
<depends><enable_anti_fraud>1</enable_anti_fraud></depends>
|
185 |
+
</fraud_velocity_timeout>
|
186 |
+
<!-- Misc. -->
|
187 |
<custom_message translate="label">
|
188 |
<label>Custom Error Message</label>
|
189 |
<frontend_type>textarea</frontend_type>
|
190 |
+
<sort_order>90</sort_order>
|
191 |
<show_in_default>1</show_in_default>
|
192 |
<show_in_website>1</show_in_website>
|
193 |
<show_in_store>1</show_in_store>
|
199 |
<sort_order translate="label">
|
200 |
<label>Sort Order</label>
|
201 |
<frontend_type>text</frontend_type>
|
202 |
+
<sort_order>91</sort_order>
|
203 |
<show_in_default>1</show_in_default>
|
204 |
<show_in_website>1</show_in_website>
|
205 |
<show_in_store>0</show_in_store>
|
206 |
</sort_order>
|
207 |
+
<!-- Proxy -->
|
208 |
<use_http_proxy translate="label">
|
209 |
<label>Use HTTP Proxy</label>
|
210 |
<frontend_type>select</frontend_type>
|
211 |
<source_model>adminhtml/system_config_source_yesno</source_model>
|
212 |
<backend_model>hps_securesubmit/system_config_backend_proxy</backend_model>
|
213 |
+
<sort_order>100</sort_order>
|
214 |
<show_in_default>1</show_in_default>
|
215 |
<show_in_website>1</show_in_website>
|
216 |
<show_in_store>0</show_in_store>
|
218 |
<http_proxy_host translate="label">
|
219 |
<label>HTTP Proxy Host</label>
|
220 |
<frontend_type>text</frontend_type>
|
221 |
+
<sort_order>101</sort_order>
|
222 |
<show_in_default>1</show_in_default>
|
223 |
<show_in_website>1</show_in_website>
|
224 |
<show_in_store>0</show_in_store>
|
228 |
<http_proxy_port translate="label">
|
229 |
<label>HTTP Proxy Port</label>
|
230 |
<frontend_type>text</frontend_type>
|
231 |
+
<sort_order>101</sort_order>
|
232 |
<show_in_default>1</show_in_default>
|
233 |
<show_in_website>1</show_in_website>
|
234 |
<show_in_store>0</show_in_store>
|
235 |
<comment>Example: 8888</comment>
|
236 |
<depends><use_http_proxy>1</use_http_proxy></depends>
|
237 |
</http_proxy_port>
|
238 |
+
<!-- Debug -->
|
239 |
<debug translate="label">
|
240 |
<label>Debug</label>
|
241 |
<frontend_type>select</frontend_type>
|
app/design/frontend/base/default/template/securesubmit/form.phtml
CHANGED
@@ -29,6 +29,7 @@ if ($_loggedIn && $allow_card_saving) {
|
|
29 |
<label for="<?= $_code ?>_stored_card_select_<?= $card->getId() ?>" class="<?= $_code ?>_stored_card_label">
|
30 |
<div class="cc-option">
|
31 |
<input type="radio" name="<?= $_code ?>_stored_card_select" id="<?= $_code ?>_stored_card_select_<?= $card->getId() ?>" value="<?= $card->getId() ?>" <?php if ($checked): ?>checked="checked"<?php $checked=false; endif ?>/>
|
|
|
32 |
</div>
|
33 |
|
34 |
<span class="saved-cc-number">
|
29 |
<label for="<?= $_code ?>_stored_card_select_<?= $card->getId() ?>" class="<?= $_code ?>_stored_card_label">
|
30 |
<div class="cc-option">
|
31 |
<input type="radio" name="<?= $_code ?>_stored_card_select" id="<?= $_code ?>_stored_card_select_<?= $card->getId() ?>" value="<?= $card->getId() ?>" <?php if ($checked): ?>checked="checked"<?php $checked=false; endif ?>/>
|
32 |
+
<input type="hidden" id="<?= $_code ?>_stored_card_select_<?= $card->getId() ?>_card_type" value="<?= $card->getCcType() ?>" />
|
33 |
</div>
|
34 |
|
35 |
<span class="saved-cc-number">
|
js/securesubmit/checkout-form.js
CHANGED
@@ -10,7 +10,9 @@ function securesubmitMultishipping(multiForm) {
|
|
10 |
|
11 |
// Use stored card checked, get existing token data
|
12 |
if (this.secureSubmitUseStoredCard()) {
|
13 |
-
var
|
|
|
|
|
14 |
|
15 |
new Ajax.Request(this.secureSubmitGetTokenDataUrl, {
|
16 |
method: 'post',
|
@@ -22,6 +24,7 @@ function securesubmitMultishipping(multiForm) {
|
|
22 |
$('hps_securesubmit_cc_exp_year').value = data.token.cc_exp_year;
|
23 |
}
|
24 |
this.secureSubmitResponseHandler({
|
|
|
25 |
token_value: data.token.token_value,
|
26 |
token_type: null, // 'supt'?
|
27 |
token_expire: new Date().toISOString(),
|
@@ -46,9 +49,12 @@ function securesubmitMultishipping(multiForm) {
|
|
46 |
} else {
|
47 |
var validator = new Validation(multiForm);
|
48 |
if (validator.validate()) {
|
49 |
-
|
50 |
-
|
51 |
-
|
|
|
|
|
|
|
52 |
(new Heartland.HPS({
|
53 |
publicKey: this.secureSubmitPublicKey,
|
54 |
cardNumber: $('hps_securesubmit_cc_number').value,
|
@@ -68,11 +74,15 @@ function securesubmitMultishipping(multiForm) {
|
|
68 |
},
|
69 |
secureSubmitResponseHandler: function (response) {
|
70 |
var tokenField = $('hps_securesubmit_token'),
|
|
|
71 |
lastFourField = $('hps_securesubmit_cc_last_four');
|
72 |
-
|
73 |
-
|
74 |
-
$('
|
75 |
-
|
|
|
|
|
|
|
76 |
|
77 |
if (SecureSubmitMagento.skipCreditCard) {
|
78 |
SecureSubmitMagento.completeCheckout();
|
@@ -86,6 +96,7 @@ function securesubmitMultishipping(multiForm) {
|
|
86 |
} else if (response && response.token_value) {
|
87 |
tokenField.value = response.token_value;
|
88 |
lastFourField.value = response.card.number.substr(-4);
|
|
|
89 |
|
90 |
// Continue Magento checkout steps
|
91 |
document.getElementById('payment-continue').enable();
|
@@ -116,7 +127,9 @@ document.observe('dom:loaded', function () {
|
|
116 |
|
117 |
// Use stored card checked, get existing token data
|
118 |
if (this.secureSubmitUseStoredCard()) {
|
119 |
-
var
|
|
|
|
|
120 |
checkout.setLoadWaiting('payment');
|
121 |
new Ajax.Request(this.secureSubmitGetTokenDataUrl, {
|
122 |
method: 'post',
|
@@ -128,6 +141,7 @@ document.observe('dom:loaded', function () {
|
|
128 |
$('hps_securesubmit_cc_exp_year').value = data.token.cc_exp_year;
|
129 |
}
|
130 |
this.secureSubmitResponseHandler({
|
|
|
131 |
token_value: data.token.token_value,
|
132 |
token_type: null, // 'supt'?
|
133 |
token_expire: new Date().toISOString(),
|
@@ -155,9 +169,13 @@ document.observe('dom:loaded', function () {
|
|
155 |
var validator = new Validation(this.form);
|
156 |
if (this.validate() && validator.validate()) {
|
157 |
checkout.setLoadWaiting('payment');
|
158 |
-
|
159 |
-
$('
|
160 |
-
|
|
|
|
|
|
|
|
|
161 |
(new Heartland.HPS({
|
162 |
publicKey: this.secureSubmitPublicKey,
|
163 |
cardNumber: $('hps_securesubmit_cc_number').value,
|
@@ -177,11 +195,15 @@ document.observe('dom:loaded', function () {
|
|
177 |
},
|
178 |
secureSubmitResponseHandler: function (response) {
|
179 |
var tokenField = $('hps_securesubmit_token'),
|
|
|
180 |
lastFourField = $('hps_securesubmit_cc_last_four');
|
181 |
-
|
182 |
-
|
183 |
-
$('
|
184 |
-
|
|
|
|
|
|
|
185 |
|
186 |
if (SecureSubmitMagento.skipCreditCard) {
|
187 |
SecureSubmitMagento.completeCheckout();
|
@@ -196,6 +218,7 @@ document.observe('dom:loaded', function () {
|
|
196 |
} else if (response && response.token_value) {
|
197 |
tokenField.value = response.token_value;
|
198 |
lastFourField.value = response.card.number.substr(-4);
|
|
|
199 |
|
200 |
// Continue Magento checkout steps
|
201 |
new Ajax.Request(this.saveUrl, {
|
@@ -230,9 +253,12 @@ document.observe('dom:loaded', function () {
|
|
230 |
message: SecureSubmitMagento.options.publicKey
|
231 |
}, 'cardNumber');
|
232 |
} else {
|
233 |
-
|
234 |
-
|
235 |
-
|
|
|
|
|
|
|
236 |
(new Heartland.HPS({
|
237 |
publicKey: this.secureSubmitPublicKey,
|
238 |
cardNumber: $('hps_securesubmit_cc_number').value,
|
@@ -246,11 +272,15 @@ document.observe('dom:loaded', function () {
|
|
246 |
},
|
247 |
secureSubmitResponseHandler: function (response) {
|
248 |
var tokenField = $('hps_securesubmit_token'),
|
|
|
249 |
lastFourField = $('hps_securesubmit_cc_last_four');
|
250 |
-
|
251 |
-
|
252 |
-
$('
|
253 |
-
|
|
|
|
|
|
|
254 |
|
255 |
if (SecureSubmitMagento.skipCreditCard) {
|
256 |
SecureSubmitMagento.completeCheckout();
|
@@ -265,6 +295,7 @@ document.observe('dom:loaded', function () {
|
|
265 |
} else if (response && response.token_value) {
|
266 |
tokenField.value = response.token_value;
|
267 |
lastFourField.value = response.card.number.substr(-4);
|
|
|
268 |
|
269 |
this.setLoadWaiting(true);
|
270 |
var params = Form.serialize(this.form);
|
@@ -306,7 +337,9 @@ document.observe('dom:loaded', function () {
|
|
306 |
$('onestepcheckout-button-place-order').removeClassName('place-order-loader');
|
307 |
$('onestepcheckout-button-place-order').addClassName('onestepcheckout-btn-checkout');
|
308 |
if (secureSubmitUseStoredCardOSC()) {
|
309 |
-
var
|
|
|
|
|
310 |
new Ajax.Request(window.payment.secureSubmitGetTokenDataUrlOSC, {
|
311 |
method: 'post',
|
312 |
parameters: {storedcard_id: storedcardId},
|
@@ -317,6 +350,7 @@ document.observe('dom:loaded', function () {
|
|
317 |
$('hps_securesubmit_expiration_yr').value = data.token.cc_exp_year;
|
318 |
}
|
319 |
secureSubmitResponseHandlerOSC({
|
|
|
320 |
token_value: data.token.token_value,
|
321 |
token_type: null, // 'supt'?
|
322 |
token_expire: new Date().toISOString(),
|
@@ -340,9 +374,12 @@ document.observe('dom:loaded', function () {
|
|
340 |
message: SecureSubmitMagento.options.publicKey
|
341 |
}, 'cardNumber');
|
342 |
} else {
|
343 |
-
|
344 |
-
|
345 |
-
|
|
|
|
|
|
|
346 |
(new Heartland.HPS({
|
347 |
publicKey: window.payment.secureSubmitPublicKeyOSC,
|
348 |
cardNumber: $('hps_securesubmit_cc_number').value,
|
@@ -368,8 +405,15 @@ document.observe('dom:loaded', function () {
|
|
368 |
|
369 |
secureSubmitResponseHandlerOSC = function (response, btn) {
|
370 |
var tokenField = $('hps_securesubmit_token'),
|
|
|
371 |
lastFourField = $('hps_securesubmit_cc_last_four');
|
372 |
-
tokenField.value = lastFourField.value = null;
|
|
|
|
|
|
|
|
|
|
|
|
|
373 |
|
374 |
if (SecureSubmitMagento.skipCreditCard) {
|
375 |
SecureSubmitMagento.completeCheckout();
|
@@ -387,6 +431,7 @@ document.observe('dom:loaded', function () {
|
|
387 |
} else if (response && response.token_value) {
|
388 |
tokenField.value = response.token_value;
|
389 |
lastFourField.value = response.card.number.substr(-4);
|
|
|
390 |
|
391 |
$('onestepcheckout-place-order-loading').show();
|
392 |
$('onestepcheckout-button-place-order').removeClassName('onestepcheckout-btn-checkout');
|
@@ -425,9 +470,12 @@ document.observe('dom:loaded', function () {
|
|
425 |
message: SecureSubmitMagento.options.publicKey
|
426 |
}, 'cardNumber');
|
427 |
} else {
|
428 |
-
|
429 |
-
|
430 |
-
|
|
|
|
|
|
|
431 |
(new Heartland.HPS({
|
432 |
publicKey: this.secureSubmitPublicKey,
|
433 |
cardNumber: $('hps_securesubmit_cc_number').value,
|
@@ -441,8 +489,15 @@ document.observe('dom:loaded', function () {
|
|
441 |
},
|
442 |
secureSubmitResponseHandler: function (response) {
|
443 |
var tokenField = $('hps_securesubmit_token'),
|
|
|
444 |
lastFourField = $('hps_securesubmit_cc_last_four');
|
445 |
-
tokenField.value = lastFourField.value = null;
|
|
|
|
|
|
|
|
|
|
|
|
|
446 |
|
447 |
if (SecureSubmitMagento.skipCreditCard) {
|
448 |
SecureSubmitMagento.completeCheckout();
|
@@ -457,6 +512,7 @@ document.observe('dom:loaded', function () {
|
|
457 |
} else if (response && response.token_value) {
|
458 |
tokenField.value = response.token_value;
|
459 |
lastFourField.value = response.card.number.substr(-4);
|
|
|
460 |
|
461 |
var form = $j_opc('#co-payment-form').serializeArray();
|
462 |
IWD.OPC.Checkout.xhr = $j_opc.post(
|
@@ -670,7 +726,7 @@ document.observe('dom:loaded', function () {
|
|
670 |
onSuccess: checkout.setResponse.bind(checkout),
|
671 |
onFailure: checkout.ajaxFailure.bind(checkout)
|
672 |
});
|
673 |
-
} else if (typeof IWD.OPC !== 'undefined') {
|
674 |
var form = $j_opc('#co-payment-form').serializeArray();
|
675 |
IWD.OPC.Checkout.xhr = $j_opc.post(
|
676 |
IWD.OPC.Checkout.config.baseUrl + 'onepage/json/savePayment',
|
10 |
|
11 |
// Use stored card checked, get existing token data
|
12 |
if (this.secureSubmitUseStoredCard()) {
|
13 |
+
var radio = $$('[name="hps_securesubmit_stored_card_select"]:checked')[0];
|
14 |
+
var storedcardId = radio.value;
|
15 |
+
var storedcardType = $(radio.id + '_card_type').value;
|
16 |
|
17 |
new Ajax.Request(this.secureSubmitGetTokenDataUrl, {
|
18 |
method: 'post',
|
24 |
$('hps_securesubmit_cc_exp_year').value = data.token.cc_exp_year;
|
25 |
}
|
26 |
this.secureSubmitResponseHandler({
|
27 |
+
card_type: storedcardType,
|
28 |
token_value: data.token.token_value,
|
29 |
token_type: null, // 'supt'?
|
30 |
token_expire: new Date().toISOString(),
|
49 |
} else {
|
50 |
var validator = new Validation(multiForm);
|
51 |
if (validator.validate()) {
|
52 |
+
if ($('hps_securesubmit_exp_date').value) {
|
53 |
+
var date = $('hps_securesubmit_exp_date').value.split('/');
|
54 |
+
$('hps_securesubmit_cc_exp_month').value = date[0].trim();
|
55 |
+
$('hps_securesubmit_cc_exp_year').value = date[1].trim();
|
56 |
+
}
|
57 |
+
|
58 |
(new Heartland.HPS({
|
59 |
publicKey: this.secureSubmitPublicKey,
|
60 |
cardNumber: $('hps_securesubmit_cc_number').value,
|
74 |
},
|
75 |
secureSubmitResponseHandler: function (response) {
|
76 |
var tokenField = $('hps_securesubmit_token'),
|
77 |
+
typeField = $('hps_securesubmit_cc_type'),
|
78 |
lastFourField = $('hps_securesubmit_cc_last_four');
|
79 |
+
tokenField.value = typeField.value = lastFourField.value = null;
|
80 |
+
|
81 |
+
if ($('hps_securesubmit_exp_date').value) {
|
82 |
+
var date = $('hps_securesubmit_exp_date').value.split('/');
|
83 |
+
$('hps_securesubmit_cc_exp_month').value = date[0].trim();
|
84 |
+
$('hps_securesubmit_cc_exp_year').value = date[1].trim();
|
85 |
+
}
|
86 |
|
87 |
if (SecureSubmitMagento.skipCreditCard) {
|
88 |
SecureSubmitMagento.completeCheckout();
|
96 |
} else if (response && response.token_value) {
|
97 |
tokenField.value = response.token_value;
|
98 |
lastFourField.value = response.card.number.substr(-4);
|
99 |
+
typeField.value = response.card_type;
|
100 |
|
101 |
// Continue Magento checkout steps
|
102 |
document.getElementById('payment-continue').enable();
|
127 |
|
128 |
// Use stored card checked, get existing token data
|
129 |
if (this.secureSubmitUseStoredCard()) {
|
130 |
+
var radio = $$('[name="hps_securesubmit_stored_card_select"]:checked')[0];
|
131 |
+
var storedcardId = radio.value;
|
132 |
+
var storedcardType = $(radio.id + '_card_type').value;
|
133 |
checkout.setLoadWaiting('payment');
|
134 |
new Ajax.Request(this.secureSubmitGetTokenDataUrl, {
|
135 |
method: 'post',
|
141 |
$('hps_securesubmit_cc_exp_year').value = data.token.cc_exp_year;
|
142 |
}
|
143 |
this.secureSubmitResponseHandler({
|
144 |
+
card_type: storedcardType,
|
145 |
token_value: data.token.token_value,
|
146 |
token_type: null, // 'supt'?
|
147 |
token_expire: new Date().toISOString(),
|
169 |
var validator = new Validation(this.form);
|
170 |
if (this.validate() && validator.validate()) {
|
171 |
checkout.setLoadWaiting('payment');
|
172 |
+
|
173 |
+
if ($('hps_securesubmit_exp_date').value) {
|
174 |
+
var date = $('hps_securesubmit_exp_date').value.split('/');
|
175 |
+
$('hps_securesubmit_cc_exp_month').value = date[0].trim();
|
176 |
+
$('hps_securesubmit_cc_exp_year').value = date[1].trim();
|
177 |
+
}
|
178 |
+
|
179 |
(new Heartland.HPS({
|
180 |
publicKey: this.secureSubmitPublicKey,
|
181 |
cardNumber: $('hps_securesubmit_cc_number').value,
|
195 |
},
|
196 |
secureSubmitResponseHandler: function (response) {
|
197 |
var tokenField = $('hps_securesubmit_token'),
|
198 |
+
typeField = $('hps_securesubmit_cc_type'),
|
199 |
lastFourField = $('hps_securesubmit_cc_last_four');
|
200 |
+
tokenField.value = typeField.value = lastFourField.value = null;
|
201 |
+
|
202 |
+
if ($('hps_securesubmit_exp_date').value) {
|
203 |
+
var date = $('hps_securesubmit_exp_date').value.split('/');
|
204 |
+
$('hps_securesubmit_cc_exp_month').value = date[0].trim();
|
205 |
+
$('hps_securesubmit_cc_exp_year').value = date[1].trim();
|
206 |
+
}
|
207 |
|
208 |
if (SecureSubmitMagento.skipCreditCard) {
|
209 |
SecureSubmitMagento.completeCheckout();
|
218 |
} else if (response && response.token_value) {
|
219 |
tokenField.value = response.token_value;
|
220 |
lastFourField.value = response.card.number.substr(-4);
|
221 |
+
typeField.value = response.card_type;
|
222 |
|
223 |
// Continue Magento checkout steps
|
224 |
new Ajax.Request(this.saveUrl, {
|
253 |
message: SecureSubmitMagento.options.publicKey
|
254 |
}, 'cardNumber');
|
255 |
} else {
|
256 |
+
if ($('hps_securesubmit_exp_date').value) {
|
257 |
+
var date = $('hps_securesubmit_exp_date').value.split('/');
|
258 |
+
$('hps_securesubmit_cc_exp_month').value = date[0].trim();
|
259 |
+
$('hps_securesubmit_cc_exp_year').value = date[1].trim();
|
260 |
+
}
|
261 |
+
|
262 |
(new Heartland.HPS({
|
263 |
publicKey: this.secureSubmitPublicKey,
|
264 |
cardNumber: $('hps_securesubmit_cc_number').value,
|
272 |
},
|
273 |
secureSubmitResponseHandler: function (response) {
|
274 |
var tokenField = $('hps_securesubmit_token'),
|
275 |
+
typeField = $('hps_securesubmit_cc_type'),
|
276 |
lastFourField = $('hps_securesubmit_cc_last_four');
|
277 |
+
tokenField.value = typeField.value = lastFourField.value = null;
|
278 |
+
|
279 |
+
if ($('hps_securesubmit_exp_date').value) {
|
280 |
+
var date = $('hps_securesubmit_exp_date').value.split('/');
|
281 |
+
$('hps_securesubmit_cc_exp_month').value = date[0].trim();
|
282 |
+
$('hps_securesubmit_cc_exp_year').value = date[1].trim();
|
283 |
+
}
|
284 |
|
285 |
if (SecureSubmitMagento.skipCreditCard) {
|
286 |
SecureSubmitMagento.completeCheckout();
|
295 |
} else if (response && response.token_value) {
|
296 |
tokenField.value = response.token_value;
|
297 |
lastFourField.value = response.card.number.substr(-4);
|
298 |
+
typeField.value = response.card_type;
|
299 |
|
300 |
this.setLoadWaiting(true);
|
301 |
var params = Form.serialize(this.form);
|
337 |
$('onestepcheckout-button-place-order').removeClassName('place-order-loader');
|
338 |
$('onestepcheckout-button-place-order').addClassName('onestepcheckout-btn-checkout');
|
339 |
if (secureSubmitUseStoredCardOSC()) {
|
340 |
+
var radio = $$('[name="hps_securesubmit_stored_card_select"]:checked')[0];
|
341 |
+
var storedcardId = radio.value;
|
342 |
+
var storedcardType = $(radio.id + '_card_type').value;
|
343 |
new Ajax.Request(window.payment.secureSubmitGetTokenDataUrlOSC, {
|
344 |
method: 'post',
|
345 |
parameters: {storedcard_id: storedcardId},
|
350 |
$('hps_securesubmit_expiration_yr').value = data.token.cc_exp_year;
|
351 |
}
|
352 |
secureSubmitResponseHandlerOSC({
|
353 |
+
card_type: storedcardType,
|
354 |
token_value: data.token.token_value,
|
355 |
token_type: null, // 'supt'?
|
356 |
token_expire: new Date().toISOString(),
|
374 |
message: SecureSubmitMagento.options.publicKey
|
375 |
}, 'cardNumber');
|
376 |
} else {
|
377 |
+
if ($('hps_securesubmit_exp_date').value) {
|
378 |
+
var date = $('hps_securesubmit_exp_date').value.split('/');
|
379 |
+
$('hps_securesubmit_cc_exp_month').value = date[0].trim();
|
380 |
+
$('hps_securesubmit_cc_exp_year').value = date[1].trim();
|
381 |
+
}
|
382 |
+
|
383 |
(new Heartland.HPS({
|
384 |
publicKey: window.payment.secureSubmitPublicKeyOSC,
|
385 |
cardNumber: $('hps_securesubmit_cc_number').value,
|
405 |
|
406 |
secureSubmitResponseHandlerOSC = function (response, btn) {
|
407 |
var tokenField = $('hps_securesubmit_token'),
|
408 |
+
typeField = $('hps_securesubmit_cc_type'),
|
409 |
lastFourField = $('hps_securesubmit_cc_last_four');
|
410 |
+
tokenField.value = typeField.value = lastFourField.value = null;
|
411 |
+
|
412 |
+
if ($('hps_securesubmit_exp_date').value) {
|
413 |
+
var date = $('hps_securesubmit_exp_date').value.split('/');
|
414 |
+
$('hps_securesubmit_cc_exp_month').value = date[0].trim();
|
415 |
+
$('hps_securesubmit_cc_exp_year').value = date[1].trim();
|
416 |
+
}
|
417 |
|
418 |
if (SecureSubmitMagento.skipCreditCard) {
|
419 |
SecureSubmitMagento.completeCheckout();
|
431 |
} else if (response && response.token_value) {
|
432 |
tokenField.value = response.token_value;
|
433 |
lastFourField.value = response.card.number.substr(-4);
|
434 |
+
typeField.value = response.card_type;
|
435 |
|
436 |
$('onestepcheckout-place-order-loading').show();
|
437 |
$('onestepcheckout-button-place-order').removeClassName('onestepcheckout-btn-checkout');
|
470 |
message: SecureSubmitMagento.options.publicKey
|
471 |
}, 'cardNumber');
|
472 |
} else {
|
473 |
+
if ($('hps_securesubmit_exp_date').value) {
|
474 |
+
var date = $('hps_securesubmit_exp_date').value.split('/');
|
475 |
+
$('hps_securesubmit_cc_exp_month').value = date[0].trim();
|
476 |
+
$('hps_securesubmit_cc_exp_year').value = date[1].trim();
|
477 |
+
}
|
478 |
+
|
479 |
(new Heartland.HPS({
|
480 |
publicKey: this.secureSubmitPublicKey,
|
481 |
cardNumber: $('hps_securesubmit_cc_number').value,
|
489 |
},
|
490 |
secureSubmitResponseHandler: function (response) {
|
491 |
var tokenField = $('hps_securesubmit_token'),
|
492 |
+
typeField = $('hps_securesubmit_cc_type'),
|
493 |
lastFourField = $('hps_securesubmit_cc_last_four');
|
494 |
+
tokenField.value = typeField.value = lastFourField.value = null;
|
495 |
+
|
496 |
+
if ($('hps_securesubmit_exp_date').value) {
|
497 |
+
var date = $('hps_securesubmit_exp_date').value.split('/');
|
498 |
+
$('hps_securesubmit_cc_exp_month').value = date[0].trim();
|
499 |
+
$('hps_securesubmit_cc_exp_year').value = date[1].trim();
|
500 |
+
}
|
501 |
|
502 |
if (SecureSubmitMagento.skipCreditCard) {
|
503 |
SecureSubmitMagento.completeCheckout();
|
512 |
} else if (response && response.token_value) {
|
513 |
tokenField.value = response.token_value;
|
514 |
lastFourField.value = response.card.number.substr(-4);
|
515 |
+
typeField.value = response.card_type;
|
516 |
|
517 |
var form = $j_opc('#co-payment-form').serializeArray();
|
518 |
IWD.OPC.Checkout.xhr = $j_opc.post(
|
726 |
onSuccess: checkout.setResponse.bind(checkout),
|
727 |
onFailure: checkout.ajaxFailure.bind(checkout)
|
728 |
});
|
729 |
+
} else if (typeof IWD !== 'undefined' && typeof IWD.OPC !== 'undefined') {
|
730 |
var form = $j_opc('#co-payment-form').serializeArray();
|
731 |
IWD.OPC.Checkout.xhr = $j_opc.post(
|
732 |
IWD.OPC.Checkout.config.baseUrl + 'onepage/json/savePayment',
|
lib/SecureSubmit/src/Services/Gateway/HpsCreditService.php
CHANGED
@@ -286,8 +286,18 @@ class HpsCreditService extends HpsSoapGatewayService
|
|
286 |
|
287 |
return $this->_submitTransaction($hpsTransaction, 'CreditReturn', (isset($details->clientTransactionId) ? $details->clientTransationId : null));
|
288 |
}
|
289 |
-
|
290 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
291 |
{
|
292 |
HpsInputValidation::checkCurrency($currency);
|
293 |
$this->_currency = $currency;
|
@@ -299,6 +309,10 @@ class HpsCreditService extends HpsSoapGatewayService
|
|
299 |
$hpsBlock1 = $xml->createElement('hps:Block1');
|
300 |
|
301 |
$hpsBlock1->appendChild($xml->createElement('hps:Amt', $amount));
|
|
|
|
|
|
|
|
|
302 |
$cardDataElement = null;
|
303 |
if ($cardData instanceof HpsCreditCard) {
|
304 |
$cardDataElement = $xml->createElement('hps:CardData');
|
@@ -318,10 +332,10 @@ class HpsCreditService extends HpsSoapGatewayService
|
|
318 |
|
319 |
$hpsCreditReversal->appendChild($hpsBlock1);
|
320 |
$hpsTransaction->appendChild($hpsCreditReversal);
|
321 |
-
|
322 |
return $this->_submitTransaction($hpsTransaction, 'CreditReversal', (isset($details->clientTransactionId) ? $details->clientTransactionId : null));
|
323 |
}
|
324 |
|
|
|
325 |
public function updateTokenExpiration($multiUseToken, $newExpMonth, $newExpYear)
|
326 |
{
|
327 |
$xml = new DOMDocument();
|
286 |
|
287 |
return $this->_submitTransaction($hpsTransaction, 'CreditReturn', (isset($details->clientTransactionId) ? $details->clientTransationId : null));
|
288 |
}
|
289 |
+
/**
|
290 |
+
* @param HpsCreditCard|HpsTokenData|int $cardData GatewayTxnId
|
291 |
+
* @param float $amount
|
292 |
+
* @param USD $currency
|
293 |
+
* @param null|HpsTransactionDetails $details
|
294 |
+
* @param null|float $authAmount
|
295 |
+
* @return HpsReversal
|
296 |
+
* @throws HpsException
|
297 |
+
* @throws HpsGatewayException
|
298 |
+
* @throws HpsInvalidRequestException
|
299 |
+
*/
|
300 |
+
public function reverse($cardData, $amount, $currency, $details = null, $authAmount = null)
|
301 |
{
|
302 |
HpsInputValidation::checkCurrency($currency);
|
303 |
$this->_currency = $currency;
|
309 |
$hpsBlock1 = $xml->createElement('hps:Block1');
|
310 |
|
311 |
$hpsBlock1->appendChild($xml->createElement('hps:Amt', $amount));
|
312 |
+
if ($authAmount !== null){
|
313 |
+
$hpsBlock1->appendChild($xml->createElement('hps:AuthAmt', HpsInputValidation::checkAmount($authAmount)));
|
314 |
+
}
|
315 |
+
|
316 |
$cardDataElement = null;
|
317 |
if ($cardData instanceof HpsCreditCard) {
|
318 |
$cardDataElement = $xml->createElement('hps:CardData');
|
332 |
|
333 |
$hpsCreditReversal->appendChild($hpsBlock1);
|
334 |
$hpsTransaction->appendChild($hpsCreditReversal);
|
|
|
335 |
return $this->_submitTransaction($hpsTransaction, 'CreditReversal', (isset($details->clientTransactionId) ? $details->clientTransactionId : null));
|
336 |
}
|
337 |
|
338 |
+
|
339 |
public function updateTokenExpiration($multiUseToken, $newExpMonth, $newExpYear)
|
340 |
{
|
341 |
$xml = new DOMDocument();
|
lib/SecureSubmit/src/Services/Gateway/HpsSoapGatewayService.php
CHANGED
@@ -328,7 +328,7 @@ class HpsSoapGatewayService extends HpsGatewayServiceAbstract implements HpsGate
|
|
328 |
} else if (strpos($this->_config->secretApiKey, '_uat_') !== false) {
|
329 |
return "https://posgateway.uat.secureexchange.net/Hps.Exchange.PosGateway/PosGatewayService.asmx";
|
330 |
} else {
|
331 |
-
return "https://
|
332 |
}
|
333 |
} else {
|
334 |
return $this->_config->soapServiceUri;
|
328 |
} else if (strpos($this->_config->secretApiKey, '_uat_') !== false) {
|
329 |
return "https://posgateway.uat.secureexchange.net/Hps.Exchange.PosGateway/PosGatewayService.asmx";
|
330 |
} else {
|
331 |
+
return "https://posgateway.secureexchange.net/Hps.Exchange.PosGateway/PosGatewayService.asmx";
|
332 |
}
|
333 |
} else {
|
334 |
return $this->_config->soapServiceUri;
|
package.xml
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Hps_Securesubmit</name>
|
4 |
-
<version>1.2.
|
5 |
<stability>stable</stability>
|
6 |
<license uri="https://github.com/hps/heartland-magento-extension/blob/master/LICENSE">Custom</license>
|
7 |
<channel>community</channel>
|
@@ -10,11 +10,19 @@
|
|
10 |
<description>Use Heartland Payment Systems SecureSubmit platform to charge, authorize, void, refund and partial refund credit cards.
|
11 |

|
12 |
Allow customers to store their cards for reduced friction at next checkout using our multi-use card tokenization process which helps reduce PCI scope.</description>
|
13 |
-
<notes>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
<authors><author><name>Heartland Payment Systems</name><user>markhagan</user><email>EntApp_DevPortal@e-hps.com</email></author></authors>
|
15 |
-
<date>2016-
|
16 |
-
<time>
|
17 |
-
<contents><target name="magecommunity"><dir name="Hps"><dir name="Securesubmit"><dir name="Block"><dir name="Adminhtml"><file name="Form.php" hash="ab296bcf9018c73690bb0f5ab381381d"/><dir name="Paypal"><dir name="Settlement"><dir name="Report"><dir name="Form"><file name="Form.php" hash="da5a943526a729a4e78def46c63d0109"/></dir><file name="Form.php" hash="ecc3101a2a399dc71ae544bbe7bb9595"/><file name="Grid.php" hash="35b62c9ab2fe5b5e9a9394e11167f50c"/></dir><file name="Report.php" hash="19171fb1fad872b0ebff9692de1415fd"/></dir></dir></dir><file name="Form.php" hash="031741c6abad215430305c3758b3a362"/><file name="Info.php" hash="1d1144e2543790f1b4a045294a2a24b5"/><dir name="Masterpass"><dir name="Client"><file name="Js.php" hash="ed427387b93d2753d8e8ada51c0d8f37"/></dir><file name="Connect.php" hash="b5e362f21c219ec61c4df7dff561ace6"/><file name="Form.php" hash="6abc4c67143380fad13efec247a18af4"/><file name="Info.php" hash="b8f714200c8f74cd8a0a9547fafc3637"/><dir name="Review"><file name="Billing.php" hash="c5bc2f64c2dc30e8ca1458cd286a16ee"/><file name="Details.php" hash="c324f315b2dfda8263151612ec73f513"/><file name="Shipping.php" hash="aeb5f38aa185e9d3acbb7ce5d4c4b841"/></dir><file name="Review.php" hash="b6e4dbd308c44215e50fa94dd22a32b0"/></dir><dir name="Paypal"><dir name="Credit"><file name="Form.php" hash="68fc4811e8f2d9a1b502454533fe5bca"/></dir><file name="Form.php" hash="776d2aab11db7d212061ca9a30936af1"/><dir name="Incontext"><file name="Js.php" hash="d09bf9157c0b7c5f6dba16d8cdac557d"/></dir><file name="Info.php" hash="9c1948c538383376b1dc1b4c76c31e95"/><dir name="Review"><file name="Billing.php" hash="62a22e1f5bd65c4d9369b5794779ffe9"/><file name="Details.php" hash="57d97c8a2c3b7ddac7dc4cda43e4363f"/><file name="Shipping.php" hash="694374b68714b6d58d9af8b9fb15d502"/></dir><file name="Review.php" hash="87c8f3bf319799b33170bec9f42e2544"/><file name="Shortcut.php" hash="26f13ae7afac41ce88fb1cd4042b61b5"/></dir></dir><dir name="Helper"><dir name="Altpayment"><file name="Abstract.php" hash="5fc29e9d6355660415934426d0ee624e"/></dir><file name="Data.php" hash="35a26dab0e14154f2ee80a498f788d7c"/><file name="Masterpass.php" hash="69489b7cae8b99fe216f522b19f3d448"/><file name="Paypal.php" hash="74d1d0885349c432016bd04f3211c4c2"/></dir><dir name="Model"><dir name="Altpayment"><file name="Cart.php" hash="1dc83b97c44463e954efc8ee1c9e62b8"/></dir><file name="Masterpass.php" hash="063acd12e22bdc26d7591cbabf7e3005"/><file name="Payment.php" hash="841304922d363f6360c7ce02fd99df99"/><dir name="Paypal"><file name="Credit.php" hash="3548d6c4308df9d377cc1dd0d40f0f4d"/></dir><file name="Paypal.php" hash="c3eb2058ff6860e85a9310944c989301"/><file name="Report.php" hash="7f5e5bf0c652b37cf8c42eb553c8b3e0"/><dir name="Resource"><dir name="Report"><file name="Collection.php" hash="5870728a842922bbbff9c50173a90bd4"/></dir><file name="Report.php" hash="59598e2958a864119925c6e847b66121"/><file name="Setup.php" hash="8bdfbde89d786809d8aa2637efb1d2ae"/><dir name="Storedcard"><file name="Collection.php" hash="756c3c2d6dd5384f37847a028ac12fee"/></dir><file name="Storedcard.php" hash="d43320b704eb1e37c77a5ac20401c557"/></dir><file name="Session.php" hash="136b4146cea2f596847f0b838ec3f532"/><dir name="Source"><file name="Cctype.php" hash="d2dfff6147dc5c2748c7e9767b1fd1cb"/><file name="PaymentAction.php" hash="3c900b82e9af73a372d9f5f36bc1c264"/></dir><file name="Storedcard.php" hash="50897a56669c5938d4613579b603df93"/><dir name="System"><dir name="Config"><dir name="Backend"><file name="Proxy.php" hash="29ea9cb11927cd1e43055a42101eea36"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Hps"><dir name="Paypal"><file name="ReportsController.php" hash="914711bc008ec9e240918be7e77d1d54"/></dir></dir><file name="StoredcardController.php" hash="1e968134bf3b60a5f49544ddd1df8f03"/></dir><file name="GiftcardController.php" hash="dd15a7709121a3149fb30f77c385b18f"/><file name="MasterpassController.php" hash="2fb95214db3d3d017dd022743636ec50"/><file name="PaypalController.php" hash="962ce3dc3e738689d6ec6b122ed46001"/><file name="StoredcardController.php" hash="57116e86203df6f24a12fcd93186b534"/></dir><dir name="etc"><file name="adminhtml.xml" hash="8dc53c22d22cd633ebd6c06e7262c741"/><file name="config.xml" hash="0a5d2c0241c3d737081c7e923d2f5276"/><file name="system.xml" hash="55c48cd4411bdfbc62d11a202d5764ae"/></dir><dir name="sql"><dir name="hps_securesubmit_setup"><file name="install-1.0.0.php" hash="d424731dcb784aad59dad0bcce431375"/><file name="mysql4-upgrade-1.0.0-1.0.1.php" hash="510826261ea81ea6a09d4ea84c59d41d"/><file name="mysql4-upgrade-1.0.1-1.1.0.php" hash="01e948ea2939f9b0b69bb6748adc53f2"/><file name="mysql4-upgrade-1.1.0-1.2.0.php" hash="84cf1a359fc5a5600e1d98ba0089d911"/></dir></dir></dir></dir></target><target name="mageweb"><dir name="js"><dir name="securesubmit"><file name="admin-checkout.js" hash="14d970828f50bb463dc3f7cdaca97e1d"/><file name="checkout-form.js" hash="02f3d2e0e5bd150b5f2980f941e06d74"/><dir name="masterpass"><file name="lightbox.js" hash="b534647c7c06b5ce90caf4cdd6166f91"/></dir><dir name="paypal"><file name="incontext.js" hash="e3810f12033fa9822db756a22622f799"/></dir><file name="secure.submit-1.0.1.js" hash="988d59dadbc272b869bc9e56cbd7518e"/></dir></dir></target><target name="magelib"><dir name="SecureSubmit"><file name="Hps.php" hash="aeeb39dae09306051eec2cf455fcb6a8"/><file name="LICENSE.txt" hash="de081f847a769f89be5a1f80862005ba"/><file name="PRIVACY.txt" hash="58cdc5fbbff24a84a838b0174b254f70"/><file name="README.md" hash="8320a396aa5544e61fe2e8f2adb09505"/><file name="index.php" hash="feabe5cc691b088d6ade3e04d6b120fc"/><dir name="src"><dir name="Abstractions"><file name="HpsAltPaymentServiceInterface.php" hash="bbbacdf42b798458ca46921b3ddb9eaf"/><file name="HpsBuilderAbstract.php" hash="6498e7b7e00716574a9dd238d1d7da5e"/><file name="HpsConfigInterface.php" hash="6541819ca5724269db6e1a9ed456d52e"/><file name="HpsGatewayServiceAbstract.php" hash="6e6631e0cfea0001a6fff4bf57d13068"/><file name="HpsGatewayServiceInterface.php" hash="c2b49802b328648d8510433b5c82f71f"/><file name="HpsPayPlanResourceAbstract.php" hash="df262df6345c4932626e60afecdeb478"/><file name="HpsPayPlanResourceInterface.php" hash="22dd33e354f46218d2872eab956d57c1"/></dir><dir name="Entities"><dir name="AltPayment"><file name="HpsAltPaymentAddToBatch.php" hash="1684714c0cd14d6d33288a44f43c9dd6"/><file name="HpsAltPaymentAuth.php" hash="4f2748e2b95cffed6bd0e62f75af71eb"/><file name="HpsAltPaymentCapture.php" hash="51a86062c15c6f8de15147b5b53f89a4"/><file name="HpsAltPaymentCreateSession.php" hash="4e83acd11a03e7dfcf904f2421d858b3"/><file name="HpsAltPaymentResponse.php" hash="860336d2015560f889c41773574b97ab"/><file name="HpsAltPaymentReturn.php" hash="0b9d8cb0f67ddf113b99ca64ab6019a3"/><file name="HpsAltPaymentSale.php" hash="f390a9a4af50f7a8a863c607f7e3357f"/><file name="HpsAltPaymentSessionInfo.php" hash="a5fdaea50db9f15eb762f4ca3512cae4"/><file name="HpsAltPaymentVoid.php" hash="429f0fbec31ae4842c494b0a8af47ddb"/><file name="HpsBuyerData.php" hash="4fd94d96a547378d2974fa386c89223f"/><file name="HpsCardinalMPIAddOrderNumberResponse.php" hash="a2f2c09eb9e7020e7af97819fe065dc3"/><file name="HpsCardinalMPIAuthenticateResponse.php" hash="6868b0bc55d8e3409684e795d1db92fc"/><file name="HpsCardinalMPIAuthorizeResponse.php" hash="566a64988246220b00da62078ae32068"/><file name="HpsCardinalMPIAuthresponseResponse.php" hash="a53fb4863feb909ccb0d2f2cc254562f"/><file name="HpsCardinalMPICaptureResponse.php" hash="29de876ce9bc632016fceab91dca22ac"/><file name="HpsCardinalMPILookupResponse.php" hash="7171aff90865b67db79559f7b2f579ba"/><file name="HpsCardinalMPIPreapprovalResponse.php" hash="e9408b385ca4f32de5f1adf96a36c42d"/><file name="HpsCardinalMPIRefundResponse.php" hash="71dbbff6f6383a19b0feb91f8771dbe5"/><file name="HpsCardinalMPIResponse.php" hash="d3729129967b1da049287e200e4d46e2"/><file name="HpsCardinalMPIVoidResponse.php" hash="2796de53634fccca806a4a4143779f81"/><file name="HpsLineItem.php" hash="4ff06a280975312365cf10a730636682"/><file name="HpsOrderData.php" hash="5d3ae0110d44f4786d4398861735a259"/><file name="HpsPaymentData.php" hash="2bd9ddc10ecdaebdbb5bf0e3cf71f642"/><file name="HpsShippingInfo.php" hash="63b621ebba4ae1711aca57073b0abec7"/></dir><dir name="Batch"><file name="HpsBatch.php" hash="d9af4664e64172cb8edaeaa1ea7c7337"/></dir><dir name="Check"><file name="HpsCheck.php" hash="8fb85bd4d608e72a9690285ec46fa6d2"/><file name="HpsCheckHolder.php" hash="58f865b34faf2790fef26066de775a15"/><file name="HpsCheckResponse.php" hash="ff3c752bc85554424e62ed7efbc053f2"/><file name="HpsCheckResponseDetails.php" hash="28928ceb2dea574603a376aed1691a90"/></dir><dir name="Credit"><file name="HpsAccountVerify.php" hash="527a69e5a39153b764e6c14e0d98bf34"/><file name="HpsAuthorization.php" hash="7ec1bbfa6efa5bc48432b5de81eda314"/><file name="HpsCPCData.php" hash="f246c4aa1eec482ba84966c563aeb970"/><file name="HpsCPCEdit.php" hash="f04b0089485ba9e7eacba8e15815ec97"/><file name="HpsCardHolder.php" hash="ffee4609a3ffa886a386a12dea3f4508"/><file name="HpsCharge.php" hash="512fb9e459b336a9e256d8f1e08e36b9"/><file name="HpsChargeExceptions.php" hash="c7df102696a205a4c5689c48878ac5f3"/><file name="HpsCreditCard.php" hash="6aa3d449b0648997c4c532c1e3603cbb"/><file name="HpsOfflineAuthorization.php" hash="6f11736d36cfde0d9d79c94e92f60c8b"/><file name="HpsRecurringBilling.php" hash="9da8f9b16179729b77615f04993b05bf"/><file name="HpsRefund.php" hash="aa4664916ebb94b8f2066fd7c17b0fd4"/><file name="HpsReportTransactionDetails.php" hash="014672dc58e5680f57f5d6cb8b0f8ee6"/><file name="HpsReportTransactionSummary.php" hash="441b01c652db42213264980e6f693b40"/><file name="HpsReversal.php" hash="350191a2d38189ef8e098ed1f922c1d3"/><file name="HpsVoid.php" hash="bf6216cea2f130789a045fc226c54cd0"/></dir><dir name="Debit"><file name="HpsDebitAddValue.php" hash="9053c701093889f864dd36af208f4f71"/><file name="HpsDebitReturn.php" hash="519cb73c6fc4ce716453d5ff94f437a0"/><file name="HpsDebitReversal.php" hash="223f6db72f0219ef25eb0f0adec4e9be"/><file name="HpsDebitSale.php" hash="74fa1e1425cfe6294146c879a4049aa8"/></dir><dir name="Fluent"><file name="HpsBuilderAction.php" hash="8649cc2c53fd961f350070193fedb5c6"/><file name="HpsUnknownPropertyException.php" hash="d019e8645fae6f984ad7b7ea3cebb546"/></dir><dir name="Gift"><file name="HpsGiftCard.php" hash="c8bad2a5336689e3192ea223a97760bf"/><file name="HpsGiftCardActivate.php" hash="097ac7c36cae11b8c40a3f1414518e49"/><file name="HpsGiftCardAddValue.php" hash="131a9d7cbc711a4e3e85c66049028f30"/><file name="HpsGiftCardAlias.php" hash="133d2d4701c5aa88fa0eece6ee69de06"/><file name="HpsGiftCardBalance.php" hash="9b9fe395d218c79c55faf28fd736b431"/><file name="HpsGiftCardDeactivate.php" hash="323ca5a67c6ff0169925192952881db5"/><file name="HpsGiftCardReplace.php" hash="f122a7d924a56fcc406bc8b1c82ac2b2"/><file name="HpsGiftCardReversal.php" hash="88ba755e52f41311206add4fa8ee5e09"/><file name="HpsGiftCardReward.php" hash="f758e8c5462d336236ae0d257789cdaf"/><file name="HpsGiftCardSale.php" hash="0f758ef6653215be643abaea4964352a"/><file name="HpsGiftCardVoid.php" hash="f0294740f5b7f545167d5fb258f4dcdd"/></dir><file name="HpsAddress.php" hash="fcc67451ff9f1c483e2943cf6ee5c5fe"/><file name="HpsConsumer.php" hash="1254142dfa0821cbb0bf154cf51f34d2"/><file name="HpsDirectMarketData.php" hash="1925c204d19cb9233ec8178e3b5cdc50"/><file name="HpsEncryptionData.php" hash="1e4845abc6c42e8f0265e2679b05efb6"/><file name="HpsTokenData.php" hash="18ab9125315bb8e5f9cb272966dac22b"/><file name="HpsTrackData.php" hash="4656f37b7c4c777d0c63b4102efe5a1a"/><file name="HpsTransaction.php" hash="f109d2d26ba237afb2dc17bc287f63a9"/><file name="HpsTransactionDetails.php" hash="4e77261d0aced118b49e26ef786beace"/><file name="HpsTransactionHeader.php" hash="ebd21539f84425f0e2fc57c6049a26a1"/><file name="HpsTransactionStatus.php" hash="a5a67f8fe3780f66b045cc4314660dc5"/><dir name="PayPlan"><file name="HpsPayPlanAmount.php" hash="25706476e264124567d704f981745b13"/><file name="HpsPayPlanCustomer.php" hash="2714a7525fb3830fc018544ea0622ab5"/><file name="HpsPayPlanPaymentMethod.php" hash="fd3077d63e6f31c2d8a4c60c78a678ea"/><file name="HpsPayPlanSchedule.php" hash="4c9fe8bd7db0810fd108e51b81bdf590"/></dir><file name="index.php" hash="ce407ff5715c837d02b1aba7975bf512"/><file name=".DS_Store" hash="92d42bd310aa7f6dd74d14e6cdd2b9e9"/></dir><dir name="Infrastructure"><dir name="Enums"><file name="HpsACHType.php" hash="1ff5593689a404cb0179c2b5cb5fe19e"/><file name="HpsAccountType.php" hash="760d91e120f443c326e6c7586aa61092"/><file name="HpsCardBrand.php" hash="9532bb7c40811c114a1eeeffa8b9732c"/><file name="HpsCentinelCheckoutType.php" hash="7370920cb980bbfc54c741a981cd79bb"/><file name="HpsCheckType.php" hash="d60c676d93c8ada169deb14ddc8e64e7"/><file name="HpsDataEntryMode.php" hash="c323d884a7a305f9af647ea1d9a4177e"/><file name="HpsExceptionCodes.php" hash="95322648a2093ed3982c6bb724f3507a"/><file name="HpsGiftCardAliasAction.php" hash="ebcb27c6fb800e17693ed4af2e8a8943"/><file name="HpsItemChoiceTypePosResponseVer10Transaction.php" hash="686225a07738db2233a2228bec6baabf"/><file name="HpsPayPlanAccountType.php" hash="4d383c42a990fb077fae49386c08b870"/><file name="HpsPayPlanCustomerStatus.php" hash="3ff092e8dd97f2a2474fb64103cb238f"/><file name="HpsPayPlanPaymentMethodStatus.php" hash="b020c52de7987ed3011cb97e4d440c6a"/><file name="HpsPayPlanPaymentMethodType.php" hash="1f77c5c8528815f05803c1381cb4151a"/><file name="HpsPayPlanScheduleDuration.php" hash="05101e6fe3b725b43917b59770f2dbb1"/><file name="HpsPayPlanScheduleFrequency.php" hash="0b3f029c64315ee9c8701d23319941c1"/><file name="HpsPayPlanScheduleStatus.php" hash="3579b52ccf36e576fd2dfb36118716f6"/><file name="HpsSECCode.php" hash="551661613c127c068f139083338b92d1"/><file name="HpsTaxType.php" hash="ba0e05330880810e58370f2f3490ca81"/><file name="HpsTrackDataMethod.php" hash="446069e9786f9585c3490140b29ae52f"/><file name="HpsTransactionType.php" hash="a38b3f4c654a4fa3b2c2d64b8afacf24"/></dir><file name="HpsApiConnectionException.php" hash="ac5a8064a7c2a1616035a5702f36cd50"/><file name="HpsArgumentException.php" hash="855c43e88fc24b582cfe56875d7cff42"/><file name="HpsAuthenticationException.php" hash="6feb2fdc5499b460274524aa469d9a7d"/><file name="HpsCheckException.php" hash="94870f2438217b3275d05fb943a0a8c0"/><file name="HpsConfiguration.php" hash="010996727d89c485c1d11463e5c53a8e"/><file name="HpsCreditException.php" hash="a16bf1ecd6a2c866b7b40351aab3df34"/><file name="HpsCreditExceptionDetails.php" hash="d71c54b2846283a8f97aae74a747dfd9"/><file name="HpsException.php" hash="8d2025b7fae9f0f756341b876a0dab41"/><file name="HpsGatewayException.php" hash="cdd6db6c8436e3e78ee15cdd7a043a9d"/><file name="HpsGatewayExceptionDetails.php" hash="16dd36360e2237ca89e056c61766bcdd"/><file name="HpsInvalidRequestException.php" hash="7877e48463ef3f488bb92423ae445412"/><file name="HpsProcessorError.php" hash="ff7f1f2c5327417b4997f9e36fa7c887"/><file name="HpsProcessorException.php" hash="ba28a92f0e551053506dcc391c5bc431"/><file name="HpsProcessorExceptionDetails.php" hash="6a569aacf045c19ade6472a857a3a274"/><dir name="Validation"><file name="HpsGatewayResponseValidation.php" hash="06fb818263b18b58974a569d0c986667"/><file name="HpsInputValidation.php" hash="1f51837f70c322f2a7c1cc39df752b1a"/><file name="HpsIssuerResponseValidation.php" hash="613377f8ca249df078c909e4d7674bfb"/><file name="HpsProcessorResponseValidation.php" hash="ff19a569f8bdd6ef7b58a460cf06b4e8"/></dir><file name="index.php" hash="ce407ff5715c837d02b1aba7975bf512"/></dir><dir name="Services"><dir name="Fluent"><dir name="Gateway"><dir name="Check"><file name="HpsCheckServiceOverrideBuilder.php" hash="5b4a49a897f87d2a332182a1ccd67d0c"/><file name="HpsCheckServiceRecurringBuilder.php" hash="c86a2fd5165a65c78e38e3bbb1b9636c"/><file name="HpsCheckServiceReturnBuilder.php" hash="5ce46356468714f65ad827e1593977cc"/><file name="HpsCheckServiceSaleBuilder.php" hash="b823e74642e165772f5cb03beffacce7"/><file name="HpsCheckServiceVoidBuilder.php" hash="17305b04474285a8b64007c549180ba5"/></dir><dir name="Credit"><file name="HpsCreditServiceAuthorizeBuilder.php" hash="51997a17ee9a1aaacd40d9d2c8d69c17"/><file name="HpsCreditServiceCaptureBuilder.php" hash="fd6512f3b72f9051eaf7c3daeff2cb48"/><file name="HpsCreditServiceChargeBuilder.php" hash="3421b227fe594f0cb1533b4496c805bd"/><file name="HpsCreditServiceCpcEditBuilder.php" hash="7401c33a56c5a3c6a23f5f70101a4926"/><file name="HpsCreditServiceEditBuilder.php" hash="cdcf661c4182625212ec724b52eb8491"/><file name="HpsCreditServiceGetBuilder.php" hash="05b0cafe715a4d3ceb3c88b99b0c8dc1"/><file name="HpsCreditServiceListTransactionsBuilder.php" hash="a7765dfadc8e21177cc453a1e7dfd715"/><file name="HpsCreditServiceOfflineAuthBuilder.php" hash="d86d2425c6bbf28854a31d09a9f802b8"/><file name="HpsCreditServiceOfflineChargeBuilder.php" hash="0ee9ecf6b499a16f01fa2a7b94af00ca"/><file name="HpsCreditServicePrepaidAddValueBuilder.php" hash="997b48104fcdbd791a3b990515f2527e"/><file name="HpsCreditServicePrepaidBalanceInquiryBuilder.php" hash="7e7dd067d79281c32417b6d338825acd"/><file name="HpsCreditServiceRecurringBuilder.php" hash="560c8b86eeb9e4e468642eaa739ebe03"/><file name="HpsCreditServiceRefundBuilder.php" hash="4d5ab9c2a11c18a47e416bd90dffc5e8"/><file name="HpsCreditServiceReverseBuilder.php" hash="7960e9efa00ceb0d0c5368715c07d424"/><file name="HpsCreditServiceVerifyBuilder.php" hash="62027b344ee5444ccd1534358a405857"/><file name="HpsCreditServiceVoidBuilder.php" hash="0029756571343a1d8c6380874f6f5b6b"/></dir><dir name="Debit"><file name="HpsDebitServiceAddValueBuilder.php" hash="5f972b68a5afa062cbf911bfb3a946bc"/><file name="HpsDebitServiceChargeBuilder.php" hash="26aafce2a87bbbd8231a039209c49657"/><file name="HpsDebitServiceReturnBuilder.php" hash="2e11267e12bdd338b953db352a373961"/><file name="HpsDebitServiceReverseBuilder.php" hash="b088431d3ba0726d44cc418e92267958"/></dir><dir name="GiftCard"><file name="HpsGiftCardServiceActivateBuilder.php" hash="65e3ebd1c6ded3860b238d03e542fe3b"/><file name="HpsGiftCardServiceAddValueBuilder.php" hash="432582c9fd6617c86b373f5fe0b14fb1"/><file name="HpsGiftCardServiceAliasBuilder.php" hash="1b096debfa6678af2d6ddecfa82a638e"/><file name="HpsGiftCardServiceBalanceBuilder.php" hash="6bebaac04d059204a2408d693f77c449"/><file name="HpsGiftCardServiceDeactivateBuilder.php" hash="92b16b331414c40ea11de330bd447273"/><file name="HpsGiftCardServiceReplaceBuilder.php" hash="063e6b33a673c23553047a6f72927b2a"/><file name="HpsGiftCardServiceReverseBuilder.php" hash="2f7b96b1f9608cb7e3526ecb9b15558f"/><file name="HpsGiftCardServiceRewardBuilder.php" hash="242fbe42ab731b138e4d74be4cde4e9a"/><file name="HpsGiftCardServiceSaleBuilder.php" hash="8af2977da26e3707e42569ad7bf4c4a5"/><file name="HpsGiftCardServiceVoidBuilder.php" hash="fff556a586bb09d22f521a90d30fb809"/></dir><file name="HpsFluentCheckService.php" hash="e89511e006e914bdd4daf6765a49e97b"/><file name="HpsFluentCreditService.php" hash="58e0d0480066fec8c5c6e31eaa275d12"/><file name="HpsFluentDebitService.php" hash="63e86fe32a92c80cc5bd163283da6c64"/><file name="HpsFluentGiftCardService.php" hash="53697a755fc90256b940c74282693b0d"/></dir></dir><dir name="Gateway"><dir name="AltPayment"><file name="HpsAltPaymentService.php" hash="3d9cdbad50ccceb45d4d888018d2bab7"/><file name="HpsMasterPassService.php" hash="f5639448d09a38377f16434351201b09"/><file name="HpsPayPalService.php" hash="c91eebb0eca8bdda2505b78c4746db28"/></dir><file name="HpsBatchService.php" hash="2a4c11a4f7c78ec1e3b461b3803826c5"/><file name="HpsCentinelGatewayService.php" hash="40300a57982ccd5325b7bd0986a8bcc4"/><file name="HpsCheckService.php" hash="17eac57a5f3a6f24e31000325ad9ac1d"/><file name="HpsCreditService.php" hash="9f96d16f735dfb6e916fb88520a2b52e"/><file name="HpsDebitService.php" hash="0ea76c01b3c817fcaea876bff28681b3"/><file name="HpsGiftCardService.php" hash="e1deb113c685845e2af2bb0ff793ea4d"/><file name="HpsPayPlanService.php" hash="ce5d2c003e72be8328634d92ab8ae6eb"/><file name="HpsRestGatewayService.php" hash="3a0b4217eb4e9d8c92d298914e539a04"/><file name="HpsSoapGatewayService.php" hash="969751eb742eeb7d7a99d5d61d2d2afb"/><file name="HpsTokenService.php" hash="b1dad4289201b399f89ad1d29a799d39"/><dir name="PayPlan"><file name="HpsPayPlanCustomerService.php" hash="cda074fca2230c26919a813cc2d71b5c"/><file name="HpsPayPlanPaymentMethodService.php" hash="61dd42308d203251f4483d68561c191b"/><file name="HpsPayPlanScheduleService.php" hash="e8c81640a7440a19ed3590894a31a1f1"/></dir></dir><file name="HpsCentinelConfig.php" hash="f43f7ea211a51883fb8a2173072027a8"/><file name="HpsServicesConfig.php" hash="f3d63dc7d089a8bcd248e4abc381e6a7"/><file name="index.php" hash="ce407ff5715c837d02b1aba7975bf512"/></dir><file name="index.php" hash="ce407ff5715c837d02b1aba7975bf512"/><file name=".DS_Store" hash="fb4d06cbd65ab29860d86984919afa4a"/></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="securesubmit.xml" hash="cc04e952cc17ea3462931a9e7a655316"/></dir><dir name="template"><dir name="securesubmit"><file name="form.phtml" hash="67a460ca8f034f4bfe3fbb8e7845f37f"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="securesubmit.xml" hash="410fda5ef3920f893f5a17ec379aa2da"/></dir><dir name="template"><dir name="securesubmit"><file name="form.phtml" hash="1e722ede8b902835e63c07360f6c8242"/><dir name="masterpass"><file name="connect.phtml" hash="b5f47624447a44958ce4fa004c58c319"/><file name="form.phtml" hash="039d6a174ac24c45ece0d14b92b6c9c4"/><file name="js.phtml" hash="274e871b2d8270e3224b9ce12794c2c5"/><file name="mark.phtml" hash="fe27b341b5fb034e90ac35c92ef998d4"/><dir name="review"><file name="details.phtml" hash="0dc5e1201e7e424f089c15fc83a1c70f"/><dir name="shipping"><file name="method.phtml" hash="cc426553636aa08840bee1c4778d89e4"/></dir></dir><file name="review.phtml" hash="cfc643de65b962ba27306587357f45d3"/></dir><dir name="paypal"><dir name="incontext"><file name="js.phtml" hash="16b4ad23ea05464a55bb0390cd72e248"/><file name="payment.phtml" hash="b32d269057984f656422609015dd7d91"/></dir><dir name="review"><file name="details.phtml" hash="0dc5e1201e7e424f089c15fc83a1c70f"/><dir name="shipping"><file name="method.phtml" hash="cc426553636aa08840bee1c4778d89e4"/></dir></dir><file name="review.phtml" hash="cfc643de65b962ba27306587357f45d3"/><file name="shortcut.phtml" hash="268bfac86e653ec5981cd201075f4105"/></dir><file name="storedcards.phtml" hash="2b599d437b60bab2e43efc1809892da0"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Hps_Securesubmit.xml" hash="d5aed3f48a45f8e611b68d1e6f34c959"/></dir></target></contents>
|
18 |
<compatible/>
|
19 |
-
<dependencies><required><php><min>5.2.0</min><max>5.6.
|
20 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Hps_Securesubmit</name>
|
4 |
+
<version>1.2.8</version>
|
5 |
<stability>stable</stability>
|
6 |
<license uri="https://github.com/hps/heartland-magento-extension/blob/master/LICENSE">Custom</license>
|
7 |
<channel>community</channel>
|
10 |
<description>Use Heartland Payment Systems SecureSubmit platform to charge, authorize, void, refund and partial refund credit cards.
|
11 |

|
12 |
Allow customers to store their cards for reduced friction at next checkout using our multi-use card tokenization process which helps reduce PCI scope.</description>
|
13 |
+
<notes>Fix: Issue with Magento card type validation when not using iframes
|
14 |
+
Update: Add authorization data to payment information block for admin users
|
15 |
+
Fix: Card type during checkout. Uses value from frontend.
|
16 |
+
Fix: iframes when IWD isn't present
|
17 |
+
Fix: OPC transfer on failed payment
|
18 |
+
Fix: Issue with checkout using multi-use token
|
19 |
+
Update: Add basic velocity check based on IP
|
20 |
+
Update: Add support for partial refunds
|
21 |
+
</notes>
|
22 |
<authors><author><name>Heartland Payment Systems</name><user>markhagan</user><email>EntApp_DevPortal@e-hps.com</email></author></authors>
|
23 |
+
<date>2016-07-27</date>
|
24 |
+
<time>14:45:08</time>
|
25 |
+
<contents><target name="magecommunity"><dir name="Hps"><dir name="Securesubmit"><dir name="Block"><dir name="Adminhtml"><file name="Form.php" hash="ab296bcf9018c73690bb0f5ab381381d"/><dir name="Paypal"><dir name="Settlement"><dir name="Report"><dir name="Form"><file name="Form.php" hash="da5a943526a729a4e78def46c63d0109"/></dir><file name="Form.php" hash="ecc3101a2a399dc71ae544bbe7bb9595"/><file name="Grid.php" hash="35b62c9ab2fe5b5e9a9394e11167f50c"/></dir><file name="Report.php" hash="19171fb1fad872b0ebff9692de1415fd"/></dir></dir></dir><file name="Form.php" hash="031741c6abad215430305c3758b3a362"/><file name="Info.php" hash="f733311f2a666fdd481fb26f57f50b63"/><dir name="Masterpass"><dir name="Client"><file name="Js.php" hash="ed427387b93d2753d8e8ada51c0d8f37"/></dir><file name="Connect.php" hash="b5e362f21c219ec61c4df7dff561ace6"/><file name="Form.php" hash="6abc4c67143380fad13efec247a18af4"/><file name="Info.php" hash="b8f714200c8f74cd8a0a9547fafc3637"/><dir name="Review"><file name="Billing.php" hash="c5bc2f64c2dc30e8ca1458cd286a16ee"/><file name="Details.php" hash="c324f315b2dfda8263151612ec73f513"/><file name="Shipping.php" hash="aeb5f38aa185e9d3acbb7ce5d4c4b841"/></dir><file name="Review.php" hash="b6e4dbd308c44215e50fa94dd22a32b0"/></dir><dir name="Paypal"><dir name="Credit"><file name="Form.php" hash="68fc4811e8f2d9a1b502454533fe5bca"/></dir><file name="Form.php" hash="776d2aab11db7d212061ca9a30936af1"/><dir name="Incontext"><file name="Js.php" hash="d09bf9157c0b7c5f6dba16d8cdac557d"/></dir><file name="Info.php" hash="9c1948c538383376b1dc1b4c76c31e95"/><dir name="Review"><file name="Billing.php" hash="62a22e1f5bd65c4d9369b5794779ffe9"/><file name="Details.php" hash="57d97c8a2c3b7ddac7dc4cda43e4363f"/><file name="Shipping.php" hash="694374b68714b6d58d9af8b9fb15d502"/></dir><file name="Review.php" hash="87c8f3bf319799b33170bec9f42e2544"/><file name="Shortcut.php" hash="26f13ae7afac41ce88fb1cd4042b61b5"/></dir></dir><dir name="Helper"><dir name="Altpayment"><file name="Abstract.php" hash="5fc29e9d6355660415934426d0ee624e"/></dir><file name="Data.php" hash="35a26dab0e14154f2ee80a498f788d7c"/><file name="Masterpass.php" hash="69489b7cae8b99fe216f522b19f3d448"/><file name="Paypal.php" hash="74d1d0885349c432016bd04f3211c4c2"/></dir><dir name="Model"><dir name="Altpayment"><file name="Cart.php" hash="1dc83b97c44463e954efc8ee1c9e62b8"/></dir><file name="Masterpass.php" hash="063acd12e22bdc26d7591cbabf7e3005"/><file name="Payment.php" hash="16a45ffdfb177554945bd07451bf956c"/><dir name="Paypal"><file name="Credit.php" hash="3548d6c4308df9d377cc1dd0d40f0f4d"/></dir><file name="Paypal.php" hash="c3eb2058ff6860e85a9310944c989301"/><file name="Report.php" hash="7f5e5bf0c652b37cf8c42eb553c8b3e0"/><dir name="Resource"><dir name="Report"><file name="Collection.php" hash="5870728a842922bbbff9c50173a90bd4"/></dir><file name="Report.php" hash="59598e2958a864119925c6e847b66121"/><file name="Setup.php" hash="8bdfbde89d786809d8aa2637efb1d2ae"/><dir name="Storedcard"><file name="Collection.php" hash="756c3c2d6dd5384f37847a028ac12fee"/></dir><file name="Storedcard.php" hash="d43320b704eb1e37c77a5ac20401c557"/></dir><file name="Session.php" hash="136b4146cea2f596847f0b838ec3f532"/><dir name="Source"><file name="Cctype.php" hash="d2dfff6147dc5c2748c7e9767b1fd1cb"/><file name="PaymentAction.php" hash="3c900b82e9af73a372d9f5f36bc1c264"/></dir><file name="Storedcard.php" hash="50897a56669c5938d4613579b603df93"/><dir name="System"><dir name="Config"><dir name="Backend"><file name="Proxy.php" hash="29ea9cb11927cd1e43055a42101eea36"/></dir></dir></dir></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Hps"><dir name="Paypal"><file name="ReportsController.php" hash="914711bc008ec9e240918be7e77d1d54"/></dir></dir><file name="StoredcardController.php" hash="1e968134bf3b60a5f49544ddd1df8f03"/></dir><file name="GiftcardController.php" hash="dd15a7709121a3149fb30f77c385b18f"/><file name="MasterpassController.php" hash="2fb95214db3d3d017dd022743636ec50"/><file name="PaypalController.php" hash="962ce3dc3e738689d6ec6b122ed46001"/><file name="StoredcardController.php" hash="57116e86203df6f24a12fcd93186b534"/></dir><dir name="etc"><file name="adminhtml.xml" hash="8dc53c22d22cd633ebd6c06e7262c741"/><file name="config.xml" hash="b2584cea4253c04257e859afa0969a8f"/><file name="system.xml" hash="2b4c4f26b48cb72f408c1c97ec3e4c21"/></dir><dir name="sql"><dir name="hps_securesubmit_setup"><file name="install-1.0.0.php" hash="d424731dcb784aad59dad0bcce431375"/><file name="mysql4-upgrade-1.0.0-1.0.1.php" hash="510826261ea81ea6a09d4ea84c59d41d"/><file name="mysql4-upgrade-1.0.1-1.1.0.php" hash="01e948ea2939f9b0b69bb6748adc53f2"/><file name="mysql4-upgrade-1.1.0-1.2.0.php" hash="84cf1a359fc5a5600e1d98ba0089d911"/></dir></dir></dir></dir></target><target name="mageweb"><dir name="js"><dir name="securesubmit"><file name="admin-checkout.js" hash="14d970828f50bb463dc3f7cdaca97e1d"/><file name="checkout-form.js" hash="4d4f592d25777836470814519d6e00b3"/><dir name="masterpass"><file name="lightbox.js" hash="b534647c7c06b5ce90caf4cdd6166f91"/></dir><dir name="paypal"><file name="incontext.js" hash="e3810f12033fa9822db756a22622f799"/></dir><file name="secure.submit-1.0.1.js" hash="988d59dadbc272b869bc9e56cbd7518e"/></dir></dir></target><target name="magelib"><dir name="SecureSubmit"><file name="Hps.php" hash="aeeb39dae09306051eec2cf455fcb6a8"/><file name="LICENSE.txt" hash="de081f847a769f89be5a1f80862005ba"/><file name="PRIVACY.txt" hash="58cdc5fbbff24a84a838b0174b254f70"/><file name="README.md" hash="8320a396aa5544e61fe2e8f2adb09505"/><file name="index.php" hash="feabe5cc691b088d6ade3e04d6b120fc"/><dir name="src"><dir name="Abstractions"><file name="HpsAltPaymentServiceInterface.php" hash="bbbacdf42b798458ca46921b3ddb9eaf"/><file name="HpsBuilderAbstract.php" hash="6498e7b7e00716574a9dd238d1d7da5e"/><file name="HpsConfigInterface.php" hash="6541819ca5724269db6e1a9ed456d52e"/><file name="HpsGatewayServiceAbstract.php" hash="6e6631e0cfea0001a6fff4bf57d13068"/><file name="HpsGatewayServiceInterface.php" hash="c2b49802b328648d8510433b5c82f71f"/><file name="HpsPayPlanResourceAbstract.php" hash="df262df6345c4932626e60afecdeb478"/><file name="HpsPayPlanResourceInterface.php" hash="22dd33e354f46218d2872eab956d57c1"/></dir><dir name="Entities"><dir name="AltPayment"><file name="HpsAltPaymentAddToBatch.php" hash="1684714c0cd14d6d33288a44f43c9dd6"/><file name="HpsAltPaymentAuth.php" hash="4f2748e2b95cffed6bd0e62f75af71eb"/><file name="HpsAltPaymentCapture.php" hash="51a86062c15c6f8de15147b5b53f89a4"/><file name="HpsAltPaymentCreateSession.php" hash="4e83acd11a03e7dfcf904f2421d858b3"/><file name="HpsAltPaymentResponse.php" hash="860336d2015560f889c41773574b97ab"/><file name="HpsAltPaymentReturn.php" hash="0b9d8cb0f67ddf113b99ca64ab6019a3"/><file name="HpsAltPaymentSale.php" hash="f390a9a4af50f7a8a863c607f7e3357f"/><file name="HpsAltPaymentSessionInfo.php" hash="a5fdaea50db9f15eb762f4ca3512cae4"/><file name="HpsAltPaymentVoid.php" hash="429f0fbec31ae4842c494b0a8af47ddb"/><file name="HpsBuyerData.php" hash="4fd94d96a547378d2974fa386c89223f"/><file name="HpsCardinalMPIAddOrderNumberResponse.php" hash="a2f2c09eb9e7020e7af97819fe065dc3"/><file name="HpsCardinalMPIAuthenticateResponse.php" hash="6868b0bc55d8e3409684e795d1db92fc"/><file name="HpsCardinalMPIAuthorizeResponse.php" hash="566a64988246220b00da62078ae32068"/><file name="HpsCardinalMPIAuthresponseResponse.php" hash="a53fb4863feb909ccb0d2f2cc254562f"/><file name="HpsCardinalMPICaptureResponse.php" hash="29de876ce9bc632016fceab91dca22ac"/><file name="HpsCardinalMPILookupResponse.php" hash="7171aff90865b67db79559f7b2f579ba"/><file name="HpsCardinalMPIPreapprovalResponse.php" hash="e9408b385ca4f32de5f1adf96a36c42d"/><file name="HpsCardinalMPIRefundResponse.php" hash="71dbbff6f6383a19b0feb91f8771dbe5"/><file name="HpsCardinalMPIResponse.php" hash="d3729129967b1da049287e200e4d46e2"/><file name="HpsCardinalMPIVoidResponse.php" hash="2796de53634fccca806a4a4143779f81"/><file name="HpsLineItem.php" hash="4ff06a280975312365cf10a730636682"/><file name="HpsOrderData.php" hash="5d3ae0110d44f4786d4398861735a259"/><file name="HpsPaymentData.php" hash="2bd9ddc10ecdaebdbb5bf0e3cf71f642"/><file name="HpsShippingInfo.php" hash="63b621ebba4ae1711aca57073b0abec7"/></dir><dir name="Batch"><file name="HpsBatch.php" hash="d9af4664e64172cb8edaeaa1ea7c7337"/></dir><dir name="Check"><file name="HpsCheck.php" hash="8fb85bd4d608e72a9690285ec46fa6d2"/><file name="HpsCheckHolder.php" hash="58f865b34faf2790fef26066de775a15"/><file name="HpsCheckResponse.php" hash="ff3c752bc85554424e62ed7efbc053f2"/><file name="HpsCheckResponseDetails.php" hash="28928ceb2dea574603a376aed1691a90"/></dir><dir name="Credit"><file name="HpsAccountVerify.php" hash="527a69e5a39153b764e6c14e0d98bf34"/><file name="HpsAuthorization.php" hash="7ec1bbfa6efa5bc48432b5de81eda314"/><file name="HpsCPCData.php" hash="f246c4aa1eec482ba84966c563aeb970"/><file name="HpsCPCEdit.php" hash="f04b0089485ba9e7eacba8e15815ec97"/><file name="HpsCardHolder.php" hash="ffee4609a3ffa886a386a12dea3f4508"/><file name="HpsCharge.php" hash="512fb9e459b336a9e256d8f1e08e36b9"/><file name="HpsChargeExceptions.php" hash="c7df102696a205a4c5689c48878ac5f3"/><file name="HpsCreditCard.php" hash="6aa3d449b0648997c4c532c1e3603cbb"/><file name="HpsOfflineAuthorization.php" hash="6f11736d36cfde0d9d79c94e92f60c8b"/><file name="HpsRecurringBilling.php" hash="9da8f9b16179729b77615f04993b05bf"/><file name="HpsRefund.php" hash="aa4664916ebb94b8f2066fd7c17b0fd4"/><file name="HpsReportTransactionDetails.php" hash="014672dc58e5680f57f5d6cb8b0f8ee6"/><file name="HpsReportTransactionSummary.php" hash="441b01c652db42213264980e6f693b40"/><file name="HpsReversal.php" hash="350191a2d38189ef8e098ed1f922c1d3"/><file name="HpsVoid.php" hash="bf6216cea2f130789a045fc226c54cd0"/></dir><dir name="Debit"><file name="HpsDebitAddValue.php" hash="9053c701093889f864dd36af208f4f71"/><file name="HpsDebitReturn.php" hash="519cb73c6fc4ce716453d5ff94f437a0"/><file name="HpsDebitReversal.php" hash="223f6db72f0219ef25eb0f0adec4e9be"/><file name="HpsDebitSale.php" hash="74fa1e1425cfe6294146c879a4049aa8"/></dir><dir name="Fluent"><file name="HpsBuilderAction.php" hash="8649cc2c53fd961f350070193fedb5c6"/><file name="HpsUnknownPropertyException.php" hash="d019e8645fae6f984ad7b7ea3cebb546"/></dir><dir name="Gift"><file name="HpsGiftCard.php" hash="c8bad2a5336689e3192ea223a97760bf"/><file name="HpsGiftCardActivate.php" hash="097ac7c36cae11b8c40a3f1414518e49"/><file name="HpsGiftCardAddValue.php" hash="131a9d7cbc711a4e3e85c66049028f30"/><file name="HpsGiftCardAlias.php" hash="133d2d4701c5aa88fa0eece6ee69de06"/><file name="HpsGiftCardBalance.php" hash="9b9fe395d218c79c55faf28fd736b431"/><file name="HpsGiftCardDeactivate.php" hash="323ca5a67c6ff0169925192952881db5"/><file name="HpsGiftCardReplace.php" hash="f122a7d924a56fcc406bc8b1c82ac2b2"/><file name="HpsGiftCardReversal.php" hash="88ba755e52f41311206add4fa8ee5e09"/><file name="HpsGiftCardReward.php" hash="f758e8c5462d336236ae0d257789cdaf"/><file name="HpsGiftCardSale.php" hash="0f758ef6653215be643abaea4964352a"/><file name="HpsGiftCardVoid.php" hash="f0294740f5b7f545167d5fb258f4dcdd"/></dir><file name="HpsAddress.php" hash="fcc67451ff9f1c483e2943cf6ee5c5fe"/><file name="HpsConsumer.php" hash="1254142dfa0821cbb0bf154cf51f34d2"/><file name="HpsDirectMarketData.php" hash="1925c204d19cb9233ec8178e3b5cdc50"/><file name="HpsEncryptionData.php" hash="1e4845abc6c42e8f0265e2679b05efb6"/><file name="HpsTokenData.php" hash="18ab9125315bb8e5f9cb272966dac22b"/><file name="HpsTrackData.php" hash="4656f37b7c4c777d0c63b4102efe5a1a"/><file name="HpsTransaction.php" hash="f109d2d26ba237afb2dc17bc287f63a9"/><file name="HpsTransactionDetails.php" hash="4e77261d0aced118b49e26ef786beace"/><file name="HpsTransactionHeader.php" hash="ebd21539f84425f0e2fc57c6049a26a1"/><file name="HpsTransactionStatus.php" hash="a5a67f8fe3780f66b045cc4314660dc5"/><dir name="PayPlan"><file name="HpsPayPlanAmount.php" hash="25706476e264124567d704f981745b13"/><file name="HpsPayPlanCustomer.php" hash="2714a7525fb3830fc018544ea0622ab5"/><file name="HpsPayPlanPaymentMethod.php" hash="fd3077d63e6f31c2d8a4c60c78a678ea"/><file name="HpsPayPlanSchedule.php" hash="4c9fe8bd7db0810fd108e51b81bdf590"/></dir><file name="index.php" hash="ce407ff5715c837d02b1aba7975bf512"/><file name=".DS_Store" hash="92d42bd310aa7f6dd74d14e6cdd2b9e9"/></dir><dir name="Infrastructure"><dir name="Enums"><file name="HpsACHType.php" hash="1ff5593689a404cb0179c2b5cb5fe19e"/><file name="HpsAccountType.php" hash="760d91e120f443c326e6c7586aa61092"/><file name="HpsCardBrand.php" hash="9532bb7c40811c114a1eeeffa8b9732c"/><file name="HpsCentinelCheckoutType.php" hash="7370920cb980bbfc54c741a981cd79bb"/><file name="HpsCheckType.php" hash="d60c676d93c8ada169deb14ddc8e64e7"/><file name="HpsDataEntryMode.php" hash="c323d884a7a305f9af647ea1d9a4177e"/><file name="HpsExceptionCodes.php" hash="95322648a2093ed3982c6bb724f3507a"/><file name="HpsGiftCardAliasAction.php" hash="ebcb27c6fb800e17693ed4af2e8a8943"/><file name="HpsItemChoiceTypePosResponseVer10Transaction.php" hash="686225a07738db2233a2228bec6baabf"/><file name="HpsPayPlanAccountType.php" hash="4d383c42a990fb077fae49386c08b870"/><file name="HpsPayPlanCustomerStatus.php" hash="3ff092e8dd97f2a2474fb64103cb238f"/><file name="HpsPayPlanPaymentMethodStatus.php" hash="b020c52de7987ed3011cb97e4d440c6a"/><file name="HpsPayPlanPaymentMethodType.php" hash="1f77c5c8528815f05803c1381cb4151a"/><file name="HpsPayPlanScheduleDuration.php" hash="05101e6fe3b725b43917b59770f2dbb1"/><file name="HpsPayPlanScheduleFrequency.php" hash="0b3f029c64315ee9c8701d23319941c1"/><file name="HpsPayPlanScheduleStatus.php" hash="3579b52ccf36e576fd2dfb36118716f6"/><file name="HpsSECCode.php" hash="551661613c127c068f139083338b92d1"/><file name="HpsTaxType.php" hash="ba0e05330880810e58370f2f3490ca81"/><file name="HpsTrackDataMethod.php" hash="446069e9786f9585c3490140b29ae52f"/><file name="HpsTransactionType.php" hash="a38b3f4c654a4fa3b2c2d64b8afacf24"/></dir><file name="HpsApiConnectionException.php" hash="ac5a8064a7c2a1616035a5702f36cd50"/><file name="HpsArgumentException.php" hash="855c43e88fc24b582cfe56875d7cff42"/><file name="HpsAuthenticationException.php" hash="6feb2fdc5499b460274524aa469d9a7d"/><file name="HpsCheckException.php" hash="94870f2438217b3275d05fb943a0a8c0"/><file name="HpsConfiguration.php" hash="010996727d89c485c1d11463e5c53a8e"/><file name="HpsCreditException.php" hash="a16bf1ecd6a2c866b7b40351aab3df34"/><file name="HpsCreditExceptionDetails.php" hash="d71c54b2846283a8f97aae74a747dfd9"/><file name="HpsException.php" hash="8d2025b7fae9f0f756341b876a0dab41"/><file name="HpsGatewayException.php" hash="cdd6db6c8436e3e78ee15cdd7a043a9d"/><file name="HpsGatewayExceptionDetails.php" hash="16dd36360e2237ca89e056c61766bcdd"/><file name="HpsInvalidRequestException.php" hash="7877e48463ef3f488bb92423ae445412"/><file name="HpsProcessorError.php" hash="ff7f1f2c5327417b4997f9e36fa7c887"/><file name="HpsProcessorException.php" hash="ba28a92f0e551053506dcc391c5bc431"/><file name="HpsProcessorExceptionDetails.php" hash="6a569aacf045c19ade6472a857a3a274"/><dir name="Validation"><file name="HpsGatewayResponseValidation.php" hash="06fb818263b18b58974a569d0c986667"/><file name="HpsInputValidation.php" hash="1f51837f70c322f2a7c1cc39df752b1a"/><file name="HpsIssuerResponseValidation.php" hash="613377f8ca249df078c909e4d7674bfb"/><file name="HpsProcessorResponseValidation.php" hash="ff19a569f8bdd6ef7b58a460cf06b4e8"/></dir><file name="index.php" hash="ce407ff5715c837d02b1aba7975bf512"/></dir><dir name="Services"><dir name="Fluent"><dir name="Gateway"><dir name="Check"><file name="HpsCheckServiceOverrideBuilder.php" hash="5b4a49a897f87d2a332182a1ccd67d0c"/><file name="HpsCheckServiceRecurringBuilder.php" hash="c86a2fd5165a65c78e38e3bbb1b9636c"/><file name="HpsCheckServiceReturnBuilder.php" hash="5ce46356468714f65ad827e1593977cc"/><file name="HpsCheckServiceSaleBuilder.php" hash="b823e74642e165772f5cb03beffacce7"/><file name="HpsCheckServiceVoidBuilder.php" hash="17305b04474285a8b64007c549180ba5"/></dir><dir name="Credit"><file name="HpsCreditServiceAuthorizeBuilder.php" hash="51997a17ee9a1aaacd40d9d2c8d69c17"/><file name="HpsCreditServiceCaptureBuilder.php" hash="fd6512f3b72f9051eaf7c3daeff2cb48"/><file name="HpsCreditServiceChargeBuilder.php" hash="3421b227fe594f0cb1533b4496c805bd"/><file name="HpsCreditServiceCpcEditBuilder.php" hash="7401c33a56c5a3c6a23f5f70101a4926"/><file name="HpsCreditServiceEditBuilder.php" hash="cdcf661c4182625212ec724b52eb8491"/><file name="HpsCreditServiceGetBuilder.php" hash="05b0cafe715a4d3ceb3c88b99b0c8dc1"/><file name="HpsCreditServiceListTransactionsBuilder.php" hash="a7765dfadc8e21177cc453a1e7dfd715"/><file name="HpsCreditServiceOfflineAuthBuilder.php" hash="d86d2425c6bbf28854a31d09a9f802b8"/><file name="HpsCreditServiceOfflineChargeBuilder.php" hash="0ee9ecf6b499a16f01fa2a7b94af00ca"/><file name="HpsCreditServicePrepaidAddValueBuilder.php" hash="997b48104fcdbd791a3b990515f2527e"/><file name="HpsCreditServicePrepaidBalanceInquiryBuilder.php" hash="7e7dd067d79281c32417b6d338825acd"/><file name="HpsCreditServiceRecurringBuilder.php" hash="560c8b86eeb9e4e468642eaa739ebe03"/><file name="HpsCreditServiceRefundBuilder.php" hash="4d5ab9c2a11c18a47e416bd90dffc5e8"/><file name="HpsCreditServiceReverseBuilder.php" hash="7960e9efa00ceb0d0c5368715c07d424"/><file name="HpsCreditServiceVerifyBuilder.php" hash="62027b344ee5444ccd1534358a405857"/><file name="HpsCreditServiceVoidBuilder.php" hash="0029756571343a1d8c6380874f6f5b6b"/></dir><dir name="Debit"><file name="HpsDebitServiceAddValueBuilder.php" hash="5f972b68a5afa062cbf911bfb3a946bc"/><file name="HpsDebitServiceChargeBuilder.php" hash="26aafce2a87bbbd8231a039209c49657"/><file name="HpsDebitServiceReturnBuilder.php" hash="2e11267e12bdd338b953db352a373961"/><file name="HpsDebitServiceReverseBuilder.php" hash="b088431d3ba0726d44cc418e92267958"/></dir><dir name="GiftCard"><file name="HpsGiftCardServiceActivateBuilder.php" hash="65e3ebd1c6ded3860b238d03e542fe3b"/><file name="HpsGiftCardServiceAddValueBuilder.php" hash="432582c9fd6617c86b373f5fe0b14fb1"/><file name="HpsGiftCardServiceAliasBuilder.php" hash="1b096debfa6678af2d6ddecfa82a638e"/><file name="HpsGiftCardServiceBalanceBuilder.php" hash="6bebaac04d059204a2408d693f77c449"/><file name="HpsGiftCardServiceDeactivateBuilder.php" hash="92b16b331414c40ea11de330bd447273"/><file name="HpsGiftCardServiceReplaceBuilder.php" hash="063e6b33a673c23553047a6f72927b2a"/><file name="HpsGiftCardServiceReverseBuilder.php" hash="2f7b96b1f9608cb7e3526ecb9b15558f"/><file name="HpsGiftCardServiceRewardBuilder.php" hash="242fbe42ab731b138e4d74be4cde4e9a"/><file name="HpsGiftCardServiceSaleBuilder.php" hash="8af2977da26e3707e42569ad7bf4c4a5"/><file name="HpsGiftCardServiceVoidBuilder.php" hash="fff556a586bb09d22f521a90d30fb809"/></dir><file name="HpsFluentCheckService.php" hash="e89511e006e914bdd4daf6765a49e97b"/><file name="HpsFluentCreditService.php" hash="58e0d0480066fec8c5c6e31eaa275d12"/><file name="HpsFluentDebitService.php" hash="63e86fe32a92c80cc5bd163283da6c64"/><file name="HpsFluentGiftCardService.php" hash="53697a755fc90256b940c74282693b0d"/></dir></dir><dir name="Gateway"><dir name="AltPayment"><file name="HpsAltPaymentService.php" hash="3d9cdbad50ccceb45d4d888018d2bab7"/><file name="HpsMasterPassService.php" hash="f5639448d09a38377f16434351201b09"/><file name="HpsPayPalService.php" hash="c91eebb0eca8bdda2505b78c4746db28"/></dir><file name="HpsBatchService.php" hash="2a4c11a4f7c78ec1e3b461b3803826c5"/><file name="HpsCentinelGatewayService.php" hash="40300a57982ccd5325b7bd0986a8bcc4"/><file name="HpsCheckService.php" hash="17eac57a5f3a6f24e31000325ad9ac1d"/><file name="HpsCreditService.php" hash="f7baf1cf04cd6024039ad90284f08db9"/><file name="HpsDebitService.php" hash="0ea76c01b3c817fcaea876bff28681b3"/><file name="HpsGiftCardService.php" hash="e1deb113c685845e2af2bb0ff793ea4d"/><file name="HpsPayPlanService.php" hash="ce5d2c003e72be8328634d92ab8ae6eb"/><file name="HpsRestGatewayService.php" hash="3a0b4217eb4e9d8c92d298914e539a04"/><file name="HpsSoapGatewayService.php" hash="87322fe8f0c193528c6ded0b02d9f784"/><file name="HpsTokenService.php" hash="b1dad4289201b399f89ad1d29a799d39"/><dir name="PayPlan"><file name="HpsPayPlanCustomerService.php" hash="cda074fca2230c26919a813cc2d71b5c"/><file name="HpsPayPlanPaymentMethodService.php" hash="61dd42308d203251f4483d68561c191b"/><file name="HpsPayPlanScheduleService.php" hash="e8c81640a7440a19ed3590894a31a1f1"/></dir></dir><file name="HpsCentinelConfig.php" hash="f43f7ea211a51883fb8a2173072027a8"/><file name="HpsServicesConfig.php" hash="f3d63dc7d089a8bcd248e4abc381e6a7"/><file name="index.php" hash="ce407ff5715c837d02b1aba7975bf512"/></dir><file name="index.php" hash="ce407ff5715c837d02b1aba7975bf512"/><file name=".DS_Store" hash="fb4d06cbd65ab29860d86984919afa4a"/></dir></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="securesubmit.xml" hash="cc04e952cc17ea3462931a9e7a655316"/></dir><dir name="template"><dir name="securesubmit"><file name="form.phtml" hash="67a460ca8f034f4bfe3fbb8e7845f37f"/></dir></dir></dir></dir></dir><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="securesubmit.xml" hash="410fda5ef3920f893f5a17ec379aa2da"/></dir><dir name="template"><dir name="securesubmit"><file name="form.phtml" hash="8e758ba36b58194a554e3cf3e274fe6e"/><dir name="masterpass"><file name="connect.phtml" hash="b5f47624447a44958ce4fa004c58c319"/><file name="form.phtml" hash="039d6a174ac24c45ece0d14b92b6c9c4"/><file name="js.phtml" hash="274e871b2d8270e3224b9ce12794c2c5"/><file name="mark.phtml" hash="fe27b341b5fb034e90ac35c92ef998d4"/><dir name="review"><file name="details.phtml" hash="0dc5e1201e7e424f089c15fc83a1c70f"/><dir name="shipping"><file name="method.phtml" hash="cc426553636aa08840bee1c4778d89e4"/></dir></dir><file name="review.phtml" hash="cfc643de65b962ba27306587357f45d3"/></dir><dir name="paypal"><dir name="incontext"><file name="js.phtml" hash="16b4ad23ea05464a55bb0390cd72e248"/><file name="payment.phtml" hash="b32d269057984f656422609015dd7d91"/></dir><dir name="review"><file name="details.phtml" hash="0dc5e1201e7e424f089c15fc83a1c70f"/><dir name="shipping"><file name="method.phtml" hash="cc426553636aa08840bee1c4778d89e4"/></dir></dir><file name="review.phtml" hash="cfc643de65b962ba27306587357f45d3"/><file name="shortcut.phtml" hash="268bfac86e653ec5981cd201075f4105"/></dir><file name="storedcards.phtml" hash="2b599d437b60bab2e43efc1809892da0"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Hps_Securesubmit.xml" hash="d5aed3f48a45f8e611b68d1e6f34c959"/></dir></target></contents>
|
26 |
<compatible/>
|
27 |
+
<dependencies><required><php><min>5.2.0</min><max>5.6.24</max></php></required></dependencies>
|
28 |
</package>
|