Version Notes
Download this release
Release Info
| Developer | Trustly |
| Extension | Trustly |
| Version | 2.0.8 |
| Comparing to | |
| See all releases | |
Code changes from version 2.0.7 to 2.0.8
- app/code/community/Trustly/Trustly/Model/Mysql4/Ordermappings.php +6 -6
- app/code/community/Trustly/Trustly/Model/Ordermappings.php +2 -2
- app/code/community/Trustly/Trustly/Model/Standard.php +4 -4
- app/code/community/Trustly/Trustly/controllers/PaymentController.php +32 -30
- app/code/community/Trustly/Trustly/etc/config.xml +1 -1
- app/code/community/Trustly/Trustly/lib/Trustly.php +7 -6
- app/code/community/Trustly/Trustly/lib/Trustly/Api/api.php +72 -31
- app/code/community/Trustly/Trustly/lib/Trustly/Api/ecommerce.php +17 -18
- app/code/community/Trustly/Trustly/lib/Trustly/Api/signed.php +59 -57
- app/code/community/Trustly/Trustly/lib/Trustly/Api/unsigned.php +31 -31
- app/code/community/Trustly/Trustly/lib/Trustly/Data/data.php +12 -13
- app/code/community/Trustly/Trustly/lib/Trustly/Data/jsonrpcnotificationrequest.php +6 -7
- app/code/community/Trustly/Trustly/lib/Trustly/Data/jsonrpcnotificationresponse.php +6 -8
- app/code/community/Trustly/Trustly/lib/Trustly/Data/jsonrpcrequest.php +9 -9
- app/code/community/Trustly/Trustly/lib/Trustly/Data/jsonrpcresponse.php +33 -31
- app/code/community/Trustly/Trustly/lib/Trustly/Data/jsonrpcsignedresponse.php +102 -0
- app/code/community/Trustly/Trustly/lib/Trustly/Data/request.php +6 -7
- app/code/community/Trustly/Trustly/lib/Trustly/Data/response.php +12 -13
- app/code/community/Trustly/Trustly/lib/Trustly/exceptions.php +6 -6
- app/code/community/Trustly/Trustly/sql/trustly_setup/install-2.0.4.php +2 -2
- app/code/community/Trustly/Trustly/sql/trustly_setup/upgrade-1.0.5-2.0.0.php +2 -2
- app/code/community/Trustly/Trustly/sql/trustly_setup/upgrade-2.0.3-2.0.4.php +4 -4
- app/design/frontend/base/default/template/trustly/iframe.phtml +1 -1
- app/design/frontend/base/default/template/trustly/mark.phtml +1 -1
- package.xml +27 -36
- skin/frontend/base/default/images/trustly-big.png +0 -0
- skin/frontend/base/default/images/trustly-small.png +0 -0
app/code/community/Trustly/Trustly/Model/Mysql4/Ordermappings.php
CHANGED
|
@@ -28,12 +28,12 @@ class Trustly_Trustly_Model_Mysql4_Ordermappings extends Mage_Core_Model_Mysql4_
|
|
| 28 |
|
| 29 |
protected function _construct()
|
| 30 |
{
|
| 31 |
-
# This is a bit silly, I would ragther here use the
|
| 32 |
-
# truslty_order_id as the primary key for this table, but as magento
|
| 33 |
-
# will promptly do an update rather then an insert if the primary key
|
| 34 |
-
# for the table is set (as it will be when we insert new records) i
|
| 35 |
-
# need to invent a dummy id that is generated and never used. It also
|
| 36 |
-
# borks the ->load method as useless for me. Thank you for this
|
| 37 |
# abstraction...
|
| 38 |
$this->_init('trustly/ordermappings', 'id');
|
| 39 |
}
|
| 28 |
|
| 29 |
protected function _construct()
|
| 30 |
{
|
| 31 |
+
# This is a bit silly, I would ragther here use the
|
| 32 |
+
# truslty_order_id as the primary key for this table, but as magento
|
| 33 |
+
# will promptly do an update rather then an insert if the primary key
|
| 34 |
+
# for the table is set (as it will be when we insert new records) i
|
| 35 |
+
# need to invent a dummy id that is generated and never used. It also
|
| 36 |
+
# borks the ->load method as useless for me. Thank you for this
|
| 37 |
# abstraction...
|
| 38 |
$this->_init('trustly/ordermappings', 'id');
|
| 39 |
}
|
app/code/community/Trustly/Trustly/Model/Ordermappings.php
CHANGED
|
@@ -24,12 +24,12 @@
|
|
| 24 |
*
|
| 25 |
*/
|
| 26 |
|
| 27 |
-
class Trustly_Trustly_Model_Ordermappings extends Mage_Core_Model_Abstract
|
| 28 |
{
|
| 29 |
protected function _construct()
|
| 30 |
{
|
| 31 |
$this->_init('trustly/ordermappings');
|
| 32 |
-
}
|
| 33 |
|
| 34 |
public function loadByTrustlyOrderId($trustlyOrderId)
|
| 35 |
{
|
| 24 |
*
|
| 25 |
*/
|
| 26 |
|
| 27 |
+
class Trustly_Trustly_Model_Ordermappings extends Mage_Core_Model_Abstract
|
| 28 |
{
|
| 29 |
protected function _construct()
|
| 30 |
{
|
| 31 |
$this->_init('trustly/ordermappings');
|
| 32 |
+
}
|
| 33 |
|
| 34 |
public function loadByTrustlyOrderId($trustlyOrderId)
|
| 35 |
{
|
app/code/community/Trustly/Trustly/Model/Standard.php
CHANGED
|
@@ -144,8 +144,8 @@ class Trustly_Trustly_Model_Standard extends Mage_Payment_Model_Method_Abstract
|
|
| 144 |
$orderlines = array();
|
| 145 |
foreach ($order->getAllItems() as $item) {
|
| 146 |
if (!$item->getParentItem()) {
|
| 147 |
-
/* The EAN code here is really not standard and there is no
|
| 148 |
-
* standard field. But if present (with the guessed name) we will
|
| 149 |
* get it and fetching a non-existant one will not blow up, simply return null. */
|
| 150 |
$orderline = $api->createOrderline(
|
| 151 |
$item->getName(),
|
|
@@ -182,7 +182,7 @@ class Trustly_Trustly_Model_Standard extends Mage_Payment_Model_Method_Abstract
|
|
| 182 |
|
| 183 |
$endUserId = strtolower($order->getCustomerEmail());
|
| 184 |
|
| 185 |
-
$messageId = $order->getRealOrderId();
|
| 186 |
|
| 187 |
$billingAddress = $order->getBillingAddress();
|
| 188 |
$shippingAddress = $order->getShippingAddress();
|
|
@@ -243,7 +243,7 @@ class Trustly_Trustly_Model_Standard extends Mage_Payment_Model_Method_Abstract
|
|
| 243 |
$incrementId = $order->getIncrementId();
|
| 244 |
$orderMapping = Mage::getModel('trustly/ordermappings');
|
| 245 |
$omData = array(
|
| 246 |
-
'trustly_order_id' => $trustlyOrderId,
|
| 247 |
'magento_increment_id' => $incrementId,
|
| 248 |
'datestamp' => Varien_Date::now(),
|
| 249 |
);
|
| 144 |
$orderlines = array();
|
| 145 |
foreach ($order->getAllItems() as $item) {
|
| 146 |
if (!$item->getParentItem()) {
|
| 147 |
+
/* The EAN code here is really not standard and there is no
|
| 148 |
+
* standard field. But if present (with the guessed name) we will
|
| 149 |
* get it and fetching a non-existant one will not blow up, simply return null. */
|
| 150 |
$orderline = $api->createOrderline(
|
| 151 |
$item->getName(),
|
| 182 |
|
| 183 |
$endUserId = strtolower($order->getCustomerEmail());
|
| 184 |
|
| 185 |
+
$messageId = uniqid($order->getRealOrderId().'-', true);
|
| 186 |
|
| 187 |
$billingAddress = $order->getBillingAddress();
|
| 188 |
$shippingAddress = $order->getShippingAddress();
|
| 243 |
$incrementId = $order->getIncrementId();
|
| 244 |
$orderMapping = Mage::getModel('trustly/ordermappings');
|
| 245 |
$omData = array(
|
| 246 |
+
'trustly_order_id' => $trustlyOrderId,
|
| 247 |
'magento_increment_id' => $incrementId,
|
| 248 |
'datestamp' => Varien_Date::now(),
|
| 249 |
);
|
app/code/community/Trustly/Trustly/controllers/PaymentController.php
CHANGED
|
@@ -58,6 +58,8 @@ class Trustly_Trustly_PaymentController extends Mage_Core_Controller_Front_Actio
|
|
| 58 |
$session->setTrustlyQuoteId($session->getQuoteId());
|
| 59 |
|
| 60 |
$session->unsUrlTrustly();
|
|
|
|
|
|
|
| 61 |
|
| 62 |
$standard = Mage::getModel('trustly/standard');
|
| 63 |
$redirectError = NULL;
|
|
@@ -156,9 +158,9 @@ class Trustly_Trustly_PaymentController extends Mage_Core_Controller_Front_Actio
|
|
| 156 |
if($orderMapping) {
|
| 157 |
$incrementId = $orderMapping->getMagentoIncrementId();
|
| 158 |
}else {
|
| 159 |
-
# If we cannot find the mapping here, check to see if the
|
| 160 |
-
# enduserid seems to be a valid incrment id, in old code this
|
| 161 |
-
# used to be the case. So to handle the transition between the
|
| 162 |
# old module and this one, allow for this.
|
| 163 |
# We always use email for enduserid, so we will not match something by accident.
|
| 164 |
$enduserid = $notification->getData('enduserid');
|
|
@@ -180,13 +182,13 @@ class Trustly_Trustly_PaymentController extends Mage_Core_Controller_Front_Actio
|
|
| 180 |
return;
|
| 181 |
}
|
| 182 |
|
| 183 |
-
/* Due to race conditions we need to handle the processing
|
| 184 |
-
* for this order one at a time only. Otherwise we might
|
| 185 |
-
* end up processing the credit and pending
|
| 186 |
* notifications at the same time. */
|
| 187 |
$increment_lockid = $orderMapping->lockIncrementForProcessing($incrementId);
|
| 188 |
if($increment_lockid === false) {
|
| 189 |
-
/* If we cannot lock this increment abort now, respond
|
| 190 |
* nothing we will get a new attempt later */
|
| 191 |
Mage::log("Attempt to process already locked magento increment $incrementId", Zend_Log::DEBUG, self::LOG_FILE);
|
| 192 |
session_write_close();
|
|
@@ -250,7 +252,7 @@ class Trustly_Trustly_PaymentController extends Mage_Core_Controller_Front_Actio
|
|
| 250 |
}
|
| 251 |
}
|
| 252 |
|
| 253 |
-
/* Check if we have processed this transaction before, if so
|
| 254 |
* say we did fine, we obviously managed to save it... */
|
| 255 |
if(isset($notification_transaction)) {
|
| 256 |
Mage::helper('trustly')->sendResponseNotification($notification, true);
|
|
@@ -269,11 +271,11 @@ class Trustly_Trustly_PaymentController extends Mage_Core_Controller_Front_Actio
|
|
| 269 |
|
| 270 |
$transactionSave = Mage::getModel('core/resource_transaction');
|
| 271 |
|
| 272 |
-
/* We should always have a payment with the trustly method, if
|
| 273 |
* we do not have one, create it we will need this regardless of the method for the notification */
|
| 274 |
if(is_null($trustly_payment) || is_null($trustly_payment->getTxnType())) {
|
| 275 |
-
/* Create a payment with our TrustlyOrderId as the
|
| 276 |
-
* TransactionId, we will later add the current
|
| 277 |
* notification as a child payment for this payment */
|
| 278 |
$trustly_payment->resetTransactionAdditionalInfo();
|
| 279 |
$trustly_payment->setTransactionId($trustlyOrderId);
|
|
@@ -285,8 +287,8 @@ class Trustly_Trustly_PaymentController extends Mage_Core_Controller_Front_Actio
|
|
| 285 |
->addObject($trustly_payment);
|
| 286 |
}
|
| 287 |
|
| 288 |
-
# Check to see if we have invoiced this order already, if
|
| 289 |
-
# so do not do it again. We might be getting the same
|
| 290 |
# notification over again.
|
| 291 |
if(($_method == 'pending' || $_method == 'credit') && isset($order_invoice)) {
|
| 292 |
Mage::log(sprintf("Recieved $_method notification for order with increment %s for orderid %s, but order already had an invoice, nothing done", $incrementId, $trustlyOrderId), Zend_Log::DEBUG, self::LOG_FILE);
|
|
@@ -296,16 +298,16 @@ class Trustly_Trustly_PaymentController extends Mage_Core_Controller_Front_Actio
|
|
| 296 |
Mage::log(sprintf("Recieved a %s notification, no previous invoice could be found for Trustly orderid %s, magento order %s. No pending notification send before?! Creating one now", $_method, $trustlyOrderId, $incrementId), Zend_Log::WARN, self::LOG_FILE);
|
| 297 |
}
|
| 298 |
|
| 299 |
-
/* A credit notification without an invoice can mean one of two
|
| 300 |
-
* things, either the invoice has been removed or we did not
|
| 301 |
-
* receive the pending notification for this order. At this
|
| 302 |
-
* point we cannot really reject the money, a payment has been
|
| 303 |
* done, so create a new invoice and attach this payment to that invoice. */
|
| 304 |
|
| 305 |
-
/* When we get the pending notification the user has
|
| 306 |
-
* completed his end of the payment. The payment can
|
| 307 |
-
* still fail and we are yet to be credited any funds.
|
| 308 |
-
* Create an invoice, but do not set it as paid just
|
| 309 |
* yet. */
|
| 310 |
|
| 311 |
$order_invoice = $order->prepareInvoice()
|
|
@@ -339,10 +341,10 @@ class Trustly_Trustly_PaymentController extends Mage_Core_Controller_Front_Actio
|
|
| 339 |
|
| 340 |
|
| 341 |
if($_method == 'pending') {
|
| 342 |
-
/* We have no authorize for the payment (As we would simply
|
| 343 |
-
* abort if we have gotten the pending before) so create
|
| 344 |
* an authorization for the payment here and append */
|
| 345 |
-
$notification_transaction = $this->addChildTransaction($trustly_payment,
|
| 346 |
$trustlyNotificationId, $trustlyOrderId,
|
| 347 |
Mage_Sales_Model_Order_Payment_Transaction::TYPE_AUTH, true);
|
| 348 |
|
|
@@ -443,7 +445,7 @@ class Trustly_Trustly_PaymentController extends Mage_Core_Controller_Front_Actio
|
|
| 443 |
$comment .= "<br />" . Mage::helper('trustly')->__('Notification id: %s', $notification->getData('notificationid'));
|
| 444 |
$comment .= "<br />" . Mage::helper('trustly')->__('Debit amount: %s %s', $_amount, $_currency);
|
| 445 |
|
| 446 |
-
/* Normally the only debit amount that should be received is
|
| 447 |
* the full amount, but you never know.... */
|
| 448 |
if ($order->getGrandTotal() == $_amount) {
|
| 449 |
$creditmemo = Mage::getModel('sales/service_order', $order)
|
|
@@ -457,7 +459,7 @@ class Trustly_Trustly_PaymentController extends Mage_Core_Controller_Front_Actio
|
|
| 457 |
}
|
| 458 |
|
| 459 |
/* Add a child transaction to the original payment issuing a refund for the order. */
|
| 460 |
-
$notification_transaction = $this->addChildTransaction($trustly_payment, $trustlyNotificationId, $trustlyOrderId,
|
| 461 |
Mage_Sales_Model_Order_Payment_Transaction::TYPE_REFUND, true);
|
| 462 |
|
| 463 |
$order->setState($order->getStatus(), true, $comment);
|
|
@@ -468,12 +470,12 @@ class Trustly_Trustly_PaymentController extends Mage_Core_Controller_Front_Actio
|
|
| 468 |
Mage::log("Recieved debit for order with increment $incrementId of $_amount $_currency", Zend_Log::INFO, self::LOG_FILE);
|
| 469 |
}elseif($_method == 'cancel') {
|
| 470 |
|
| 471 |
-
/* Cancel will be sent when the payment will not be completed.
|
| 472 |
-
* The cancel method will always be sent in conjunction with a
|
| 473 |
-
* debit notification, in the debit notification we handle the
|
| 474 |
* montary changeback and cancel of the invoices */
|
| 475 |
|
| 476 |
-
$notification_transaction = $this->addChildTransaction($trustly_payment, $trustlyNotificationId, $trustlyOrderId,
|
| 477 |
Mage_Sales_Model_Order_Payment_Transaction::TYPE_VOID, true);
|
| 478 |
|
| 479 |
$orderStatus = Mage_Sales_Model_Order::STATE_CANCELED;
|
| 58 |
$session->setTrustlyQuoteId($session->getQuoteId());
|
| 59 |
|
| 60 |
$session->unsUrlTrustly();
|
| 61 |
+
/* Clear all the error messages before we checkout, or previous errors might linger on */
|
| 62 |
+
$session->getMessages(true);
|
| 63 |
|
| 64 |
$standard = Mage::getModel('trustly/standard');
|
| 65 |
$redirectError = NULL;
|
| 158 |
if($orderMapping) {
|
| 159 |
$incrementId = $orderMapping->getMagentoIncrementId();
|
| 160 |
}else {
|
| 161 |
+
# If we cannot find the mapping here, check to see if the
|
| 162 |
+
# enduserid seems to be a valid incrment id, in old code this
|
| 163 |
+
# used to be the case. So to handle the transition between the
|
| 164 |
# old module and this one, allow for this.
|
| 165 |
# We always use email for enduserid, so we will not match something by accident.
|
| 166 |
$enduserid = $notification->getData('enduserid');
|
| 182 |
return;
|
| 183 |
}
|
| 184 |
|
| 185 |
+
/* Due to race conditions we need to handle the processing
|
| 186 |
+
* for this order one at a time only. Otherwise we might
|
| 187 |
+
* end up processing the credit and pending
|
| 188 |
* notifications at the same time. */
|
| 189 |
$increment_lockid = $orderMapping->lockIncrementForProcessing($incrementId);
|
| 190 |
if($increment_lockid === false) {
|
| 191 |
+
/* If we cannot lock this increment abort now, respond
|
| 192 |
* nothing we will get a new attempt later */
|
| 193 |
Mage::log("Attempt to process already locked magento increment $incrementId", Zend_Log::DEBUG, self::LOG_FILE);
|
| 194 |
session_write_close();
|
| 252 |
}
|
| 253 |
}
|
| 254 |
|
| 255 |
+
/* Check if we have processed this transaction before, if so
|
| 256 |
* say we did fine, we obviously managed to save it... */
|
| 257 |
if(isset($notification_transaction)) {
|
| 258 |
Mage::helper('trustly')->sendResponseNotification($notification, true);
|
| 271 |
|
| 272 |
$transactionSave = Mage::getModel('core/resource_transaction');
|
| 273 |
|
| 274 |
+
/* We should always have a payment with the trustly method, if
|
| 275 |
* we do not have one, create it we will need this regardless of the method for the notification */
|
| 276 |
if(is_null($trustly_payment) || is_null($trustly_payment->getTxnType())) {
|
| 277 |
+
/* Create a payment with our TrustlyOrderId as the
|
| 278 |
+
* TransactionId, we will later add the current
|
| 279 |
* notification as a child payment for this payment */
|
| 280 |
$trustly_payment->resetTransactionAdditionalInfo();
|
| 281 |
$trustly_payment->setTransactionId($trustlyOrderId);
|
| 287 |
->addObject($trustly_payment);
|
| 288 |
}
|
| 289 |
|
| 290 |
+
# Check to see if we have invoiced this order already, if
|
| 291 |
+
# so do not do it again. We might be getting the same
|
| 292 |
# notification over again.
|
| 293 |
if(($_method == 'pending' || $_method == 'credit') && isset($order_invoice)) {
|
| 294 |
Mage::log(sprintf("Recieved $_method notification for order with increment %s for orderid %s, but order already had an invoice, nothing done", $incrementId, $trustlyOrderId), Zend_Log::DEBUG, self::LOG_FILE);
|
| 298 |
Mage::log(sprintf("Recieved a %s notification, no previous invoice could be found for Trustly orderid %s, magento order %s. No pending notification send before?! Creating one now", $_method, $trustlyOrderId, $incrementId), Zend_Log::WARN, self::LOG_FILE);
|
| 299 |
}
|
| 300 |
|
| 301 |
+
/* A credit notification without an invoice can mean one of two
|
| 302 |
+
* things, either the invoice has been removed or we did not
|
| 303 |
+
* receive the pending notification for this order. At this
|
| 304 |
+
* point we cannot really reject the money, a payment has been
|
| 305 |
* done, so create a new invoice and attach this payment to that invoice. */
|
| 306 |
|
| 307 |
+
/* When we get the pending notification the user has
|
| 308 |
+
* completed his end of the payment. The payment can
|
| 309 |
+
* still fail and we are yet to be credited any funds.
|
| 310 |
+
* Create an invoice, but do not set it as paid just
|
| 311 |
* yet. */
|
| 312 |
|
| 313 |
$order_invoice = $order->prepareInvoice()
|
| 341 |
|
| 342 |
|
| 343 |
if($_method == 'pending') {
|
| 344 |
+
/* We have no authorize for the payment (As we would simply
|
| 345 |
+
* abort if we have gotten the pending before) so create
|
| 346 |
* an authorization for the payment here and append */
|
| 347 |
+
$notification_transaction = $this->addChildTransaction($trustly_payment,
|
| 348 |
$trustlyNotificationId, $trustlyOrderId,
|
| 349 |
Mage_Sales_Model_Order_Payment_Transaction::TYPE_AUTH, true);
|
| 350 |
|
| 445 |
$comment .= "<br />" . Mage::helper('trustly')->__('Notification id: %s', $notification->getData('notificationid'));
|
| 446 |
$comment .= "<br />" . Mage::helper('trustly')->__('Debit amount: %s %s', $_amount, $_currency);
|
| 447 |
|
| 448 |
+
/* Normally the only debit amount that should be received is
|
| 449 |
* the full amount, but you never know.... */
|
| 450 |
if ($order->getGrandTotal() == $_amount) {
|
| 451 |
$creditmemo = Mage::getModel('sales/service_order', $order)
|
| 459 |
}
|
| 460 |
|
| 461 |
/* Add a child transaction to the original payment issuing a refund for the order. */
|
| 462 |
+
$notification_transaction = $this->addChildTransaction($trustly_payment, $trustlyNotificationId, $trustlyOrderId,
|
| 463 |
Mage_Sales_Model_Order_Payment_Transaction::TYPE_REFUND, true);
|
| 464 |
|
| 465 |
$order->setState($order->getStatus(), true, $comment);
|
| 470 |
Mage::log("Recieved debit for order with increment $incrementId of $_amount $_currency", Zend_Log::INFO, self::LOG_FILE);
|
| 471 |
}elseif($_method == 'cancel') {
|
| 472 |
|
| 473 |
+
/* Cancel will be sent when the payment will not be completed.
|
| 474 |
+
* The cancel method will always be sent in conjunction with a
|
| 475 |
+
* debit notification, in the debit notification we handle the
|
| 476 |
* montary changeback and cancel of the invoices */
|
| 477 |
|
| 478 |
+
$notification_transaction = $this->addChildTransaction($trustly_payment, $trustlyNotificationId, $trustlyOrderId,
|
| 479 |
Mage_Sales_Model_Order_Payment_Transaction::TYPE_VOID, true);
|
| 480 |
|
| 481 |
$orderStatus = Mage_Sales_Model_Order::STATE_CANCELED;
|
app/code/community/Trustly/Trustly/etc/config.xml
CHANGED
|
@@ -2,7 +2,7 @@
|
|
| 2 |
<config>
|
| 3 |
<modules>
|
| 4 |
<Trustly_Trustly>
|
| 5 |
-
<version>2.0.
|
| 6 |
</Trustly_Trustly>
|
| 7 |
</modules>
|
| 8 |
<global>
|
| 2 |
<config>
|
| 3 |
<modules>
|
| 4 |
<Trustly_Trustly>
|
| 5 |
+
<version>2.0.8</version>
|
| 6 |
</Trustly_Trustly>
|
| 7 |
</modules>
|
| 8 |
<global>
|
app/code/community/Trustly/Trustly/lib/Trustly.php
CHANGED
|
@@ -1,19 +1,19 @@
|
|
| 1 |
<?php
|
| 2 |
-
|
| 3 |
* The MIT License (MIT)
|
| 4 |
-
*
|
| 5 |
* Copyright (c) 2014 Trustly Group AB
|
| 6 |
-
*
|
| 7 |
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 8 |
* of this software and associated documentation files (the "Software"), to deal
|
| 9 |
* in the Software without restriction, including without limitation the rights
|
| 10 |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 11 |
* copies of the Software, and to permit persons to whom the Software is
|
| 12 |
* furnished to do so, subject to the following conditions:
|
| 13 |
-
*
|
| 14 |
* The above copyright notice and this permission notice shall be included in
|
| 15 |
* all copies or substantial portions of the Software.
|
| 16 |
-
*
|
| 17 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 18 |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 19 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
@@ -29,6 +29,7 @@ require_once('Trustly/Data/request.php');
|
|
| 29 |
require_once('Trustly/Data/jsonrpcrequest.php');
|
| 30 |
require_once('Trustly/Data/response.php');
|
| 31 |
require_once('Trustly/Data/jsonrpcresponse.php');
|
|
|
|
| 32 |
require_once('Trustly/Data/jsonrpcnotificationrequest.php');
|
| 33 |
require_once('Trustly/Data/jsonrpcnotificationresponse.php');
|
| 34 |
|
|
@@ -36,4 +37,4 @@ require_once('Trustly/Api/api.php');
|
|
| 36 |
require_once('Trustly/Api/signed.php');
|
| 37 |
require_once('Trustly/Api/unsigned.php');
|
| 38 |
require_once('Trustly/Api/ecommerce.php');
|
| 39 |
-
|
| 1 |
<?php
|
| 2 |
+
/**
|
| 3 |
* The MIT License (MIT)
|
| 4 |
+
*
|
| 5 |
* Copyright (c) 2014 Trustly Group AB
|
| 6 |
+
*
|
| 7 |
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 8 |
* of this software and associated documentation files (the "Software"), to deal
|
| 9 |
* in the Software without restriction, including without limitation the rights
|
| 10 |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 11 |
* copies of the Software, and to permit persons to whom the Software is
|
| 12 |
* furnished to do so, subject to the following conditions:
|
| 13 |
+
*
|
| 14 |
* The above copyright notice and this permission notice shall be included in
|
| 15 |
* all copies or substantial portions of the Software.
|
| 16 |
+
*
|
| 17 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 18 |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 19 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 29 |
require_once('Trustly/Data/jsonrpcrequest.php');
|
| 30 |
require_once('Trustly/Data/response.php');
|
| 31 |
require_once('Trustly/Data/jsonrpcresponse.php');
|
| 32 |
+
require_once('Trustly/Data/jsonrpcsignedresponse.php');
|
| 33 |
require_once('Trustly/Data/jsonrpcnotificationrequest.php');
|
| 34 |
require_once('Trustly/Data/jsonrpcnotificationresponse.php');
|
| 35 |
|
| 37 |
require_once('Trustly/Api/signed.php');
|
| 38 |
require_once('Trustly/Api/unsigned.php');
|
| 39 |
require_once('Trustly/Api/ecommerce.php');
|
| 40 |
+
/* vim: set noet cindent ts=4 ts=4 sw=4: */
|
app/code/community/Trustly/Trustly/lib/Trustly/Api/api.php
CHANGED
|
@@ -1,19 +1,19 @@
|
|
| 1 |
<?php
|
| 2 |
-
|
| 3 |
* The MIT License (MIT)
|
| 4 |
-
*
|
| 5 |
* Copyright (c) 2014 Trustly Group AB
|
| 6 |
-
*
|
| 7 |
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 8 |
* of this software and associated documentation files (the "Software"), to deal
|
| 9 |
* in the Software without restriction, including without limitation the rights
|
| 10 |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 11 |
* copies of the Software, and to permit persons to whom the Software is
|
| 12 |
* furnished to do so, subject to the following conditions:
|
| 13 |
-
*
|
| 14 |
* The above copyright notice and this permission notice shall be included in
|
| 15 |
* all copies or substantial portions of the Software.
|
| 16 |
-
*
|
| 17 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 18 |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 19 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
@@ -32,7 +32,7 @@ abstract class Trustly_Api {
|
|
| 32 |
/* The data of the last request performed. */
|
| 33 |
var $last_request = NULL;
|
| 34 |
|
| 35 |
-
function __construct($host, $port, $is_https) {
|
| 36 |
$this->api_host = $host;
|
| 37 |
$this->api_port = $port;
|
| 38 |
$this->api_is_https = $is_https;
|
|
@@ -48,8 +48,8 @@ abstract class Trustly_Api {
|
|
| 48 |
}
|
| 49 |
}
|
| 50 |
|
| 51 |
-
/* Load the public key used for for verifying incoming data responses from
|
| 52 |
-
* trustly. The keys are distributed as a part of the source code package
|
| 53 |
* and should be named to match the host under $PWD/HOSTNAME.public.pem */
|
| 54 |
public function loadTrustlyPublicKey() {
|
| 55 |
$filename = sprintf('%s/keys/%s.public.pem', realpath(dirname(__FILE__)), $this->api_host);
|
|
@@ -82,7 +82,7 @@ abstract class Trustly_Api {
|
|
| 82 |
}
|
| 83 |
}
|
| 84 |
|
| 85 |
-
/* Given all the components to verify and work with, check if the given
|
| 86 |
* signature has been used to sign the data */
|
| 87 |
protected function verifyTrustlySignedData($method, $uuid, $signature, $data) {
|
| 88 |
if($method === NULL) {
|
|
@@ -105,23 +105,20 @@ abstract class Trustly_Api {
|
|
| 105 |
}
|
| 106 |
}
|
| 107 |
|
| 108 |
-
/* Check to make sure that the given response (instance of
|
| 109 |
-
* Trustly_Data_Response) has been signed with the correct key when
|
| 110 |
* originating from the host */
|
| 111 |
public function verifyTrustlySignedResponse($response) {
|
| 112 |
$method = $response->getMethod();
|
| 113 |
$uuid = $response->getUUID();
|
| 114 |
$signature = $response->getSignature();
|
| 115 |
-
$data = $response->
|
| 116 |
-
if($data !== NULL) {
|
| 117 |
-
$data = $data['data'];
|
| 118 |
-
}
|
| 119 |
|
| 120 |
return $this->verifyTrustlySignedData($method, $uuid, $signature, $data);
|
| 121 |
}
|
| 122 |
|
| 123 |
-
/* Check to make sure that the given notification (instance of
|
| 124 |
-
* Trustly_Data_JSONRPCNotificationRequest) has been signed with the
|
| 125 |
* correct key originating from the host */
|
| 126 |
public function verifyTrustlySignedNotification($notification) {
|
| 127 |
$method = $notification->getMethod();
|
|
@@ -149,9 +146,9 @@ abstract class Trustly_Api {
|
|
| 149 |
}
|
| 150 |
}
|
| 151 |
|
| 152 |
-
/* Do note that that if you are going to POST JSON you need to set the
|
| 153 |
-
* content-type of the transfer AFTER you set the postfields, this is done
|
| 154 |
-
* if you provide the postdata here, if not, take care to do it or the
|
| 155 |
* content-type will be wrong */
|
| 156 |
public function connect($url=NULL, $postdata=NULL) {
|
| 157 |
$cu = curl_init();
|
|
@@ -176,8 +173,8 @@ abstract class Trustly_Api {
|
|
| 176 |
if(isset($postdata)) {
|
| 177 |
curl_setopt($cu, CURLOPT_POSTFIELDS, $postdata);
|
| 178 |
}
|
| 179 |
-
curl_setopt($cu, CURLOPT_HTTPHEADER, array('Content-Type: application/json; charset=utf-8'));
|
| 180 |
-
curl_setopt($cu, CURLOPT_CUSTOMREQUEST,
|
| 181 |
curl_setopt($cu, CURLOPT_URL, $url);
|
| 182 |
return $cu;
|
| 183 |
}
|
|
@@ -199,10 +196,10 @@ abstract class Trustly_Api {
|
|
| 199 |
return $this->last_request;
|
| 200 |
}
|
| 201 |
|
| 202 |
-
/* Given the http body of an (presumed) notification from trustly. Verify
|
| 203 |
-
* signatures and build a Trustly_Data_JSONRPCNotificationRequest object
|
| 204 |
-
* from the incoming data. This should ALWAYS be the first steps when
|
| 205 |
-
* accessing data in the notification, a noficiation with a poor or invalid
|
| 206 |
* signature should be discarded. */
|
| 207 |
public function handleNotification($httpbody) {
|
| 208 |
$request = new Trustly_Data_JSONRPCNotificationRequest($httpbody);
|
|
@@ -215,7 +212,7 @@ abstract class Trustly_Api {
|
|
| 215 |
}
|
| 216 |
|
| 217 |
|
| 218 |
-
/* Given an object from an incoming notification request build a response
|
| 219 |
* object that can be used to respond to trustly with */
|
| 220 |
public function notificationResponse($request, $success=TRUE) {
|
| 221 |
$response = new Trustly_Data_JSONRPCNotificationResponse($request, $success);
|
|
@@ -234,7 +231,6 @@ abstract class Trustly_Api {
|
|
| 234 |
$url = $this->url($request);
|
| 235 |
$curl = $this->connect($url, $jsonstr);
|
| 236 |
|
| 237 |
-
|
| 238 |
$body = curl_exec($curl);
|
| 239 |
if($body === FALSE) {
|
| 240 |
$error = curl_error($curl);
|
|
@@ -245,7 +241,53 @@ abstract class Trustly_Api {
|
|
| 245 |
}
|
| 246 |
|
| 247 |
if($this->api_is_https) {
|
| 248 |
-
$ssl_result = curl_getinfo($curl, CURLINFO_SSL_VERIFYRESULT);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 249 |
}
|
| 250 |
$result = $this->handleResponse($request, $body, $curl);
|
| 251 |
curl_close($curl);
|
|
@@ -270,5 +312,4 @@ abstract class Trustly_Api {
|
|
| 270 |
abstract public function insertCredentials($request);
|
| 271 |
|
| 272 |
}
|
| 273 |
-
|
| 274 |
-
?>
|
| 1 |
<?php
|
| 2 |
+
/**
|
| 3 |
* The MIT License (MIT)
|
| 4 |
+
*
|
| 5 |
* Copyright (c) 2014 Trustly Group AB
|
| 6 |
+
*
|
| 7 |
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 8 |
* of this software and associated documentation files (the "Software"), to deal
|
| 9 |
* in the Software without restriction, including without limitation the rights
|
| 10 |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 11 |
* copies of the Software, and to permit persons to whom the Software is
|
| 12 |
* furnished to do so, subject to the following conditions:
|
| 13 |
+
*
|
| 14 |
* The above copyright notice and this permission notice shall be included in
|
| 15 |
* all copies or substantial portions of the Software.
|
| 16 |
+
*
|
| 17 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 18 |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 19 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 32 |
/* The data of the last request performed. */
|
| 33 |
var $last_request = NULL;
|
| 34 |
|
| 35 |
+
public function __construct($host, $port, $is_https) {
|
| 36 |
$this->api_host = $host;
|
| 37 |
$this->api_port = $port;
|
| 38 |
$this->api_is_https = $is_https;
|
| 48 |
}
|
| 49 |
}
|
| 50 |
|
| 51 |
+
/* Load the public key used for for verifying incoming data responses from
|
| 52 |
+
* trustly. The keys are distributed as a part of the source code package
|
| 53 |
* and should be named to match the host under $PWD/HOSTNAME.public.pem */
|
| 54 |
public function loadTrustlyPublicKey() {
|
| 55 |
$filename = sprintf('%s/keys/%s.public.pem', realpath(dirname(__FILE__)), $this->api_host);
|
| 82 |
}
|
| 83 |
}
|
| 84 |
|
| 85 |
+
/* Given all the components to verify and work with, check if the given
|
| 86 |
* signature has been used to sign the data */
|
| 87 |
protected function verifyTrustlySignedData($method, $uuid, $signature, $data) {
|
| 88 |
if($method === NULL) {
|
| 105 |
}
|
| 106 |
}
|
| 107 |
|
| 108 |
+
/* Check to make sure that the given response (instance of
|
| 109 |
+
* Trustly_Data_Response) has been signed with the correct key when
|
| 110 |
* originating from the host */
|
| 111 |
public function verifyTrustlySignedResponse($response) {
|
| 112 |
$method = $response->getMethod();
|
| 113 |
$uuid = $response->getUUID();
|
| 114 |
$signature = $response->getSignature();
|
| 115 |
+
$data = $response->getData();
|
|
|
|
|
|
|
|
|
|
| 116 |
|
| 117 |
return $this->verifyTrustlySignedData($method, $uuid, $signature, $data);
|
| 118 |
}
|
| 119 |
|
| 120 |
+
/* Check to make sure that the given notification (instance of
|
| 121 |
+
* Trustly_Data_JSONRPCNotificationRequest) has been signed with the
|
| 122 |
* correct key originating from the host */
|
| 123 |
public function verifyTrustlySignedNotification($notification) {
|
| 124 |
$method = $notification->getMethod();
|
| 146 |
}
|
| 147 |
}
|
| 148 |
|
| 149 |
+
/* Do note that that if you are going to POST JSON you need to set the
|
| 150 |
+
* content-type of the transfer AFTER you set the postfields, this is done
|
| 151 |
+
* if you provide the postdata here, if not, take care to do it or the
|
| 152 |
* content-type will be wrong */
|
| 153 |
public function connect($url=NULL, $postdata=NULL) {
|
| 154 |
$cu = curl_init();
|
| 173 |
if(isset($postdata)) {
|
| 174 |
curl_setopt($cu, CURLOPT_POSTFIELDS, $postdata);
|
| 175 |
}
|
| 176 |
+
curl_setopt($cu, CURLOPT_HTTPHEADER, array('Content-Type: application/json; charset=utf-8'));
|
| 177 |
+
curl_setopt($cu, CURLOPT_CUSTOMREQUEST, 'POST');
|
| 178 |
curl_setopt($cu, CURLOPT_URL, $url);
|
| 179 |
return $cu;
|
| 180 |
}
|
| 196 |
return $this->last_request;
|
| 197 |
}
|
| 198 |
|
| 199 |
+
/* Given the http body of an (presumed) notification from trustly. Verify
|
| 200 |
+
* signatures and build a Trustly_Data_JSONRPCNotificationRequest object
|
| 201 |
+
* from the incoming data. This should ALWAYS be the first steps when
|
| 202 |
+
* accessing data in the notification, a noficiation with a poor or invalid
|
| 203 |
* signature should be discarded. */
|
| 204 |
public function handleNotification($httpbody) {
|
| 205 |
$request = new Trustly_Data_JSONRPCNotificationRequest($httpbody);
|
| 212 |
}
|
| 213 |
|
| 214 |
|
| 215 |
+
/* Given an object from an incoming notification request build a response
|
| 216 |
* object that can be used to respond to trustly with */
|
| 217 |
public function notificationResponse($request, $success=TRUE) {
|
| 218 |
$response = new Trustly_Data_JSONRPCNotificationResponse($request, $success);
|
| 231 |
$url = $this->url($request);
|
| 232 |
$curl = $this->connect($url, $jsonstr);
|
| 233 |
|
|
|
|
| 234 |
$body = curl_exec($curl);
|
| 235 |
if($body === FALSE) {
|
| 236 |
$error = curl_error($curl);
|
| 241 |
}
|
| 242 |
|
| 243 |
if($this->api_is_https) {
|
| 244 |
+
$ssl_result = curl_getinfo($curl, CURLINFO_SSL_VERIFYRESULT);
|
| 245 |
+
if($ssl_result !== 0) {
|
| 246 |
+
|
| 247 |
+
$curl_x509_errors = array(
|
| 248 |
+
'0' => 'X509_V_OK',
|
| 249 |
+
'2' => 'X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT',
|
| 250 |
+
'3' => 'X509_V_ERR_UNABLE_TO_GET_CRL',
|
| 251 |
+
'4' => 'X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE',
|
| 252 |
+
'5' => 'X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE',
|
| 253 |
+
'6' => 'X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY',
|
| 254 |
+
'7' => 'X509_V_ERR_CERT_SIGNATURE_FAILURE',
|
| 255 |
+
'8' => 'X509_V_ERR_CRL_SIGNATURE_FAILURE',
|
| 256 |
+
'9' => 'X509_V_ERR_CERT_NOT_YET_VALID',
|
| 257 |
+
'10' => 'X509_V_ERR_CERT_HAS_EXPIRED',
|
| 258 |
+
'11' => 'X509_V_ERR_CRL_NOT_YET_VALID',
|
| 259 |
+
'12' => 'X509_V_ERR_CRL_HAS_EXPIRED',
|
| 260 |
+
'13' => 'X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD',
|
| 261 |
+
'14' => 'X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD',
|
| 262 |
+
'15' => 'X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD',
|
| 263 |
+
'16' => 'X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD',
|
| 264 |
+
'17' => 'X509_V_ERR_OUT_OF_MEM',
|
| 265 |
+
'18' => 'X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT',
|
| 266 |
+
'19' => 'X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN',
|
| 267 |
+
'20' => 'X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY',
|
| 268 |
+
'21' => 'X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE',
|
| 269 |
+
'22' => 'X509_V_ERR_CERT_CHAIN_TOO_LONG',
|
| 270 |
+
'23' => 'X509_V_ERR_CERT_REVOKED',
|
| 271 |
+
'24' => 'X509_V_ERR_INVALID_CA',
|
| 272 |
+
'25' => 'X509_V_ERR_PATH_LENGTH_EXCEEDED',
|
| 273 |
+
'26' => 'X509_V_ERR_INVALID_PURPOSE',
|
| 274 |
+
'27' => 'X509_V_ERR_CERT_UNTRUSTED',
|
| 275 |
+
'28' => 'X509_V_ERR_CERT_REJECTED',
|
| 276 |
+
'29' => 'X509_V_ERR_SUBJECT_ISSUER_MISMATCH',
|
| 277 |
+
'30' => 'X509_V_ERR_AKID_SKID_MISMATCH',
|
| 278 |
+
'31' => 'X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH',
|
| 279 |
+
'32' => 'X509_V_ERR_KEYUSAGE_NO_CERTSIGN',
|
| 280 |
+
'50' => 'X509_V_ERR_APPLICATION_VERIFICATION'
|
| 281 |
+
);
|
| 282 |
+
|
| 283 |
+
$ssl_error_str = null;
|
| 284 |
+
if(isset($curl_x509_errors[$ssl_result])) {
|
| 285 |
+
$ssl_error_str = $curl_x509_errors[$ssl_result];
|
| 286 |
+
}
|
| 287 |
+
|
| 288 |
+
$error = 'Failed to connect to the Trusly API. SSL Verification error #' . $ssl_result . ($ssl_error_str?': ' . $ssl_error_str:'');
|
| 289 |
+
throw new Trustly_ConnectionException($error);
|
| 290 |
+
}
|
| 291 |
}
|
| 292 |
$result = $this->handleResponse($request, $body, $curl);
|
| 293 |
curl_close($curl);
|
| 312 |
abstract public function insertCredentials($request);
|
| 313 |
|
| 314 |
}
|
| 315 |
+
/* vim: set noet cindent ts=4 ts=4 sw=4: */
|
|
|
app/code/community/Trustly/Trustly/lib/Trustly/Api/ecommerce.php
CHANGED
|
@@ -1,19 +1,19 @@
|
|
| 1 |
<?php
|
| 2 |
-
|
| 3 |
* The MIT License (MIT)
|
| 4 |
-
*
|
| 5 |
* Copyright (c) 2014 Trustly Group AB
|
| 6 |
-
*
|
| 7 |
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 8 |
* of this software and associated documentation files (the "Software"), to deal
|
| 9 |
* in the Software without restriction, including without limitation the rights
|
| 10 |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 11 |
* copies of the Software, and to permit persons to whom the Software is
|
| 12 |
* furnished to do so, subject to the following conditions:
|
| 13 |
-
*
|
| 14 |
* The above copyright notice and this permission notice shall be included in
|
| 15 |
* all copies or substantial portions of the Software.
|
| 16 |
-
*
|
| 17 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 18 |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 19 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
@@ -50,8 +50,8 @@ class Trustly_Api_ECommerce extends Trustly_Api {
|
|
| 50 |
$signature = $response->getSignature();
|
| 51 |
$data = $response->getResult();
|
| 52 |
|
| 53 |
-
/* As the data in the ecommerce responses are flat, all the uuid,
|
| 54 |
-
* signatures, method information is on the same level as the data
|
| 55 |
* response. Remove theese from the data before checking the signature. */
|
| 56 |
unset($data['uuid']);
|
| 57 |
unset($data['signature']);
|
|
@@ -75,8 +75,8 @@ class Trustly_Api_ECommerce extends Trustly_Api {
|
|
| 75 |
return TRUE;
|
| 76 |
}
|
| 77 |
|
| 78 |
-
/* Build an orderline suitable for the payment call using the supplied
|
| 79 |
-
* information. Call once for each line of the order and stuff into an
|
| 80 |
* array that is later supplied to the pay() call.
|
| 81 |
*
|
| 82 |
* Typically:
|
|
@@ -86,7 +86,7 @@ class Trustly_Api_ECommerce extends Trustly_Api {
|
|
| 86 |
* ...
|
| 87 |
* $result = $api->pay(..., $orderlines);
|
| 88 |
* */
|
| 89 |
-
public function createOrderline($description=NULL, $amount=NULL,
|
| 90 |
$currency=NULL, $vat=NULL, $quantity=1, $eancode=NULL) {
|
| 91 |
|
| 92 |
$orderline = array();
|
|
@@ -118,11 +118,11 @@ class Trustly_Api_ECommerce extends Trustly_Api {
|
|
| 118 |
return $orderline;
|
| 119 |
}
|
| 120 |
|
| 121 |
-
public function pay($notificationurl, $enduserid, $messageid,
|
| 122 |
-
|
| 123 |
-
|
| 124 |
-
|
| 125 |
-
|
| 126 |
|
| 127 |
$request = new Trustly_Data_Request('Pay',
|
| 128 |
array(
|
|
@@ -147,7 +147,7 @@ class Trustly_Api_ECommerce extends Trustly_Api {
|
|
| 147 |
return $this->call($request);
|
| 148 |
}
|
| 149 |
|
| 150 |
-
|
| 151 |
|
| 152 |
$request = new Trustly_Data_Request('Repay',
|
| 153 |
array(
|
|
@@ -165,5 +165,4 @@ class Trustly_Api_ECommerce extends Trustly_Api {
|
|
| 165 |
return $this->call($request);
|
| 166 |
}
|
| 167 |
}
|
| 168 |
-
|
| 169 |
-
?>
|
| 1 |
<?php
|
| 2 |
+
/**
|
| 3 |
* The MIT License (MIT)
|
| 4 |
+
*
|
| 5 |
* Copyright (c) 2014 Trustly Group AB
|
| 6 |
+
*
|
| 7 |
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 8 |
* of this software and associated documentation files (the "Software"), to deal
|
| 9 |
* in the Software without restriction, including without limitation the rights
|
| 10 |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 11 |
* copies of the Software, and to permit persons to whom the Software is
|
| 12 |
* furnished to do so, subject to the following conditions:
|
| 13 |
+
*
|
| 14 |
* The above copyright notice and this permission notice shall be included in
|
| 15 |
* all copies or substantial portions of the Software.
|
| 16 |
+
*
|
| 17 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 18 |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 19 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 50 |
$signature = $response->getSignature();
|
| 51 |
$data = $response->getResult();
|
| 52 |
|
| 53 |
+
/* As the data in the ecommerce responses are flat, all the uuid,
|
| 54 |
+
* signatures, method information is on the same level as the data
|
| 55 |
* response. Remove theese from the data before checking the signature. */
|
| 56 |
unset($data['uuid']);
|
| 57 |
unset($data['signature']);
|
| 75 |
return TRUE;
|
| 76 |
}
|
| 77 |
|
| 78 |
+
/* Build an orderline suitable for the payment call using the supplied
|
| 79 |
+
* information. Call once for each line of the order and stuff into an
|
| 80 |
* array that is later supplied to the pay() call.
|
| 81 |
*
|
| 82 |
* Typically:
|
| 86 |
* ...
|
| 87 |
* $result = $api->pay(..., $orderlines);
|
| 88 |
* */
|
| 89 |
+
public function createOrderline($description=NULL, $amount=NULL,
|
| 90 |
$currency=NULL, $vat=NULL, $quantity=1, $eancode=NULL) {
|
| 91 |
|
| 92 |
$orderline = array();
|
| 118 |
return $orderline;
|
| 119 |
}
|
| 120 |
|
| 121 |
+
public function pay($notificationurl, $enduserid, $messageid,
|
| 122 |
+
$locale=NULL, $amount=NULL, $currency=NULL, $country=NULL, $host=NULL,
|
| 123 |
+
$returnurl=NULL, $templateurl=NULL, $urltarget=NULL,
|
| 124 |
+
$email=NULL, $firstname=NULL, $lastname=NULL, $integrationmodule=NULL,
|
| 125 |
+
$orderlines=NULL) {
|
| 126 |
|
| 127 |
$request = new Trustly_Data_Request('Pay',
|
| 128 |
array(
|
| 147 |
return $this->call($request);
|
| 148 |
}
|
| 149 |
|
| 150 |
+
public function repay($orderid, $amount, $currency) {
|
| 151 |
|
| 152 |
$request = new Trustly_Data_Request('Repay',
|
| 153 |
array(
|
| 165 |
return $this->call($request);
|
| 166 |
}
|
| 167 |
}
|
| 168 |
+
/* vim: set noet cindent ts=4 ts=4 sw=4: */
|
|
|
app/code/community/Trustly/Trustly/lib/Trustly/Api/signed.php
CHANGED
|
@@ -1,19 +1,19 @@
|
|
| 1 |
<?php
|
| 2 |
-
|
| 3 |
* The MIT License (MIT)
|
| 4 |
-
*
|
| 5 |
* Copyright (c) 2014 Trustly Group AB
|
| 6 |
-
*
|
| 7 |
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 8 |
* of this software and associated documentation files (the "Software"), to deal
|
| 9 |
* in the Software without restriction, including without limitation the rights
|
| 10 |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 11 |
* copies of the Software, and to permit persons to whom the Software is
|
| 12 |
* furnished to do so, subject to the following conditions:
|
| 13 |
-
*
|
| 14 |
* The above copyright notice and this permission notice shall be included in
|
| 15 |
* all copies or substantial portions of the Software.
|
| 16 |
-
*
|
| 17 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 18 |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 19 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
@@ -26,7 +26,7 @@
|
|
| 26 |
class Trustly_Api_Signed extends Trustly_Api {
|
| 27 |
var $merchant_privatekey = NULL;
|
| 28 |
|
| 29 |
-
function __construct($merchant_privatekeyfile, $username, $password, $host='trustly.com', $port=443, $is_https=TRUE) {
|
| 30 |
|
| 31 |
parent::__construct($host, $port, $is_https);
|
| 32 |
|
|
@@ -40,7 +40,7 @@ class Trustly_Api_Signed extends Trustly_Api {
|
|
| 40 |
}
|
| 41 |
}
|
| 42 |
|
| 43 |
-
/* Load up the merchants key for signing data from the supplied filename.
|
| 44 |
* Inializes the internal openssl certificate needed for the signing */
|
| 45 |
public function loadMerchantPrivateKey($filename) {
|
| 46 |
$cert = @file_get_contents($filename);
|
|
@@ -55,7 +55,7 @@ class Trustly_Api_Signed extends Trustly_Api {
|
|
| 55 |
return FALSE;
|
| 56 |
}
|
| 57 |
|
| 58 |
-
/* Create a signature string suitable for including as the signature in an
|
| 59 |
* outgoing request */
|
| 60 |
public function signMerchantRequest($request) {
|
| 61 |
if(!isset($this->merchant_privatekey)) {
|
|
@@ -82,8 +82,6 @@ class Trustly_Api_Signed extends Trustly_Api {
|
|
| 82 |
}
|
| 83 |
|
| 84 |
throw new Trustly_SignatureException('Failed to sign the outgoing merchant request. '. openssl_error_string());
|
| 85 |
-
|
| 86 |
-
return FALSE;
|
| 87 |
}
|
| 88 |
|
| 89 |
public function insertCredentials($request) {
|
|
@@ -100,14 +98,14 @@ class Trustly_Api_Signed extends Trustly_Api {
|
|
| 100 |
}
|
| 101 |
|
| 102 |
public function handleResponse($request, $body, $curl) {
|
| 103 |
-
$response = new
|
| 104 |
|
| 105 |
if($this->verifyTrustlySignedResponse($response) !== TRUE) {
|
| 106 |
throw new Trustly_SignatureException('Incomming message signature is not valid', $response);
|
| 107 |
}
|
| 108 |
|
| 109 |
if($response->getUUID() !== $request->getUUID()) {
|
| 110 |
-
throw new
|
| 111 |
}
|
| 112 |
|
| 113 |
return $response;
|
|
@@ -131,24 +129,24 @@ class Trustly_Api_Signed extends Trustly_Api {
|
|
| 131 |
}
|
| 132 |
|
| 133 |
private function clearOpenSSLError() {
|
| 134 |
-
/* Not really my favourite part of this library implementation. As
|
| 135 |
-
* openssl queues error messages a single call to openssl_error_string
|
| 136 |
-
* after a fail might get another "queued" message from before. And as
|
| 137 |
-
* there is no way to clear the buffer... we will iterate until we will
|
| 138 |
* get no more errors. Brilliant. */
|
| 139 |
while ($err = openssl_error_string());
|
| 140 |
}
|
| 141 |
|
| 142 |
protected function generateUUID() {
|
| 143 |
-
/* Not the classiest implementation, but to reduce the dependency of
|
| 144 |
-
* non standard libraries we build it this way. The risk of
|
| 145 |
* collisions is low enough with a MD5 */
|
| 146 |
$md5 = md5(uniqid('', true));
|
| 147 |
return substr($md5, 0, 8).'-'.substr($md5, 8, 4).'-'.substr($md5, 12, 4).'-'.substr($md5, 16, 4).'-'.substr($md5, 20, 12);
|
| 148 |
}
|
| 149 |
|
| 150 |
public function call($request) {
|
| 151 |
-
$uuid = $request->getUUID();
|
| 152 |
if($uuid === NULL) {
|
| 153 |
$request->setUUID($this->generateUUID());
|
| 154 |
}
|
|
@@ -156,9 +154,9 @@ class Trustly_Api_Signed extends Trustly_Api {
|
|
| 156 |
}
|
| 157 |
|
| 158 |
/* Make a deposit call */
|
| 159 |
-
public function deposit($notificationurl, $enduserid, $messageid,
|
| 160 |
-
$locale=NULL, $amount=NULL, $currency=NULL, $country=NULL,
|
| 161 |
-
$mobilephone=NULL, $firstname=NULL, $lastname=NULL,
|
| 162 |
$nationalidentificationnumber=NULL, $shopperstatement=NULL,
|
| 163 |
$ip=NULL, $successurl=NULL, $failurl=NULL, $templateurl=NULL,
|
| 164 |
$urltarget=NULL, $suggestedminamount=NULL, $suggestedmaxamount=NULL,
|
|
@@ -171,17 +169,17 @@ class Trustly_Api_Signed extends Trustly_Api {
|
|
| 171 |
);
|
| 172 |
|
| 173 |
$attributes = array(
|
| 174 |
-
'Locale' => $locale,
|
| 175 |
'Amount' => $amount,
|
| 176 |
'Currency' => $currency,
|
| 177 |
-
'Country' => $country,
|
| 178 |
'MobilePhone' => $mobilephone,
|
| 179 |
-
'Firstname' => $firstname,
|
| 180 |
-
'Lastname' => $lastname,
|
| 181 |
-
'NationalIdentificationNumber' => $nationalidentificationnumber,
|
| 182 |
'ShopperStatement' => $shopperstatement,
|
| 183 |
'IP' => $ip,
|
| 184 |
-
'SuccessURL' => $successurl,
|
| 185 |
'FailURL' => $failurl,
|
| 186 |
'TemplateURL' => $templateurl,
|
| 187 |
'URLTarget' => $urltarget,
|
|
@@ -192,7 +190,7 @@ class Trustly_Api_Signed extends Trustly_Api {
|
|
| 192 |
|
| 193 |
$request = new Trustly_Data_JSONRPCRequest('Deposit', $data, $attributes);
|
| 194 |
return $this->call($request);
|
| 195 |
-
|
| 196 |
|
| 197 |
/* Make a refund call */
|
| 198 |
public function refund($orderid, $amount, $currency) {
|
|
@@ -208,9 +206,9 @@ class Trustly_Api_Signed extends Trustly_Api {
|
|
| 208 |
}
|
| 209 |
|
| 210 |
/* Make a withdraw call */
|
| 211 |
-
public function withdraw($notificationurl, $enduserid, $messageid,
|
| 212 |
-
$locale=NULL, $currency=NULL, $country=NULL,
|
| 213 |
-
$mobilephone=NULL, $firstname=NULL, $lastname=NULL,
|
| 214 |
$nationalidentificationnumber=NULL, $clearinghouse=NULL,
|
| 215 |
$banknumber=NULL, $accountnumber=NULL) {
|
| 216 |
|
|
@@ -223,12 +221,12 @@ class Trustly_Api_Signed extends Trustly_Api {
|
|
| 223 |
);
|
| 224 |
|
| 225 |
$attributes = array(
|
| 226 |
-
'Locale' => $locale,
|
| 227 |
-
'Country' => $country,
|
| 228 |
'MobilePhone' => $mobilephone,
|
| 229 |
-
'Firstname' => $firstname,
|
| 230 |
-
'Lastname' => $lastname,
|
| 231 |
-
'NationalIdentificationNumber' => $nationalidentificationnumber,
|
| 232 |
'ClearingHouse' => $clearinghouse,
|
| 233 |
'BankNumber' => $banknumber,
|
| 234 |
'AccountNumber' => $accountnumber,
|
|
@@ -236,7 +234,7 @@ class Trustly_Api_Signed extends Trustly_Api {
|
|
| 236 |
|
| 237 |
$request = new Trustly_Data_JSONRPCRequest('Withdraw', $data, $attributes);
|
| 238 |
return $this->call($request);
|
| 239 |
-
|
| 240 |
|
| 241 |
/* Make an approvewithdrawal call */
|
| 242 |
public function approveWithdrawal($orderid) {
|
|
@@ -261,8 +259,9 @@ class Trustly_Api_Signed extends Trustly_Api {
|
|
| 261 |
}
|
| 262 |
|
| 263 |
/* Make a select account call */
|
| 264 |
-
public function selectAccount($notificationurl, $enduserid, $messageid,
|
| 265 |
-
$locale=NULL, $country=NULL, $
|
|
|
|
| 266 |
|
| 267 |
$data = array(
|
| 268 |
'NotificationURL' => $notificationurl,
|
|
@@ -271,18 +270,22 @@ class Trustly_Api_Signed extends Trustly_Api {
|
|
| 271 |
);
|
| 272 |
|
| 273 |
$attributes = array(
|
| 274 |
-
'Locale' => $locale,
|
| 275 |
-
'Country' => $country,
|
| 276 |
-
'
|
| 277 |
-
'
|
|
|
|
|
|
|
|
|
|
|
|
|
| 278 |
);
|
| 279 |
|
| 280 |
$request = new Trustly_Data_JSONRPCRequest('SelectAccount', $data, $attributes);
|
| 281 |
return $this->call($request);
|
| 282 |
}
|
| 283 |
|
| 284 |
-
public function registerAccount($enduserid, $clearinghouse, $banknumber,
|
| 285 |
-
$accountnumber, $firstname, $lastname, $mobilephone=NULL,
|
| 286 |
$nationalidentificationnumber=NULL, $address=NULL) {
|
| 287 |
|
| 288 |
$data = array(
|
|
@@ -290,13 +293,13 @@ class Trustly_Api_Signed extends Trustly_Api {
|
|
| 290 |
'ClearingHouse' => $clearinghouse,
|
| 291 |
'BankNumber' => $banknumber,
|
| 292 |
'AccountNumber' => $accountnumber,
|
| 293 |
-
'Firstname' => $firstname,
|
| 294 |
-
'Lastname' => $lastname,
|
| 295 |
);
|
| 296 |
|
| 297 |
$attributes = array(
|
| 298 |
-
'MobilePhone' => $mobilephone,
|
| 299 |
-
'NationalIdentificationNumber' => $nationalidentificationnumber,
|
| 300 |
'Address' => $address
|
| 301 |
);
|
| 302 |
|
|
@@ -304,7 +307,7 @@ class Trustly_Api_Signed extends Trustly_Api {
|
|
| 304 |
return $this->call($request);
|
| 305 |
}
|
| 306 |
|
| 307 |
-
public function accountPayout($notificationurl, $accountid, $enduserid,
|
| 308 |
$messageid, $amount, $currency) {
|
| 309 |
|
| 310 |
$data = array(
|
|
@@ -312,8 +315,8 @@ class Trustly_Api_Signed extends Trustly_Api {
|
|
| 312 |
'EndUserID' => $enduserid,
|
| 313 |
'MessageID' => $messageid,
|
| 314 |
'AccountID' => $accountid,
|
| 315 |
-
'Amount' => $amount,
|
| 316 |
-
'Currency' => $currency,
|
| 317 |
);
|
| 318 |
|
| 319 |
$attributes = array(
|
|
@@ -324,7 +327,7 @@ class Trustly_Api_Signed extends Trustly_Api {
|
|
| 324 |
}
|
| 325 |
|
| 326 |
public function p2p($notificationurl, $enduserid, $messageid, $ip,
|
| 327 |
-
|
| 328 |
$method=NULL, $lastname=NULL, $firstname=NULL, $urltarget=NULL,
|
| 329 |
$locale=NULL, $amount=NULL, $currency=NULL, $templateurl=NULL,
|
| 330 |
$displaycurrency=NULL) {
|
|
@@ -355,7 +358,7 @@ class Trustly_Api_Signed extends Trustly_Api {
|
|
| 355 |
|
| 356 |
$request = new Trustly_Data_JSONRPCRequest('P2P', $data, $attributes);
|
| 357 |
return $this->call($request);
|
| 358 |
-
|
| 359 |
|
| 360 |
public function capture($orderid, $amount, $currency) {
|
| 361 |
|
|
@@ -391,5 +394,4 @@ class Trustly_Api_Signed extends Trustly_Api {
|
|
| 391 |
return $api->hello();
|
| 392 |
}
|
| 393 |
}
|
| 394 |
-
|
| 395 |
-
?>
|
| 1 |
<?php
|
| 2 |
+
/**
|
| 3 |
* The MIT License (MIT)
|
| 4 |
+
*
|
| 5 |
* Copyright (c) 2014 Trustly Group AB
|
| 6 |
+
*
|
| 7 |
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 8 |
* of this software and associated documentation files (the "Software"), to deal
|
| 9 |
* in the Software without restriction, including without limitation the rights
|
| 10 |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 11 |
* copies of the Software, and to permit persons to whom the Software is
|
| 12 |
* furnished to do so, subject to the following conditions:
|
| 13 |
+
*
|
| 14 |
* The above copyright notice and this permission notice shall be included in
|
| 15 |
* all copies or substantial portions of the Software.
|
| 16 |
+
*
|
| 17 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 18 |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 19 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 26 |
class Trustly_Api_Signed extends Trustly_Api {
|
| 27 |
var $merchant_privatekey = NULL;
|
| 28 |
|
| 29 |
+
public function __construct($merchant_privatekeyfile, $username, $password, $host='trustly.com', $port=443, $is_https=TRUE) {
|
| 30 |
|
| 31 |
parent::__construct($host, $port, $is_https);
|
| 32 |
|
| 40 |
}
|
| 41 |
}
|
| 42 |
|
| 43 |
+
/* Load up the merchants key for signing data from the supplied filename.
|
| 44 |
* Inializes the internal openssl certificate needed for the signing */
|
| 45 |
public function loadMerchantPrivateKey($filename) {
|
| 46 |
$cert = @file_get_contents($filename);
|
| 55 |
return FALSE;
|
| 56 |
}
|
| 57 |
|
| 58 |
+
/* Create a signature string suitable for including as the signature in an
|
| 59 |
* outgoing request */
|
| 60 |
public function signMerchantRequest($request) {
|
| 61 |
if(!isset($this->merchant_privatekey)) {
|
| 82 |
}
|
| 83 |
|
| 84 |
throw new Trustly_SignatureException('Failed to sign the outgoing merchant request. '. openssl_error_string());
|
|
|
|
|
|
|
| 85 |
}
|
| 86 |
|
| 87 |
public function insertCredentials($request) {
|
| 98 |
}
|
| 99 |
|
| 100 |
public function handleResponse($request, $body, $curl) {
|
| 101 |
+
$response = new Trustly_Data_JSONRPCSignedResponse($body, $curl);
|
| 102 |
|
| 103 |
if($this->verifyTrustlySignedResponse($response) !== TRUE) {
|
| 104 |
throw new Trustly_SignatureException('Incomming message signature is not valid', $response);
|
| 105 |
}
|
| 106 |
|
| 107 |
if($response->getUUID() !== $request->getUUID()) {
|
| 108 |
+
throw new Trustly_DataException('Incoming message is not related to request. UUID mismatch');
|
| 109 |
}
|
| 110 |
|
| 111 |
return $response;
|
| 129 |
}
|
| 130 |
|
| 131 |
private function clearOpenSSLError() {
|
| 132 |
+
/* Not really my favourite part of this library implementation. As
|
| 133 |
+
* openssl queues error messages a single call to openssl_error_string
|
| 134 |
+
* after a fail might get another "queued" message from before. And as
|
| 135 |
+
* there is no way to clear the buffer... we will iterate until we will
|
| 136 |
* get no more errors. Brilliant. */
|
| 137 |
while ($err = openssl_error_string());
|
| 138 |
}
|
| 139 |
|
| 140 |
protected function generateUUID() {
|
| 141 |
+
/* Not the classiest implementation, but to reduce the dependency of
|
| 142 |
+
* non standard libraries we build it this way. The risk of
|
| 143 |
* collisions is low enough with a MD5 */
|
| 144 |
$md5 = md5(uniqid('', true));
|
| 145 |
return substr($md5, 0, 8).'-'.substr($md5, 8, 4).'-'.substr($md5, 12, 4).'-'.substr($md5, 16, 4).'-'.substr($md5, 20, 12);
|
| 146 |
}
|
| 147 |
|
| 148 |
public function call($request) {
|
| 149 |
+
$uuid = $request->getUUID();
|
| 150 |
if($uuid === NULL) {
|
| 151 |
$request->setUUID($this->generateUUID());
|
| 152 |
}
|
| 154 |
}
|
| 155 |
|
| 156 |
/* Make a deposit call */
|
| 157 |
+
public function deposit($notificationurl, $enduserid, $messageid,
|
| 158 |
+
$locale=NULL, $amount=NULL, $currency=NULL, $country=NULL,
|
| 159 |
+
$mobilephone=NULL, $firstname=NULL, $lastname=NULL,
|
| 160 |
$nationalidentificationnumber=NULL, $shopperstatement=NULL,
|
| 161 |
$ip=NULL, $successurl=NULL, $failurl=NULL, $templateurl=NULL,
|
| 162 |
$urltarget=NULL, $suggestedminamount=NULL, $suggestedmaxamount=NULL,
|
| 169 |
);
|
| 170 |
|
| 171 |
$attributes = array(
|
| 172 |
+
'Locale' => $locale,
|
| 173 |
'Amount' => $amount,
|
| 174 |
'Currency' => $currency,
|
| 175 |
+
'Country' => $country,
|
| 176 |
'MobilePhone' => $mobilephone,
|
| 177 |
+
'Firstname' => $firstname,
|
| 178 |
+
'Lastname' => $lastname,
|
| 179 |
+
'NationalIdentificationNumber' => $nationalidentificationnumber,
|
| 180 |
'ShopperStatement' => $shopperstatement,
|
| 181 |
'IP' => $ip,
|
| 182 |
+
'SuccessURL' => $successurl,
|
| 183 |
'FailURL' => $failurl,
|
| 184 |
'TemplateURL' => $templateurl,
|
| 185 |
'URLTarget' => $urltarget,
|
| 190 |
|
| 191 |
$request = new Trustly_Data_JSONRPCRequest('Deposit', $data, $attributes);
|
| 192 |
return $this->call($request);
|
| 193 |
+
}
|
| 194 |
|
| 195 |
/* Make a refund call */
|
| 196 |
public function refund($orderid, $amount, $currency) {
|
| 206 |
}
|
| 207 |
|
| 208 |
/* Make a withdraw call */
|
| 209 |
+
public function withdraw($notificationurl, $enduserid, $messageid,
|
| 210 |
+
$locale=NULL, $currency=NULL, $country=NULL,
|
| 211 |
+
$mobilephone=NULL, $firstname=NULL, $lastname=NULL,
|
| 212 |
$nationalidentificationnumber=NULL, $clearinghouse=NULL,
|
| 213 |
$banknumber=NULL, $accountnumber=NULL) {
|
| 214 |
|
| 221 |
);
|
| 222 |
|
| 223 |
$attributes = array(
|
| 224 |
+
'Locale' => $locale,
|
| 225 |
+
'Country' => $country,
|
| 226 |
'MobilePhone' => $mobilephone,
|
| 227 |
+
'Firstname' => $firstname,
|
| 228 |
+
'Lastname' => $lastname,
|
| 229 |
+
'NationalIdentificationNumber' => $nationalidentificationnumber,
|
| 230 |
'ClearingHouse' => $clearinghouse,
|
| 231 |
'BankNumber' => $banknumber,
|
| 232 |
'AccountNumber' => $accountnumber,
|
| 234 |
|
| 235 |
$request = new Trustly_Data_JSONRPCRequest('Withdraw', $data, $attributes);
|
| 236 |
return $this->call($request);
|
| 237 |
+
}
|
| 238 |
|
| 239 |
/* Make an approvewithdrawal call */
|
| 240 |
public function approveWithdrawal($orderid) {
|
| 259 |
}
|
| 260 |
|
| 261 |
/* Make a select account call */
|
| 262 |
+
public function selectAccount($notificationurl, $enduserid, $messageid,
|
| 263 |
+
$locale=NULL, $country=NULL, $ip=NULL, $successurl=NULL, $urltarget=NULL,
|
| 264 |
+
$mobilephone=NULL, $firstname=NULL, $lastname=NULL) {
|
| 265 |
|
| 266 |
$data = array(
|
| 267 |
'NotificationURL' => $notificationurl,
|
| 270 |
);
|
| 271 |
|
| 272 |
$attributes = array(
|
| 273 |
+
'Locale' => $locale,
|
| 274 |
+
'Country' => $country,
|
| 275 |
+
'IP' => $ip,
|
| 276 |
+
'SuccessURL' => $successurl,
|
| 277 |
+
'URLTarget' => $urltarget,
|
| 278 |
+
'MobilePhone' => $mobilephone,
|
| 279 |
+
'Firstname' => $firstname,
|
| 280 |
+
'Lastname' => $lastname,
|
| 281 |
);
|
| 282 |
|
| 283 |
$request = new Trustly_Data_JSONRPCRequest('SelectAccount', $data, $attributes);
|
| 284 |
return $this->call($request);
|
| 285 |
}
|
| 286 |
|
| 287 |
+
public function registerAccount($enduserid, $clearinghouse, $banknumber,
|
| 288 |
+
$accountnumber, $firstname, $lastname, $mobilephone=NULL,
|
| 289 |
$nationalidentificationnumber=NULL, $address=NULL) {
|
| 290 |
|
| 291 |
$data = array(
|
| 293 |
'ClearingHouse' => $clearinghouse,
|
| 294 |
'BankNumber' => $banknumber,
|
| 295 |
'AccountNumber' => $accountnumber,
|
| 296 |
+
'Firstname' => $firstname,
|
| 297 |
+
'Lastname' => $lastname,
|
| 298 |
);
|
| 299 |
|
| 300 |
$attributes = array(
|
| 301 |
+
'MobilePhone' => $mobilephone,
|
| 302 |
+
'NationalIdentificationNumber' => $nationalidentificationnumber,
|
| 303 |
'Address' => $address
|
| 304 |
);
|
| 305 |
|
| 307 |
return $this->call($request);
|
| 308 |
}
|
| 309 |
|
| 310 |
+
public function accountPayout($notificationurl, $accountid, $enduserid,
|
| 311 |
$messageid, $amount, $currency) {
|
| 312 |
|
| 313 |
$data = array(
|
| 315 |
'EndUserID' => $enduserid,
|
| 316 |
'MessageID' => $messageid,
|
| 317 |
'AccountID' => $accountid,
|
| 318 |
+
'Amount' => $amount,
|
| 319 |
+
'Currency' => $currency,
|
| 320 |
);
|
| 321 |
|
| 322 |
$attributes = array(
|
| 327 |
}
|
| 328 |
|
| 329 |
public function p2p($notificationurl, $enduserid, $messageid, $ip,
|
| 330 |
+
$authorizeonly=NULL, $templatedata=NULL, $successurl=NULL,
|
| 331 |
$method=NULL, $lastname=NULL, $firstname=NULL, $urltarget=NULL,
|
| 332 |
$locale=NULL, $amount=NULL, $currency=NULL, $templateurl=NULL,
|
| 333 |
$displaycurrency=NULL) {
|
| 358 |
|
| 359 |
$request = new Trustly_Data_JSONRPCRequest('P2P', $data, $attributes);
|
| 360 |
return $this->call($request);
|
| 361 |
+
}
|
| 362 |
|
| 363 |
public function capture($orderid, $amount, $currency) {
|
| 364 |
|
| 394 |
return $api->hello();
|
| 395 |
}
|
| 396 |
}
|
| 397 |
+
/* vim: set noet cindent ts=4 ts=4 sw=4: */
|
|
|
app/code/community/Trustly/Trustly/lib/Trustly/Api/unsigned.php
CHANGED
|
@@ -1,19 +1,19 @@
|
|
| 1 |
<?php
|
| 2 |
-
|
| 3 |
* The MIT License (MIT)
|
| 4 |
-
*
|
| 5 |
* Copyright (c) 2014 Trustly Group AB
|
| 6 |
-
*
|
| 7 |
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 8 |
* of this software and associated documentation files (the "Software"), to deal
|
| 9 |
* in the Software without restriction, including without limitation the rights
|
| 10 |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 11 |
* copies of the Software, and to permit persons to whom the Software is
|
| 12 |
* furnished to do so, subject to the following conditions:
|
| 13 |
-
*
|
| 14 |
* The above copyright notice and this permission notice shall be included in
|
| 15 |
* all copies or substantial portions of the Software.
|
| 16 |
-
*
|
| 17 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 18 |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 19 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
@@ -24,8 +24,8 @@
|
|
| 24 |
*/
|
| 25 |
|
| 26 |
class Trustly_Api_Unsigned extends Trustly_Api {
|
| 27 |
-
/* Login criterias when using the unsigned API. Only used by the
|
| 28 |
-
* newSessionCookie() call which is called automatically before the
|
| 29 |
* first call */
|
| 30 |
var $api_username = NULL;
|
| 31 |
var $api_password = NULL;
|
|
@@ -45,7 +45,7 @@ class Trustly_Api_Unsigned extends Trustly_Api {
|
|
| 45 |
|
| 46 |
public function handleResponse($request, $body, $curl) {
|
| 47 |
/* No signature here, just build the response object */
|
| 48 |
-
|
| 49 |
}
|
| 50 |
|
| 51 |
public function insertCredentials($request) {
|
|
@@ -62,15 +62,15 @@ class Trustly_Api_Unsigned extends Trustly_Api {
|
|
| 62 |
return (bool)isset($this->session_uuid);
|
| 63 |
}
|
| 64 |
|
| 65 |
-
/* Call NewSessionCookie to obtain a session cookie we can use for the rest
|
| 66 |
-
* of our calls. This is automatically called when doing a call if we do
|
| 67 |
-
* not have a session. Call manually if needed at session timeout etc.
|
| 68 |
* */
|
| 69 |
public function newSessionCookie() {
|
| 70 |
$this->session_uuid = NULL;
|
| 71 |
|
| 72 |
$request = new Trustly_Data_JSONRPCRequest('NewSessionCookie');
|
| 73 |
-
/* Call parent directly here as we will attempt to detect the
|
| 74 |
* missing session uuid here and call this function if it is not set */
|
| 75 |
$response = parent::call($request);
|
| 76 |
|
|
@@ -85,29 +85,29 @@ class Trustly_Api_Unsigned extends Trustly_Api {
|
|
| 85 |
return $response;
|
| 86 |
}
|
| 87 |
|
| 88 |
-
/* Utility wrapper around a call() to GetViewStable to simply getting data
|
| 89 |
* from a view. */
|
| 90 |
-
public function getViewStable($viewname, $dateorder=NULL, $datestamp=NULL,
|
| 91 |
-
$filterkeys=NULL, $limit=100, $offset=0, $params=NULL, $sortby=NULL,
|
| 92 |
$sortorder=NULL) {
|
| 93 |
|
| 94 |
return $this->call('GetViewStable', array(
|
| 95 |
-
DateOrder => $dateorder,
|
| 96 |
-
Datestamp => $datestamp,
|
| 97 |
-
FilterKeys => $filterkeys,
|
| 98 |
-
Limit => $limit,
|
| 99 |
-
Offset => $offset,
|
| 100 |
-
Params => $params,
|
| 101 |
-
SortBy => $sortby,
|
| 102 |
-
SortOrder => $sortorder,
|
| 103 |
-
ViewName => $viewname,
|
| 104 |
));
|
| 105 |
}
|
| 106 |
|
| 107 |
-
/* Issue an unsigned API call. As the unsigned API contains a huge array of
|
| 108 |
-
* functions we will use the call() method directly for the majority of
|
| 109 |
-
* operations. The data in params will be matched into the parameters of
|
| 110 |
-
* the outgoing call. Take care when supplying the arguments for the call
|
| 111 |
* so they match the function prototype properly. */
|
| 112 |
public function call($method, $params=NULL) {
|
| 113 |
$request = new Trustly_Data_JSONRPCRequest($method);
|
|
@@ -127,12 +127,12 @@ class Trustly_Api_Unsigned extends Trustly_Api {
|
|
| 127 |
|
| 128 |
public function hello() {
|
| 129 |
$request = new Trustly_Data_JSONRPCRequest('Hello');
|
| 130 |
-
/* Call parent directly here we never want to get a new session
|
| 131 |
-
* uuid for just this single call, if we have it use it, but
|
| 132 |
* otherwise just live happliy */
|
| 133 |
$response = parent::call($request);
|
| 134 |
|
| 135 |
return $response;
|
| 136 |
}
|
| 137 |
}
|
| 138 |
-
|
| 1 |
<?php
|
| 2 |
+
/**
|
| 3 |
* The MIT License (MIT)
|
| 4 |
+
*
|
| 5 |
* Copyright (c) 2014 Trustly Group AB
|
| 6 |
+
*
|
| 7 |
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 8 |
* of this software and associated documentation files (the "Software"), to deal
|
| 9 |
* in the Software without restriction, including without limitation the rights
|
| 10 |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 11 |
* copies of the Software, and to permit persons to whom the Software is
|
| 12 |
* furnished to do so, subject to the following conditions:
|
| 13 |
+
*
|
| 14 |
* The above copyright notice and this permission notice shall be included in
|
| 15 |
* all copies or substantial portions of the Software.
|
| 16 |
+
*
|
| 17 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 18 |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 19 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 24 |
*/
|
| 25 |
|
| 26 |
class Trustly_Api_Unsigned extends Trustly_Api {
|
| 27 |
+
/* Login criterias when using the unsigned API. Only used by the
|
| 28 |
+
* newSessionCookie() call which is called automatically before the
|
| 29 |
* first call */
|
| 30 |
var $api_username = NULL;
|
| 31 |
var $api_password = NULL;
|
| 45 |
|
| 46 |
public function handleResponse($request, $body, $curl) {
|
| 47 |
/* No signature here, just build the response object */
|
| 48 |
+
return new Trustly_Data_JSONRPCResponse($body, $curl);
|
| 49 |
}
|
| 50 |
|
| 51 |
public function insertCredentials($request) {
|
| 62 |
return (bool)isset($this->session_uuid);
|
| 63 |
}
|
| 64 |
|
| 65 |
+
/* Call NewSessionCookie to obtain a session cookie we can use for the rest
|
| 66 |
+
* of our calls. This is automatically called when doing a call if we do
|
| 67 |
+
* not have a session. Call manually if needed at session timeout etc.
|
| 68 |
* */
|
| 69 |
public function newSessionCookie() {
|
| 70 |
$this->session_uuid = NULL;
|
| 71 |
|
| 72 |
$request = new Trustly_Data_JSONRPCRequest('NewSessionCookie');
|
| 73 |
+
/* Call parent directly here as we will attempt to detect the
|
| 74 |
* missing session uuid here and call this function if it is not set */
|
| 75 |
$response = parent::call($request);
|
| 76 |
|
| 85 |
return $response;
|
| 86 |
}
|
| 87 |
|
| 88 |
+
/* Utility wrapper around a call() to GetViewStable to simply getting data
|
| 89 |
* from a view. */
|
| 90 |
+
public function getViewStable($viewname, $dateorder=NULL, $datestamp=NULL,
|
| 91 |
+
$filterkeys=NULL, $limit=100, $offset=0, $params=NULL, $sortby=NULL,
|
| 92 |
$sortorder=NULL) {
|
| 93 |
|
| 94 |
return $this->call('GetViewStable', array(
|
| 95 |
+
'DateOrder' => $dateorder,
|
| 96 |
+
'Datestamp' => $datestamp,
|
| 97 |
+
'FilterKeys' => $filterkeys,
|
| 98 |
+
'Limit' => $limit,
|
| 99 |
+
'Offset' => $offset,
|
| 100 |
+
'Params' => $params,
|
| 101 |
+
'SortBy' => $sortby,
|
| 102 |
+
'SortOrder' => $sortorder,
|
| 103 |
+
'ViewName' => $viewname,
|
| 104 |
));
|
| 105 |
}
|
| 106 |
|
| 107 |
+
/* Issue an unsigned API call. As the unsigned API contains a huge array of
|
| 108 |
+
* functions we will use the call() method directly for the majority of
|
| 109 |
+
* operations. The data in params will be matched into the parameters of
|
| 110 |
+
* the outgoing call. Take care when supplying the arguments for the call
|
| 111 |
* so they match the function prototype properly. */
|
| 112 |
public function call($method, $params=NULL) {
|
| 113 |
$request = new Trustly_Data_JSONRPCRequest($method);
|
| 127 |
|
| 128 |
public function hello() {
|
| 129 |
$request = new Trustly_Data_JSONRPCRequest('Hello');
|
| 130 |
+
/* Call parent directly here we never want to get a new session
|
| 131 |
+
* uuid for just this single call, if we have it use it, but
|
| 132 |
* otherwise just live happliy */
|
| 133 |
$response = parent::call($request);
|
| 134 |
|
| 135 |
return $response;
|
| 136 |
}
|
| 137 |
}
|
| 138 |
+
/* vim: set noet cindent ts=4 ts=4 sw=4: */
|
app/code/community/Trustly/Trustly/lib/Trustly/Data/data.php
CHANGED
|
@@ -1,19 +1,19 @@
|
|
| 1 |
<?php
|
| 2 |
-
|
| 3 |
* The MIT License (MIT)
|
| 4 |
-
*
|
| 5 |
* Copyright (c) 2014 Trustly Group AB
|
| 6 |
-
*
|
| 7 |
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 8 |
* of this software and associated documentation files (the "Software"), to deal
|
| 9 |
* in the Software without restriction, including without limitation the rights
|
| 10 |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 11 |
* copies of the Software, and to permit persons to whom the Software is
|
| 12 |
* furnished to do so, subject to the following conditions:
|
| 13 |
-
*
|
| 14 |
* The above copyright notice and this permission notice shall be included in
|
| 15 |
* all copies or substantial portions of the Software.
|
| 16 |
-
*
|
| 17 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 18 |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 19 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
@@ -35,8 +35,8 @@ class Trustly_Data {
|
|
| 35 |
}
|
| 36 |
}
|
| 37 |
|
| 38 |
-
/* Utility function to vacuum the supplied data end remove unset
|
| 39 |
-
* values. This is used to keep the requests cleaner rather then
|
| 40 |
* supplying NULL values in the payload */
|
| 41 |
public function vacuum($data) {
|
| 42 |
if(is_null($data)) {
|
|
@@ -58,7 +58,7 @@ class Trustly_Data {
|
|
| 58 |
}
|
| 59 |
}
|
| 60 |
|
| 61 |
-
/* Get the specific data value from the payload or the full payload if
|
| 62 |
* no value is supplied */
|
| 63 |
public function get($name=NULL) {
|
| 64 |
if($name === NULL) {
|
|
@@ -71,7 +71,7 @@ class Trustly_Data {
|
|
| 71 |
return NULL;
|
| 72 |
}
|
| 73 |
|
| 74 |
-
/* Funciton to ensure that the given value is in UTF8. Used to make sure
|
| 75 |
* all outgoing data is properly encoded in the call */
|
| 76 |
public static function ensureUTF8($str) {
|
| 77 |
if($str == NULL) {
|
|
@@ -112,8 +112,8 @@ class Trustly_Data {
|
|
| 112 |
}
|
| 113 |
}
|
| 114 |
|
| 115 |
-
/* Extremely naivly done and does not by far handle all cases, but
|
| 116 |
-
* handles the case it should, i.e. sort the data for the json
|
| 117 |
* pretty printer */
|
| 118 |
private function sortRecursive(&$data) {
|
| 119 |
if(is_array($data)) {
|
|
@@ -128,5 +128,4 @@ class Trustly_Data {
|
|
| 128 |
}
|
| 129 |
|
| 130 |
}
|
| 131 |
-
|
| 132 |
-
?>
|
| 1 |
<?php
|
| 2 |
+
/**
|
| 3 |
* The MIT License (MIT)
|
| 4 |
+
*
|
| 5 |
* Copyright (c) 2014 Trustly Group AB
|
| 6 |
+
*
|
| 7 |
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 8 |
* of this software and associated documentation files (the "Software"), to deal
|
| 9 |
* in the Software without restriction, including without limitation the rights
|
| 10 |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 11 |
* copies of the Software, and to permit persons to whom the Software is
|
| 12 |
* furnished to do so, subject to the following conditions:
|
| 13 |
+
*
|
| 14 |
* The above copyright notice and this permission notice shall be included in
|
| 15 |
* all copies or substantial portions of the Software.
|
| 16 |
+
*
|
| 17 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 18 |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 19 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 35 |
}
|
| 36 |
}
|
| 37 |
|
| 38 |
+
/* Utility function to vacuum the supplied data end remove unset
|
| 39 |
+
* values. This is used to keep the requests cleaner rather then
|
| 40 |
* supplying NULL values in the payload */
|
| 41 |
public function vacuum($data) {
|
| 42 |
if(is_null($data)) {
|
| 58 |
}
|
| 59 |
}
|
| 60 |
|
| 61 |
+
/* Get the specific data value from the payload or the full payload if
|
| 62 |
* no value is supplied */
|
| 63 |
public function get($name=NULL) {
|
| 64 |
if($name === NULL) {
|
| 71 |
return NULL;
|
| 72 |
}
|
| 73 |
|
| 74 |
+
/* Funciton to ensure that the given value is in UTF8. Used to make sure
|
| 75 |
* all outgoing data is properly encoded in the call */
|
| 76 |
public static function ensureUTF8($str) {
|
| 77 |
if($str == NULL) {
|
| 112 |
}
|
| 113 |
}
|
| 114 |
|
| 115 |
+
/* Extremely naivly done and does not by far handle all cases, but
|
| 116 |
+
* handles the case it should, i.e. sort the data for the json
|
| 117 |
* pretty printer */
|
| 118 |
private function sortRecursive(&$data) {
|
| 119 |
if(is_array($data)) {
|
| 128 |
}
|
| 129 |
|
| 130 |
}
|
| 131 |
+
/* vim: set noet cindent ts=4 ts=4 sw=4: */
|
|
|
app/code/community/Trustly/Trustly/lib/Trustly/Data/jsonrpcnotificationrequest.php
CHANGED
|
@@ -1,19 +1,19 @@
|
|
| 1 |
<?php
|
| 2 |
-
|
| 3 |
* The MIT License (MIT)
|
| 4 |
-
*
|
| 5 |
* Copyright (c) 2014 Trustly Group AB
|
| 6 |
-
*
|
| 7 |
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 8 |
* of this software and associated documentation files (the "Software"), to deal
|
| 9 |
* in the Software without restriction, including without limitation the rights
|
| 10 |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 11 |
* copies of the Software, and to permit persons to whom the Software is
|
| 12 |
* furnished to do so, subject to the following conditions:
|
| 13 |
-
*
|
| 14 |
* The above copyright notice and this permission notice shall be included in
|
| 15 |
* all copies or substantial portions of the Software.
|
| 16 |
-
*
|
| 17 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 18 |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 19 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
@@ -84,5 +84,4 @@ class Trustly_Data_JSONRPCNotificationRequest extends Trustly_Data {
|
|
| 84 |
return $this->get('version');
|
| 85 |
}
|
| 86 |
}
|
| 87 |
-
|
| 88 |
-
?>
|
| 1 |
<?php
|
| 2 |
+
/**
|
| 3 |
* The MIT License (MIT)
|
| 4 |
+
*
|
| 5 |
* Copyright (c) 2014 Trustly Group AB
|
| 6 |
+
*
|
| 7 |
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 8 |
* of this software and associated documentation files (the "Software"), to deal
|
| 9 |
* in the Software without restriction, including without limitation the rights
|
| 10 |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 11 |
* copies of the Software, and to permit persons to whom the Software is
|
| 12 |
* furnished to do so, subject to the following conditions:
|
| 13 |
+
*
|
| 14 |
* The above copyright notice and this permission notice shall be included in
|
| 15 |
* all copies or substantial portions of the Software.
|
| 16 |
+
*
|
| 17 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 18 |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 19 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 84 |
return $this->get('version');
|
| 85 |
}
|
| 86 |
}
|
| 87 |
+
/* vim: set noet cindent ts=4 ts=4 sw=4: */
|
|
|
app/code/community/Trustly/Trustly/lib/Trustly/Data/jsonrpcnotificationresponse.php
CHANGED
|
@@ -1,19 +1,19 @@
|
|
| 1 |
<?php
|
| 2 |
-
|
| 3 |
* The MIT License (MIT)
|
| 4 |
-
*
|
| 5 |
* Copyright (c) 2014 Trustly Group AB
|
| 6 |
-
*
|
| 7 |
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 8 |
* of this software and associated documentation files (the "Software"), to deal
|
| 9 |
* in the Software without restriction, including without limitation the rights
|
| 10 |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 11 |
* copies of the Software, and to permit persons to whom the Software is
|
| 12 |
* furnished to do so, subject to the following conditions:
|
| 13 |
-
*
|
| 14 |
* The above copyright notice and this permission notice shall be included in
|
| 15 |
* all copies or substantial portions of the Software.
|
| 16 |
-
*
|
| 17 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 18 |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 19 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
@@ -122,6 +122,4 @@ class Trustly_Data_JSONRPCNotificationResponse extends Trustly_Data {
|
|
| 122 |
return $this->getResult('uuid');
|
| 123 |
}
|
| 124 |
}
|
| 125 |
-
|
| 126 |
-
|
| 127 |
-
?>
|
| 1 |
<?php
|
| 2 |
+
/**
|
| 3 |
* The MIT License (MIT)
|
| 4 |
+
*
|
| 5 |
* Copyright (c) 2014 Trustly Group AB
|
| 6 |
+
*
|
| 7 |
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 8 |
* of this software and associated documentation files (the "Software"), to deal
|
| 9 |
* in the Software without restriction, including without limitation the rights
|
| 10 |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 11 |
* copies of the Software, and to permit persons to whom the Software is
|
| 12 |
* furnished to do so, subject to the following conditions:
|
| 13 |
+
*
|
| 14 |
* The above copyright notice and this permission notice shall be included in
|
| 15 |
* all copies or substantial portions of the Software.
|
| 16 |
+
*
|
| 17 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 18 |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 19 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 122 |
return $this->getResult('uuid');
|
| 123 |
}
|
| 124 |
}
|
| 125 |
+
/* vim: set noet cindent ts=4 ts=4 sw=4: */
|
|
|
|
|
|
app/code/community/Trustly/Trustly/lib/Trustly/Data/jsonrpcrequest.php
CHANGED
|
@@ -1,19 +1,19 @@
|
|
| 1 |
<?php
|
| 2 |
-
|
| 3 |
* The MIT License (MIT)
|
| 4 |
-
*
|
| 5 |
* Copyright (c) 2014 Trustly Group AB
|
| 6 |
-
*
|
| 7 |
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 8 |
* of this software and associated documentation files (the "Software"), to deal
|
| 9 |
* in the Software without restriction, including without limitation the rights
|
| 10 |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 11 |
* copies of the Software, and to permit persons to whom the Software is
|
| 12 |
* furnished to do so, subject to the following conditions:
|
| 13 |
-
*
|
| 14 |
* The above copyright notice and this permission notice shall be included in
|
| 15 |
* all copies or substantial portions of the Software.
|
| 16 |
-
*
|
| 17 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 18 |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 19 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
@@ -60,7 +60,7 @@ class Trustly_Data_JSONRPCRequest extends Trustly_Data_Request {
|
|
| 60 |
|
| 61 |
}
|
| 62 |
|
| 63 |
-
/* Three functions for getting, setting, or getting and removing value
|
| 64 |
* in the 'params' section of the request payload */
|
| 65 |
public function setParam($name, $value) {
|
| 66 |
$this->payload['params'][$name] = Trustly_Data::ensureUTF8($value);
|
|
@@ -103,7 +103,7 @@ class Trustly_Data_JSONRPCRequest extends Trustly_Data_Request {
|
|
| 103 |
return $this->get('method');
|
| 104 |
}
|
| 105 |
|
| 106 |
-
/* Two utility function for setting or getting data from the
|
| 107 |
* 'params'->'Data' part of the payload. */
|
| 108 |
public function setData($name, $value) {
|
| 109 |
if(!isset($this->payload['params']['Data'])) {
|
|
@@ -126,7 +126,7 @@ class Trustly_Data_JSONRPCRequest extends Trustly_Data_Request {
|
|
| 126 |
return NULL;
|
| 127 |
}
|
| 128 |
|
| 129 |
-
/* Two utility function for setting or getting data from the
|
| 130 |
* 'params'->'Data'->'Attributes' part of the payload. */
|
| 131 |
public function setAttribute($name, $value) {
|
| 132 |
if(!isset($this->payload['params']['Data'])) {
|
|
@@ -147,4 +147,4 @@ class Trustly_Data_JSONRPCRequest extends Trustly_Data_Request {
|
|
| 147 |
return NULL;
|
| 148 |
}
|
| 149 |
}
|
| 150 |
-
|
| 1 |
<?php
|
| 2 |
+
/**
|
| 3 |
* The MIT License (MIT)
|
| 4 |
+
*
|
| 5 |
* Copyright (c) 2014 Trustly Group AB
|
| 6 |
+
*
|
| 7 |
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 8 |
* of this software and associated documentation files (the "Software"), to deal
|
| 9 |
* in the Software without restriction, including without limitation the rights
|
| 10 |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 11 |
* copies of the Software, and to permit persons to whom the Software is
|
| 12 |
* furnished to do so, subject to the following conditions:
|
| 13 |
+
*
|
| 14 |
* The above copyright notice and this permission notice shall be included in
|
| 15 |
* all copies or substantial portions of the Software.
|
| 16 |
+
*
|
| 17 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 18 |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 19 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 60 |
|
| 61 |
}
|
| 62 |
|
| 63 |
+
/* Three functions for getting, setting, or getting and removing value
|
| 64 |
* in the 'params' section of the request payload */
|
| 65 |
public function setParam($name, $value) {
|
| 66 |
$this->payload['params'][$name] = Trustly_Data::ensureUTF8($value);
|
| 103 |
return $this->get('method');
|
| 104 |
}
|
| 105 |
|
| 106 |
+
/* Two utility function for setting or getting data from the
|
| 107 |
* 'params'->'Data' part of the payload. */
|
| 108 |
public function setData($name, $value) {
|
| 109 |
if(!isset($this->payload['params']['Data'])) {
|
| 126 |
return NULL;
|
| 127 |
}
|
| 128 |
|
| 129 |
+
/* Two utility function for setting or getting data from the
|
| 130 |
* 'params'->'Data'->'Attributes' part of the payload. */
|
| 131 |
public function setAttribute($name, $value) {
|
| 132 |
if(!isset($this->payload['params']['Data'])) {
|
| 147 |
return NULL;
|
| 148 |
}
|
| 149 |
}
|
| 150 |
+
/* vim: set noet cindent ts=4 ts=4 sw=4: */
|
app/code/community/Trustly/Trustly/lib/Trustly/Data/jsonrpcresponse.php
CHANGED
|
@@ -1,19 +1,19 @@
|
|
| 1 |
<?php
|
| 2 |
-
|
| 3 |
* The MIT License (MIT)
|
| 4 |
-
*
|
| 5 |
* Copyright (c) 2014 Trustly Group AB
|
| 6 |
-
*
|
| 7 |
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 8 |
* of this software and associated documentation files (the "Software"), to deal
|
| 9 |
* in the Software without restriction, including without limitation the rights
|
| 10 |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 11 |
* copies of the Software, and to permit persons to whom the Software is
|
| 12 |
* furnished to do so, subject to the following conditions:
|
| 13 |
-
*
|
| 14 |
* The above copyright notice and this permission notice shall be included in
|
| 15 |
* all copies or substantial portions of the Software.
|
| 16 |
-
*
|
| 17 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 18 |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 19 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
@@ -33,41 +33,43 @@ class Trustly_Data_JSONRPCResponse extends Trustly_Data_Response {
|
|
| 33 |
throw new Trustly_JSONRPCVersionException("JSON RPC Version $version is not supported. " . json_encode($this->payload));
|
| 34 |
}
|
| 35 |
|
| 36 |
-
|
| 37 |
-
|
| 38 |
-
|
| 39 |
-
|
| 40 |
-
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
| 51 |
-
|
| 52 |
-
|
| 53 |
-
|
| 54 |
-
|
| 55 |
-
|
|
|
|
|
|
|
|
|
|
| 56 |
}
|
| 57 |
|
| 58 |
public function getErrorCode() {
|
| 59 |
-
if($this->isError() && isset($this->response_result['
|
| 60 |
-
return $this->response_result['
|
| 61 |
}
|
| 62 |
return NULL;
|
| 63 |
}
|
| 64 |
|
| 65 |
public function getErrorMessage() {
|
| 66 |
-
if($this->isError() && isset($this->response_result['
|
| 67 |
-
return $this->response_result['
|
| 68 |
}
|
| 69 |
return NULL;
|
| 70 |
}
|
| 71 |
}
|
| 72 |
-
|
| 73 |
-
?>
|
| 1 |
<?php
|
| 2 |
+
/**
|
| 3 |
* The MIT License (MIT)
|
| 4 |
+
*
|
| 5 |
* Copyright (c) 2014 Trustly Group AB
|
| 6 |
+
*
|
| 7 |
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 8 |
* of this software and associated documentation files (the "Software"), to deal
|
| 9 |
* in the Software without restriction, including without limitation the rights
|
| 10 |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 11 |
* copies of the Software, and to permit persons to whom the Software is
|
| 12 |
* furnished to do so, subject to the following conditions:
|
| 13 |
+
*
|
| 14 |
* The above copyright notice and this permission notice shall be included in
|
| 15 |
* all copies or substantial portions of the Software.
|
| 16 |
+
*
|
| 17 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 18 |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 19 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 33 |
throw new Trustly_JSONRPCVersionException("JSON RPC Version $version is not supported. " . json_encode($this->payload));
|
| 34 |
}
|
| 35 |
|
| 36 |
+
/* An unsigned JSON RPC Error result basically looks like this:
|
| 37 |
+
* {
|
| 38 |
+
* "version": "1.1",
|
| 39 |
+
* "error": {
|
| 40 |
+
* "name": "JSONRPCError",
|
| 41 |
+
* "code": 620,
|
| 42 |
+
* "message": "ERROR_UNKNOWN"
|
| 43 |
+
* }
|
| 44 |
+
* }
|
| 45 |
+
*
|
| 46 |
+
* And a unsigned result will be on the form:
|
| 47 |
+
* {
|
| 48 |
+
* "version": "1.1",
|
| 49 |
+
* "result": {
|
| 50 |
+
* "now": "...",
|
| 51 |
+
* "data": []
|
| 52 |
+
* }
|
| 53 |
+
* }
|
| 54 |
+
*
|
| 55 |
+
* We want response_result to always be the result of the
|
| 56 |
+
* operation, The Trustly_Data will point response_result /result
|
| 57 |
+
* or /error respectivly, we need to do nothing extra here
|
| 58 |
+
* */
|
| 59 |
}
|
| 60 |
|
| 61 |
public function getErrorCode() {
|
| 62 |
+
if($this->isError() && isset($this->response_result['code'])) {
|
| 63 |
+
return $this->response_result['code'];
|
| 64 |
}
|
| 65 |
return NULL;
|
| 66 |
}
|
| 67 |
|
| 68 |
public function getErrorMessage() {
|
| 69 |
+
if($this->isError() && isset($this->response_result['message'])) {
|
| 70 |
+
return $this->response_result['message'];
|
| 71 |
}
|
| 72 |
return NULL;
|
| 73 |
}
|
| 74 |
}
|
| 75 |
+
/* vim: set noet cindent ts=4 ts=4 sw=4: */
|
|
|
app/code/community/Trustly/Trustly/lib/Trustly/Data/jsonrpcsignedresponse.php
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/*
|
| 3 |
+
* The MIT License (MIT)
|
| 4 |
+
*
|
| 5 |
+
* Copyright (c) 2014 Trustly Group AB
|
| 6 |
+
*
|
| 7 |
+
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 8 |
+
* of this software and associated documentation files (the "Software"), to deal
|
| 9 |
+
* in the Software without restriction, including without limitation the rights
|
| 10 |
+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 11 |
+
* copies of the Software, and to permit persons to whom the Software is
|
| 12 |
+
* furnished to do so, subject to the following conditions:
|
| 13 |
+
*
|
| 14 |
+
* The above copyright notice and this permission notice shall be included in
|
| 15 |
+
* all copies or substantial portions of the Software.
|
| 16 |
+
*
|
| 17 |
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 18 |
+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 19 |
+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 20 |
+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
| 21 |
+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
| 22 |
+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
| 23 |
+
* THE SOFTWARE.
|
| 24 |
+
*/
|
| 25 |
+
|
| 26 |
+
class Trustly_Data_JSONRPCSignedResponse extends Trustly_Data_JSONRPCResponse {
|
| 27 |
+
public function __construct($response_body, $curl) {
|
| 28 |
+
parent::__construct($response_body, $curl);
|
| 29 |
+
|
| 30 |
+
/* A signed JSON RPC Error result basically looks like this:
|
| 31 |
+
* {
|
| 32 |
+
* "version": "1.1",
|
| 33 |
+
* "error": {
|
| 34 |
+
* "error": {
|
| 35 |
+
* "signature": "...",
|
| 36 |
+
* "data": {
|
| 37 |
+
* "code": 620,
|
| 38 |
+
* "message": "ERROR_UNKNOWN"
|
| 39 |
+
* },
|
| 40 |
+
* "method": "...",
|
| 41 |
+
* "uuid": "..."
|
| 42 |
+
* },
|
| 43 |
+
* "name": "JSONRPCError",
|
| 44 |
+
* "code": 620,
|
| 45 |
+
* "message": "ERROR_UNKNOWN"
|
| 46 |
+
* }
|
| 47 |
+
* }
|
| 48 |
+
*
|
| 49 |
+
* A good signed result will be on the form:
|
| 50 |
+
* {
|
| 51 |
+
* "version": "1.1",
|
| 52 |
+
* "result": {
|
| 53 |
+
* "signature": "...",
|
| 54 |
+
* "method": "...",
|
| 55 |
+
* "data": {
|
| 56 |
+
* "url": "...",
|
| 57 |
+
* "orderid": "..."
|
| 58 |
+
* },
|
| 59 |
+
* "uuid": "...",
|
| 60 |
+
* }
|
| 61 |
+
* }
|
| 62 |
+
*
|
| 63 |
+
* The Trustly_Data will point response_result /result or /error respectivly, we need to take care of the signed part here only.
|
| 64 |
+
* */
|
| 65 |
+
if($this->isError()) {
|
| 66 |
+
$this->response_result = $this->response_result['error'];
|
| 67 |
+
}
|
| 68 |
+
}
|
| 69 |
+
|
| 70 |
+
public function getData($name=NULL) {
|
| 71 |
+
$data = NULL;
|
| 72 |
+
|
| 73 |
+
if(isset($this->response_result['data'])) {
|
| 74 |
+
$data = $this->response_result['data'];
|
| 75 |
+
}else {
|
| 76 |
+
return NULL;
|
| 77 |
+
}
|
| 78 |
+
|
| 79 |
+
if(isset($name)) {
|
| 80 |
+
if(isset($data[$name])) {
|
| 81 |
+
return $data[$name];
|
| 82 |
+
}
|
| 83 |
+
} else {
|
| 84 |
+
return $data;
|
| 85 |
+
}
|
| 86 |
+
}
|
| 87 |
+
|
| 88 |
+
public function getErrorCode() {
|
| 89 |
+
if($this->isError() && isset($this->response_result['data']['code'])) {
|
| 90 |
+
return $this->response_result['data']['code'];
|
| 91 |
+
}
|
| 92 |
+
return NULL;
|
| 93 |
+
}
|
| 94 |
+
|
| 95 |
+
public function getErrorMessage() {
|
| 96 |
+
if($this->isError() && isset($this->response_result['data']['message'])) {
|
| 97 |
+
return $this->response_result['data']['message'];
|
| 98 |
+
}
|
| 99 |
+
return NULL;
|
| 100 |
+
}
|
| 101 |
+
}
|
| 102 |
+
/* vim: set noet cindent ts=4 ts=4 sw=4: */
|
app/code/community/Trustly/Trustly/lib/Trustly/Data/request.php
CHANGED
|
@@ -1,19 +1,19 @@
|
|
| 1 |
<?php
|
| 2 |
-
|
| 3 |
* The MIT License (MIT)
|
| 4 |
-
*
|
| 5 |
* Copyright (c) 2014 Trustly Group AB
|
| 6 |
-
*
|
| 7 |
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 8 |
* of this software and associated documentation files (the "Software"), to deal
|
| 9 |
* in the Software without restriction, including without limitation the rights
|
| 10 |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 11 |
* copies of the Software, and to permit persons to whom the Software is
|
| 12 |
* furnished to do so, subject to the following conditions:
|
| 13 |
-
*
|
| 14 |
* The above copyright notice and this permission notice shall be included in
|
| 15 |
* all copies or substantial portions of the Software.
|
| 16 |
-
*
|
| 17 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 18 |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 19 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
@@ -53,5 +53,4 @@ class Trustly_Data_Request extends Trustly_Data {
|
|
| 53 |
$this->method = $method;
|
| 54 |
}
|
| 55 |
}
|
| 56 |
-
|
| 57 |
-
?>
|
| 1 |
<?php
|
| 2 |
+
/**
|
| 3 |
* The MIT License (MIT)
|
| 4 |
+
*
|
| 5 |
* Copyright (c) 2014 Trustly Group AB
|
| 6 |
+
*
|
| 7 |
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 8 |
* of this software and associated documentation files (the "Software"), to deal
|
| 9 |
* in the Software without restriction, including without limitation the rights
|
| 10 |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 11 |
* copies of the Software, and to permit persons to whom the Software is
|
| 12 |
* furnished to do so, subject to the following conditions:
|
| 13 |
+
*
|
| 14 |
* The above copyright notice and this permission notice shall be included in
|
| 15 |
* all copies or substantial portions of the Software.
|
| 16 |
+
*
|
| 17 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 18 |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 19 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 53 |
$this->method = $method;
|
| 54 |
}
|
| 55 |
}
|
| 56 |
+
/* vim: set noet cindent ts=4 ts=4 sw=4: */
|
|
|
app/code/community/Trustly/Trustly/lib/Trustly/Data/response.php
CHANGED
|
@@ -1,19 +1,19 @@
|
|
| 1 |
<?php
|
| 2 |
-
|
| 3 |
* The MIT License (MIT)
|
| 4 |
-
*
|
| 5 |
* Copyright (c) 2014 Trustly Group AB
|
| 6 |
-
*
|
| 7 |
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 8 |
* of this software and associated documentation files (the "Software"), to deal
|
| 9 |
* in the Software without restriction, including without limitation the rights
|
| 10 |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 11 |
* copies of the Software, and to permit persons to whom the Software is
|
| 12 |
* furnished to do so, subject to the following conditions:
|
| 13 |
-
*
|
| 14 |
* The above copyright notice and this permission notice shall be included in
|
| 15 |
* all copies or substantial portions of the Software.
|
| 16 |
-
*
|
| 17 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 18 |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 19 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
@@ -28,19 +28,19 @@ class Trustly_Data_Response extends Trustly_Data {
|
|
| 28 |
var $response_body = NULL;
|
| 29 |
/* The response HTTP code */
|
| 30 |
var $response_code = NULL;
|
| 31 |
-
/* Shortcut to the part of the result being actually interesting. The
|
| 32 |
* guts will contain all returned data. */
|
| 33 |
var $response_result = NULL;
|
| 34 |
|
| 35 |
public function __construct($response_body, $curl) {
|
| 36 |
|
| 37 |
-
$this->response_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
| 38 |
$this->response_body = $response_body;
|
| 39 |
|
| 40 |
$payload = json_decode($response_body, TRUE);
|
| 41 |
if($payload === FALSE) {
|
| 42 |
-
/* Only throw the connection error exception here if we did not
|
| 43 |
-
* receive a valid JSON response, if we did recive one we will use
|
| 44 |
* the error information in that response instead. */
|
| 45 |
if($this->response_code !== 200) {
|
| 46 |
throw new Trustly_ConnectionException('HTTP ' . $this->response_code);
|
|
@@ -50,8 +50,8 @@ class Trustly_Data_Response extends Trustly_Data {
|
|
| 50 |
}
|
| 51 |
parent::__construct($payload);
|
| 52 |
|
| 53 |
-
/* Attempt to detect the type of the response. A successful call
|
| 54 |
-
* will have a 'result' on toplevel in the payload, while an
|
| 55 |
* failure will have a 'error' on the tyoplevel */
|
| 56 |
$this->response_result = &$this->payload['result'];
|
| 57 |
if($this->response_result === NULL) {
|
|
@@ -128,5 +128,4 @@ class Trustly_Data_Response extends Trustly_Data {
|
|
| 128 |
return NULL;
|
| 129 |
}
|
| 130 |
}
|
| 131 |
-
|
| 132 |
-
?>
|
| 1 |
<?php
|
| 2 |
+
/**
|
| 3 |
* The MIT License (MIT)
|
| 4 |
+
*
|
| 5 |
* Copyright (c) 2014 Trustly Group AB
|
| 6 |
+
*
|
| 7 |
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 8 |
* of this software and associated documentation files (the "Software"), to deal
|
| 9 |
* in the Software without restriction, including without limitation the rights
|
| 10 |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 11 |
* copies of the Software, and to permit persons to whom the Software is
|
| 12 |
* furnished to do so, subject to the following conditions:
|
| 13 |
+
*
|
| 14 |
* The above copyright notice and this permission notice shall be included in
|
| 15 |
* all copies or substantial portions of the Software.
|
| 16 |
+
*
|
| 17 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 18 |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 19 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 28 |
var $response_body = NULL;
|
| 29 |
/* The response HTTP code */
|
| 30 |
var $response_code = NULL;
|
| 31 |
+
/* Shortcut to the part of the result being actually interesting. The
|
| 32 |
* guts will contain all returned data. */
|
| 33 |
var $response_result = NULL;
|
| 34 |
|
| 35 |
public function __construct($response_body, $curl) {
|
| 36 |
|
| 37 |
+
$this->response_code = curl_getinfo($curl, CURLINFO_HTTP_CODE);
|
| 38 |
$this->response_body = $response_body;
|
| 39 |
|
| 40 |
$payload = json_decode($response_body, TRUE);
|
| 41 |
if($payload === FALSE) {
|
| 42 |
+
/* Only throw the connection error exception here if we did not
|
| 43 |
+
* receive a valid JSON response, if we did recive one we will use
|
| 44 |
* the error information in that response instead. */
|
| 45 |
if($this->response_code !== 200) {
|
| 46 |
throw new Trustly_ConnectionException('HTTP ' . $this->response_code);
|
| 50 |
}
|
| 51 |
parent::__construct($payload);
|
| 52 |
|
| 53 |
+
/* Attempt to detect the type of the response. A successful call
|
| 54 |
+
* will have a 'result' on toplevel in the payload, while an
|
| 55 |
* failure will have a 'error' on the tyoplevel */
|
| 56 |
$this->response_result = &$this->payload['result'];
|
| 57 |
if($this->response_result === NULL) {
|
| 128 |
return NULL;
|
| 129 |
}
|
| 130 |
}
|
| 131 |
+
/* vim: set noet cindent ts=4 ts=4 sw=4: */
|
|
|
app/code/community/Trustly/Trustly/lib/Trustly/exceptions.php
CHANGED
|
@@ -1,19 +1,19 @@
|
|
| 1 |
<?php
|
| 2 |
-
|
| 3 |
* The MIT License (MIT)
|
| 4 |
-
*
|
| 5 |
* Copyright (c) 2014 Trustly Group AB
|
| 6 |
-
*
|
| 7 |
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 8 |
* of this software and associated documentation files (the "Software"), to deal
|
| 9 |
* in the Software without restriction, including without limitation the rights
|
| 10 |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 11 |
* copies of the Software, and to permit persons to whom the Software is
|
| 12 |
* furnished to do so, subject to the following conditions:
|
| 13 |
-
*
|
| 14 |
* The above copyright notice and this permission notice shall be included in
|
| 15 |
* all copies or substantial portions of the Software.
|
| 16 |
-
*
|
| 17 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 18 |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 19 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
@@ -43,4 +43,4 @@ class Trustly_DataException extends Exception { }
|
|
| 43 |
|
| 44 |
class Trustly_AuthentificationException extends Exception { }
|
| 45 |
|
| 46 |
-
|
| 1 |
<?php
|
| 2 |
+
/**
|
| 3 |
* The MIT License (MIT)
|
| 4 |
+
*
|
| 5 |
* Copyright (c) 2014 Trustly Group AB
|
| 6 |
+
*
|
| 7 |
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
| 8 |
* of this software and associated documentation files (the "Software"), to deal
|
| 9 |
* in the Software without restriction, including without limitation the rights
|
| 10 |
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
| 11 |
* copies of the Software, and to permit persons to whom the Software is
|
| 12 |
* furnished to do so, subject to the following conditions:
|
| 13 |
+
*
|
| 14 |
* The above copyright notice and this permission notice shall be included in
|
| 15 |
* all copies or substantial portions of the Software.
|
| 16 |
+
*
|
| 17 |
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
| 18 |
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 19 |
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
| 43 |
|
| 44 |
class Trustly_AuthentificationException extends Exception { }
|
| 45 |
|
| 46 |
+
/* vim: set noet cindent ts=4 ts=4 sw=4: */
|
app/code/community/Trustly/Trustly/sql/trustly_setup/install-2.0.4.php
CHANGED
|
@@ -14,8 +14,8 @@ if(!$installer->getConnection()->isTableExists($installer->getTable('trustly/ord
|
|
| 14 |
$installer->getTable('trustly/ordermappings'),
|
| 15 |
array('trustly_order_id'),
|
| 16 |
Varien_Db_Adapter_Interface::INDEX_TYPE_INDEX
|
| 17 |
-
),
|
| 18 |
-
array('trustly_order_id'),
|
| 19 |
array('type' => Varien_Db_Adapter_Interface::INDEX_TYPE_INDEX)
|
| 20 |
);
|
| 21 |
$installer->getConnection()->createTable($table);
|
| 14 |
$installer->getTable('trustly/ordermappings'),
|
| 15 |
array('trustly_order_id'),
|
| 16 |
Varien_Db_Adapter_Interface::INDEX_TYPE_INDEX
|
| 17 |
+
),
|
| 18 |
+
array('trustly_order_id'),
|
| 19 |
array('type' => Varien_Db_Adapter_Interface::INDEX_TYPE_INDEX)
|
| 20 |
);
|
| 21 |
$installer->getConnection()->createTable($table);
|
app/code/community/Trustly/Trustly/sql/trustly_setup/upgrade-1.0.5-2.0.0.php
CHANGED
|
@@ -11,8 +11,8 @@ $table = $installer->getConnection()->newTable($installer->getTable('trustly/ord
|
|
| 11 |
$installer->getTable('trustly/ordermappings'),
|
| 12 |
array('trustly_order_id'),
|
| 13 |
Varien_Db_Adapter_Interface::INDEX_TYPE_INDEX
|
| 14 |
-
),
|
| 15 |
-
array('trustly_order_id'),
|
| 16 |
array('type' => Varien_Db_Adapter_Interface::INDEX_TYPE_INDEX)
|
| 17 |
);
|
| 18 |
$installer->getConnection()->createTable($table);
|
| 11 |
$installer->getTable('trustly/ordermappings'),
|
| 12 |
array('trustly_order_id'),
|
| 13 |
Varien_Db_Adapter_Interface::INDEX_TYPE_INDEX
|
| 14 |
+
),
|
| 15 |
+
array('trustly_order_id'),
|
| 16 |
array('type' => Varien_Db_Adapter_Interface::INDEX_TYPE_INDEX)
|
| 17 |
);
|
| 18 |
$installer->getConnection()->createTable($table);
|
app/code/community/Trustly/Trustly/sql/trustly_setup/upgrade-2.0.3-2.0.4.php
CHANGED
|
@@ -18,9 +18,9 @@ $connection->modifyColumn(
|
|
| 18 |
|
| 19 |
$connection->addColumn(
|
| 20 |
$ordermappingstable,
|
| 21 |
-
'lock_timestamp',
|
| 22 |
array(
|
| 23 |
-
'type' => Varien_Db_Ddl_Table::TYPE_TIMESTAMP,
|
| 24 |
'nullable' => true,
|
| 25 |
'comment' => 'Lock timestamp'
|
| 26 |
)
|
|
@@ -28,9 +28,9 @@ $connection->addColumn(
|
|
| 28 |
|
| 29 |
$connection->addColumn(
|
| 30 |
$ordermappingstable,
|
| 31 |
-
'lock_id',
|
| 32 |
array(
|
| 33 |
-
'type' => Varien_Db_Ddl_Table::TYPE_INTEGER,
|
| 34 |
'unsigned' => true,
|
| 35 |
'nullable' => true,
|
| 36 |
'comment' => 'Lock process id'
|
| 18 |
|
| 19 |
$connection->addColumn(
|
| 20 |
$ordermappingstable,
|
| 21 |
+
'lock_timestamp',
|
| 22 |
array(
|
| 23 |
+
'type' => Varien_Db_Ddl_Table::TYPE_TIMESTAMP,
|
| 24 |
'nullable' => true,
|
| 25 |
'comment' => 'Lock timestamp'
|
| 26 |
)
|
| 28 |
|
| 29 |
$connection->addColumn(
|
| 30 |
$ordermappingstable,
|
| 31 |
+
'lock_id',
|
| 32 |
array(
|
| 33 |
+
'type' => Varien_Db_Ddl_Table::TYPE_INTEGER,
|
| 34 |
'unsigned' => true,
|
| 35 |
'nullable' => true,
|
| 36 |
'comment' => 'Lock process id'
|
app/design/frontend/base/default/template/trustly/iframe.phtml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
<div class="page-title">
|
| 2 |
<h1><?php echo Mage::helper('trustly')->__('Direct banking') ?></h1>
|
| 3 |
</div>
|
| 4 |
-
<p class="trustly_image"><img src="
|
| 5 |
|
| 6 |
<?php if (!$this->getIframe()): ?>
|
| 7 |
<p class="note-msg"><?php echo Mage::helper('trustly')->__('Failed to display the payment method.') ?></p>
|
| 1 |
<div class="page-title">
|
| 2 |
<h1><?php echo Mage::helper('trustly')->__('Direct banking') ?></h1>
|
| 3 |
</div>
|
| 4 |
+
<p class="trustly_image"><img src="https://static.trustly.com/logotype/footer/trustly_140.png" alt="Trustly" /><p>
|
| 5 |
|
| 6 |
<?php if (!$this->getIframe()): ?>
|
| 7 |
<p class="note-msg"><?php echo Mage::helper('trustly')->__('Failed to display the payment method.') ?></p>
|
app/design/frontend/base/default/template/trustly/mark.phtml
CHANGED
|
@@ -1,4 +1,4 @@
|
|
| 1 |
-
<img src="
|
| 2 |
<span style="position: relative; top: 3px;">
|
| 3 |
<?php echo $this->__('Direct banking') ?>
|
| 4 |
<a style="margin-left: 5px;" href="<?php echo $this->getPaymentAcceptanceMarkHref()?>" onclick="javascript:window.open('<?php echo $this->getPaymentAcceptanceMarkHref()?>','whatistrustly','toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, ,left=0, top=0, width=400, height=350'); return false;"><?php echo Mage::helper('trustly')->__('What is Trustly?') ?></a>
|
| 1 |
+
<img src="https://static.trustly.com/logotype/checkout/trustly_73.png" alt="<?php echo Mage::helper('trustly')->__('Trustly') ?>" class="v-middle" />
|
| 2 |
<span style="position: relative; top: 3px;">
|
| 3 |
<?php echo $this->__('Direct banking') ?>
|
| 4 |
<a style="margin-left: 5px;" href="<?php echo $this->getPaymentAcceptanceMarkHref()?>" onclick="javascript:window.open('<?php echo $this->getPaymentAcceptanceMarkHref()?>','whatistrustly','toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, ,left=0, top=0, width=400, height=350'); return false;"><?php echo Mage::helper('trustly')->__('What is Trustly?') ?></a>
|
package.xml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
<?xml version="1.0"?>
|
| 2 |
<package>
|
| 3 |
<name>Trustly</name>
|
| 4 |
-
<version>2.0.
|
| 5 |
<stability>stable</stability>
|
| 6 |
<license uri="http://www.gnu.org/copyleft/gpl.html">GPL 3</license>
|
| 7 |
<channel>community</channel>
|
|
@@ -16,8 +16,8 @@
|
|
| 16 |
<email>info@trustly.com</email>
|
| 17 |
</author>
|
| 18 |
</authors>
|
| 19 |
-
<date>2014-
|
| 20 |
-
<time>11:19:
|
| 21 |
<contents>
|
| 22 |
<target name="magelocale">
|
| 23 |
<dir name="da_DK">
|
|
@@ -59,16 +59,16 @@
|
|
| 59 |
</dir>
|
| 60 |
<dir name="Model">
|
| 61 |
<dir name="Mysql4">
|
| 62 |
-
<file name="Ordermappings.php" hash="
|
| 63 |
</dir>
|
| 64 |
-
<file name="Ordermappings.php" hash="
|
| 65 |
-
<file name="Standard.php" hash="
|
| 66 |
</dir>
|
| 67 |
<dir name="controllers">
|
| 68 |
-
<file name="PaymentController.php" hash="
|
| 69 |
</dir>
|
| 70 |
<dir name="etc">
|
| 71 |
-
<file name="config.xml" hash="
|
| 72 |
<file name="system.xml" hash="d92061e410e4e923eb39fa59f2e00927"/>
|
| 73 |
</dir>
|
| 74 |
<dir name="lib">
|
|
@@ -78,30 +78,31 @@
|
|
| 78 |
<file name="test.trustly.com.public.pem" hash="e61b3f9fc1e3893282fe2d575dc5571a"/>
|
| 79 |
<file name="trustly.com.public.pem" hash="b2c821ad10c085a40b6c4e36ee6b8c9e"/>
|
| 80 |
</dir>
|
| 81 |
-
<file name="api.php" hash="
|
| 82 |
-
<file name="ecommerce.php" hash="
|
| 83 |
-
<file name="signed.php" hash="
|
| 84 |
-
<file name="unsigned.php" hash="
|
| 85 |
</dir>
|
| 86 |
<dir name="Data">
|
| 87 |
-
<file name="data.php" hash="
|
| 88 |
-
<file name="jsonrpcnotificationrequest.php" hash="
|
| 89 |
-
<file name="jsonrpcnotificationresponse.php" hash="
|
| 90 |
-
<file name="jsonrpcrequest.php" hash="
|
| 91 |
-
<file name="jsonrpcresponse.php" hash="
|
| 92 |
-
<file name="
|
| 93 |
-
<file name="
|
|
|
|
| 94 |
</dir>
|
| 95 |
-
<file name="exceptions.php" hash="
|
| 96 |
</dir>
|
| 97 |
<file name="LICENCE" hash="8713032dd477873c84ed4ff4b7da5f70"/>
|
| 98 |
-
<file name="Trustly.php" hash="
|
| 99 |
</dir>
|
| 100 |
<dir name="sql">
|
| 101 |
<dir name="trustly_setup">
|
| 102 |
-
<file name="install-2.0.4.php" hash="
|
| 103 |
-
<file name="upgrade-1.0.5-2.0.0.php" hash="
|
| 104 |
-
<file name="upgrade-2.0.3-2.0.4.php" hash="
|
| 105 |
</dir>
|
| 106 |
</dir>
|
| 107 |
</dir>
|
|
@@ -113,16 +114,6 @@
|
|
| 113 |
</dir>
|
| 114 |
</target>
|
| 115 |
<target name="mageskin">
|
| 116 |
-
<dir name="frontend">
|
| 117 |
-
<dir name="base">
|
| 118 |
-
<dir name="default">
|
| 119 |
-
<dir name="images">
|
| 120 |
-
<file name="trustly-big.png" hash="ace4a2fcd8306b7e5835076340c7877b"/>
|
| 121 |
-
<file name="trustly-small.png" hash="f99283dadd49b60e6a68962eda43f83f"/>
|
| 122 |
-
</dir>
|
| 123 |
-
</dir>
|
| 124 |
-
</dir>
|
| 125 |
-
</dir>
|
| 126 |
</target>
|
| 127 |
<target name="magedesign">
|
| 128 |
<dir name="frontend">
|
|
@@ -134,8 +125,8 @@
|
|
| 134 |
<dir name="template">
|
| 135 |
<dir name="trustly">
|
| 136 |
<file name="form.phtml" hash="f37a2b86d35eea0a8cd6ec176d466424"/>
|
| 137 |
-
<file name="iframe.phtml" hash="
|
| 138 |
-
<file name="mark.phtml" hash="
|
| 139 |
</dir>
|
| 140 |
</dir>
|
| 141 |
</dir>
|
| 1 |
<?xml version="1.0"?>
|
| 2 |
<package>
|
| 3 |
<name>Trustly</name>
|
| 4 |
+
<version>2.0.8</version>
|
| 5 |
<stability>stable</stability>
|
| 6 |
<license uri="http://www.gnu.org/copyleft/gpl.html">GPL 3</license>
|
| 7 |
<channel>community</channel>
|
| 16 |
<email>info@trustly.com</email>
|
| 17 |
</author>
|
| 18 |
</authors>
|
| 19 |
+
<date>2014-12-01</date>
|
| 20 |
+
<time>11:19:54</time>
|
| 21 |
<contents>
|
| 22 |
<target name="magelocale">
|
| 23 |
<dir name="da_DK">
|
| 59 |
</dir>
|
| 60 |
<dir name="Model">
|
| 61 |
<dir name="Mysql4">
|
| 62 |
+
<file name="Ordermappings.php" hash="9a20e6607ef45773b1fd3beca10dc47c"/>
|
| 63 |
</dir>
|
| 64 |
+
<file name="Ordermappings.php" hash="b2871d0594151a48e329bc950d09ab76"/>
|
| 65 |
+
<file name="Standard.php" hash="50ff94700a51c7ad89be88f1b99bfc76"/>
|
| 66 |
</dir>
|
| 67 |
<dir name="controllers">
|
| 68 |
+
<file name="PaymentController.php" hash="a3dfc93ea5209f7fa8cb73876ae5b32d"/>
|
| 69 |
</dir>
|
| 70 |
<dir name="etc">
|
| 71 |
+
<file name="config.xml" hash="d4f5ca9a2f47ea0b58b77d653512ed0d"/>
|
| 72 |
<file name="system.xml" hash="d92061e410e4e923eb39fa59f2e00927"/>
|
| 73 |
</dir>
|
| 74 |
<dir name="lib">
|
| 78 |
<file name="test.trustly.com.public.pem" hash="e61b3f9fc1e3893282fe2d575dc5571a"/>
|
| 79 |
<file name="trustly.com.public.pem" hash="b2c821ad10c085a40b6c4e36ee6b8c9e"/>
|
| 80 |
</dir>
|
| 81 |
+
<file name="api.php" hash="9a4f82b8d7cad47841f304307d2d5846"/>
|
| 82 |
+
<file name="ecommerce.php" hash="c1a08d59a379ab34a40d707dbc59e51d"/>
|
| 83 |
+
<file name="signed.php" hash="48b6a27776ab5c5e8bad8658d7c33769"/>
|
| 84 |
+
<file name="unsigned.php" hash="c3a60853757caf73f5fda798be931e2c"/>
|
| 85 |
</dir>
|
| 86 |
<dir name="Data">
|
| 87 |
+
<file name="data.php" hash="3219d091f894cffe9dce55c24c64af7f"/>
|
| 88 |
+
<file name="jsonrpcnotificationrequest.php" hash="00a29b82d7fbbdbc823534cf7b024840"/>
|
| 89 |
+
<file name="jsonrpcnotificationresponse.php" hash="9ffc52a8a52b03a7f737144d7c651946"/>
|
| 90 |
+
<file name="jsonrpcrequest.php" hash="ad057f824143361c629575e355a168ff"/>
|
| 91 |
+
<file name="jsonrpcresponse.php" hash="45c31a0a6642b42d1f4b3f3887a39203"/>
|
| 92 |
+
<file name="jsonrpcsignedresponse.php" hash="0fdcb9de9f5c6d2600c64852c4eaad79"/>
|
| 93 |
+
<file name="request.php" hash="34a0927f88912ed9fdee247a28e74c57"/>
|
| 94 |
+
<file name="response.php" hash="879837bdd13dfd75d812f170ea4918e7"/>
|
| 95 |
</dir>
|
| 96 |
+
<file name="exceptions.php" hash="76824da93a3bb855a248ec3f27f84fe8"/>
|
| 97 |
</dir>
|
| 98 |
<file name="LICENCE" hash="8713032dd477873c84ed4ff4b7da5f70"/>
|
| 99 |
+
<file name="Trustly.php" hash="c2d7e9268b03e89699ad17047dd78bc3"/>
|
| 100 |
</dir>
|
| 101 |
<dir name="sql">
|
| 102 |
<dir name="trustly_setup">
|
| 103 |
+
<file name="install-2.0.4.php" hash="8adab66e05093992264374b613c8f796"/>
|
| 104 |
+
<file name="upgrade-1.0.5-2.0.0.php" hash="305e6535758a1da91b107a4a6b5b33d5"/>
|
| 105 |
+
<file name="upgrade-2.0.3-2.0.4.php" hash="cb345308065dbac8985db01ebc61f628"/>
|
| 106 |
</dir>
|
| 107 |
</dir>
|
| 108 |
</dir>
|
| 114 |
</dir>
|
| 115 |
</target>
|
| 116 |
<target name="mageskin">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 117 |
</target>
|
| 118 |
<target name="magedesign">
|
| 119 |
<dir name="frontend">
|
| 125 |
<dir name="template">
|
| 126 |
<dir name="trustly">
|
| 127 |
<file name="form.phtml" hash="f37a2b86d35eea0a8cd6ec176d466424"/>
|
| 128 |
+
<file name="iframe.phtml" hash="eb8fe39d00643f27c392845f5b535a44"/>
|
| 129 |
+
<file name="mark.phtml" hash="247201e74fde66ffdca19045a28ff667"/>
|
| 130 |
</dir>
|
| 131 |
</dir>
|
| 132 |
</dir>
|
skin/frontend/base/default/images/trustly-big.png
DELETED
|
Binary file
|
skin/frontend/base/default/images/trustly-small.png
DELETED
|
Binary file
|
