Hps_Securesubmit - Version 1.2.7

Version Notes

remove validate-card-type class to allow submit

Download this release

Release Info

Developer Heartland Payment Systems
Extension Hps_Securesubmit
Version 1.2.7
Comparing to
See all releases


Code changes from version 1.2.6 to 1.2.7

app/code/community/Hps/Securesubmit/Block/Info.php CHANGED
@@ -13,14 +13,20 @@ class Hps_SecureSubmit_Block_Info extends Mage_Payment_Block_Info
13
  $transport = parent::_prepareSpecificInformation($transport);
14
  $data = array();
15
  $info = $this->getInfo();
16
- $additionalData = $info->getAdditionalData();
 
17
  $gift = '';
18
 
19
- if (strpos($additionalData, 'giftcard_number') !== false) {
20
- $gift = "Gift Card & ";
21
  }
22
 
23
- $data[Mage::helper("payment")->__("Payment Type")] = $gift . "Credit Card ending in " . $info->getCcLast4() . " (" . $info->getCcExpMonth() . "/" . $info->getCcExpYear() . ")";
 
 
 
 
 
24
 
25
  return $transport->setData(array_merge($data, $transport->getData()));
26
  }
13
  $transport = parent::_prepareSpecificInformation($transport);
14
  $data = array();
15
  $info = $this->getInfo();
16
+ $additionalData = unserialize($info->getAdditionalData());
17
+ $skipCC = isset($additionalData['giftcard_skip_cc']) && $additionalData['giftcard_skip_cc'];
18
  $gift = '';
19
 
20
+ if (isset($additionalData['giftcard_number'])) {
21
+ $gift = "Gift Card" . (!$skipCC ? ' & ' : '');;
22
  }
23
 
24
+ $type = $gift;
25
+ if (!$skipCC) {
26
+ $type .= $info->getCcLast4() . " (" . $info->getCcExpMonth() . "/" . $info->getCcExpYear() . ")";
27
+ }
28
+
29
+ $data[Mage::helper("payment")->__("Payment Type")] = $type;
30
 
31
  return $transport->setData(array_merge($data, $transport->getData()));
32
  }
app/code/community/Hps/Securesubmit/Model/Payment.php CHANGED
@@ -1,13 +1,12 @@
1
  <?php
2
-
3
  require_once Mage::getBaseDir('lib').DS.'SecureSubmit'.DS.'Hps.php';
 
4
  /**
5
  * @category Hps
6
  * @package Hps_Securesubmit
7
  * @copyright Copyright (c) 2015 Heartland Payment Systems (https://www.magento.com)
8
  * @license https://github.com/SecureSubmit/heartland-magento-extension/blob/master/LICENSE Custom License
9
  */
10
-
11
  class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
12
  {
13
  protected $_code = 'hps_securesubmit';
@@ -18,18 +17,16 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
18
  protected $_canRefundInvoicePartial = true;
19
  protected $_canVoid = true;
20
  protected $_canAuthorize = true;
21
-
22
  protected $_supportedCurrencyCodes = array('USD');
23
  protected $_minOrderTotal = 0.5;
24
-
25
  protected $_formBlockType = 'hps_securesubmit/form';
26
  protected $_formBlockTypeAdmin = 'hps_securesubmit/adminhtml_form';
27
  protected $_infoBlockType = 'hps_securesubmit/info';
28
-
29
  protected $_allow_fraud = null;
30
  protected $_email_fraud = null;
31
  protected $_fraud_address = null;
32
  protected $_fraud_text = null;
 
33
 
34
  /**
35
  * Fields that should be replaced in debug with '***'
@@ -43,13 +40,11 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
43
  $info = $this->getInfoInstance();
44
  $additionalData = new Varien_Object($info->getAdditionalData() ? unserialize($info->getAdditionalData()) : null);
45
  $secureToken = $additionalData->getSecuresubmitToken() ? $additionalData->getSecuresubmitToken() : null;
46
-
47
  // Gracefully handle javascript errors.
48
  if (!$secureToken) {
49
  Mage::log('Payment information submitted without token.', Zend_Log::ERR);
50
  $this->throwUserError(Mage::helper('hps_securesubmit')->__('An unexpected error occurred. Please try resubmitting your payment information.'), null, true);
51
  }
52
-
53
  return $this;
54
  }
55
 
@@ -94,7 +89,6 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
94
  $secureToken = $additionalData->getSecuresubmitToken() ? $additionalData->getSecuresubmitToken() : null;
95
  $saveCreditCard = !! (bool)$additionalData->getCcSaveFuture();
96
  $customerId = $additionalData->getCustomerId();
97
-
98
  $giftService = $this->_getGiftService();
99
  $giftCardNumber = $additionalData->getGiftcardNumber();
100
  $giftCardPin = filter_var($additionalData->getGiftcardPin(),FILTER_VALIDATE_INT, ARRAY('default' => FILTER_NULL_ON_FAILURE));
@@ -122,12 +116,11 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
122
  'gift_card_number' => $giftCardNumber,
123
  'gift_card_transaction' => $giftresp->transactionId,
124
  'gift_card_amount_charged' => $amount));
125
- $payment->setStatus(self::STATUS_APPROVED);
126
- $payment->setAmount($amount);
127
- $payment->setLastTransId($response->transactionId);
128
- $payment->setTransactionId($response->transactionId);
129
- $payment->setIsTransactionClosed(0);
130
 
 
 
 
 
131
  return $this;
132
  } catch (Exception $e) {
133
  Mage::logException($e);
@@ -143,10 +136,8 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
143
  'gift_card_number' => $giftCardNumber,
144
  'gift_card_transaction' => $giftresp->transactionId,
145
  'gift_card_amount_charged' => $giftResponse->balanceAmount));
146
-
147
  $payment->setAmount($giftResponse->balanceAmount)->save();
148
  $amount = $amount - $giftResponse->balanceAmount; // remainder
149
-
150
  // 3. TODO: if the card payment fails later, refund the gift transaction
151
  }
152
  }
@@ -157,12 +148,12 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
157
  $cardData->number = $payment->getCcLast4();
158
  $cardData->expYear = $payment->getCcExpYear();
159
  $cardData->expMonth = $payment->getCcExpMonth();
 
160
  }
161
 
162
  $chargeService = $this->_getChargeService();
163
  $cardHolder = $this->_getCardHolderData($order);
164
  $details = $this->_getTxnDetailsData($order);
165
-
166
  $cardOrToken = new HpsTokenData();
167
  $cardOrToken->tokenValue = $secureToken;
168
 
@@ -195,18 +186,15 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
195
  }
196
 
197
  $this->_debugChargeService($chargeService);
198
- $payment->setStatus(self::STATUS_APPROVED);
199
- $payment->setAmount($amount);
200
- $payment->setLastTransId($response->transactionId);
201
- $payment->setCcTransId($response->transactionId);
202
- $payment->setTransactionId($response->transactionId);
203
- $payment->setIsTransactionClosed(0);
204
  if ($giftCardNumber) {
205
  $order->addStatusHistoryComment('Remaining amount to be charged to credit card ' .$this->_formatAmount((string)$amount) . '. [partial payment]')->save();
206
  }
207
 
208
  if ($multiToken) {
209
- $this->saveMultiUseToken($response, $cardData, $customerId);
210
  }
211
  } catch (HpsCreditException $e) {
212
  Mage::logException($e);
@@ -221,7 +209,6 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
221
 
222
  if ($this->_allow_fraud && $e->getCode() == HpsExceptionCodes::POSSIBLE_FRAUD_DETECTED) {
223
  // we can skip the card saving if it fails for possible fraud there will be no token.
224
-
225
  if ($this->_email_fraud && $this->_fraud_address != '') {
226
  // EMAIL THE PEOPLE
227
  $this->sendEmail(
@@ -232,14 +219,10 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
232
  );
233
  }
234
 
235
- $payment->setStatus(self::STATUS_APPROVED);
236
- $payment->setAmount($amount);
237
- $payment->setLastTransId($e->transactionId);
238
- $payment->setCcTransId($e->transactionId);
239
- $payment->setTransactionId($e->transactionId);
240
- $payment->setIsTransactionClosed(0);
241
  } else {
242
  $payment->setStatus(self::STATUS_ERROR);
 
243
  if ($e->getCode() == HpsExceptionCodes::POSSIBLE_FRAUD_DETECTED) {
244
  $this->throwUserError($this->_fraud_text, null, true);
245
  } else {
@@ -260,19 +243,41 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
260
  return $this;
261
  }
262
 
263
- protected function saveMultiUseToken($response, $cardData, $customerId)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
264
  {
265
  $tokenData = $response->tokenData; /* @var $tokenData HpsTokenData */
 
266
  if ($tokenData->responseCode == '0') {
267
  try {
268
  $this->_getChargeService()->updateTokenExpiration($tokenData->tokenValue, $cardData->expMonth, $cardData->expYear);
269
  } catch (Exception $e) {
270
  Mage::logException($e);
271
  }
 
272
  if ($customerId > 0) {
273
- Mage::helper('hps_securesubmit')->saveMultiToken($tokenData->tokenValue, $cardData, $response->cardType, $customerId);
274
  } else {
275
- Mage::helper('hps_securesubmit')->saveMultiToken($tokenData->tokenValue, $cardData, $response->cardType);
276
  }
277
  } else {
278
  Mage::log('Requested multi token has not been generated for the transaction # ' . $response->transactionId, Zend_Log::WARN);
@@ -303,6 +308,7 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
303
  } else {
304
  $this->_refund($payment, $amount);
305
  }
 
306
  return $this;
307
  }
308
 
@@ -323,13 +329,16 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
323
  public function transactionActiveOnGateway(Varien_Object $payment)
324
  {
325
  $transactionId = null;
 
326
  if (false !== ($parentId = $this->getParentTransactionId($payment))) {
327
  $transactionId = $parentId;
328
  } else {
329
  $transactionId = $payment->getCcTransId();
330
  }
 
331
  $service = $this->_getChargeService();
332
  $transaction = $service->get($transactionId);
 
333
  return $transaction->transactionStatus == 'A';
334
  }
335
 
@@ -343,6 +352,7 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
343
  public function void(Varien_Object $payment)
344
  {
345
  $transactionId = null;
 
346
  if (false !== ($parentId = $this->getParentTransactionId($payment))) {
347
  $transactionId = $parentId;
348
  } else {
@@ -350,6 +360,7 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
350
  }
351
 
352
  $chargeService = $this->_getChargeService();
 
353
  try {
354
  $voidResponse = $chargeService->void($transactionId);
355
  $payment
@@ -378,7 +389,6 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
378
  {
379
  $transactionId = $payment->getCcTransId();
380
  $order = $payment->getOrder(); /* @var $order Mage_Sales_Model_Order */
381
-
382
  $chargeService = $this->_getChargeService();
383
  $cardHolder = $this->_getCardHolderData($order);
384
  $details = $this->_getTxnDetailsData($order);
@@ -391,7 +401,6 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
391
  $cardHolder,
392
  $details
393
  );
394
-
395
  $payment
396
  ->setTransactionId($refundResponse->transactionId)
397
  ->setParentTransactionId($transactionId)
@@ -428,7 +437,6 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
428
  if (!in_array($currencyCode, $this->_supportedCurrencyCodes)) {
429
  return false;
430
  }
431
-
432
  return true;
433
  }
434
 
@@ -439,6 +447,7 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
439
  if (!($data instanceof Varien_Object)) {
440
  $data = new Varien_Object($data);
441
  }
 
442
  $info = $this->getInfoInstance();
443
 
444
  if (!$info->getCcLast4() && $data->getCcLastFour()) {
@@ -446,21 +455,35 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
446
  }
447
 
448
  $details = array();
 
449
  if ($data->getData('cc_save_future')) {
450
  $details['cc_save_future'] = 1;
451
  }
 
452
  if ($data->getData('securesubmit_token')) {
453
  $details['securesubmit_token'] = $data->getData('securesubmit_token');
454
  }
 
455
  if ($data->getData('giftcard_number')) {
456
  $details['giftcard_number'] = $data->getData('giftcard_number');
457
  }
 
 
 
 
 
 
 
 
 
458
  if ($data->getData('use_credit_card')) {
459
  $details['use_credit_card'] = 1;
460
  }
 
461
  if ($data->getData('customer_id')) {
462
  $details['customer_id'] = $data->getData('customer_id');
463
  }
 
464
  if (!empty($details)) {
465
  $this->getInfoInstance()->setAdditionalData(serialize($details));
466
  }
@@ -491,7 +514,8 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
491
  if ($goToPaymentSection && Mage::app()->getRequest()->getOriginalPathInfo() == '/checkout/onepage/saveOrder') {
492
  Mage::getSingleton('checkout/session')->setGotoSection('payment');
493
  }
494
- Mage::log('throwing user error with Mage_Core_Exception');
 
495
  throw new Mage_Core_Exception($error);
496
  }
