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>
|
