Version Notes
Download this release
Release Info
Developer | Optimizer Ltd. |
Extension | SwipeHQ_Checkout |
Version | 1.7.1 |
Comparing to | |
See all releases |
Code changes from version 1.3.0 to 1.7.1
- app/code/community/SwipeHQ/Checkout/Helper/Data.php +0 -0
- app/code/community/SwipeHQ/Checkout/Model/Permittedorderstates.php +0 -0
- app/code/community/SwipeHQ/Checkout/Model/Standard.php +0 -0
- app/code/community/SwipeHQ/Checkout/controllers/PaymentController.php +66 -17
- app/code/community/SwipeHQ/Checkout/etc/config.xml +1 -1
- app/code/community/SwipeHQ/Checkout/etc/system.xml +76 -1
- app/code/community/SwipeHQ/Checkout/etc/test-plugin.php +230 -0
- app/design/frontend/base/default/template/swipehq/redirect.phtml +1 -1
- app/etc/modules/SwipeHQ_Checkout.xml +0 -0
- package.xml +76 -74
- readme.txt +67 -55
app/code/community/SwipeHQ/Checkout/Helper/Data.php
CHANGED
File without changes
|
app/code/community/SwipeHQ/Checkout/Model/Permittedorderstates.php
CHANGED
File without changes
|
app/code/community/SwipeHQ/Checkout/Model/Standard.php
CHANGED
File without changes
|
app/code/community/SwipeHQ/Checkout/controllers/PaymentController.php
CHANGED
@@ -1,9 +1,8 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
* Swipe Checkout Controller
|
4 |
-
*
|
5 |
-
* @
|
6 |
-
* @link http://www.swipehq.com/checkout/
|
7 |
*/
|
8 |
|
9 |
class SwipeHQ_Checkout_PaymentController extends Mage_Core_Controller_Front_Action {
|
@@ -22,6 +21,13 @@ class SwipeHQ_Checkout_PaymentController extends Mage_Core_Controller_Front_Acti
|
|
22 |
$currency = !empty($orderData['order_currency_code']) ? $orderData['order_currency_code'] : false;
|
23 |
|
24 |
$acceptedCurrencies = $this->_getAcceptedCurrencies();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
|
26 |
if (in_array($currency, $acceptedCurrencies)) {
|
27 |
$orderTotal = $orderData['grand_total'];
|
@@ -34,6 +40,8 @@ class SwipeHQ_Checkout_PaymentController extends Mage_Core_Controller_Front_Acti
|
|
34 |
$name = $item->getProduct()->getName();
|
35 |
$products .= $qty . ' x ' . $name . ($item != end($items) ? '<br />' : '');
|
36 |
}
|
|
|
|
|
37 |
|
38 |
//get identifier ID using TransactionIdentifier API
|
39 |
$params = array (
|
@@ -46,6 +54,10 @@ class SwipeHQ_Checkout_PaymentController extends Mage_Core_Controller_Front_Acti
|
|
46 |
'td_default_quantity' => 1,
|
47 |
'td_user_data' => $orderId
|
48 |
);
|
|
|
|
|
|
|
|
|
49 |
|
50 |
$response = $this->_sendRequest($api_url.'/createTransactionIdentifier.php', $params);
|
51 |
$response_data = json_decode($response);
|
@@ -94,7 +106,7 @@ class SwipeHQ_Checkout_PaymentController extends Mage_Core_Controller_Front_Acti
|
|
94 |
if($order->isStateProtected($order_status)){
|
95 |
Mage::throwException('Swipe configuration error: "Paid Order Status" must not be: "'.$order_status.'". Failed to change state.');
|
96 |
}else{
|
97 |
-
$order->setState($order_status, true, 'Swipe has authorized the payment.');
|
98 |
}
|
99 |
|
100 |
$order->sendNewOrderEmail();
|
@@ -102,16 +114,17 @@ class SwipeHQ_Checkout_PaymentController extends Mage_Core_Controller_Front_Acti
|
|
102 |
|
103 |
$order->save();
|
104 |
|
105 |
-
Mage::getSingleton('checkout/session')->unsQuoteId();
|
106 |
} else {
|
107 |
// There is a problem in the response we got
|
108 |
-
$this->cancelAction();
|
109 |
}
|
110 |
die('LPN OK, transaction_id: '.$transaction_id.', is_verified: '.($is_verified?'y':'n'));
|
111 |
|
112 |
//Result page (user redirect)
|
113 |
} elseif (isset($request['result']) && isset($request['user_data'])) {
|
114 |
if ($request['result'] == 'accepted' || $request['result'] == 'test-accepted') {
|
|
|
115 |
Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/success', array('_secure'=>true));
|
116 |
} elseif ($request['result'] == 'declined' || $request['result'] == 'test-declined') {
|
117 |
Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure'=>true));
|
@@ -122,16 +135,35 @@ class SwipeHQ_Checkout_PaymentController extends Mage_Core_Controller_Front_Acti
|
|
122 |
}
|
123 |
|
124 |
// The cancel action is triggered when an order is to be cancelled
|
125 |
-
public function cancelAction() {
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
130 |
$order->cancel()->setState(Mage_Sales_Model_Order::STATE_CANCELED, true, 'Gateway has declined the payment.')->save();
|
131 |
}
|
132 |
}
|
133 |
}
|
134 |
-
|
|
|
|
|
|
|
|
|
135 |
/**
|
136 |
* Transaction verification
|
137 |
*
|
@@ -161,19 +193,36 @@ class SwipeHQ_Checkout_PaymentController extends Mage_Core_Controller_Front_Acti
|
|
161 |
}
|
162 |
return false;
|
163 |
}
|
164 |
-
|
165 |
-
|
166 |
$api_url = trim(Mage::getStoreConfig('payment/swipehq/api_url'), '/');
|
|
|
|
|
167 |
|
168 |
-
|
169 |
-
'merchant_id' => Mage::getStoreConfig('payment/swipehq/merchant_id'),
|
170 |
'api_key' => Mage::getStoreConfig('payment/swipehq/api_key'),
|
171 |
);
|
172 |
|
173 |
$resp = $this->_sendRequest($api_url.'/fetchCurrencyCodes.php', $params);
|
174 |
$respArr = json_decode($resp, true);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
175 |
return $respArr['data'];
|
|
|
|
|
|
|
|
|
176 |
}
|
|
|
|
|
177 |
|
178 |
private function _sendRequest($url, $data) {
|
179 |
$ch = curl_init ($url);
|
1 |
<?php
|
2 |
+
/*
|
3 |
* Swipe Checkout Controller
|
4 |
+
* @copyright (c) 2012-2014, OptimizerHQ Ltd.
|
5 |
+
* @link http://www.swipehq.com/
|
|
|
6 |
*/
|
7 |
|
8 |
class SwipeHQ_Checkout_PaymentController extends Mage_Core_Controller_Front_Action {
|
21 |
$currency = !empty($orderData['order_currency_code']) ? $orderData['order_currency_code'] : false;
|
22 |
|
23 |
$acceptedCurrencies = $this->_getAcceptedCurrencies();
|
24 |
+
|
25 |
+
if($acceptedCurrencies && !in_array($currency, $acceptedCurrencies)){
|
26 |
+
Mage::getSingleton('checkout/session')->addError('Swipe Checkout does not support currency: '.$currency.'. Swipe supports these currencies: '.join(', ', $acceptedCurrencies).'.');
|
27 |
+
session_write_close(); //THIS LINE IS VERY IMPORTANT!
|
28 |
+
$this->_redirect('checkout/cart');
|
29 |
+
}
|
30 |
+
|
31 |
|
32 |
if (in_array($currency, $acceptedCurrencies)) {
|
33 |
$orderTotal = $orderData['grand_total'];
|
40 |
$name = $item->getProduct()->getName();
|
41 |
$products .= $qty . ' x ' . $name . ($item != end($items) ? '<br />' : '');
|
42 |
}
|
43 |
+
|
44 |
+
$customer_email = $orderData['customer_email'];
|
45 |
|
46 |
//get identifier ID using TransactionIdentifier API
|
47 |
$params = array (
|
54 |
'td_default_quantity' => 1,
|
55 |
'td_user_data' => $orderId
|
56 |
);
|
57 |
+
|
58 |
+
if(!empty($customer_email)){
|
59 |
+
$params['td_email'] = $customer_email;
|
60 |
+
}
|
61 |
|
62 |
$response = $this->_sendRequest($api_url.'/createTransactionIdentifier.php', $params);
|
63 |
$response_data = json_decode($response);
|
106 |
if($order->isStateProtected($order_status)){
|
107 |
Mage::throwException('Swipe configuration error: "Paid Order Status" must not be: "'.$order_status.'". Failed to change state.');
|
108 |
}else{
|
109 |
+
$order->setState($order_status, true, 'Swipe has authorized the payment.')->save();
|
110 |
}
|
111 |
|
112 |
$order->sendNewOrderEmail();
|
114 |
|
115 |
$order->save();
|
116 |
|
117 |
+
//Mage::getSingleton('checkout/session')->unsQuoteId();
|
118 |
} else {
|
119 |
// There is a problem in the response we got
|
120 |
+
$this->cancelAction($order_id);
|
121 |
}
|
122 |
die('LPN OK, transaction_id: '.$transaction_id.', is_verified: '.($is_verified?'y':'n'));
|
123 |
|
124 |
//Result page (user redirect)
|
125 |
} elseif (isset($request['result']) && isset($request['user_data'])) {
|
126 |
if ($request['result'] == 'accepted' || $request['result'] == 'test-accepted') {
|
127 |
+
Mage::getSingleton('checkout/session')->unsQuoteId();
|
128 |
Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/success', array('_secure'=>true));
|
129 |
} elseif ($request['result'] == 'declined' || $request['result'] == 'test-declined') {
|
130 |
Mage_Core_Controller_Varien_Action::_redirect('checkout/onepage/failure', array('_secure'=>true));
|
135 |
}
|
136 |
|
137 |
// The cancel action is triggered when an order is to be cancelled
|
138 |
+
public function cancelAction($order_id) {
|
139 |
+
|
140 |
+
$testMode = Mage::getStoreConfig('payment/swipehq/test_mode');
|
141 |
+
|
142 |
+
|
143 |
+
$order = Mage::getModel('sales/order');
|
144 |
+
$order->loadByIncrementId($order_id);
|
145 |
+
if (!$order->getId()) {
|
146 |
+
Mage::throwException('No order for processing found');
|
147 |
+
}
|
148 |
+
else{
|
149 |
+
if ($testMode) {
|
150 |
+
$order_status = Mage::getStoreConfig('payment/swipehq/test_order_status');
|
151 |
+
if($order->isStateProtected($order_status)){
|
152 |
+
Mage::throwException('Swipe configuration error: "Paid Order Status" must not be: "'.$order_status.'". Failed to change state.');
|
153 |
+
}else{
|
154 |
+
$order->setState($order_status, true, 'Swipe has declined the payment.')->save();
|
155 |
+
}
|
156 |
+
}
|
157 |
+
else{
|
158 |
$order->cancel()->setState(Mage_Sales_Model_Order::STATE_CANCELED, true, 'Gateway has declined the payment.')->save();
|
159 |
}
|
160 |
}
|
161 |
}
|
162 |
+
|
163 |
+
public function testConfigAction(){
|
164 |
+
include __DIR__ . '/../etc/test-plugin.php';
|
165 |
+
}
|
166 |
+
|
167 |
/**
|
168 |
* Transaction verification
|
169 |
*
|
193 |
}
|
194 |
return false;
|
195 |
}
|
196 |
+
|
197 |
+
protected function _getAcceptedCurrencies(){
|
198 |
$api_url = trim(Mage::getStoreConfig('payment/swipehq/api_url'), '/');
|
199 |
+
$merchant_id = trim(Mage::getStoreConfig('payment/swipehq/merchant_id'), '/');
|
200 |
+
$api_key = trim(Mage::getStoreConfig('payment/swipehq/api_key'), '/');
|
201 |
|
202 |
+
/*$params = array(
|
203 |
+
'merchant_id' => Mage::getStoreConfig('payment/swipehq/merchant_id'),
|
204 |
'api_key' => Mage::getStoreConfig('payment/swipehq/api_key'),
|
205 |
);
|
206 |
|
207 |
$resp = $this->_sendRequest($api_url.'/fetchCurrencyCodes.php', $params);
|
208 |
$respArr = json_decode($resp, true);
|
209 |
+
return $respArr['data'];*/
|
210 |
+
|
211 |
+
if($api_url && $api_key && $merchant_id){
|
212 |
+
$params = array(
|
213 |
+
'merchant_id' => Mage::getStoreConfig('payment/swipehq/merchant_id'),
|
214 |
+
'api_key' => Mage::getStoreConfig('payment/swipehq/api_key'),
|
215 |
+
);
|
216 |
+
$resp = $this->_sendRequest($api_url.'/fetchCurrencyCodes.php', $params);
|
217 |
+
$respArr = json_decode($resp, true);
|
218 |
return $respArr['data'];
|
219 |
+
}else{
|
220 |
+
return null;
|
221 |
+
}
|
222 |
+
|
223 |
}
|
224 |
+
|
225 |
+
|
226 |
|
227 |
private function _sendRequest($url, $data) {
|
228 |
$ch = curl_init ($url);
|
app/code/community/SwipeHQ/Checkout/etc/config.xml
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
<config>
|
3 |
<modules>
|
4 |
<SwipeHQ_Checkout>
|
5 |
-
<version>1.
|
6 |
</SwipeHQ_Checkout>
|
7 |
</modules>
|
8 |
<global>
|
2 |
<config>
|
3 |
<modules>
|
4 |
<SwipeHQ_Checkout>
|
5 |
+
<version>1.7.1</version><!-- todo: what's the point of this version number? where is it used? -->
|
6 |
</SwipeHQ_Checkout>
|
7 |
</modules>
|
8 |
<global>
|
app/code/community/SwipeHQ/Checkout/etc/system.xml
CHANGED
@@ -5,7 +5,82 @@
|
|
5 |
<groups>
|
6 |
<swipehq translate="label comment" module="paygate">
|
7 |
<label>Swipe Checkout</label>
|
8 |
-
<comment><![CDATA[<a href="http://www.swipehq.com/support/support_detail.php?cat=General+Questions&title=Becoming+a+Swipe+HQ+Checkout+merchant" target="_blank">Click here to see how to become a SwipeHQ Checkout merchant</a>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
<frontend_type>text</frontend_type>
|
10 |
<sort_order>1</sort_order>
|
11 |
<show_in_default>1</show_in_default>
|
5 |
<groups>
|
6 |
<swipehq translate="label comment" module="paygate">
|
7 |
<label>Swipe Checkout</label>
|
8 |
+
<comment><![CDATA[<a href="http://www.swipehq.com/support/support_detail.php?cat=General+Questions&title=Becoming+a+Swipe+HQ+Checkout+merchant" target="_blank">Click here to see how to become a SwipeHQ Checkout merchant</a>
|
9 |
+
<script>
|
10 |
+
function check_config(){
|
11 |
+
var elementToRemove = document.getElementById("check_config_results");
|
12 |
+
if(elementToRemove!=null && typeof(elementToRemove)!="undefined"){
|
13 |
+
$(elementToRemove).remove();
|
14 |
+
}
|
15 |
+
|
16 |
+
var mainForm = document.getElementById("payment_swipehq");
|
17 |
+
var elementToInsert = document.createElement("div");
|
18 |
+
elementToInsert.setAttribute("id", "check_config_results");
|
19 |
+
elementToInsert.setAttribute("style", "width:100%;height:100%");
|
20 |
+
mainForm.appendChild(elementToInsert);
|
21 |
+
elementToInsert.innerHTML = "<p style=\"line-height:1;font-size:50px\">Checking config, please wait...</p>";
|
22 |
+
|
23 |
+
var merchantId = $("payment_swipehq_merchant_id").value;
|
24 |
+
var apiKey = $("payment_swipehq_api_key").value;
|
25 |
+
var apiURL = $("payment_swipehq_api_url").value;
|
26 |
+
var paymentURL = $("payment_swipehq_payment_page_url").value;
|
27 |
+
|
28 |
+
var urlToLoad = "../../../../../../../swipehq/payment/testconfig?merchant_id="+merchantId+"&api_key="+apiKey+"&api_url="+apiURL+"&payment_page_url="+paymentURL;
|
29 |
+
processAjax(urlToLoad);
|
30 |
+
|
31 |
+
function processAjax(url) {
|
32 |
+
var req = null;
|
33 |
+
if (window.XMLHttpRequest) { // Non-IE browsers
|
34 |
+
req = new XMLHttpRequest();
|
35 |
+
try {
|
36 |
+
req.onreadystatechange = targetDiv;
|
37 |
+
req.open("GET", url, true);
|
38 |
+
req.send(null);
|
39 |
+
} catch (e) {
|
40 |
+
alert(e);
|
41 |
+
}
|
42 |
+
|
43 |
+
} else if (window.ActiveXObject) { // IE
|
44 |
+
var req = new ActiveXObject("Microsoft.XMLHTTP");
|
45 |
+
if (req) {
|
46 |
+
req.onreadystatechange = targetDiv;
|
47 |
+
req.open("GET", url, true);
|
48 |
+
req.send();
|
49 |
+
}
|
50 |
+
}
|
51 |
+
|
52 |
+
|
53 |
+
function targetDiv() {
|
54 |
+
if(req!=null){
|
55 |
+
if (req.readyState == 4) { // Complete
|
56 |
+
if (req.status == 200) { // OK response
|
57 |
+
document.getElementById("check_config_results").innerHTML = req.responseText;
|
58 |
+
}
|
59 |
+
else{
|
60 |
+
alert("problem");
|
61 |
+
}
|
62 |
+
}
|
63 |
+
}
|
64 |
+
}
|
65 |
+
}
|
66 |
+
|
67 |
+
|
68 |
+
}
|
69 |
+
|
70 |
+
document.observe("dom:loaded", function(){
|
71 |
+
var mainForm = document.getElementById("payment_swipehq");
|
72 |
+
var buttonToInsert = document.createElement("input");
|
73 |
+
buttonToInsert.setAttribute("type", "button");
|
74 |
+
buttonToInsert.setAttribute("value", "Check Config");
|
75 |
+
buttonToInsert.setAttribute("name", "checkconfig");
|
76 |
+
buttonToInsert.setAttribute("onclick", "check_config()");
|
77 |
+
buttonToInsert.setAttribute("style", "margin-top:30px");
|
78 |
+
mainForm.appendChild(buttonToInsert);
|
79 |
+
|
80 |
+
});
|
81 |
+
</script>
|
82 |
+
]]>
|
83 |
+
</comment>
|
84 |
<frontend_type>text</frontend_type>
|
85 |
<sort_order>1</sort_order>
|
86 |
<show_in_default>1</show_in_default>
|
app/code/community/SwipeHQ/Checkout/etc/test-plugin.php
ADDED
@@ -0,0 +1,230 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* A script to test common issues with plugins
|
5 |
+
*/
|
6 |
+
|
7 |
+
|
8 |
+
/*
|
9 |
+
* Constants
|
10 |
+
*/
|
11 |
+
|
12 |
+
$TEST_API = 'connectionTest.php';
|
13 |
+
$SELF_ERROR_MSG = 'Sorry, there was a problem running this test. Please contact us at Swipe support to let us know you got this error.';
|
14 |
+
|
15 |
+
function swipe_curl_call($url){
|
16 |
+
$ch = curl_init($url);
|
17 |
+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
|
18 |
+
$html = curl_exec($ch);
|
19 |
+
curl_close($ch);
|
20 |
+
return $html;
|
21 |
+
}
|
22 |
+
|
23 |
+
function testResultHtml($result){
|
24 |
+
if($result === true){
|
25 |
+
return '<span style="color:green; font-weight: bold;">OK</span>';
|
26 |
+
}else if($result === false){
|
27 |
+
return '<span style="color:red; font-weight: bold;">Failed</span>';
|
28 |
+
}else{
|
29 |
+
return '<span style="color:gray">Did not run</span>';
|
30 |
+
}
|
31 |
+
}
|
32 |
+
|
33 |
+
$_order = new Mage_Sales_Model_Order();
|
34 |
+
$orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
|
35 |
+
$_order->loadByIncrementId($orderId);
|
36 |
+
|
37 |
+
$orderData = $_order->getData();
|
38 |
+
$currency = !empty($orderData['order_currency_code']) ? $orderData['order_currency_code'] : false;
|
39 |
+
|
40 |
+
|
41 |
+
|
42 |
+
|
43 |
+
|
44 |
+
/*
|
45 |
+
* Configuration
|
46 |
+
*/
|
47 |
+
|
48 |
+
$merchantId = isset($_REQUEST['merchant_id']) ? $_REQUEST['merchant_id'] : null;
|
49 |
+
$apiKey = isset($_REQUEST['api_key']) ? $_REQUEST['api_key'] : null;
|
50 |
+
$apiUrl = isset($_REQUEST['api_url']) ? $_REQUEST['api_url'] : null;
|
51 |
+
$paymentPageUrl = isset($_REQUEST['payment_page_url']) ? $_REQUEST['payment_page_url'] : null;
|
52 |
+
|
53 |
+
|
54 |
+
|
55 |
+
/*
|
56 |
+
* Test start
|
57 |
+
*/
|
58 |
+
try{
|
59 |
+
|
60 |
+
|
61 |
+
|
62 |
+
// Tests Init
|
63 |
+
$minRequirementsOK = null;
|
64 |
+
$basicConnectionTestOK = null;
|
65 |
+
$credentialsOK = null;
|
66 |
+
$merchantStatusOK = null;
|
67 |
+
$pluginConfigOK = null;
|
68 |
+
|
69 |
+
$basicConnectionTestUrl = $apiUrl . $TEST_API;
|
70 |
+
$credentialsUrl = $apiUrl . $TEST_API . '?' . http_build_query(
|
71 |
+
array(
|
72 |
+
'mode' => 'credentials',
|
73 |
+
'merchant_id' => $merchantId,
|
74 |
+
'api_key' => $apiKey
|
75 |
+
)
|
76 |
+
);
|
77 |
+
|
78 |
+
$merchantStatusUrl = $apiUrl . $TEST_API . '?' . http_build_query(
|
79 |
+
array(
|
80 |
+
'mode' => 'merchant_status',
|
81 |
+
'merchant_id' => $merchantId,
|
82 |
+
'api_key' => $apiKey
|
83 |
+
)
|
84 |
+
);
|
85 |
+
$pluginConfigUrl = $apiUrl . $TEST_API . '?' . http_build_query(
|
86 |
+
array(
|
87 |
+
'mode' => 'plugin_config',
|
88 |
+
'merchant_id' => $merchantId,
|
89 |
+
'api_key' => $apiKey,
|
90 |
+
'payment_page_url' => $paymentPageUrl,
|
91 |
+
'currency' => $currency
|
92 |
+
)
|
93 |
+
);
|
94 |
+
|
95 |
+
// Tests Run
|
96 |
+
$minRequirementsOK = function_exists('curl_version');
|
97 |
+
if($minRequirementsOK){
|
98 |
+
$basicConnectionTestOK = swipe_curl_call($basicConnectionTestUrl) == 'OK';
|
99 |
+
}
|
100 |
+
if($basicConnectionTestOK){
|
101 |
+
$credentialsOK = swipe_curl_call($credentialsUrl) == 'OK';
|
102 |
+
}
|
103 |
+
if($credentialsOK){
|
104 |
+
$merchantStatusOK = swipe_curl_call($merchantStatusUrl) == 'OK';
|
105 |
+
}
|
106 |
+
if($merchantStatusOK){
|
107 |
+
$pluginConfigResponse = swipe_curl_call($pluginConfigUrl);
|
108 |
+
$pluginConfigOK = $pluginConfigResponse == 'OK';
|
109 |
+
}
|
110 |
+
|
111 |
+
|
112 |
+
?>
|
113 |
+
<style type="text/css">
|
114 |
+
#test_config_table { font-family: sans-serif; }
|
115 |
+
#test_config_table th { text-align: left; background: lightblue; }
|
116 |
+
#test_config_table td { font-size: 12px; }
|
117 |
+
#test_config_table table { border-collapse: collapse; }
|
118 |
+
#test_config_table tr td { padding: 1em 0.5em; border: 1px solid #aaa; }
|
119 |
+
#test_config_table tr th { padding: 1em 0.5em; border: 1px solid #aaa; }
|
120 |
+
#test_config_table .test-title { white-space: nowrap; font-weight: bold; }
|
121 |
+
#test_config_table .test-result { white-space: nowrap; }
|
122 |
+
#test_config_table .technical-details { color: #888; margin: 1em; padding: 0.5em; border: 1px solid #aaa; }
|
123 |
+
</style>
|
124 |
+
|
125 |
+
<div id="test_config_table">
|
126 |
+
<table>
|
127 |
+
<thead>
|
128 |
+
<tr>
|
129 |
+
<th colspan="3">
|
130 |
+
Swipe Plugin Test
|
131 |
+
</th>
|
132 |
+
</tr>
|
133 |
+
</thead>
|
134 |
+
<tbody>
|
135 |
+
<tr>
|
136 |
+
<td class="test-title">
|
137 |
+
1. Minimum Requirements
|
138 |
+
</td>
|
139 |
+
<td class="test-result">
|
140 |
+
<?php echo testResultHtml($minRequirementsOK); ?>
|
141 |
+
</td>
|
142 |
+
<td class="test_info">
|
143 |
+
<?php if($minRequirementsOK === false){ ?>
|
144 |
+
Your shopping cart does not meet the minimum requirements to connect to Swipe. Please contact Swipe support.
|
145 |
+
<div class="technical-details">Technical details: curl is required.</div>
|
146 |
+
<?php } ?>
|
147 |
+
</td>
|
148 |
+
</tr>
|
149 |
+
<tr>
|
150 |
+
<td class="test-title">
|
151 |
+
2. Connection to Swipe
|
152 |
+
</td>
|
153 |
+
<td class="test-result">
|
154 |
+
<?php echo testResultHtml($basicConnectionTestOK); ?>
|
155 |
+
</td>
|
156 |
+
<td class="test_info">
|
157 |
+
<?php if($basicConnectionTestOK === false){ ?>
|
158 |
+
Could not connect to Swipe. Check your API Url: "<?php echo $apiUrl; ?>", comparing it with the API Url
|
159 |
+
in your Swipe Merchant login under Settings -> API Credentials. If you are sure it is correct, Swipe
|
160 |
+
may be temporarily unreachable, please try again later.
|
161 |
+
<div class="technical-details">
|
162 |
+
Technical details: could not connect to: <?php echo htmlentities($basicConnectionTestUrl); ?>
|
163 |
+
</div>
|
164 |
+
<?php } ?>
|
165 |
+
</td>
|
166 |
+
</tr>
|
167 |
+
<tr>
|
168 |
+
<td class="test-title">
|
169 |
+
3. Swipe Merchant Credentials
|
170 |
+
</td>
|
171 |
+
<td class="test-result">
|
172 |
+
<?php echo testResultHtml($credentialsOK); ?>
|
173 |
+
</td>
|
174 |
+
<td class="test_info">
|
175 |
+
<?php if($credentialsOK === false){ ?>
|
176 |
+
Your credentials are incorrect. Check your Merchant ID: "<?php echo $merchantId; ?>" and API Key: "<?php echo $apiKey; ?>",
|
177 |
+
comparing them to the details you see in your Swipe Merchant login under Settings -> API Credentials.
|
178 |
+
A common mistake is to have these two swapped around.
|
179 |
+
<div class="technical-details">
|
180 |
+
Technical details: called: <?php echo $credentialsUrl; ?>
|
181 |
+
</div>
|
182 |
+
<?php } ?>
|
183 |
+
</td>
|
184 |
+
</tr>
|
185 |
+
<tr>
|
186 |
+
<td class="test-title">
|
187 |
+
4. Swipe Merchant Status
|
188 |
+
</td>
|
189 |
+
<td class="test-result">
|
190 |
+
<?php echo testResultHtml($merchantStatusOK); ?>
|
191 |
+
</td>
|
192 |
+
<td class="test_info">
|
193 |
+
<?php if($merchantStatusOK === false){ ?>
|
194 |
+
Your Swipe Merchant account is inactive, or does not have the Payment Page enabled. Please contact Swipe support.
|
195 |
+
<div class="technical-details">
|
196 |
+
Technical details: called: <?php echo $merchantStatusUrl; ?>
|
197 |
+
</div>
|
198 |
+
<?php } ?>
|
199 |
+
</td>
|
200 |
+
</tr>
|
201 |
+
<tr>
|
202 |
+
<td class="test-title">
|
203 |
+
5. Plugin Configuration
|
204 |
+
</td>
|
205 |
+
<td class="test-result">
|
206 |
+
<?php echo testResultHtml($pluginConfigOK); ?>
|
207 |
+
</td>
|
208 |
+
<td class="test_info">
|
209 |
+
<?php if($pluginConfigOK === false){ ?>
|
210 |
+
Your plugin configuration is incorrect. Merchant ID, API Key, and API Url are OK, but something else is incorrectly configured.
|
211 |
+
Please double check your configuration, if the problem persists please contact Swipe support.
|
212 |
+
<div class="technical-details">
|
213 |
+
Technical details: <?php echo $pluginConfigResponse; ?>
|
214 |
+
Request: <?php echo htmlentities($pluginConfigUrl); ?>
|
215 |
+
</div>
|
216 |
+
<?php } ?>
|
217 |
+
</td>
|
218 |
+
</tr>
|
219 |
+
|
220 |
+
|
221 |
+
|
222 |
+
</tbody>
|
223 |
+
</table>
|
224 |
+
</div>
|
225 |
+
<?php
|
226 |
+
|
227 |
+
}catch(Exception $e){
|
228 |
+
echo self::$selfErrorMsg;
|
229 |
+
}
|
230 |
+
|
app/design/frontend/base/default/template/swipehq/redirect.phtml
CHANGED
@@ -10,7 +10,7 @@ if (!empty($identifier_id) && $payment_page_url) {
|
|
10 |
<img src="http://www.swipehq.com/images/checkout-logo.png" width="178" height="76" />
|
11 |
<p>To complete your order, please click Pay Now below, you will be redirected to the secure Swipe Checkout payment page.</p>
|
12 |
|
13 |
-
<form name="swipehq_checkout_form" method="post" action="
|
14 |
<input type="hidden" name="checkout" value="true" />
|
15 |
<input type="hidden" name="identifier_id" value="<?php echo $identifier_id; ?>" />
|
16 |
<button type="submit">Pay Now</button>
|
10 |
<img src="http://www.swipehq.com/images/checkout-logo.png" width="178" height="76" />
|
11 |
<p>To complete your order, please click Pay Now below, you will be redirected to the secure Swipe Checkout payment page.</p>
|
12 |
|
13 |
+
<form name="swipehq_checkout_form" method="post" action="<?php echo $payment_page_url; ?>">
|
14 |
<input type="hidden" name="checkout" value="true" />
|
15 |
<input type="hidden" name="identifier_id" value="<?php echo $identifier_id; ?>" />
|
16 |
<button type="submit">Pay Now</button>
|
app/etc/modules/SwipeHQ_Checkout.xml
CHANGED
File without changes
|
package.xml
CHANGED
@@ -1,74 +1,76 @@
|
|
1 |
-
<?xml version="1.0"?>
|
2 |
-
<package>
|
3 |
-
<name>SwipeHQ_Checkout</name>
|
4 |
-
<version>1.
|
5 |
-
<stability>stable</stability>
|
6 |
-
<license>GNU General Public License (GPL)</license>
|
7 |
-
<channel>community</channel>
|
8 |
-
<extends />
|
9 |
-
<summary>Swipe Checkout payment method</summary>
|
10 |
-
<description></description>
|
11 |
-
<notes></notes>
|
12 |
-
<authors>
|
13 |
-
<author>
|
14 |
-
<name>Optimizer Ltd.</name>
|
15 |
-
<user>swipehq</user>
|
16 |
-
<email>support@swipehq.com</email>
|
17 |
-
</author>
|
18 |
-
</authors>
|
19 |
-
<date>2013-09-
|
20 |
-
<time>00:00:00</time>
|
21 |
-
<contents>
|
22 |
-
<target name="magecommunity">
|
23 |
-
<dir name="SwipeHQ">
|
24 |
-
<dir name="Checkout">
|
25 |
-
<dir name="Helper">
|
26 |
-
<file name="Data.php" hash="8016d7114990c7cc569821b236dc561e" />
|
27 |
-
</dir>
|
28 |
-
<dir name="Model">
|
29 |
-
<file name="Standard.php" hash="29daa1223e187ce11a86831cd67984b5" />
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
<file name="
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
|
62 |
-
|
63 |
-
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
<
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
</
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<package>
|
3 |
+
<name>SwipeHQ_Checkout</name>
|
4 |
+
<version>1.7.1</version>
|
5 |
+
<stability>stable</stability>
|
6 |
+
<license>GNU General Public License (GPL)</license>
|
7 |
+
<channel>community</channel>
|
8 |
+
<extends />
|
9 |
+
<summary>Swipe Checkout payment method</summary>
|
10 |
+
<description></description>
|
11 |
+
<notes></notes>
|
12 |
+
<authors>
|
13 |
+
<author>
|
14 |
+
<name>Optimizer Ltd.</name>
|
15 |
+
<user>swipehq</user>
|
16 |
+
<email>support@swipehq.com</email>
|
17 |
+
</author>
|
18 |
+
</authors>
|
19 |
+
<date>2013-09-20</date>
|
20 |
+
<time>00:00:00</time>
|
21 |
+
<contents>
|
22 |
+
<target name="magecommunity">
|
23 |
+
<dir name="SwipeHQ">
|
24 |
+
<dir name="Checkout">
|
25 |
+
<dir name="Helper">
|
26 |
+
<file name="Data.php" hash="8016d7114990c7cc569821b236dc561e" />
|
27 |
+
</dir>
|
28 |
+
<dir name="Model">
|
29 |
+
<file name="Standard.php" hash="29daa1223e187ce11a86831cd67984b5" />
|
30 |
+
<file name="Permittedorderstates.php" hash="eccc62e6b03420d9b124bb083e8c8e6b" />
|
31 |
+
</dir>
|
32 |
+
<dir name="controllers">
|
33 |
+
<file name="PaymentController.php" hash="9e549da787ee7d121aed379d33b4e013" />
|
34 |
+
</dir>
|
35 |
+
<dir name="etc">
|
36 |
+
<file name="config.xml" hash="462b6e89f0a043272b45b71e05a7443c" />
|
37 |
+
<file name="system.xml" hash="bf965a12b02363a0371b322b1e8366b6" />
|
38 |
+
<file name="test-plugin.php" hash="6552a4ecc0af27dcbf92336c9d999f8c" />
|
39 |
+
</dir>
|
40 |
+
</dir>
|
41 |
+
</dir>
|
42 |
+
</target>
|
43 |
+
<target name="magedesign">
|
44 |
+
<dir name="frontend">
|
45 |
+
<dir name="base">
|
46 |
+
<dir name="default">
|
47 |
+
<dir name="template">
|
48 |
+
<dir name="swipehq">
|
49 |
+
<file name="redirect.phtml" hash="fc7d961fdec90adc657af711ffd2325b" />
|
50 |
+
</dir>
|
51 |
+
</dir>
|
52 |
+
</dir>
|
53 |
+
</dir>
|
54 |
+
</dir>
|
55 |
+
</target>
|
56 |
+
<target name="mageetc">
|
57 |
+
<dir name="modules">
|
58 |
+
<file name="SwipeHQ_Checkout.xml" hash="0889d10dcd74110d9cca21fd27823057" />
|
59 |
+
</dir>
|
60 |
+
</target>
|
61 |
+
</contents>
|
62 |
+
<compatible />
|
63 |
+
<dependencies>
|
64 |
+
<required>
|
65 |
+
<php>
|
66 |
+
<min>5.1.0</min>
|
67 |
+
<max>6.0.0</max>
|
68 |
+
</php>
|
69 |
+
<extension>
|
70 |
+
<name>curl</name>
|
71 |
+
<min></min>
|
72 |
+
<max></max>
|
73 |
+
</extension>
|
74 |
+
</required>
|
75 |
+
</dependencies>
|
76 |
+
</package>
|
readme.txt
CHANGED
@@ -1,55 +1,67 @@
|
|
1 |
-
|
2 |
-
|
3 |
-
Version: 1.
|
4 |
-
Copyright: (c) 2012-
|
5 |
-
Link: http://www.swipehq.com/
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
REQUIREMENTS
|
10 |
-
---
|
11 |
-
|
12 |
-
* Swipe account
|
13 |
-
* Magento
|
14 |
-
|
15 |
-
|
16 |
-
INSTALLATION
|
17 |
-
---
|
18 |
-
|
19 |
-
1. Please install this extension through the normal Magento installation process (System -> Magento Connect -> Magento Connect Manager, then
|
20 |
-
Install New Extensions, grabbing the key from
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
Callback
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
see
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
-
|
52 |
-
-
|
53 |
-
|
54 |
-
|
55 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
Swipe Checkout for Magento
|
2 |
+
|
3 |
+
Version: 1.7.1 / 24 July 2014
|
4 |
+
Copyright: (c) 2012-2014, Optimizer Ltd.
|
5 |
+
Link: http://www.swipehq.com/
|
6 |
+
http://www.magentocommerce.com/magento-connect/catalog/product/view/id/15121/
|
7 |
+
|
8 |
+
|
9 |
+
REQUIREMENTS
|
10 |
+
---
|
11 |
+
|
12 |
+
* Swipe account
|
13 |
+
* Magento
|
14 |
+
|
15 |
+
|
16 |
+
INSTALLATION
|
17 |
+
---
|
18 |
+
|
19 |
+
1. Please install this extension through the normal Magento installation process (System -> Magento Connect -> Magento Connect Manager, then
|
20 |
+
Install New Extensions, grabbing the key from the plugin page linked above or Direct Package File Upload, selecting this zip)
|
21 |
+
2. After successful installation it will appear in the list of Packages as "SwipeHQ_Checkout"
|
22 |
+
3. Then configure the plugin, go back to the Magento Admin, then go to System -> Configuration -> Sales -> Payment Methods -> Swipe Checkout,
|
23 |
+
adding the following details from your Swipe Merchant login under Settings -> API Credentials:
|
24 |
+
Merchant ID
|
25 |
+
API Key
|
26 |
+
Payment Page Url
|
27 |
+
Api Url
|
28 |
+
4. And finally configure your Swipe account to send customers back to your shop after they pay.
|
29 |
+
In your Merchant login under Settings -> Payment Notifiers, set:
|
30 |
+
Callback Url: %YOUR_WEBSITE%/swipehq/payment/response
|
31 |
+
Callback pass back user data: on
|
32 |
+
LPN Url: %YOUR_WEBSITE%/swipehq/payment/response
|
33 |
+
making sure to replace %YOUR_WEBSITE% with your website url, e.g. www.example.com/my-shop/swipehq/payment/response
|
34 |
+
5. All done, test it out, add some products to your cart and you will get the option to pay with Swipe.
|
35 |
+
|
36 |
+
|
37 |
+
NOTES
|
38 |
+
---
|
39 |
+
* Magento must be configured to use a currency that your Swipe Merchant Account supports for customers to be able to use Swipe to be a payment option,
|
40 |
+
see Settings -> API Credentials for a list of currencies your Merchant Account supports. And see System -> Manage Currency -> Symbols
|
41 |
+
to see which currency your Magento is using.
|
42 |
+
* Magento allows this plugin to set the order state to only a limited subset of all order states. You must mark orders as complete manually once you ship
|
43 |
+
them.
|
44 |
+
|
45 |
+
|
46 |
+
CHANGE LOG
|
47 |
+
---
|
48 |
+
|
49 |
+
1.3.0:
|
50 |
+
- first version with this readme
|
51 |
+
- fixing bug where magento does not allow you to set an order's state to complete
|
52 |
+
- tested against Magento-1.7.0.2
|
53 |
+
|
54 |
+
1.4.0:
|
55 |
+
- Added test configuration button, fixed bug in package.xml file and added the missing file Permittedorderstates.php in Model directory
|
56 |
+
|
57 |
+
1.5.0:
|
58 |
+
- Fixing bug, changed php short tag to long tag
|
59 |
+
|
60 |
+
1.6.0:
|
61 |
+
- Fixing issue with check config for installs with .htaccess enabled which deny direct access to magento files
|
62 |
+
|
63 |
+
1.7.0:
|
64 |
+
- Bug fixes for updating order status
|
65 |
+
|
66 |
+
1.7.1:
|
67 |
+
- Pass customer email to SwipeHQ payment page and tested against Magento 1.9.0.1
|