497
 
@@ -571,20 +595,24 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
571
  {
572
  $memo = array();
573
  $ip = '';
 
574
  if (isset($_SERVER['REMOTE_ADDR'])) {
575
  $ip = $_SERVER['REMOTE_ADDR'];
576
  }
 
577
  if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
578
  $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
579
  }
 
580
  if ($ip) {
581
  $memo[] = 'Customer IP Address: '.$ip;
582
  }
 
583
  if (isset($_SERVER['HTTP_USER_AGENT'])) {
584
  $memo[] = 'User Agent: '.$_SERVER['HTTP_USER_AGENT'];
585
  }
586
- $memo = implode(', ', $memo);
587
 
 
588
  $details = new HpsTransactionDetails();
589
  $details->memo = substr($memo, 0, 200); // Actual limit unknown..
590
  $details->invoiceNumber = $order->getIncrementId();
@@ -615,11 +643,13 @@ class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
615
  $headers[] = sprintf('From: %s', $from);
616
  $headers[] = sprintf('Reply-To: %s', $from);
617
  $message = $body;
 
618
  if ($isHtml) {
619
  $message = sprintf('<html><body>%s</body></html>', $body);
620
  $headers[] = 'MIME-Version: 1.0';
621
  $headers[] = 'Content-Type: text/html; charset=ISO-8859-1';
622
  }
 
623
  $message = wordwrap($message, 70, "\r\n");
624
  mail($to, $subject, $message, implode("\r\n", $headers));
625
  }
1
  <?php
 
2
  require_once Mage::getBaseDir('lib').DS.'SecureSubmit'.DS.'Hps.php';
3
+
4
  /**
5
  * @category Hps
6
  * @package Hps_Securesubmit
7
  * @copyright Copyright (c) 2015 Heartland Payment Systems (https://www.magento.com)
8
  * @license https://github.com/SecureSubmit/heartland-magento-extension/blob/master/LICENSE Custom License
9
  */
 
10
  class Hps_Securesubmit_Model_Payment extends Mage_Payment_Model_Method_Cc
11
  {
12
  protected $_code = 'hps_securesubmit';
17
  protected $_canRefundInvoicePartial = true;
18
  protected $_canVoid = true;
19
  protected $_canAuthorize = true;
 
20
  protected $_supportedCurrencyCodes = array('USD');
21
  protected $_minOrderTotal = 0.5;
 
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 '***'
40
  $info = $this->getInfoInstance();
41
  $additionalData = new Varien_Object($info->getAdditionalData() ? unserialize($info->getAdditionalData()) : null);
42
  $secureToken = $additionalData->getSecuresubmitToken() ? $additionalData->getSecuresubmitToken() : null;
 
43
  // Gracefully handle javascript errors.
44
  if (!$secureToken) {
45
  Mage::log('Payment information submitted without token.', Zend_Log::ERR);
46
  $this->throwUserError(Mage::helper('hps_securesubmit')->__('An unexpected error occurred. Please try resubmitting your payment information.'), null, true);
47
  }
 
48
  return $this;
49
  }
50
 
89
  $secureToken = $additionalData->getSecuresubmitToken() ? $additionalData->getSecuresubmitToken() : null;
90
  $saveCreditCard = !! (bool)$additionalData->getCcSaveFuture();
91
  $customerId = $additionalData->getCustomerId();
 
92
  $giftService = $this->_getGiftService();
93
  $giftCardNumber = $additionalData->getGiftcardNumber();
94
  $giftCardPin = filter_var($additionalData->getGiftcardPin(),FILTER_VALIDATE_INT, ARRAY('default' => FILTER_NULL_ON_FAILURE));
116
  'gift_card_number' => $giftCardNumber,
117
  'gift_card_transaction' => $giftresp->transactionId,
118
  'gift_card_amount_charged' => $amount));
 
 
 
 
 
119
 
120
+ // just adds a trackable type for the DB
121
+ $giftresp->cardType = 'Gift';
122
+ // \Hps_Securesubmit_Model_Payment::closeTransaction
123
+ $this->closeTransaction($payment,$amount,$giftresp);
124
  return $this;
125
  } catch (Exception $e) {
126
  Mage::logException($e);
136
  'gift_card_number' => $giftCardNumber,
137
  'gift_card_transaction' => $giftresp->transactionId,
138
  'gift_card_amount_charged' => $giftResponse->balanceAmount));
 
139
  $payment->setAmount($giftResponse->balanceAmount)->save();
140
  $amount = $amount - $giftResponse->balanceAmount; // remainder
 
141
  // 3. TODO: if the card payment fails later, refund the gift transaction
142
  }
143
  }
148
  $cardData->number = $payment->getCcLast4();
149
  $cardData->expYear = $payment->getCcExpYear();
150
  $cardData->expMonth = $payment->getCcExpMonth();
151
+ $cardType = $payment->getCcType();
152
  }
153
 
154
  $chargeService = $this->_getChargeService();
155
  $cardHolder = $this->_getCardHolderData($order);
156
  $details = $this->_getTxnDetailsData($order);
 
157
  $cardOrToken = new HpsTokenData();
158
  $cardOrToken->tokenValue = $secureToken;
159
 
186
  }
187
 
188
  $this->_debugChargeService($chargeService);
189
+ // \Hps_Securesubmit_Model_Payment::closeTransaction
190
+ $this->closeTransaction($payment,$amount,$response);
191
+
 
 
 
192
  if ($giftCardNumber) {
193
  $order->addStatusHistoryComment('Remaining amount to be charged to credit card ' .$this->_formatAmount((string)$amount) . '. [partial payment]')->save();
194
  }
195
 
196
  if ($multiToken) {
197
+ $this->saveMultiUseToken($response, $cardData, $customerId, $cardType);
198
  }
199
  } catch (HpsCreditException $e) {
200
  Mage::logException($e);
209
 
210
  if ($this->_allow_fraud && $e->getCode() == HpsExceptionCodes::POSSIBLE_FRAUD_DETECTED) {
211
  // we can skip the card saving if it fails for possible fraud there will be no token.
 
212
  if ($this->_email_fraud && $this->_fraud_address != '') {
213
  // EMAIL THE PEOPLE
214
  $this->sendEmail(
219
  );
220
  }
221
 
222
+ $this->closeTransaction($payment,$amount,$e);
 
 
 
 
 
223
  } else {
224
  $payment->setStatus(self::STATUS_ERROR);
225
+
226
  if ($e->getCode() == HpsExceptionCodes::POSSIBLE_FRAUD_DETECTED) {
227
  $this->throwUserError($this->_fraud_text, null, true);
228
  } else {
243
  return $this;
244
  }
245
 
246
+ /**
247
+ * @param Varien_Object|Mage_Sales_Model_Order_Payment $payment
248
+ * @param float $amount
249
+ * @param HpsReportTransactionDetails|HpsAuthorization $response
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 */
269
+
270
  if ($tokenData->responseCode == '0') {
271
  try {
272
  $this->_getChargeService()->updateTokenExpiration($tokenData->tokenValue, $cardData->expMonth, $cardData->expYear);
273
  } catch (Exception $e) {
274
  Mage::logException($e);
275
  }
276
+
277
  if ($customerId > 0) {
278
+ Mage::helper('hps_securesubmit')->saveMultiToken($tokenData->tokenValue, $cardData, $cardType, $customerId);
279
  } else {
280
+ Mage::helper('hps_securesubmit')->saveMultiToken($tokenData->tokenValue, $cardData, $cardType);
281
  }
282
  } else {
283
  Mage::log('Requested multi token has not been generated for the transaction # ' . $response->transactionId, Zend_Log::WARN);
308
  } else {
309
  $this->_refund($payment, $amount);
310
  }
311
+
312
  return $this;
313
  }
314
 
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
 
352
  public function void(Varien_Object $payment)
353
  {
354
  $transactionId = null;
355
+
356
  if (false !== ($parentId = $this->getParentTransactionId($payment))) {
357
  $transactionId = $parentId;
358
  } else {
360
  }
361
 
362
  $chargeService = $this->_getChargeService();
363
+
364
  try {
365
  $voidResponse = $chargeService->void($transactionId);
366
  $payment
389
  {
390
  $transactionId = $payment->getCcTransId();
391
  $order = $payment->getOrder(); /* @var $order Mage_Sales_Model_Order */
 
392
  $chargeService = $this->_getChargeService();
393
  $cardHolder = $this->_getCardHolderData($order);
394
  $details = $this->_getTxnDetailsData($order);
401
  $cardHolder,
402
  $details
403
  );
 
404
  $payment
405
  ->setTransactionId($refundResponse->transactionId)
406
  ->setParentTransactionId($transactionId)
437
  if (!in_array($currencyCode, $this->_supportedCurrencyCodes)) {
438
  return false;
439
  }
 
440
  return true;
441
  }
442
 
447
  if (!($data instanceof Varien_Object)) {
448
  $data = new Varien_Object($data);
449
  }
450
+
451
  $info = $this->getInfoInstance();
452
 
453
  if (!$info->getCcLast4() && $data->getCcLastFour()) {
455
  }
456
 
457
  $details = array();
458
+
459
  if ($data->getData('cc_save_future')) {
460
  $details['cc_save_future'] = 1;
461
  }
462
+
463
  if ($data->getData('securesubmit_token')) {
464
  $details['securesubmit_token'] = $data->getData('securesubmit_token');
465
  }
466
+
467
  if ($data->getData('giftcard_number')) {
468
  $details['giftcard_number'] = $data->getData('giftcard_number');
469
  }
470
+
471
+ if ($data->getData('giftcard_pin')) {
472
+ $details['giftcard_pin'] = $data->getData('giftcard_pin');
473
+ }
474
+
475
+ if ($data->getData('giftcard_skip_cc')) {
476
+ $details['giftcard_skip_cc'] = $data->getData('giftcard_skip_cc') === 'true';
477
+ }
478
+
479
  if ($data->getData('use_credit_card')) {
480
  $details['use_credit_card'] = 1;
481
  }
482
+
483
  if ($data->getData('customer_id')) {
484
  $details['customer_id'] = $data->getData('customer_id');
485
  }
486
+
487
  if (!empty($details)) {
488
  $this->getInfoInstance()->setAdditionalData(serialize($details));
489
  }
514
  if ($goToPaymentSection && Mage::app()->getRequest()->getOriginalPathInfo() == '/checkout/onepage/saveOrder') {
515
  Mage::getSingleton('checkout/session')->setGotoSection('payment');
516
  }
517
+
518
+ Mage::log('throwing user error with Mage_Core_Exception: ' . $error);
519
  throw new Mage_Core_Exception($error);
520
  }
521
 
595
  {
596
  $memo = array();
597
  $ip = '';
598
+
599
  if (isset($_SERVER['REMOTE_ADDR'])) {
600
  $ip = $_SERVER['REMOTE_ADDR'];
601
  }
602
+
603
  if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
604
  $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
605
  }
606
+
607
  if ($ip) {
608
  $memo[] = 'Customer IP Address: '.$ip;
609
  }
610
+
611
  if (isset($_SERVER['HTTP_USER_AGENT'])) {
612
  $memo[] = 'User Agent: '.$_SERVER['HTTP_USER_AGENT'];
613
  }
 
614
 
615
+ $memo = implode(', ', $memo);
616
  $details = new HpsTransactionDetails();
617
  $details->memo = substr($memo, 0, 200); // Actual limit unknown..
618
  $details->invoiceNumber = $order->getIncrementId();
643
  $headers[] = sprintf('From: %s', $from);
644
  $headers[] = sprintf('Reply-To: %s', $from);
645
  $message = $body;
646
+
647
  if ($isHtml) {
648
  $message = sprintf('<html><body>%s</body></html>', $body);
649
  $headers[] = 'MIME-Version: 1.0';
650
  $headers[] = 'Content-Type: text/html; charset=ISO-8859-1';
651
  }
652
+
653
  $message = wordwrap($message, 70, "\r\n");
654
  mail($to, $subject, $message, implode("\r\n", $headers));
655
  }
app/code/community/Hps/Securesubmit/controllers/GiftcardController.php CHANGED
@@ -1,11 +1,12 @@
1
  <?php
2
  require_once Mage::getBaseDir('lib') . DS . 'SecureSubmit' . DS . 'Hps.php';
3
 
4
- class Hps_Securesubmit_GiftcardController extends Mage_core_Controller_Front_Action {
5
-
6
  public function getBalanceAction() {
7
  try {
8
  $giftCardNumber = $this->getRequest()->getParam('giftcard_number');
 
9
 
10
  if (!$giftCardNumber) {
11
  throw new Mage_Core_Exception($this->__('No number received.'));
@@ -21,13 +22,18 @@ class Hps_Securesubmit_GiftcardController extends Mage_core_Controller_Front_Act
21
 
22
  try {
23
  $card = new HpsGiftCard();
24
- $card->number = $_GET["giftcard_number"];
 
25
 
26
  $response = $giftService->balance($card);
27
 
 
 
 
28
  $result = array(
29
  'error' => FALSE,
30
- 'balance' => $response->balanceAmount
 
31
  );
32
  } catch (HpsException $e) {
33
  $result = array('error' => TRUE, 'message' => $e->getMessage());
@@ -42,7 +48,4 @@ class Hps_Securesubmit_GiftcardController extends Mage_core_Controller_Front_Act
42
  $this->getResponse()->setHeader('Content-Type', 'application/json', TRUE);
43
  $this->getResponse()->setBody(json_encode($result));
44
  }
45
-
46
  }
47
-
48
- ?>
1
  <?php
2
  require_once Mage::getBaseDir('lib') . DS . 'SecureSubmit' . DS . 'Hps.php';
3
 
4
+ class Hps_Securesubmit_GiftcardController extends Mage_Core_Controller_Front_Action
5
+ {
6
  public function getBalanceAction() {
7
  try {
8
  $giftCardNumber = $this->getRequest()->getParam('giftcard_number');
9
+ $giftCardPin = $this->getRequest()->getParam('giftcard_pin');
10
 
11
  if (!$giftCardNumber) {
12
  throw new Mage_Core_Exception($this->__('No number received.'));
22
 
23
  try {
24
  $card = new HpsGiftCard();
25
+ $card->number = $giftCardNumber;
26
+ $card->pin = $giftCardPin;
27
 
28
  $response = $giftService->balance($card);
29
 
30
+ $cart = Mage::getModel('checkout/session')->getQuote();
31
+ $total = $cart->getGrandTotal();
32
+
33
  $result = array(
34
  'error' => FALSE,
35
+ 'balance' => $response->balanceAmount,
36
+ 'less_than_total' => $response->balanceAmount < $total,
37
  );
38
  } catch (HpsException $e) {
39
  $result = array('error' => TRUE, 'message' => $e->getMessage());
48
  $this->getResponse()->setHeader('Content-Type', 'application/json', TRUE);
49
  $this->getResponse()->setBody(json_encode($result));
50
  }
 
51
  }
 
 
app/code/community/Hps/Securesubmit/etc/system.xml CHANGED
@@ -97,35 +97,35 @@
97
  Heartland Account must already be signed up to accept Gift Cards.]]>
98
  </comment>
99
  </allow_heartland_gift>
100
- <allow_fraud translate="label">
101
- <label>Allow Suspicious</label>
102
- <frontend_type>select</frontend_type>
103
- <source_model>adminhtml/system_config_source_yesno</source_model>
104
- <sort_order>62</sort_order>
105
- <show_in_default>1</show_in_default>
106
- <show_in_website>1</show_in_website>
107
- <show_in_store>1</show_in_store>
108
- <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>
109
- </allow_fraud>
110
- <email_fraud translate="label">
111
- <label>Email Store Owner on Suspicious Orders</label>
112
- <frontend_type>select</frontend_type>
113
- <source_model>adminhtml/system_config_source_yesno</source_model>
114
- <sort_order>63</sort_order>
115
- <show_in_default>1</show_in_default>
116
- <show_in_website>1</show_in_website>
117
- <show_in_store>1</show_in_store>
118
- </email_fraud>
119
- <fraud_address translate="label">
120
  <label>Notification Email Address</label>
121
  <frontend_type>text</frontend_type>
122
  <sort_order>64</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>
129
  <label>Fraud Text</label>
130
  <frontend_type>textarea</frontend_type>
131
  <sort_order>65</sort_order>
@@ -134,7 +134,17 @@
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
- <custom_message>
 
 
 
 
 
 
 
 
 
 
138
  <label>Custom Error Message</label>
139
  <frontend_type>textarea</frontend_type>
140
  <sort_order>66</sort_order>
97
  Heartland Account must already be signed up to accept Gift Cards.]]>
98
  </comment>
99
  </allow_heartland_gift>
100
+ <allow_fraud translate="label">
101
+ <label>Allow Suspicious</label>
102
+ <frontend_type>select</frontend_type>
103
+ <source_model>adminhtml/system_config_source_yesno</source_model>
104
+ <sort_order>62</sort_order>
105
+ <show_in_default>1</show_in_default>
106
+ <show_in_website>1</show_in_website>
107
+ <show_in_store>1</show_in_store>
108
+ <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>
109
+ </allow_fraud>
110
+ <email_fraud translate="label">
111
+ <label>Email Store Owner on Suspicious Orders</label>
112
+ <frontend_type>select</frontend_type>
113
+ <source_model>adminhtml/system_config_source_yesno</source_model>
114
+ <sort_order>63</sort_order>
115
+ <show_in_default>1</show_in_default>
116
+ <show_in_website>1</show_in_website>
117
+ <show_in_store>1</show_in_store>
118
+ </email_fraud>
119
+ <fraud_address translate="label">
120
  <label>Notification Email Address</label>
121
  <frontend_type>text</frontend_type>
122
  <sort_order>64</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>65</sort_order>
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
+ <use_iframes translate="label">
138
+ <label>Host the payment fields on Heartland's servers</label>
139
+ <frontend_type>select</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[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>
146
+ </use_iframes>
147
+ <custom_message translate="label">
148
  <label>Custom Error Message</label>
149
  <frontend_type>textarea</frontend_type>
150
  <sort_order>66</sort_order>
app/design/frontend/base/default/layout/securesubmit.xml CHANGED
@@ -1,45 +1,53 @@
1
  <?xml version="1.0"?>
2
 
3
  <layout version="0.1.0">
4
- <onestepcheckout_index_index>
5
  <reference name="head">
6
- <action method="addJs"><file>securesubmit/secure.submit-1.0.1.js</file></action>
7
- <action method="addJs"><file>securesubmit/checkout-form.js</file></action>
8
- <action method="addJs"><file>securesubmit/masterpass/lightbox.js</file></action>
 
9
  </reference>
10
- <reference name="before_body_end">
11
- <block type="hps_securesubmit/masterpass_client_js" name="hps_securesubmit_masterpass_js" />
12
- </reference>
13
- </onestepcheckout_index_index>
14
- <checkout_onepage_index>
15
  <reference name="head">
16
- <action method="addJs"><file>securesubmit/secure.submit-1.0.1.js</file></action>
 
 
 
 
 
 
 
 
 
17
  <action method="addJs"><file>securesubmit/checkout-form.js</file></action>
18
  <action method="addJs"><file>securesubmit/masterpass/lightbox.js</file></action>
19
  </reference>
20
  <reference name="before_body_end">
21
  <block type="hps_securesubmit/masterpass_client_js" name="hps_securesubmit_masterpass_js" />
22
  </reference>
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  </checkout_onepage_index>
24
  <onepagecheckout_index_index>
25
- <reference name="head">
26
- <action method="addJs"><file>securesubmit/secure.submit-1.0.1.js</file></action>
27
- <action method="addJs"><file>securesubmit/checkout-form.js</file></action>
28
- <action method="addJs"><file>securesubmit/masterpass/lightbox.js</file></action>
29
- </reference>
30
- <reference name="before_body_end">
31
- <block type="hps_securesubmit/masterpass_client_js" name="hps_securesubmit_masterpass_js" />
32
- </reference>
33
  </onepagecheckout_index_index>
34
  <checkout_multishipping_billing>
35
- <reference name="head">
36
- <action method="addJs"><file>securesubmit/secure.submit-1.0.1.js</file></action>
37
- <action method="addJs"><file>securesubmit/checkout-form.js</file></action>
38
- <action method="addJs"><file>securesubmit/masterpass/lightbox.js</file></action>
39
- </reference>
40
- <reference name="before_body_end">
41
- <block type="hps_securesubmit/masterpass_client_js" name="hps_securesubmit_masterpass_js" />
42
- </reference>
43
  </checkout_multishipping_billing>
44
  <customer_account>
45
  <reference name="customer_account_navigation">
@@ -61,6 +69,7 @@
61
  <reference name="my.account.wrapper">
62
  <block type="core/template" name="hps_securesubmit_content" template="securesubmit/storedcards.phtml"/>
63
  </reference>
 
64
  </hps_securesubmit_storedcard_index>
65
 
66
  <hps_securesubmit_masterpass_connect>
1
  <?xml version="1.0"?>
2
 
3
  <layout version="0.1.0">
4
+ <hps_securesubmit_add_css>
5
  <reference name="head">
6
+ <action method="addItem">
7
+ <type>skin_css</type>
8
+ <name>securesubmit/css/hps-styles.css</name>
9
+ </action>
10
  </reference>
11
+ </hps_securesubmit_add_css>
12
+ <hps_securesubmit_add_js>
 
 
 
13
  <reference name="head">
14
+ <!-- <action method="addJs"><file>securesubmit/secure.submit-1.0.1.js</file></action> -->
15
+ <block type="core/text" name="hps.securesubmit.js_library">
16
+ <action method="setText">
17
+ <text>
18
+ <![CDATA[
19
+ <script type="text/javascript" src="https://api2.heartlandportico.com/SecureSubmit.v1/token/2.1/securesubmit.js"></script>
20
+ ]]>
21
+ </text>
22
+ </action>
23
+ </block>
24
  <action method="addJs"><file>securesubmit/checkout-form.js</file></action>
25
  <action method="addJs"><file>securesubmit/masterpass/lightbox.js</file></action>
26
  </reference>
27
  <reference name="before_body_end">
28
  <block type="hps_securesubmit/masterpass_client_js" name="hps_securesubmit_masterpass_js" />
29
  </reference>
30
+ </hps_securesubmit_add_js>
31
+
32
+ <opc_index_index>
33
+ <update handle="hps_securesubmit_add_js" />
34
+ <update handle="hps_securesubmit_add_css" />
35
+ </opc_index_index>
36
+ <onestepcheckout_index_index>
37
+ <update handle="hps_securesubmit_add_js" />
38
+ <update handle="hps_securesubmit_add_css" />
39
+ </onestepcheckout_index_index>
40
+ <checkout_onepage_index>
41
+ <update handle="hps_securesubmit_add_js" />
42
+ <update handle="hps_securesubmit_add_css" />
43
  </checkout_onepage_index>
44
  <onepagecheckout_index_index>
45
+ <update handle="hps_securesubmit_add_js" />
46
+ <update handle="hps_securesubmit_add_css" />
 
 
 
 
 
 
47
  </onepagecheckout_index_index>
48
  <checkout_multishipping_billing>
49
+ <update handle="hps_securesubmit_add_js" />
50
+ <update handle="hps_securesubmit_add_css" />
 
 
 
 
 
 
51
  </checkout_multishipping_billing>
52
  <customer_account>
53
  <reference name="customer_account_navigation">
69
  <reference name="my.account.wrapper">
70
  <block type="core/template" name="hps_securesubmit_content" template="securesubmit/storedcards.phtml"/>
71
  </reference>
72
+ <update handle="hps_securesubmit_add_css" />
73
  </hps_securesubmit_storedcard_index>
74
 
75
  <hps_securesubmit_masterpass_connect>
app/design/frontend/base/default/template/securesubmit/form.phtml CHANGED
@@ -1,153 +1,142 @@
1
  <?php /* @var $this Hps_Securesubmit_Block_Form */
2
  $_code = $this->getMethodCode();
 
3
  $public_key = Mage::getModel('hps_securesubmit/payment')->getConfigData('publicapikey');
 
4
  $allow_card_saving = Mage::getModel('hps_securesubmit/payment')->getConfigData('allow_card_saving');
5
  $allow_heartland_gift = Mage::getModel('hps_securesubmit/payment')->getConfigData('allow_heartland_gift');
6
- $_loggedIn = Mage::getSingleton('customer/session')->isLoggedIn();
7
 
8
  if ($_loggedIn && $allow_card_saving) {
9
  $customerStoredCards = Mage::helper('hps_securesubmit')->getStoredCards( Mage::getSingleton('customer/session')->getCustomerId());
10
  }
11
  ?>
12
- <ul class="form-list" id="payment_form_<?php echo $_code ?>" style="display:none;">
13
- <?php if ($allow_heartland_gift): ?>
14
- <li id="<?php echo $_code; ?>_gift_card">
15
- <label for="<?php echo $_code ?>_giftcard_number"><?php echo $this->__('Optional Gift Card Number') ?></label><br />
16
- <input type="text" id="<?php echo $_code; ?>_giftcard_number" title="<?php echo $this->__('Gift Card Number') ?>" class="input-text validate-gift-number" value ="" autocomplete="off" name="payment[giftcard_number]" />
17
-
18
-
19
- <input width="100px" type="text" id="<?php echo $_code; ?>_giftcard_pin" title="<?php echo $this->__('Gift Card Pin') ?>" class="cvv input-text " value ="" placeholder="<?php echo $this->__('PIN') ?>" autocomplete="off" name="payment[giftcard_pin]" />
20
 
21
- <label id="gift-card-number-label" style="display: none;"></label>
22
- <a id="remove-gift-card" class="button" style="display: none;"><?php echo $this->__('Remove Gift Card') ?></a>
23
- <a id="apply-gift-card" class="button"><?php echo $this->__('Apply Gift Card') ?></a>
24
- </li>
25
- <?php endif ?>
26
-
27
- <?php if($_loggedIn && $allow_card_saving && count($customerStoredCards)): ?>
28
  <li>
29
- <label for="<?php echo $_code ?>_stored_card_checkbox"><?php echo $this->__('Use a stored card') ?></label>
30
- <div class="input-box">
31
- <input type="checkbox" id="<?php echo $_code ?>_stored_card_checkbox" />
32
- </div>
33
- </li>
34
- <li id="<?php echo $_code ?>_stored_cards" style="display: none">
35
- <label for="<?php echo $_code ?>_stored_card_select"><?php echo $this->__('Stored Card') ?></label>
36
- <div class="input-box">
37
- <select id="<?php echo $_code ?>_stored_card_select" autocomplete="off">
38
- <?php foreach ($customerStoredCards as $key => $card): ?>
39
- <option value="<?php echo $card->getId() ?>"><?php echo $card->getCcType().' ************'.$card->getCcLast4().' ('.$card->getCcExpMonth().'/'.$card->getCcExpYear().')' ?></option>
40
- <?php endforeach ?>
41
- </select>
42
  </div>
43
  </li>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  <?php endif ?>
45
- <li class="stored_cards_selected">
46
- <label for="<?php echo $_code ?>_cc_number"><?php echo $this->__('Credit Card Number') ?> <span class="required">&nbsp;</span></label>
47
- <div class="input-box">
48
- <input type="text" id="<?php echo $_code ?>_cc_number" title="<?php echo $this->__('Credit Card Number') ?>" class="input-text validate-cc-number validate-cc-type" value="" autocomplete="off" />
49
- <input type="hidden" id="<?php echo $_code ?>_token" name="payment[securesubmit_token]" value="">
50
- <input type="hidden" id="<?php echo $_code ?>_cc_last_four" name="payment[cc_last_four]" value="">
51
- </div>
52
- </li>
53
- <li class="stored_cards_selected">
54
- <label for="<?php echo $_code ?>_expiration"><?php echo $this->__('Expiration Date') ?> <span class="required">&nbsp;</span></label>
55
- <div class="input-box">
56
- <div class="v-fix">
57
- <select id="<?php echo $_code ?>_expiration" name="payment[cc_exp_month]" class="month required-entry validate-cc-exp" autocomplete="off">
58
- <?php $_ccExpMonth = $this->getInfoData('cc_exp_month') ?>
59
- <?php foreach ($this->getCcMonths() as $k=>$v): ?>
60
- <option value="<?php echo $k?$k:'' ?>" <?php if($k==$_ccExpMonth): ?> selected="selected"<?php endif ?>><?php echo $v ?></option>
61
- <?php endforeach ?>
62
- </select>
63
- </div>
64
- <div class="v-fix">
65
- <select id="<?php echo $_code ?>_expiration_yr" name="payment[cc_exp_year]" class="year required-entry" autocomplete="off">
66
- <?php foreach ($this->getCcYears() as $k=>$v): ?>
67
- <option value="<?php echo $k?$k:'' ?>" <?php if($k==$this->getInfoData('cc_exp_year')):?> selected="selected"<?php endif ?>><?php echo $v ?></option>
68
- <?php endforeach ?>
69
- </select>
 
 
 
 
70
  </div>
71
- </div>
72
- </li>
73
- <li class="stored_cards_selected">
74
- <label for="<?php echo $_code ?>_cc_cid"><?php echo $this->__('Card Verification Number') ?> <span class="required">&nbsp;</span></label>
75
- <div class="input-box">
76
- <div class="v-fix">
77
- <input type="text" title="<?php echo $this->__('Card Verification Number') ?>" class="cvv required-entry input-text validate-cc-cvn" id="<?php echo $_code ?>_cc_cid" value="" autocomplete="off" />
 
 
 
78
  </div>
79
- <a href="#" class="cvv-what-is-this"><?php echo $this->__('What is this?') ?></a>
80
- </div>
81
- </li>
82
- <?php if ($_loggedIn && $allow_card_saving && $public_key): ?>
83
- <li class="stored_cards_selected">
84
- <label style="display: inline-block;" for="<?php echo $_code ?>_cc_save_future"><?php echo $this->__('Save this card for future use?') ?></label>
85
- <div class="input-box">
86
- <input type="checkbox" id="<?php echo $_code ?>_cc_save_future" name="payment[cc_save_future]" value="Y" autocomplete="off" />
 
 
 
 
 
 
 
 
 
87
  </div>
88
  </li>
 
 
 
 
 
 
 
 
 
 
 
 
 
89
  <?php endif ?>
90
- </ul>
91
 
92
  <script type="text/javascript">
93
  //<![CDATA[
94
- <?php if($_loggedIn && $allow_card_saving && count($customerStoredCards)): ?>
95
- $('<?php echo $_code ?>_stored_card_checkbox').observe('click',function() {
96
- $$('.stored_cards_selected').invoke('toggle');
97
- $('<?php echo $_code ?>_stored_cards').toggle();
98
- $('<?php echo $_code ?>_cc_number').toggleClassName('validate-cc-number');
99
- });
100
- <?php endif ?>
101
-
102
- <?php if ($allow_heartland_gift): ?>
103
- Event.observe('apply-gift-card', 'click', function(event) {
104
- $j.ajax({
105
- url: "<?php echo Mage::getUrl('securesubmit/giftcard/getBalance', array('_secure' => TRUE)) ?>",
106
- type: "GET",
107
- data: "giftcard_number=" + $j("#<?php echo $_code; ?>_giftcard_number").val()
108
- + "&giftcard_pin=" + $j("#<?php echo $_code; ?>_giftcard_pin").val(),
109
- success: function(data) {
110
- if (data.error) {
111
- alert('Error adding gift card: ' + data.message);
112
- } else {
113
- //successful gift, show things
114
- $j('#apply-gift-card').hide();
115
- $j("#<?php echo $_code; ?>_giftcard_number").hide();
116
- $j("#<?php echo $_code; ?>_giftcard_pin").hide();
117
- $j('#gift-card-number-label').text($j("#<?php echo $_code; ?>_giftcard_number").val() + " - $" + data.balance);
118
- $j('#gift-card-number-label').show();
119
- $j('#remove-gift-card').show();
120
- }
121
- }
122
- });
123
- });
124
-
125
- Event.observe('remove-gift-card', 'click', function(event) {
126
- $j('#apply-gift-card').show();
127
- $j("#<?php echo $_code; ?>_giftcard_number").val('');
128
- $j("#<?php echo $_code; ?>_giftcard_number").show();
129
- $j('#gift-card-number-label').text('');
130
- $j('#gift-card-number-label').hide();
131
- $j('#remove-gift-card').hide();
132
- });
133
- <?php endif; ?>
134
-
135
- if (typeof Payment !== 'undefined') {
136
- payment.secureSubmitPublicKey = '<?php echo $public_key ?>';
137
- payment.secureSubmitGetTokenDataUrl = '<?php echo Mage::getUrl('securesubmit/storedcard/getTokenData', array('_secure' => TRUE)) ?>';
138
- } else if( !document.getElementById('multishipping-billing-form').empty() ){
139
- secureSubmit = securesubmitMultishipping(document.getElementById('multishipping-billing-form'));
140
- secureSubmit.secureSubmitPublicKey = '<?php echo $public_key ?>';
141
- secureSubmit.secureSubmitGetTokenDataUrl = '<?php echo Mage::getUrl('securesubmit/storedcard/getTokenData', array('_secure' => TRUE)) ?>';
142
-
143
- document.observe('dom:loaded', function() {
144
- Event.observe('payment-continue', 'click', function(e){ Event.stop(e); secureSubmit.save(); });
145
- });
146
- }
147
-
148
- if (typeof OPC !== 'undefined') {
149
- OPC.prototype.secureSubmitPublicKey = '<?php echo $public_key ?>';
150
- OPC.prototype.secureSubmitGetTokenDataUrl = '<?php echo Mage::getUrl('securesubmit/storedcard/getTokenData', array('_secure' => TRUE)) ?>';
151
- }
152
  //]]>
153
  </script>
1
  <?php /* @var $this Hps_Securesubmit_Block_Form */
2
  $_code = $this->getMethodCode();
3
+ $_loggedIn = Mage::getSingleton('customer/session')->isLoggedIn();
4
  $public_key = Mage::getModel('hps_securesubmit/payment')->getConfigData('publicapikey');
5
+ $token_data_url = Mage::getUrl('securesubmit/storedcard/getTokenData', array('_secure' => TRUE));
6
  $allow_card_saving = Mage::getModel('hps_securesubmit/payment')->getConfigData('allow_card_saving');
7
  $allow_heartland_gift = Mage::getModel('hps_securesubmit/payment')->getConfigData('allow_heartland_gift');
8
+ $use_iframes = !!Mage::getModel('hps_securesubmit/payment')->getConfigData('use_iframes');
9
 
10
  if ($_loggedIn && $allow_card_saving) {
11
  $customerStoredCards = Mage::helper('hps_securesubmit')->getStoredCards( Mage::getSingleton('customer/session')->getCustomerId());
12
  }
13
  ?>
 
 
 
 
 
 
 
 
14
 
15
+ <ul class="form-list" id="payment_form_<?= $_code ?>" style="display:none;">
16
+ <!-- header -->
 
 
 
 
 
17
  <li>
18
+ <div class="logos btn-group" role="group" aria-label-"..">
19
+ <button type="button" class="ss-icon" aria-label="Left Align"></button>
20
+ <button type="button" class="ss-logo" aria-label="Left Align"></button>
 
 
 
 
 
 
 
 
 
 
21
  </div>
22
  </li>
23
+
24
+ <!--checkbox for stored card-->
25
+ <?php if($_loggedIn && $allow_card_saving && count($customerStoredCards)): ?>
26
+ <?php $checked = true; ?>
27
+ <?php foreach ($customerStoredCards as $key => $card): ?>
28
+ <li class="card-menu-item">
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">
35
+ <?= $card->getCcType().' ************'.$card->getCcLast4()?>
36
+ </span>
37
+
38
+ <div class="icon-<?= strtolower($card->getCcType()) ?>-form"></div>
39
+
40
+ <span class="exp-date"><?= "expires on" ." " .' (' .$card->getCcExpMonth().'/'.$card->getCcExpYear().')' ?> </span>
41
+
42
+ </label>
43
+ </li>
44
+ <?php endforeach ?>
45
  <?php endif ?>
46
+
47
+ <!--dropdown-->
48
+ <?php $checked = !$_loggedIn || !count($customerStoredCards);?>
49
+ <li class="card-menu-item new-card">
50
+ <?php if (!$checked): ?>
51
+ <label for="<?= $_code ?>_stored_card_select_new" class="<?= $_code ?>_stored_card_label">
52
+ <div class="cc-option">
53
+ <input type="radio" name="<?= $_code ?>_stored_card_select" id="<?= $_code ?>_stored_card_select_new" value="new" />
54
+ </div>
55
+
56
+ <span class="new-card">
57
+ <?= $this->__('Pay with a new credit card') ?>
58
+ </span>
59
+ </label>
60
+ <?php else: ?>
61
+ <input type="radio" name="<?= $_code ?>_stored_card_select" id="<?= $_code ?>_stored_card_select_new" value="new" checked="checked" style="display:none;"/>
62
+ <?php endif ?>
63
+
64
+ <div id="<?= $_code ?>_cc_form" <?php if (!$checked): ?>style="display: none;"<?php endif ?>>
65
+ <label for="<?= $_code ?>_cc_number"><?= $this->__('Credit Card Number') ?> <span class="required">&nbsp;</span></label>
66
+ <div class="saved-card-list">
67
+ <?php if ($use_iframes): ?>
68
+ <div id="<?= $_code ?>_cc_number_iframe"></div>
69
+ <?php else: ?>
70
+ <input type="tel" id="<?= $_code ?>_cc_number" title="<?= $this->__('Credit Card Number') ?>" class="input-text validate-cc-number" autocomplete="off" placeholder="•••• •••• •••• ••••" />
71
+ <?php endif ?>
72
+ <input type="hidden" id="<?= $_code ?>_token" name="payment[securesubmit_token]">
73
+ <input type="hidden" id="<?= $_code ?>_cc_last_four" name="payment[cc_last_four]">
74
+ <input type="hidden" id="<?= $_code ?>_cc_type" name="payment[cc_type]">
75
  </div>
76
+
77
+ <label for="<?= $_code ?>_expiration"><?= $this->__('Expiration Date') ?> <span class="required">&nbsp;</span></label>
78
+ <div class="input-box" id="horizontal-form">
79
+ <?php if ($use_iframes): ?>
80
+ <div id="<?= $_code ?>_cc_exp_iframe"></div>
81
+ <?php else: ?>
82
+ <input type="tel" name="payment[cc_exp]" placeholder="MM / YYYY" id="<?= $_code ?>_exp_date" class="input-text year required-entry">
83
+ <?php endif ?>
84
+ <input type="hidden" id="<?= $_code ?>_cc_exp_month" name="payment[cc_exp_month]">
85
+ <input type="hidden" id="<?= $_code ?>_cc_exp_year" name="payment[cc_exp_year]">
86
  </div>
87
+
88
+ <label for="<?= $_code ?>_cvv_number"><?= $this->__('Card Verification Number') ?> <span class="required">&nbsp;</span></label></br>
89
+
90
+ <?php if ($use_iframes): ?>
91
+ <div id="<?= $_code ?>_cc_cvv_iframe"></div>
92
+ <?php else: ?>
93
+ <div class="v-fix">
94
+ <input type="tel" title="<?= $this->__('Card Verification Number') ?>" class="input-text icon-sc required-entry validate-cc-cvn" autocomplete="off" placeholder="CVV" id="<?= $_code ?>_cvv_number"/>
95
+ </div></br>
96
+ <?php endif ?>
97
+
98
+ <?php if ($_loggedIn && $allow_card_saving && $public_key): ?>
99
+ <div class="save-card-checkbox" id="">
100
+ <input type="checkbox" id="<?= $_code ?>_cc_save_future" name="payment[cc_save_future]" value="Y" autocomplete="off" />
101
+ <label style="" for="<?= $_code ?>_cc_save_future"><?= $this->__('&nbsp; &nbsp;Save this card for future use?') ?></label>
102
+ </div>
103
+ <?php endif ?>
104
  </div>
105
  </li>
106
+
107
+ <!-- gift -->
108
+ <?php if ($allow_heartland_gift): ?>
109
+ <li id="<?= $_code; ?>_gift_card">
110
+ <label for="<?= $_code ?>_giftcard_number"><?= $this->__('Optional Gift Card Number') ?></label><br /><br />
111
+ <input type="tel" id="<?= $_code; ?>_giftcard_number" title="<?= $this->__('Gift Card Number') ?>" class="input-text validate-gift-number" autocomplete="off" name="payment[giftcard_number]" placeholder="<?= $this->__('GIFT CARD NUMBER') ?>" />
112
+ <input width="100px" type="tel" id="<?= $_code; ?>_giftcard_pin" title="<?= $this->__('Gift Card Pin') ?>" class="cvv input-text " placeholder="<?= $this->__('PIN') ?>" autocomplete="off" name="payment[giftcard_pin]" />
113
+ <input type="hidden" id="<?= $_code; ?>_giftcard_skip_cc" name="payment[giftcard_skip_cc]" value="false" />
114
+ <label id="gift-card-number-label" style="display: none;"></label>
115
+ <a id="remove-gift-card" class="button" style="display: none;"><?= $this->__('Remove Gift Card') ?></a>
116
+ <a id="apply-gift-card" class="button"><?= $this->__('Apply Gift Card') ?></a>
117
+ </li>
118
+ </ul>
119
  <?php endif ?>
120
+
121
 
122
  <script type="text/javascript">
123
  //<![CDATA[
124
+ SecureSubmitMagento.init({
125
+ code: '<?= $_code ?>',
126
+ loggedIn: <?= $_loggedIn ? 'true' : 'false' ?>,
127
+ publicKey: '<?= $public_key ?>',
128
+ allowCardSaving: <?= $allow_card_saving ? 'true' : 'false' ?>,
129
+ tokenDataUrl: '<?= $token_data_url ?>',
130
+ allowGift: <?= $allow_heartland_gift ? 'true' : 'false' ?>,
131
+ giftBalanceUrl: '<?= Mage::getUrl('securesubmit/giftcard/getBalance', array('_secure' => true)) ?>',
132
+ useIframes: <?= $use_iframes ? 'true' : 'false' ?>,
133
+ <?php if ($use_iframes): ?>
134
+ iframeTargets: {
135
+ cardNumber: '<?= $_code ?>_cc_number_iframe',
136
+ cardExpiration: '<?= $_code ?>_cc_exp_iframe',
137
+ cardCvv: '<?= $_code ?>_cc_cvv_iframe'
138
+ }
139
+ <?php endif ?>
140
+ });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
141
  //]]>
142
  </script>
app/design/frontend/base/default/template/securesubmit/storedcards.phtml CHANGED
@@ -1,37 +1,30 @@
1
  <?php
2
  $_storedCards = Mage::helper('hps_securesubmit')->getStoredCards(Mage::getSingleton('customer/session')->getCustomerId());
3
  ?>
4
-
5
  <h1><?php echo $this->__('Manage Saved Cards') ?></h1>
6
  <div class="box-account">
7
- <div class="box-head">
8
- <h2><?php echo $this->__('Saved Credit Cards') ?></h2>
9
- </div>
10
  <?php if (count($_storedCards)): ?>
11
- <table class="data-table" id="stored-cards-table">
12
- <col width="1" />
13
- <col width="1" />
14
- <col width="1" />
15
- <col width="1" />
16
- <thead>
17
- <tr>
18
- <th><?php echo $this->__('Card Type') ?></th>
19
- <th><?php echo $this->__('Card Number') ?></th>
20
- <th><?php echo $this->__('Expiration Date') ?></th>
21
- <th>&nbsp;</th>
22
- </tr>
23
- </thead>
24
- <tbody>
25
- <?php foreach ($_storedCards->getData() as $card): ?>
26
- <tr id="credit_cards">
27
- <td class="a-center"><span class="nobr"><?php echo $card['cc_type'] ?></span></td>
28
- <td class="a-center"><span class="nobr"><?php echo "************".$card['cc_last4'] ?></span></td>
29
- <td class="a-center"><span class="nobr"><?php echo $card['cc_exp_month'] ."-".$card['cc_exp_year'] ?></span></td>
30
- <td><a href="<?php echo Mage::getUrl('securesubmit/storedcard/delete', array('storedcard_id' => $card['storedcard_id'], '_secure' => TRUE)) ?>"><?php echo $this->__('Delete') ?></a></td>
31
- </tr>
32
- <?php endforeach; ?>
33
- </tbody>
34
- </table>
35
  <?php else: ?>
36
  <p>
37
  <?php echo $this->__('You do not have any saved credit cards.') ?>
1
  <?php
2
  $_storedCards = Mage::helper('hps_securesubmit')->getStoredCards(Mage::getSingleton('customer/session')->getCustomerId());
3
  ?>
4
+ <span class="icon-ss"></span>
5
  <h1><?php echo $this->__('Manage Saved Cards') ?></h1>
6
  <div class="box-account">
 
 
 
7
  <?php if (count($_storedCards)): ?>
8
+ <div class="box-head">
9
+ <h2><?php echo $this->__('Saved Credit Cards') ?></h2>
10
+ </div>
11
+ <ul id="hps-saved-cards" class="saved-card-table">
12
+ <?php foreach ($_storedCards->getData() as $card): ?>
13
+ <li id="credit_cards">
14
+ <div class="icon-<?= strtolower($card['cc_type'])?>">&nbsp;</div>
15
+ <span class="saved-cc-number-stored">
16
+ <?php echo $card['cc_type'] ." " ."ending in ************".$card['cc_last4'] ?>
17
+ </span>
18
+ <div class="icon-trash"></div>
19
+ <br/>
20
+ <span class="exp-date">
21
+ <?php echo "expires on" ." " .$card['cc_exp_month'] ."-".$card['cc_exp_year'] ?>
22
+ </span>
23
+ <a href="<?php echo Mage::getUrl('securesubmit/storedcard/delete', array('storedcard_id' => $card['storedcard_id'], '_secure' => TRUE)) ?>" >
24
+ </a>
25
+ </li>
26
+ <?php endforeach; ?>
27
+ </ul>
 
 
 
 
28
  <?php else: ?>
29
  <p>
30
  <?php echo $this->__('You do not have any saved credit cards.') ?>
js/securesubmit/checkout-form.js CHANGED
@@ -1,7 +1,7 @@
1
- function securesubmitMultishipping(multiForm){
2
  var secureSubmit = {
3
  save: function() {
4
- if (payment.currentMethod != 'hps_securesubmit') {
5
  multiForm.submit();
6
  return;
7
  }
@@ -10,7 +10,7 @@ function securesubmitMultishipping(multiForm){
10
 
11
  // Use stored card checked, get existing token data
12
  if (this.secureSubmitUseStoredCard()) {
13
- var storedcardId = $('hps_securesubmit_stored_card_select').value;
14
 
15
  new Ajax.Request(this.secureSubmitGetTokenDataUrl, {
16
  method: 'post',
@@ -18,8 +18,8 @@ function securesubmitMultishipping(multiForm){
18
  onSuccess: function(response) {
19
  var data = response.responseJSON;
20
  if (data && data.token) {
21
- $('hps_securesubmit_expiration').value = parseInt(data.token.cc_exp_month);
22
- $('hps_securesubmit_expiration_yr').value = data.token.cc_exp_year;
23
  }
24
  this.secureSubmitResponseHandler({
25
  token_value: data.token.token_value,
@@ -37,35 +37,51 @@ function securesubmitMultishipping(multiForm){
37
  }
38
  // Use stored card not checked, get new token
39
  else {
40
- var validator = new Validation(multiForm);
41
- if (validator.validate()) {
42
-
43
- hps.tokenize({
44
- data: {
45
- public_key: this.secureSubmitPublicKey,
46
- number: $('hps_securesubmit_cc_number').value,
47
- cvc: $('hps_securesubmit_cc_cid').value,
48
- exp_month: $('hps_securesubmit_expiration').value,
49
- exp_year: $('hps_securesubmit_expiration_yr').value
50
- },
51
- success: this.secureSubmitResponseHandler.bind(this),
52
- error: this.secureSubmitResponseHandler.bind(this),
53
- });
 
 
 
 
 
 
 
 
54
  }
55
  }
56
  },
57
  secureSubmitUseStoredCard: function () {
58
- var storedCheckbox = $('hps_securesubmit_stored_card_checkbox');
59
- return storedCheckbox && storedCheckbox.checked;
60
  },
61
  secureSubmitResponseHandler: function (response) {
62
  var tokenField = $('hps_securesubmit_token'),
63
  lastFourField = $('hps_securesubmit_cc_last_four');
 
 
 
64
  tokenField.value = lastFourField.value = null;
65
 
 
 
 
 
 
66
  if (response && response.error) {
67
- if (response.message) {
68
- alert(response.message);
69
  }
70
  } else if (response && response.token_value) {
71
  tokenField.value = response.token_value;
@@ -75,7 +91,7 @@ function securesubmitMultishipping(multiForm){
75
  document.getElementById('payment-continue').enable();
76
  multiForm.submit();
77
  } else {
78
- alert('Unexpected error.')
79
  }
80
  }
81
  };
@@ -84,7 +100,7 @@ function securesubmitMultishipping(multiForm){
84
 
85
  document.observe('dom:loaded', function () {
86
  // Override default Payment save handler
87
- if (typeof Payment != "undefined") {
88
  if (typeof Payment.prototype._secureSubmitOldSave === 'undefined') {
89
  var oldPayment = Object.clone(Payment.prototype);
90
  Payment.prototype._secureSubmitOldSave = oldPayment.save;
@@ -96,11 +112,11 @@ document.observe('dom:loaded', function () {
96
  return;
97
  }
98
 
99
- if (checkout.loadWaiting != false) return;
100
 
101
  // Use stored card checked, get existing token data
102
  if (this.secureSubmitUseStoredCard()) {
103
- var storedcardId = $('hps_securesubmit_stored_card_select').value;
104
  checkout.setLoadWaiting('payment');
105
  new Ajax.Request(this.secureSubmitGetTokenDataUrl, {
106
  method: 'post',
@@ -108,8 +124,8 @@ document.observe('dom:loaded', function () {
108
  onSuccess: function(response) {
109
  var data = response.responseJSON;
110
  if (data && data.token) {
111
- $('hps_securesubmit_expiration').value = parseInt(data.token.cc_exp_month);
112
- $('hps_securesubmit_expiration_yr').value = data.token.cc_exp_year;
113
  }
114
  this.secureSubmitResponseHandler({
115
  token_value: data.token.token_value,
@@ -128,36 +144,53 @@ document.observe('dom:loaded', function () {
128
  }
129
  // Use stored card not checked, get new token
130
  else {
131
- var validator = new Validation(this.form);
132
- if (this.validate() && validator.validate()) {
133
  checkout.setLoadWaiting('payment');
134
-
135
- hps.tokenize({
136
- data: {
137
- public_key: this.secureSubmitPublicKey,
138
- number: $('hps_securesubmit_cc_number').value,
139
- cvc: $('hps_securesubmit_cc_cid').value,
140
- exp_month: $('hps_securesubmit_expiration').value,
141
- exp_year: $('hps_securesubmit_expiration_yr').value
142
- },
143
- success: this.secureSubmitResponseHandler.bind(this),
144
- error: this.secureSubmitResponseHandler.bind(this)
145
- });
 
 
 
 
 
 
 
 
 
 
146
  }
147
  }
148
  },
149
  secureSubmitUseStoredCard: function () {
150
- var storedCheckbox = $('hps_securesubmit_stored_card_checkbox');
151
- return storedCheckbox && storedCheckbox.checked;
152
  },
153
  secureSubmitResponseHandler: function (response) {
154
  var tokenField = $('hps_securesubmit_token'),
155
  lastFourField = $('hps_securesubmit_cc_last_four');
 
 
 
156
  tokenField.value = lastFourField.value = null;
157
 
 
 
 
 
 
158
  if (response && response.error) {
159
- if (response.message) {
160
- alert(response.message);
161
  }
162
  checkout.setLoadWaiting(false);
163
  } else if (response && response.token_value) {
@@ -173,13 +206,13 @@ document.observe('dom:loaded', function () {
173
  parameters: Form.serialize(this.form)
174
  });
175
  } else {
176
- alert('Unexpected error.')
177
  }
178
  }
179
  });
180
  }
181
 
182
- if (typeof OPC != "undefined") {
183
  if (typeof OPC.prototype._secureSubmitOldSubmit === 'undefined') {
184
  var oldOPC = Object.clone(OPC.prototype);
185
  OPC.prototype._secureSubmitOldSubmit = oldOPC.submit;
@@ -190,26 +223,43 @@ document.observe('dom:loaded', function () {
190
  this._secureSubmitOldSubmit();
191
  return;
192
  }
193
- hps.tokenize({
194
- data: {
195
- public_key: this.secureSubmitPublicKey,
196
- number: $('hps_securesubmit_cc_number').value,
197
- cvc: $('hps_securesubmit_cc_cid').value,
198
- exp_month: $('hps_securesubmit_expiration').value,
199
- exp_year: $('hps_securesubmit_expiration_yr').value
200
- },
201
- success: this.secureSubmitResponseHandler.bind(this),
202
- error: this.secureSubmitResponseHandler.bind(this)
203
- });
 
 
 
 
 
 
 
 
 
204
  },
205
  secureSubmitResponseHandler: function (response) {
206
  var tokenField = $('hps_securesubmit_token'),
207
  lastFourField = $('hps_securesubmit_cc_last_four');
 
 
 
208
  tokenField.value = lastFourField.value = null;
209
 
 
 
 
 
 
210
  if (response && response.error) {
211
- if (response.message) {
212
- alert(response.message);
213
  }
214
  checkout.setLoadWaiting(false);
215
  } else if (response && response.token_value) {
@@ -223,11 +273,430 @@ document.observe('dom:loaded', function () {
223
  parameters: params,
224
  onSuccess: this.setResponse.bind(this),
225
  onFailure: this.ajaxFailure.bind(this)
226
- });;
227
  } else {
228
- alert('Unexpected error.')
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
229
  }
230
  }
231
  });
232
  }
233
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ function securesubmitMultishipping(multiForm) {
2
  var secureSubmit = {
3
  save: function() {
4
+ if (payment && payment.currentMethod != 'hps_securesubmit') {
5
  multiForm.submit();
6
  return;
7
  }
10
 
11
  // Use stored card checked, get existing token data
12
  if (this.secureSubmitUseStoredCard()) {
13
+ var storedcardId = $$('[name="hps_securesubmit_stored_card_select"]:checked')[0].value;
14
 
15
  new Ajax.Request(this.secureSubmitGetTokenDataUrl, {
16
  method: 'post',
18
  onSuccess: function(response) {
19
  var data = response.responseJSON;
20
  if (data && data.token) {
21
+ $('hps_securesubmit_cc_exp_month').value = parseInt(data.token.cc_exp_month);
22
+ $('hps_securesubmit_cc_exp_year').value = data.token.cc_exp_year;
23
  }
24
  this.secureSubmitResponseHandler({
25
  token_value: data.token.token_value,
37
  }
38
  // Use stored card not checked, get new token
39
  else {
40
+ if (SecureSubmitMagento.options.useIframes) {
41
+ SecureSubmitMagento.hps.Messages.post({
42
+ accumulateData: true,
43
+ action: 'tokenize',
44
+ message: SecureSubmitMagento.options.publicKey
45
+ }, 'cardNumber');
46
+ } else {
47
+ var validator = new Validation(multiForm);
48
+ if (validator.validate()) {
49
+ var date = $('hps_securesubmit_exp_date').value.split('/');
50
+ $('hps_securesubmit_cc_exp_month').value = date[0].trim();
51
+ $('hps_securesubmit_cc_exp_year').value = date[1].trim();
52
+ (new Heartland.HPS({
53
+ publicKey: this.secureSubmitPublicKey,
54
+ cardNumber: $('hps_securesubmit_cc_number').value,
55
+ cardCvv: $('hps_securesubmit_cvv_number').value,
56
+ cardExpMonth: $('hps_securesubmit_cc_exp_month').value,
57
+ cardExpYear: $('hps_securesubmit_cc_exp_year').value,
58
+ success: this.secureSubmitResponseHandler.bind(this),
59
+ error: this.secureSubmitResponseHandler.bind(this)
60
+ })).tokenize();
61
+ }
62
  }
63
  }
64
  },
65
  secureSubmitUseStoredCard: function () {
66
+ var newRadio = $('hps_securesubmit_stored_card_select_new');
67
+ return !newRadio.checked;
68
  },
69
  secureSubmitResponseHandler: function (response) {
70
  var tokenField = $('hps_securesubmit_token'),
71
  lastFourField = $('hps_securesubmit_cc_last_four');
72
+ var date = $('hps_securesubmit_exp_date').value.split('/');
73
+ $('hps_securesubmit_cc_exp_month').value = date[0].trim();
74
+ $('hps_securesubmit_cc_exp_year').value = date[1].trim();
75
  tokenField.value = lastFourField.value = null;
76
 
77
+ if (SecureSubmitMagento.skipCreditCard) {
78
+ SecureSubmitMagento.completeCheckout();
79
+ return;
80
+ }
81
+
82
  if (response && response.error) {
83
+ if (response.error.message) {
84
+ alert(response.error.message);
85
  }
86
  } else if (response && response.token_value) {
87
  tokenField.value = response.token_value;
91
  document.getElementById('payment-continue').enable();
92
  multiForm.submit();
93
  } else {
94
+ alert('Unexpected error.');
95
  }
96
  }
97
  };
100
 
101
  document.observe('dom:loaded', function () {
102
  // Override default Payment save handler
103
+ if (typeof Payment != 'undefined') {
104
  if (typeof Payment.prototype._secureSubmitOldSave === 'undefined') {
105
  var oldPayment = Object.clone(Payment.prototype);
106
  Payment.prototype._secureSubmitOldSave = oldPayment.save;
112
  return;
113
  }
114
 
115
+ if (checkout.loadWaiting !== false) return;
116
 
117
  // Use stored card checked, get existing token data
118
  if (this.secureSubmitUseStoredCard()) {
119
+ var storedcardId = $$('[name="hps_securesubmit_stored_card_select"]:checked')[0].value;
120
  checkout.setLoadWaiting('payment');
121
  new Ajax.Request(this.secureSubmitGetTokenDataUrl, {
122
  method: 'post',
124
  onSuccess: function(response) {
125
  var data = response.responseJSON;
126
  if (data && data.token) {
127
+ $('hps_securesubmit_cc_exp_month').value = parseInt(data.token.cc_exp_month);
128
+ $('hps_securesubmit_cc_exp_year').value = data.token.cc_exp_year;
129
  }
130
  this.secureSubmitResponseHandler({
131
  token_value: data.token.token_value,
144
  }
145
  // Use stored card not checked, get new token
146
  else {
147
+ if (SecureSubmitMagento.options.useIframes) {
 
148
  checkout.setLoadWaiting('payment');
149
+ SecureSubmitMagento.hps.Messages.post({
150
+ accumulateData: true,
151
+ action: 'tokenize',
152
+ message: SecureSubmitMagento.options.publicKey
153
+ }, 'cardNumber');
154
+ } else {
155
+ var validator = new Validation(this.form);
156
+ if (this.validate() && validator.validate()) {
157
+ checkout.setLoadWaiting('payment');
158
+ var date = $('hps_securesubmit_exp_date').value.split('/');
159
+ $('hps_securesubmit_cc_exp_month').value = date[0].trim();
160
+ $('hps_securesubmit_cc_exp_year').value = date[1].trim();
161
+ (new Heartland.HPS({
162
+ publicKey: this.secureSubmitPublicKey,
163
+ cardNumber: $('hps_securesubmit_cc_number').value,
164
+ cardCvv: $('hps_securesubmit_cvv_number').value,
165
+ cardExpMonth: $('hps_securesubmit_cc_exp_month').value,
166
+ cardExpYear: $('hps_securesubmit_cc_exp_year').value,
167
+ success: this.secureSubmitResponseHandler.bind(this),
168
+ error: this.secureSubmitResponseHandler.bind(this)
169
+ })).tokenize();
170
+ }
171
  }
172
  }
173
  },
174
  secureSubmitUseStoredCard: function () {
175
+ var newRadio = $('hps_securesubmit_stored_card_select_new');
176
+ return !newRadio.checked;
177
  },
178
  secureSubmitResponseHandler: function (response) {
179
  var tokenField = $('hps_securesubmit_token'),
180
  lastFourField = $('hps_securesubmit_cc_last_four');
181
+ var date = $('hps_securesubmit_exp_date').value.split('/');
182
+ $('hps_securesubmit_cc_exp_month').value = date[0].trim();
183
+ $('hps_securesubmit_cc_exp_year').value = date[1].trim();
184
  tokenField.value = lastFourField.value = null;
185
 
186
+ if (SecureSubmitMagento.skipCreditCard) {
187
+ SecureSubmitMagento.completeCheckout();
188
+ return;
189
+ }
190
+
191
  if (response && response.error) {
192
+ if (response.error.message) {
193
+ alert(response.error.message);
194
  }
195
  checkout.setLoadWaiting(false);
196
  } else if (response && response.token_value) {
206
  parameters: Form.serialize(this.form)
207
  });
208
  } else {
209
+ alert('Unexpected error.');
210
  }
211
  }
212
  });
213
  }
214
 
215
+ if (typeof OPC != 'undefined') {
216
  if (typeof OPC.prototype._secureSubmitOldSubmit === 'undefined') {
217
  var oldOPC = Object.clone(OPC.prototype);
218
  OPC.prototype._secureSubmitOldSubmit = oldOPC.submit;
223
  this._secureSubmitOldSubmit();
224
  return;
225
  }
226
+ if (SecureSubmitMagento.options.useIframes) {
227
+ SecureSubmitMagento.hps.Messages.post({
228
+ accumulateData: true,
229
+ action: 'tokenize',
230
+ message: SecureSubmitMagento.options.publicKey
231
+ }, 'cardNumber');
232
+ } else {
233
+ var date = $('hps_securesubmit_exp_date').value.split('/');
234
+ $('hps_securesubmit_cc_exp_month').value = date[0].trim();
235
+ $('hps_securesubmit_cc_exp_year').value = date[1].trim();
236
+ (new Heartland.HPS({
237
+ publicKey: this.secureSubmitPublicKey,
238
+ cardNumber: $('hps_securesubmit_cc_number').value,
239
+ cardCvv: $('hps_securesubmit_cvv_number').value,
240
+ cardExpMonth: $('hps_securesubmit_cc_exp_month').value,
241
+ cardExpYear: $('hps_securesubmit_cc_exp_year').value,
242
+ success: this.secureSubmitResponseHandler.bind(this),
243
+ error: this.secureSubmitResponseHandler.bind(this)
244
+ })).tokenize();
245
+ }
246
  },
247
  secureSubmitResponseHandler: function (response) {
248
  var tokenField = $('hps_securesubmit_token'),
249
  lastFourField = $('hps_securesubmit_cc_last_four');
250
+ var date = $('hps_securesubmit_exp_date').value.split('/');
251
+ $('hps_securesubmit_cc_exp_month').value = date[0].trim();
252
+ $('hps_securesubmit_cc_exp_year').value = date[1].trim();
253
  tokenField.value = lastFourField.value = null;
254
 
255
+ if (SecureSubmitMagento.skipCreditCard) {
256
+ SecureSubmitMagento.completeCheckout();
257
+ return;
258
+ }
259
+
260
  if (response && response.error) {
261
+ if (response.error.message) {
262
+ alert(response.error.message);
263
  }
264
  checkout.setLoadWaiting(false);
265
  } else if (response && response.token_value) {
273
  parameters: params,
274
  onSuccess: this.setResponse.bind(this),
275
  onFailure: this.ajaxFailure.bind(this)
276
+ });
277
  } else {
278
+ alert('Unexpected error.');
279
+ }
280
+ }
281
+ });
282
+ }
283
+
284
+ // MageStore One Step Checkout
285
+ if (typeof oscPlaceOrder == 'function') {
286
+ var cloneFunction = function (that) {
287
+ var temp = function temporary() { return that.apply(this, arguments); };
288
+ for (var key in this) {
289
+ if (this.hasOwnProperty(key)) {
290
+ temp[key] = this[key];
291
+ }
292
+ }
293
+ return temp;
294
+ };
295
+ var oscPlaceOrderOriginal = cloneFunction(oscPlaceOrder);
296
+ oscPlaceOrder = function (btn) {
297
+ var validator = new Validation('one-step-checkout-form');
298
+ var form = $('one-step-checkout-form');
299
+ if (validator.validate()) {
300
+ var currentPayment = $RF(form, 'payment[method]');
301
+ if (currentPayment!='hps_securesubmit') {
302
+ oscPlaceOrderOriginal(btn);
303
+ return;
304
+ }
305
+ $('onestepcheckout-place-order-loading').hide();
306
+ $('onestepcheckout-button-place-order').removeClassName('place-order-loader');
307
+ $('onestepcheckout-button-place-order').addClassName('onestepcheckout-btn-checkout');
308
+ if (secureSubmitUseStoredCardOSC()) {
309
+ var storedcardId = $('hps_securesubmit_stored_card_select').value;
310
+ new Ajax.Request(window.payment.secureSubmitGetTokenDataUrlOSC, {
311
+ method: 'post',
312
+ parameters: {storedcard_id: storedcardId},
313
+ onSuccess: function (response) {
314
+ var data = response.responseJSON;
315
+ if (data && data.token) {
316
+ $('hps_securesubmit_expiration').value = parseInt(data.token.cc_exp_month);
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(),
323
+ card: {
324
+ number: data.token.cc_last4
325
+ }
326
+ }, btn);
327
+ },
328
+ onFailure: function() {
329
+ alert('Unknown error. Please try again.');
330
+ $('onestepcheckout-place-order-loading').show();
331
+ $('onestepcheckout-button-place-order').removeClassName('onestepcheckout-btn-checkout');
332
+ $('onestepcheckout-button-place-order').addClassName('place-order-loader');
333
+ }
334
+ });
335
+ } else {
336
+ if (SecureSubmitMagento.options.useIframes) {
337
+ SecureSubmitMagento.hps.Messages.post({
338
+ accumulateData: true,
339
+ action: 'tokenize',
340
+ message: SecureSubmitMagento.options.publicKey
341
+ }, 'cardNumber');
342
+ } else {
343
+ var date = $('hps_securesubmit_exp_date').value.split('/');
344
+ $('hps_securesubmit_cc_exp_month').value = date[0].trim();
345
+ $('hps_securesubmit_cc_exp_year').value = date[1].trim();
346
+ (new Heartland.HPS({
347
+ publicKey: window.payment.secureSubmitPublicKeyOSC,
348
+ cardNumber: $('hps_securesubmit_cc_number').value,
349
+ cardCvv: $('hps_securesubmit_cvv_number').value,
350
+ cardExpMonth: $('hps_securesubmit_cc_exp_month').value,
351
+ cardExpYear: $('hps_securesubmit_cc_exp_year').value,
352
+ success: function (response) {
353
+ secureSubmitResponseHandlerOSC(response, btn);
354
+ },
355
+ error: function (response) {
356
+ secureSubmitResponseHandlerOSC(response, btn);
357
+ }
358
+ })).tokenize();
359
+ }
360
+ }
361
+ }
362
+ };
363
+
364
+ secureSubmitUseStoredCardOSC = function () {
365
+ var storedCheckbox = $('hps_securesubmit_stored_card_checkbox');
366
+ return storedCheckbox && storedCheckbox.checked;
367
+ };
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();
376
+ return;
377
+ }
378
+
379
+ if (response && response.error) {
380
+ if (response.error.message) {
381
+ alert(response.error.message);
382
+ }
383
+
384
+ $('onestepcheckout-place-order-loading').hide();
385
+ $('onestepcheckout-button-place-order').removeClassName('place-order-loader');
386
+ $('onestepcheckout-button-place-order').addClassName('onestepcheckout-btn-checkout');
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');
393
+ $('onestepcheckout-button-place-order').addClassName('place-order-loader');
394
+ oscPlaceOrderOriginal(btn);
395
+ } else {
396
+ alert('Unexpected error.');
397
+ $('onestepcheckout-place-order-loading').show();
398
+ $('onestepcheckout-button-place-order').removeClassName('onestepcheckout-btn-checkout');
399
+ $('onestepcheckout-button-place-order').addClassName('place-order-loader');
400
+ }
401
+ };
402
+ }
403
+
404
+ // IWD OPC
405
+ if (typeof IWD !== 'undefined' && typeof IWD.OPC !== 'undefined') {
406
+ if (typeof IWD.OPC._secureSubmitOldSavePayment === 'undefined') {
407
+ var oldOPC = Object.clone(IWD.OPC);
408
+ IWD.OPC._secureSubmitOldSavePayment = oldOPC.savePayment;
409
+ }
410
+ Object.extend(IWD.OPC, {
411
+ savePayment: function() {
412
+ if (payment.currentMethod != 'hps_securesubmit') {
413
+ this._secureSubmitOldSavePayment();
414
+ return;
415
+ }
416
+
417
+ if (!this.saveOrderStatus) {
418
+ return;
419
+ }
420
+
421
+ if (SecureSubmitMagento.options.useIframes) {
422
+ SecureSubmitMagento.hps.Messages.post({
423
+ accumulateData: true,
424
+ action: 'tokenize',
425
+ message: SecureSubmitMagento.options.publicKey
426
+ }, 'cardNumber');
427
+ } else {
428
+ var date = $('hps_securesubmit_exp_date').value.split('/');
429
+ $('hps_securesubmit_cc_exp_month').value = date[0].trim();
430
+ $('hps_securesubmit_cc_exp_year').value = date[1].trim();
431
+ (new Heartland.HPS({
432
+ publicKey: this.secureSubmitPublicKey,
433
+ cardNumber: $('hps_securesubmit_cc_number').value,
434
+ cardCvv: $('hps_securesubmit_cvv_number').value,
435
+ cardExpMonth: $('hps_securesubmit_cc_exp_month').value,
436
+ cardExpYear: $('hps_securesubmit_cc_exp_year').value,
437
+ success: this.secureSubmitResponseHandler.bind(this),
438
+ error: this.secureSubmitResponseHandler.bind(this)
439
+ })).tokenize();
440
+ }
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();
449
+ return;
450
+ }
451
+
452
+ if (response && response.error) {
453
+ IWD.OPC.Checkout.hideLoader();
454
+ IWD.OPC.Checkout.xhr = null;
455
+ IWD.OPC.Checkout.unlockPlaceOrder();
456
+ alert(response.error.message);
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(
463
+ IWD.OPC.Checkout.config.baseUrl + 'onepage/json/savePayment',
464
+ form,
465
+ IWD.OPC.preparePaymentResponse,
466
+ 'json'
467
+ );
468
+ } else {
469
+ IWD.OPC.Checkout.hideLoader();
470
+ IWD.OPC.Checkout.xhr = null;
471
+ IWD.OPC.Checkout.unlockPlaceOrder();
472
+ alert('Unexpected error.');
473
  }
474
  }
475
  });
476
  }
477
  });
478
+
479
+ (function (window, document, undefined) {
480
+ var THIS = {
481
+ skipCreditCard: false,
482
+ init: function (options) {
483
+ THIS.options = options;
484
+ THIS.observeSavedCards();
485
+ THIS.observeGift();
486
+
487
+ if (typeof Payment !== 'undefined') {
488
+ window.payment = window.payment || {};
489
+ payment.secureSubmitPublicKey = THIS.options.publicKey;
490
+ payment.secureSubmitGetTokenDataUrl = THIS.options.tokenDataUrl;
491
+ } else if (!document.getElementById('multishipping-billing-form').empty()){
492
+ THIS.secureSubmitMS = securesubmitMultishipping(document.getElementById('multishipping-billing-form'));
493
+ THIS.secureSubmitMS.secureSubmitPublicKey = THIS.options.publicKey;
494
+ THIS.secureSubmitMS.secureSubmitGetTokenDataUrl = THIS.options.tokenDataUrl;
495
+ document.observe('dom:loaded', function() {
496
+ Event.observe('payment-continue', 'click', function(e){ Event.stop(e); THIS.secureSubmitMS.save(); });
497
+ });
498
+ }
499
+
500
+ if (typeof OPC !== 'undefined') {
501
+ OPC.prototype.secureSubmitPublicKey = THIS.options.publicKey;
502
+ OPC.prototype.secureSubmitGetTokenDataUrl = THIS.options.tokenDataUrl;
503
+ }
504
+
505
+ // MageStore OSC
506
+ window.payment = window.payment || {};
507
+ window.payment.secureSubmitPublicKeyOSC = THIS.options.publicKey;
508
+ window.payment.secureSubmitGetTokenDataUrlOSC = THIS.options.tokenDataUrl;
509
+
510
+ // IWD OPC
511
+ if (typeof IWD !== 'undefined' && typeof IWD.OPC !== 'undefined') {
512
+ IWD.OPC.secureSubmitPublicKey = THIS.options.publicKey;
513
+ IWD.OPC.secureSubmitGetTokenDataUrl = THIS.options.tokenDataUrl;
514
+ }
515
+
516
+ THIS.setupFields();
517
+ },
518
+ observeSavedCards: function () {
519
+ if (THIS.options.loggedIn && THIS.options.allowCardSaving) {
520
+ $$('[name="' + THIS.options.code + '_stored_card_select"]').each(function (el) {
521
+ $(el).observe('click', function() {
522
+ if ($(THIS.options.code + '_stored_card_select_new').checked) {
523
+ $(THIS.options.code + '_cc_form').show();
524
+ } else {
525
+ $(THIS.options.code + '_cc_form').hide();
526
+ }
527
+
528
+ if (!THIS.options.useIframes) {
529
+ $(THIS.options.code + '_cc_number').toggleClassName('validate-cc-number');
530
+ }
531
+
532
+ $$('[name="' + THIS.options.code + '_stored_card_select"]').each(function (element) {
533
+ $(element).up(2).removeClassName('active');
534
+ });
535
+
536
+ $(el).up(2).addClassName('active');
537
+ });
538
+ });
539
+ }
540
+ },
541
+ observeGift: function () {
542
+ if (THIS.options.allowGift) {
543
+ Event.observe('apply-gift-card', 'click', function(event) {
544
+ $j.ajax({
545
+ url: THIS.options.giftBalanceUrl,
546
+ type: 'GET',
547
+ data: "giftcard_number=" + $j('#' + THIS.options.code + '_giftcard_number').val()
548
+ + "&giftcard_pin=" + $j('#' + THIS.options.code + '_giftcard_pin').val(),
549
+ success: function(data) {
550
+ if (data.error) {
551
+ alert('Error adding gift card: ' + data.message);
552
+ } else {
553
+ //successful gift, show things
554
+ $j('#apply-gift-card').hide();
555
+ $j('#' + THIS.options.code + '_giftcard_number').hide();
556
+ $j('#' + THIS.options.code + '_giftcard_pin').hide();
557
+ $j('#gift-card-number-label').text($j('#' + THIS.options.code + '_giftcard_number').val() + ' - $' + data.balance);
558
+ $j('#gift-card-number-label').show();
559
+ $j('#remove-gift-card').show();
560
+
561
+ if (!data.less_than_total) {
562
+ // skip cc capture enable
563
+ $$('#payment_form_hps_securesubmit .new-card')[0].hide();
564
+ $('hps_securesubmit_gift_card').style.borderTopWidth = '0px';
565
+ $(THIS.options.code + '_token').value = 'dummy';
566
+ THIS.skipCreditCard = true;
567
+ $(THIS.options.code + '_giftcard_skip_cc').value = 'true';
568
+ }
569
+ }
570
+ }
571
+ });
572
+ });
573
+ Event.observe('remove-gift-card', 'click', function(event) {
574
+ $j('#apply-gift-card').show();
575
+ $j('#' + THIS.options.code + '_giftcard_number').val('');
576
+ $j('#' + THIS.options.code + '_giftcard_number').show();
577
+ $j('#' + THIS.options.code + '_giftcard_pin').val('');
578
+ $j('#' + THIS.options.code + '_giftcard_pin').show();
579
+ $j('#gift-card-number-label').text('');
580
+ $j('#gift-card-number-label').hide();
581
+ $j('#remove-gift-card').hide();
582
+
583
+ // skip cc capture disable
584
+ $$('#payment_form_hps_securesubmit .new-card')[0].show();
585
+ $('hps_securesubmit_gift_card').style.borderTopWidth = '1px';
586
+ $(THIS.options.code + '_token').value = '';
587
+ THIS.skipCreditCard = false;
588
+ $(THIS.options.code + '_giftcard_skip_cc').value = 'false';
589
+ });
590
+ }
591
+ },
592
+ setupFields: function () {
593
+ if (THIS.options.useIframes) {
594
+ THIS.hps = new Heartland.HPS({
595
+ publicKey: THIS.options.publicKey,
596
+ type: 'iframe',
597
+ fields: {
598
+ cardNumber: {
599
+ target: THIS.options.iframeTargets.cardNumber,
600
+ placeholder: '•••• •••• •••• ••••'
601
+ },
602
+ cardExpiration: {
603
+ target: THIS.options.iframeTargets.cardExpiration,
604
+ placeholder: 'MM / YYYY'
605
+ },
606
+ cardCvv: {
607
+ target: THIS.options.iframeTargets.cardCvv,
608
+ placeholder: 'CVV'
609
+ }
610
+ },
611
+ style: {
612
+ '#heartland-field': {
613
+ 'height': '40px',
614
+ 'border-radius': '0px',
615
+ 'border': '1px solid silver',
616
+ 'letter-spacing': '2.5px',
617
+ 'margin': '5px 0px 15px 0px',
618
+ 'max-width': '365px',
619
+ 'width': '100%',
620
+ 'padding-left': '9px',
621
+ 'font-size': '15px'
622
+ },
623
+ '@media only screen and (max-width: 479px)': {
624
+ '#heartland-field': {
625
+ 'width': '95%'
626
+ }
627
+ }
628
+ },
629
+ onTokenSuccess: function (resp) {
630
+ $(THIS.options.code + '_token').value = resp.token_value;
631
+ $(THIS.options.code + '_cc_last_four').value = resp.card.number.substr(-4);
632
+ $(THIS.options.code + '_cc_type').value = resp.card_type;
633
+ $(THIS.options.code + '_cc_exp_month').value = resp.exp_month;
634
+ $(THIS.options.code + '_cc_exp_year').value = resp.exp_year;
635
+
636
+ THIS.completeCheckout();
637
+ },
638
+ onTokenError: function (response) {
639
+ if (THIS.skipCreditCard) {
640
+ THIS.completeCheckout();
641
+ return;
642
+ }
643
+
644
+ if (response.error.message) {
645
+ alert(response.error.message);
646
+ } else {
647
+ alert('Unexpected error.');
648
+ }
649
+
650
+ if (typeof Payment !== 'undefined' && window.checkout) {
651
+ checkout.setLoadWaiting(false);
652
+ } else if (typeof OPC !== 'undefined' && window.checkout) {
653
+ checkout.setLoadWaiting(false);
654
+ }
655
+ }
656
+ });
657
+ } else {
658
+ Heartland.Card.attachNumberEvents('#' + THIS.options.code + '_cc_number');
659
+ Heartland.Card.attachExpirationEvents('#' + THIS.options.code + '_exp_date');
660
+ Heartland.Card.attachCvvEvents('#' + THIS.options.code + '_cvv_number');
661
+ }
662
+ },
663
+ completeCheckout: function () {
664
+ if (typeof OPC !== 'undefined') {
665
+ checkout.setLoadWaiting(true);
666
+ var params = Form.serialize(checkout.form);
667
+ var request = new Ajax.Request(checkout.saveUrl, {
668
+ method: 'post',
669
+ parameters: params,
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',
677
+ form,
678
+ IWD.OPC.preparePaymentResponse,
679
+ 'json'
680
+ );
681
+ } else if (window.oscPlaceOrderOriginal) {
682
+ $('onestepcheckout-place-order-loading').show();
683
+ $('onestepcheckout-button-place-order').removeClassName('onestepcheckout-btn-checkout');
684
+ $('onestepcheckout-button-place-order').addClassName('place-order-loader');
685
+ oscPlaceOrderOriginal(btn);
686
+ } else if (typeof Payment !== 'undefined') {
687
+ var params = Form.serialize(payment.form);
688
+ var request = new Ajax.Request(payment.saveUrl, {
689
+ method: 'post',
690
+ parameters: params,
691
+ onComplete: payment.onComplete,
692
+ onSuccess: payment.onSave,
693
+ onFailure: checkout.ajaxFailure.bind(checkout)
694
+ });
695
+ } else if (!document.getElementById('multishipping-billing-form').empty()) {
696
+ document.getElementById('payment-continue').enable();
697
+ document.getElementById('multishipping-billing-form').submit();
698
+ }
699
+ }
700
+ };
701
+ window.SecureSubmitMagento = THIS;
702
+ }(window, window.document));
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Hps_Securesubmit</name>
4
- <version>1.2.6</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,11 +10,11 @@
10
  <description>Use Heartland Payment Systems SecureSubmit platform to charge, authorize, void, refund and partial refund credit cards.&#xD;
11
  &#xD;
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: added transaction id to AFS</notes>
14
  <authors><author><name>Heartland Payment Systems</name><user>markhagan</user><email>EntApp_DevPortal@e-hps.com</email></author></authors>
15
- <date>2016-06-08</date>
16
- <time>19:57:34</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="6517436417704a229e89274952a66b16"/><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="089179a35b4eddf64ebf2faa360eb21e"/><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="17b5a07d1d277281199f8f01d8280420"/><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="813d66d3fe8bde89912b9e6fa8355ba0"/></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="14cc8b51bc2073e922aa54f28300e0a2"/><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="95de11d6d6d8333a38b8a6c8d76403d8"/></dir><dir name="template"><dir name="securesubmit"><file name="form.phtml" hash="c26fea2e5e87031806f919240a606631"/><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="1fa4a862757a4e10a6067616515c5915"/></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</max></php></required></dependencies>
20
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>Hps_Securesubmit</name>
4
+ <version>1.2.7</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.&#xD;
11
  &#xD;
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>remove validate-card-type class to allow submit</notes>
14
  <authors><author><name>Heartland Payment Systems</name><user>markhagan</user><email>EntApp_DevPortal@e-hps.com</email></author></authors>
15
+ <date>2016-06-22</date>
16
+ <time>21:22:12</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.22</max></php></required></dependencies>
20
  </package>