PayU_Account - Version 2.2.0

Version Notes

Integration with PayU based on REST API.
Authentication via OAuth.

More info:
https://github.com/PayU/plugin_magento
http://developers.payu.com/en/restapi.html

Download this release

Release Info

Developer PayU
Extension PayU_Account
Version 2.2.0
Comparing to
See all releases


Code changes from version 2.1.6 to 2.2.0

Files changed (70) hide show
  1. app/code/community/PayU/Account/Block/Adminhtml/Sales/Order/View.php +0 -53
  2. app/code/community/PayU/Account/Block/Advertisement.php +0 -42
  3. app/code/community/PayU/Account/Block/BeforeSummary.php +0 -53
  4. app/code/community/PayU/Account/Block/Button.php +0 -17
  5. app/code/community/PayU/Account/Block/Form.php +32 -17
  6. app/code/community/PayU/Account/Block/Onestep/Checkout.php +0 -53
  7. app/code/community/PayU/Account/Block/Redirect.php +0 -58
  8. app/code/community/PayU/Account/Block/UpdateInfo.php +10 -73
  9. app/code/community/PayU/Account/Helper/Data.php +17 -69
  10. app/code/community/PayU/Account/Model/Adminhtml/Sales/Order.php +0 -17
  11. app/code/community/PayU/Account/Model/Advertisement.php +0 -32
  12. app/code/community/PayU/Account/Model/Button.php +0 -33
  13. app/code/community/PayU/Account/Model/Config.php +92 -244
  14. app/code/community/PayU/Account/Model/Environment.php +0 -36
  15. app/code/community/PayU/Account/Model/Payment.php +403 -824
  16. app/code/community/PayU/Account/Model/Session.php +3 -8
  17. app/code/community/PayU/Account/Model/Thumbnail.php +0 -31
  18. app/code/community/PayU/Account/Model/ValidityTime.php +0 -42
  19. app/code/community/PayU/Account/controllers/Adminhtml/Sales/OrderController.php +0 -73
  20. app/code/community/PayU/Account/controllers/Checkout/CartController.php +0 -19
  21. app/code/community/PayU/Account/controllers/PaymentController.php +54 -169
  22. app/code/community/PayU/Account/etc/config.xml +47 -103
  23. app/code/community/PayU/Account/etc/system.xml +25 -80
  24. app/design/frontend/base/default/layout/payu_account.xml +0 -106
  25. app/design/frontend/base/default/template/payu_account/advertisement.phtml +0 -4
  26. app/design/frontend/base/default/template/payu_account/form.phtml +6 -2
  27. app/design/frontend/base/default/template/payu_account/info/payu_account.phtml +0 -21
  28. app/design/frontend/base/default/template/payu_account/onestep/checkout.phtml +0 -5
  29. app/etc/modules/PayU_Account.xml +2 -2
  30. app/locale/pl_PL/PayU_Account.csv +18 -56
  31. lib/PayU/Cache/.htaccess +2 -0
  32. lib/PayU/Cache/810290d4eed883975e0cd43d80497ac4 +0 -0
  33. lib/PayU/Cache/index.php +0 -0
  34. lib/PayU/OpenPayU/AuthType/AuthType.php +12 -0
  35. lib/PayU/OpenPayU/AuthType/Basic.php +33 -0
  36. lib/PayU/OpenPayU/AuthType/Oauth.php +39 -0
  37. lib/PayU/OpenPayU/AuthType/TokenRequest.php +14 -0
  38. lib/PayU/OpenPayU/Configuration.php +270 -0
  39. lib/PayU/OpenPayU/Http.php +166 -0
  40. lib/{payu/sdk_v21 → PayU}/OpenPayU/HttpCurl.php +22 -53
  41. lib/PayU/OpenPayU/Oauth/Cache/OauthCacheFile.php +40 -0
  42. lib/PayU/OpenPayU/Oauth/Cache/OauthCacheInterface.php +26 -0
  43. lib/PayU/OpenPayU/Oauth/Cache/OauthCacheMemcached.php +43 -0
  44. lib/PayU/OpenPayU/Oauth/Oauth.php +105 -0
  45. lib/PayU/OpenPayU/Oauth/OauthGrantType.php +6 -0
  46. lib/PayU/OpenPayU/Oauth/OauthResultClientCredentials.php +121 -0
  47. lib/PayU/OpenPayU/OpenPayU.php +56 -0
  48. lib/PayU/OpenPayU/OpenPayUException.php +39 -0
  49. lib/PayU/OpenPayU/OpenPayuOrderStatus.php +24 -0
  50. lib/{payu/sdk_v21 → PayU}/OpenPayU/Result.php +8 -10
  51. lib/PayU/OpenPayU/ResultError.php +59 -0
  52. lib/{payu/sdk_v21 → PayU}/OpenPayU/Util.php +88 -157
  53. lib/{payu/sdk_v21 → PayU}/OpenPayU/v2/Order.php +47 -39
  54. lib/{payu/sdk_v21 → PayU}/OpenPayU/v2/Refund.php +24 -22
  55. lib/PayU/OpenPayU/v2/Retrieve.php +75 -0
  56. lib/PayU/openpayu.php +40 -0
  57. lib/payu/sdk_v21/OpenPayU/Configuration.php +0 -302
  58. lib/payu/sdk_v21/OpenPayU/Http.php +0 -135
  59. lib/payu/sdk_v21/OpenPayU/HttpProtocol.php +0 -10
  60. lib/payu/sdk_v21/OpenPayU/OpenPayU.php +0 -250
  61. lib/payu/sdk_v21/OpenPayU/OpenPayUBase.php +0 -265
  62. lib/payu/sdk_v21/OpenPayU/OpenPayUException.php +0 -43
  63. lib/payu/sdk_v21/OpenPayU/OpenPayUNetwork.php +0 -181
  64. lib/payu/sdk_v21/OpenPayU/v2/Token.php +0 -66
  65. lib/payu/sdk_v21/openpayu.php +0 -30
  66. lib/payu/sdk_v21/openpayu_domain.php +0 -67
  67. package.xml +15 -10
  68. readme_images/cache_flushed.png +0 -0
  69. readme_images/save_config.png +0 -0
  70. skin/frontend/base/default/css/payu/payu.css +4 -0
app/code/community/PayU/Account/Block/Adminhtml/Sales/Order/View.php DELETED
@@ -1,53 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * ver. 1.8.1
5
- * PayU Adminhtml Sales Order View
6
- *
7
- * @copyright Copyright (c) 2011-2014 PayU
8
- * @license http://opensource.org/licenses/GPL-3.0 Open Software License (GPL 3.0)
9
- * http://www.payu.com
10
- * http://www.openpayu.com
11
- * http://twitter.com/openpayu
12
- */
13
-
14
- class PayU_Account_Block_Adminhtml_Sales_Order_View extends Mage_Adminhtml_Block_Sales_Order_View {
15
-
16
- // constructor
17
- public function __construct() {
18
-
19
- parent::__construct();
20
-
21
- if($this->_isAllowedAction('review_payment') && $this->getOrder()->getPayment()->getMethod() == 'payu_account' && $this->getOrder()->getStatus() == 'pending_payment' && (int)Mage::getStoreConfig('payment/payu_account/selfreturn') == 0){
22
- $this->_addButton('payu-complete', array(
23
- 'label' => Mage::helper('payu_account')->__('Complete PayU payment'),
24
- 'onclick' => 'setLocation(\'' . $this->getCompletePaymentUrl() . '\')',
25
- 'class' => ''
26
- ), 0, 100, 'header', 'header');
27
-
28
- $this->_addButton('payu-cancel', array(
29
- 'label' => Mage::helper('payu_account')->__('Cancel PayU payment'),
30
- 'onclick' => 'setLocation(\'' . $this->getCancelPaymentUrl() . '\')',
31
- 'class' => ''
32
- ), 0, 200, 'header', 'header');
33
- }
34
- }
35
-
36
- // rejecting the PayU payment
37
- public function getRejectPaymentUrl()
38
- {
39
- return $this->getUrl('*/sales_order/rejectPayUOrder');
40
- }
41
-
42
- // canceling the PayU payment
43
- public function getCancelPaymentUrl()
44
- {
45
- return $this->getUrl('*/sales_order/cancelPayUOrder');
46
- }
47
-
48
- // completing the PayU payment
49
- public function getCompletePaymentUrl()
50
- {
51
- return $this->getUrl('*/sales_order/completePayUOrder');
52
- }
53
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/PayU/Account/Block/Advertisement.php DELETED
@@ -1,42 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * ver. 1.9.0
5
- * PayU Advertisement Block
6
- * Payment
7
- *
8
- * @copyright Copyright (c) 2011-2014 PayU
9
- * @license http://opensource.org/licenses/GPL-3.0 Open Software License (GPL 3.0)
10
- * http://www.payu.com
11
- * http://www.openpayu.com
12
- * http://twitter.com/openpayu
13
- */
14
-
15
- class PayU_Account_Block_Advertisement extends Mage_Core_Block_Template
16
- {
17
- /**
18
- * Redirection after clicking the advertisement
19
- *
20
- * @var string
21
- */
22
- protected $_redirectUrl = 'http://www.payu.pl';
23
-
24
- /**
25
- * (non-PHPdoc)
26
- * @see magento/app/code/core/Mage/Core/Block/Mage_Core_Block_Template::_toHtml()
27
- */
28
- protected function _toHtml()
29
- {
30
- /**
31
- * setting the advertisement source url
32
- */
33
- $this->setAdvertisementSrc(Mage::getModel('payu_account/config')->getAdvertisementSrc());
34
-
35
- /**
36
- * setting the redirect url
37
- */
38
- $this->setRedirectUrl($this->_redirectUrl);
39
-
40
- return parent::_toHtml();
41
- }
42
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/PayU/Account/Block/BeforeSummary.php DELETED
@@ -1,53 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * ver. 1.9.0
5
- * PayU BeforeSummary Redirection Block
6
- * Payment
7
- *
8
- * @copyright Copyright (c) 2011-2014 PayU
9
- * @license http://opensource.org/licenses/GPL-3.0 Open Software License (GPL 3.0)
10
- * http://www.payu.com
11
- * http://www.openpayu.com
12
- * http://twitter.com/openpayu
13
- */
14
-
15
- class PayU_Account_Block_BeforeSummary extends Mage_Core_Block_Abstract
16
- {
17
- protected $_order = null;
18
-
19
- /**
20
- * (non-PHPdoc)
21
- * @see magento/app/code/core/Mage/Core/Block/Mage_Core_Block_Abstract::_toHtml()
22
- */
23
- protected function _toHtml()
24
- {
25
- $payment = Mage::getModel('payu_account/payment');
26
-
27
- $form = new Varien_Data_Form();
28
-
29
- $redirectData = $payment->beforeSummary();
30
-
31
- $form->setAction($redirectData['url'])
32
- ->setId('payu_checkout')
33
- ->setName('payu_checkout')
34
- ->setMethod('GET')
35
- ->setUseContainer(true);
36
-
37
- $form->addField('sessionId', 'hidden', array('name' => 'sessionId', 'value' => $redirectData['sessionId']));
38
- $form->addField('oauth_token', 'hidden', array('name' => 'oauth_token', 'value' => $redirectData['oauth_token']));
39
- $form->addField('client_id', 'hidden', array('name' => 'client_id', 'value' => $redirectData['client_id']));
40
-
41
- $html = '<html><body>';
42
- $html.= $form->toHtml();
43
- $html.= '<script type="text/javascript">document.getElementById("payu_checkout").submit();</script>';
44
- $html.= '</body></html>';
45
-
46
- return $html;
47
- }
48
-
49
- public function setOrder($order) {
50
- $this->_order = $order;
51
- return $this;
52
- }
53
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/PayU/Account/Block/Button.php DELETED
@@ -1,17 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * ver. 1.9.0
5
- * PayU Button Block
6
- *
7
- * @copyright Copyright (c) 2011-2014 PayU
8
- * @license http://opensource.org/licenses/GPL-3.0 Open Software License (GPL 3.0)
9
- * http://www.payu.com
10
- * http://www.openpayu.com
11
- * http://twitter.com/openpayu
12
- */
13
-
14
- class PayU_Account_Block_Button extends Mage_Core_Block_Template
15
- {
16
-
17
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/PayU/Account/Block/Form.php CHANGED
@@ -1,18 +1,11 @@
1
  <?php
2
 
3
  /**
4
- * ver. 1.9.0
5
- * PayU Form Block
6
- * Payment
7
- *
8
- * @copyright Copyright (c) 2011-2014 PayU
9
- * @license http://opensource.org/licenses/GPL-3.0 Open Software License (GPL 3.0)
10
- * http://www.payu.com
11
- * http://www.openpayu.com
12
- * http://twitter.com/openpayu
13
- */
14
-
15
-
16
  class PayU_Account_Block_Form extends Mage_Payment_Block_Form
17
  {
18
  /**
@@ -21,16 +14,30 @@ class PayU_Account_Block_Form extends Mage_Payment_Block_Form
21
  */
22
  protected $_methodCode = 'payu_account';
23
 
24
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  /**
26
  * Set template and redirect message
27
  */
28
  protected function _construct()
29
  {
30
  $this->setTemplate('payu_account/form.phtml');
31
- $this->setMethodTitle('');
32
- $this->setMethodLabelAfterHtml('<img src="'.Mage::getModel('payu_account/config')->getThumbnailSrc().'" height="20" alt="PayU"/> '.Mage::helper('payu_account')->__('PayU account'));
33
-
34
  return parent::_construct();
35
  }
36
 
@@ -42,4 +49,12 @@ class PayU_Account_Block_Form extends Mage_Payment_Block_Form
42
  {
43
  return $this->_methodCode;
44
  }
45
- }
 
 
 
 
 
 
 
 
1
  <?php
2
 
3
  /**
4
+ * PayU Form Block
5
+ *
6
+ * @copyright Copyright (c) 2011-2016 PayU
7
+ * @license http://opensource.org/licenses/GPL-3.0 Open Software License (GPL 3.0)
8
+ */
 
 
 
 
 
 
 
9
  class PayU_Account_Block_Form extends Mage_Payment_Block_Form
10
  {
11
  /**
14
  */
15
  protected $_methodCode = 'payu_account';
16
 
17
+
18
+ /**
19
+ * Prepare layout.
20
+ * Add files to use PayU
21
+ *
22
+ * @return PayU_Account_Block_Form
23
+ */
24
+ protected function _prepareLayout()
25
+ {
26
+ if ($head = $this->getLayout()->getBlock('head')) {
27
+ $head->addCss('css/payu/payu.css');
28
+ }
29
+ return parent::_prepareLayout();
30
+ }
31
+
32
  /**
33
  * Set template and redirect message
34
  */
35
  protected function _construct()
36
  {
37
  $this->setTemplate('payu_account/form.phtml');
38
+ $this->setMethodTitle($this->__('Pay with PayU'));
39
+ $this->setMethodLabelAfterHtml('<img src="' . $this->getPayuLogo() . '" alt="PayU" class="formPayuLogo" />');
40
+
41
  return parent::_construct();
42
  }
43
 
49
  {
50
  return $this->_methodCode;
51
  }
52
+
53
+ /**
54
+ * @return string
55
+ */
56
+ private function getPayuLogo()
57
+ {
58
+ return $this->getSkinUrl('images/payu/payu_logo.png');
59
+ }
60
+ }
app/code/community/PayU/Account/Block/Onestep/Checkout.php DELETED
@@ -1,53 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * ver. 1.9.0
5
- * PayU One Step Checkout Block
6
- *
7
- * @copyright Copyright (c) 2011-2014 PayU
8
- * @license http://opensource.org/licenses/GPL-3.0 Open Software License (GPL 3.0)
9
- * http://www.payu.com
10
- * http://www.openpayu.com
11
- * http://twitter.com/openpayu
12
- */
13
-
14
- class PayU_Account_Block_Onestep_Checkout extends Mage_Core_Block_Template
15
- {
16
-
17
- /** @var config variable */
18
- protected $_config;
19
-
20
- /** @var string Start One Step action */
21
- protected $_startAction = 'newOneStep';
22
-
23
- /** @var bool Whether the block should be eventually rendered */
24
- protected $_shouldRender = true;
25
-
26
- /** @var string Express checkout model factory name */
27
- protected $_checkoutType = 'payu_account/express_checkout';
28
-
29
- /**
30
- * (non-PHPdoc)
31
- * @see magento/app/code/core/Mage/Core/Block/Mage_Core_Block_Template::_toHtml()
32
- */
33
- protected function _toHtml()
34
- {
35
-
36
-
37
- if($this->getRequest()->getParam('submitCustomCheckout'))
38
- {
39
- $billingAddress = $this->getRequest()->getParam('billing');
40
- $billingAddress['use_for_shipping'] = 0;
41
- $shippingAddress = $this->getRequest()->getParam('shipping');
42
- }
43
-
44
-
45
- $this->_config = Mage::getModel('payu_account/config');
46
- $this->setButtonSrc($this->_config->getButtonSrc());
47
- $this->setIsOneStepCheckoutEnabled($this->_config->getIsOneStepCheckoutEnabled());
48
- $this->setIsOneStepCheckoutAvailable($this->_config->getIsOneStepCheckoutAvailable());
49
- $this->setCheckoutUrl($this->_config->getBaseUrl().$this->_startAction);
50
-
51
- return parent::_toHtml();
52
- }
53
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/PayU/Account/Block/Redirect.php DELETED
@@ -1,58 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * ver. 1.9.0
5
- * PayU Payment Redirect Block
6
- * Payment
7
- *
8
- * @copyright Copyright (c) 2011-2014 PayU
9
- * @license http://opensource.org/licenses/GPL-3.0 Open Software License (GPL 3.0)
10
- * http://www.payu.com
11
- * http://www.openpayu.com
12
- * http://twitter.com/openpayu
13
- *
14
- */
15
-
16
- class PayU_Account_Block_Redirect extends Mage_Core_Block_Abstract {
17
-
18
- protected $_order = null;
19
-
20
- protected $_allShippingMethods = null;
21
-
22
- /**
23
- * (non-PHPdoc)
24
- *
25
- * @see magento1/app/code/core/Mage/Core/Block/Mage_Core_Block_Abstract::_toHtml()
26
- */
27
- protected function _toHtml() {
28
- /**
29
- * Fetching current payment
30
- *
31
- * @var PayU_Account_Model_Payment
32
- */
33
- $payment = Mage::getModel ( 'payu_account/payment' );
34
-
35
- /**
36
- * Setting the redirect info
37
- *
38
- * @var array
39
- */
40
- $redirectData = $payment->orderCreateRequest ( $this->_order, $this->_allShippingMethods );
41
-
42
- $html = '<html><body>';
43
- $html .= '<script type="text/javascript">window.location.replace("' . urldecode ( $redirectData ['redirectUri'] ) . '");</script>';
44
- $html .= '</body></html>';
45
-
46
- return $html;
47
- }
48
-
49
- public function setAllShippingMethods($allShippingMethods) {
50
- $this->_allShippingMethods = $allShippingMethods;
51
- return $this;
52
- }
53
-
54
- public function setOrder($order) {
55
- $this->_order = $order;
56
- return $this;
57
- }
58
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/PayU/Account/Block/UpdateInfo.php CHANGED
@@ -1,84 +1,21 @@
1
- <?php
2
 
3
  /**
4
- * ver. 1.9.0
5
- * PayU Update Info Block
6
  *
7
- * @copyright Copyright (c) 2011-2014 PayU
8
- * @license http://opensource.org/licenses/GPL-3.0 Open Software License (GPL 3.0)
9
- * http://www.payu.com
10
- * http://www.openpayu.com
11
- * http://twitter.com/openpayu
12
  */
13
-
14
  class PayU_Account_Block_UpdateInfo extends Mage_Adminhtml_Block_System_Config_Form_Field
15
  {
16
-
 
 
 
17
  protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
18
  {
19
-
20
- /** @var array Get latest version of the plugin */
21
- $latestVersion = Mage::getModel('payu_account/config')->getLatestVersion();
22
-
23
- /** @var array Get latest version info of the plugin */
24
- $latestVersionInfo = Mage::getModel('payu_account/config')->getLatestVersionInfo();
25
-
26
- if(!Mage::getModel('payu_account/config')->isLatestVersionInstalled()){
27
-
28
- $html = "<div style='text-align:center;padding:5px;margin:5px 0px 5px 0px;border:1px #e58080 solid;background-color:#f6d3d3;box-shadow:2px 2px 6px #ccc;color:#ae1111;'>".Mage::helper('payu_account')->__('CAUTION: PayU plugin is not up to date.')."</div>";
29
- $html .= Mage::helper('payu_account')->__('You are currently using version').":<br><b>";
30
- $html .= Mage::getModel('payu_account/config')->getPluginVersion()." ".Mage::helper('payu_account')->__('for')." magento ".Mage::getModel('payu_account/config')->getMinimumMageVersion()."+</b><hr>";
31
-
32
- $html .= Mage::helper('payu_account')->__('The latest version of PayU plugin is');
33
- $html .= " <b>".$latestVersion['version']."</b>";
34
-
35
- $html .= "<div style='text-align:center;padding:5px;margin:5px 0px 5px 0px;border:1px #c0dbea solid;background-color:#f4f9fb;box-shadow:2px 2px 6px #ccc;color:#1f516e;'><a href=\"http://".$latestVersionInfo['repository']."\" target=\"_blank\">".$latestVersionInfo['repository']."</a></div>";
36
-
37
- }else{
38
-
39
- $html = "<div style='text-align:center;padding:5px;margin:5px 0px 5px 0px;border:1px #97cf7b solid;background-color:#dbf2d0;box-shadow:2px 2px 6px #ccc;color:#3c8a15;'>".Mage::helper('payu_account')->__('OK: PayU plugin is up to date.')."</div>";
40
- $html .= Mage::helper('payu_account')->__('You are currently using version').":<br><b>";
41
- $html .= Mage::getModel('payu_account/config')->getPluginVersion()." ".Mage::helper('payu_account')->__('for')." magento ".Mage::getModel('payu_account/config')->getMinimumMageVersion()."+</b><hr>";
42
-
43
- }
44
- $html .= Mage::helper('payu_account')->__('Documents attached to this implementation').":<br>";
45
-
46
- if(isset($latestVersion['docs']['guides']))
47
- {
48
- foreach($latestVersion['docs']['guides'] as $doc){
49
-
50
- $html .= $this->getLayout()->createBlock('adminhtml/widget_button')
51
- ->setType('button')
52
- ->setClass('scalable')
53
- ->setLabel($doc['name'])
54
- ->setOnClick("window.open('".$doc['url']."')")
55
- ->toHtml();
56
- $html .= "<br>";
57
-
58
- }
59
- }
60
-
61
- if(count($latestVersion['docs']['websites']) > 0){
62
- $html .= Mage::helper('payu_account')->__('More info on').":<br>";
63
- }
64
-
65
- if(isset($latestVersion['docs']['websites']))
66
- {
67
- foreach($latestVersion['docs']['websites'] as $key => $website){
68
-
69
-
70
- $html .= $this->getLayout()->createBlock('adminhtml/widget_button')
71
- ->setType('button')
72
- ->setClass('scalable')
73
- ->setLabel($website['name'])
74
- ->setOnClick("window.open('".$website['url']."')")
75
- ->toHtml();
76
- $html .= "<br>";
77
-
78
- }
79
- }
80
-
81
- $html .= $latestVersion['description'];
82
 
83
  return $html;
84
  }
1
+ <?php
2
 
3
  /**
4
+ * PayU Update Info Block
 
5
  *
6
+ * @copyright Copyright (c) 2011-2016 PayU
7
+ * @license http://opensource.org/licenses/GPL-3.0 Open Software License (GPL 3.0)
 
 
 
8
  */
 
9
  class PayU_Account_Block_UpdateInfo extends Mage_Adminhtml_Block_System_Config_Form_Field
10
  {
11
+ /**
12
+ * @param Varien_Data_Form_Element_Abstract $element
13
+ * @return string
14
+ */
15
  protected function _getElementHtml(Varien_Data_Form_Element_Abstract $element)
16
  {
17
+ $html = Mage::helper('payu_account')->__('You are currently using version') . ":<br><b>";
18
+ $html .= Mage::getModel('payu_account/config')->getPluginVersion() . " " . Mage::helper('payu_account')->__('for') . " magento " . Mage::getModel('payu_account/config')->getMinimumMageVersion() . "+</b>";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
 
20
  return $html;
21
  }
app/code/community/PayU/Account/Helper/Data.php CHANGED
@@ -1,76 +1,24 @@
1
  <?php
2
 
3
  /**
4
- * ver. 1.9.0
5
- * PayU Data Helper Model
6
- *
7
- * @copyright Copyright (c) 2011-2014 PayU
8
- * @license http://opensource.org/licenses/GPL-3.0 Open Software License (GPL 3.0)
9
- * http://www.payu.com
10
- * http://www.openpayu.com
11
- * http://twitter.com/openpayu
12
- */
13
-
14
  class PayU_Account_Helper_Data extends Mage_Core_Helper_Abstract
15
  {
16
- /**
17
- * Converts the Magento float values (for instance 9.9900) to PayU accepted Currency format (999)
18
- *
19
- * @param string
20
- * @return int
21
- */
22
- public function toAmount($val){
23
- $multiplied = $val*100;
 
24
  $round = (int)round($multiplied);
25
- return $round;
26
- }
27
-
28
- /**
29
- * Change locale of given string and separator
30
- * @param string $string
31
- * @param string $s
32
- */
33
-
34
- public function localize($string, $s = "/"){
35
-
36
- $lang = explode("_",Mage::app()->getLocale()->getLocaleCode());
37
-
38
- if(!in_array($lang[0],array("pl","en")))
39
- $lang[0] = "en";
40
-
41
- $from = array("/pl/","/en/",$s."pl".$s,$s."en".$s,"_en.","_pl.");
42
- $to = array("/".$lang[0]."/","/".$lang[0]."/",$s.$lang[0].$s,$s.$lang[0].$s,"_".$lang[0].".","_".$lang[0].".");
43
-
44
- return str_replace($from, $to, $string);
45
-
46
- }
47
-
48
- public function isFirstVersionNewer($build1,$build2){
49
- $arr1 = explode(".",$build1);
50
- $arr2 = explode(".",$build2);
51
-
52
- $b1 = "";
53
- $b2 = "";
54
-
55
- foreach($arr1 as $key => $b){
56
- $b1 .= str_pad($arr1[$key], 4,"0",STR_PAD_LEFT);
57
- $b2 .= str_pad($arr2[$key], 4,"0",STR_PAD_LEFT);
58
- }
59
-
60
- return ((int)$b1 > (int)$b2);
61
  }
62
-
63
- /*
64
- public function localize($string, $s = "/"){
65
- $lang = explode("_",Mage::app()->getLocale()->getLocaleCode());
66
- if(!in_array($lang[0],array("pl","en")))
67
- $lang[0] = "en";
68
-
69
- _pl. _pl_ /pl/
70
-
71
- $patt = array('[_./]pl[_./]','[_./]en[_./]');
72
- $repl = array('[_./]'.$lang[0].'[_./]','[_./]'.$lang[0].'[_./]');
73
- return preg_replace($patt,$repl,$string);
74
- }*/
75
-
76
- }
1
  <?php
2
 
3
  /**
4
+ * PayU Data Helper Model
5
+ *
6
+ * @copyright Copyright (c) 2011-2016 PayU
7
+ * @license http://opensource.org/licenses/GPL-3.0 Open Software License (GPL 3.0)
8
+ */
 
 
 
 
 
9
  class PayU_Account_Helper_Data extends Mage_Core_Helper_Abstract
10
  {
11
+ /**
12
+ * Converts the Magento float values (for instance 9.9900) to PayU accepted Currency format (999)
13
+ *
14
+ * @param string
15
+ * @return int
16
+ */
17
+ public function toAmount($val)
18
+ {
19
+ $multiplied = $val * 100;
20
  $round = (int)round($multiplied);
21
+
22
+ return $round;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  }
24
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/PayU/Account/Model/Adminhtml/Sales/Order.php DELETED
@@ -1,17 +0,0 @@
1
- <?php
2
-
3
- class PayU_Account_Adminhtml_Model_Order extends Mage_Adminhtml_Sales_Model_Order{
4
-
5
-
6
- public function newFunctions()
7
- {
8
- //new functions/methods content
9
- }
10
-
11
- public function existingFunctions()
12
- {
13
- //new functions/methods content with the extended functionalities
14
- }
15
-
16
-
17
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/PayU/Account/Model/Advertisement.php DELETED
@@ -1,32 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * ver. 1.9.0
5
- * PayU Logo Model
6
- *
7
- * @copyright Copyright (c) 2011-2014 PayU
8
- * @license http://opensource.org/licenses/GPL-3.0 Open Software License (GPL 3.0)
9
- * http://www.payu.com
10
- * http://www.openpayu.com
11
- * http://twitter.com/openpayu
12
- */
13
-
14
- class PayU_Account_Model_Advertisement
15
- {
16
-
17
- public function toOptionArray()
18
- {
19
-
20
- $advertisements = Mage::getModel('payu_account/config')->getGoods('media_adverts_skyscraper');
21
-
22
- $options = array();
23
-
24
- foreach ($advertisements as $code => $label) {
25
- $options[] = array(
26
- 'value' => $label,
27
- 'label' => $label
28
- );
29
- }
30
- return $options;
31
- }
32
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/PayU/Account/Model/Button.php DELETED
@@ -1,33 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * ver. 1.9.0
5
- * PayU Button Model
6
- *
7
- * @copyright Copyright (c) 2011-2014 PayU
8
- * @license http://opensource.org/licenses/GPL-3.0 Open Software License (GPL 3.0)
9
- * http://www.payu.com
10
- * http://www.openpayu.com
11
- * http://twitter.com/openpayu
12
- */
13
-
14
- class PayU_Account_Model_Button
15
- {
16
-
17
- public function toOptionArray()
18
- {
19
-
20
- /** @var array get list of available buttons */
21
- $buttons = Mage::getModel('payu_account/config')->getGoods('media_buttons');
22
-
23
- $options = array();
24
-
25
- foreach ($buttons as $label) {
26
- $options[] = array(
27
- 'value' => $label,
28
- 'label' => $label
29
- );
30
- }
31
- return $options;
32
- }
33
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/PayU/Account/Model/Config.php CHANGED
@@ -1,279 +1,127 @@
1
  <?php
2
 
3
  /**
4
- * ver. 1.9.0
5
- * PayU Config Model
6
- *
7
- * @copyright Copyright (c) 2011-2014 PayU
8
- * @license http://opensource.org/licenses/GPL-3.0 Open Software License (GPL 3.0)
9
- * http://www.payu.com
10
- * http://www.openpayu.com
11
- * http://twitter.com/openpayu
12
- */
13
-
14
  class PayU_Account_Model_Config
15
  {
16
- /** @var string self version */
17
- protected $_pluginVersion = '2.1.5';
18
-
19
- /** @var string minimum Magento e-commerce version */
20
- protected $_minimumMageVersion = '1.6.0';
21
-
22
- /** @var string stores information about current working environment */
23
- protected $_env;
24
-
25
- /** @var string represents the goods url */
26
- protected $_goodsUrl = "http://openpayu.com/en/goods/json";
27
-
28
- /** @var latest version path in goods array */
29
- protected $_latestVersionPath = "plugins_magento_1.6.0";
30
-
31
- /** @var string latest version url */
32
- protected $_latestVersionUrl;
33
-
34
- /** @var array latest plugin version info */
35
- protected $_latestVersion;
36
-
37
- /** @var array The goods resources are stored here */
38
- protected $_goods;
39
-
40
- protected $_storeId;
41
-
42
- /**
43
- * Constructor
44
- *
45
- * @param $params
46
- */
47
  public function __construct($params = array())
48
  {
49
- // initialize the working environment
50
- $this->setEnvironment();
51
-
52
- // assign current store id
53
- $this->setStoreId(Mage::app()->getStore()->getId());
54
- // assign goods data
55
- $this->setGoods();
56
- // set latest version url
57
- $this->setLatestVersionUrl();
58
- // set latest version data
59
- $this->setLatestVersion();
60
- }
61
-
62
- /** set current store Id */
63
- public function setStoreId($storeId){
64
- $this->_storeId = $storeId;
65
  }
66
-
67
  /**
68
- * Set the environment
69
- * @return string PayU environment variable
70
  */
71
- protected function setEnvironment(){
72
-
73
- switch(Mage::getStoreConfig('payment/payu_account/environment')){
74
-
75
- //check if we work in production mode
76
- case PayU_Account_Model_Environment::PRODUCTION:
77
- $this->_env = "secure";
78
- break;
79
- // default sandbox mode
80
- default:
81
- $this->_env = "sandbox";
82
- break;
83
-
84
- }
85
-
86
- return $this->_env;
87
-
88
- }
89
-
90
- /** @return string get current environment */
91
- public function getEnvironment(){
92
- return $this->setEnvironment();
93
  }
94
-
95
  /** @return string get Merchant POS Id */
96
- public function getMerchantPosId(){
97
-
98
- // return Mage::getStoreConfig('payment/payu/'.$this->_prefix.'pos_id',Mage::app()->getStore()->getId());
99
- // currently it is the same, so no need to separate parameter configuration
100
- return $this->getClientId();
101
-
102
- }
103
-
104
- /** @return string get Pos Auth Key */
105
- public function getPosAuthKey(){
106
- return $this->getStoreConfig('payment/payu_account/pos_auth_key');
107
- }
108
-
109
- /** @return string get (OAuth Client Name) */
110
- public function getClientId(){
111
- return $this->getStoreConfig('payment/payu_account/oauth_client_name');
112
- }
113
-
114
- /** @return string get (OAuth Client Secret) */
115
- public function getClientSecret(){
116
- return $this->getStoreConfig('payment/payu_account/oauth_client_secret');
117
- }
118
-
119
- /** @return string get signature key */
120
- public function getSignatureKey(){
121
- return $this->getStoreConfig('payment/payu_account/signature_key');
122
- }
123
-
124
- /** @return int order validity time in minutes */
125
- public function getOrderValidityTime(){
126
-
127
- $validityTime = $this->getStoreConfig('payment/payu_account/validity_time');
128
-
129
- if($validityTime)
130
- return $validityTime;
131
-
132
- return "86400";
133
-
134
- }
135
-
136
- /** @return string small logo src */
137
- public function getThumbnailSrc(){
138
- return $this->getStoreConfig('payment/payu_account/payuthumbnail');
139
- }
140
-
141
- /** @return string advertisement banner url */
142
- public function getAdvertisementSrc(){
143
- return $this->localize($this->getStoreConfig('payment/payu_account/payuadvertisement'));
144
- }
145
-
146
- /** @return string one step checkout button url */
147
- public function getButtonSrc(){
148
- return $this->localize($this->getStoreConfig('payment/payu_account/payubutton'));
149
- }
150
-
151
- /** $return string base module url */
152
- public function getBaseUrl(){
153
- return Mage::getBaseUrl().'payu_account/payment/';
154
- }
155
-
156
- /** @return string check if is one step checkout method enabled */
157
- public function getIsOneStepCheckoutEnabled(){
158
- return $this->getStoreConfig('payment/payu_account/onestepcheckoutenabled');
159
- }
160
-
161
- /** @return string check if is one step checkout method available */
162
- public function getIsOneStepCheckoutAvailable(){
163
- return true;
164
- }
165
-
166
- /** @return int what is the default new order status */
167
- public function getNewOrderStatus(){
168
- return $this->getStoreConfig('payment/payu_account/order_status');
169
- }
170
-
171
- public function isLatestVersionInstalled(){
172
- return !Mage::helper('payu_account')->isFirstVersionNewer($this->_latestVersion['version'],$this->_pluginVersion);
173
- }
174
-
175
- /** @return int what is the default new order status */
176
- public function getIsSelfReturnEnabled(){
177
- return $this->getStoreConfig('payment/payu_account/selfreturn');
178
  }
179
 
180
  /**
181
- * Returns goods array (or string when leaf selected) depending on the needs
182
- * @param string $name
183
- * @return array|string $goods
184
  */
185
- public function getGoods($name = null){
186
-
187
- $goodsItem = $this->_goods;
188
-
189
- if($name !== null){
190
-
191
- $name_arr = explode("_",$name);
192
-
193
- foreach($name_arr as $col){
194
- if(empty($goodsItem[$col]))
195
- return array('error');
196
- $goodsItem = $goodsItem[$col];
197
- }
198
-
199
- }
200
-
201
- return $this->localize($goodsItem);
202
-
203
- }
204
-
205
- /** @return array get latest plugin version data */
206
- public function getLatestVersion(){
207
- return $this->_latestVersion;
208
- }
209
-
210
- /** @return array get main latest version of plugin info */
211
- public function getLatestVersionInfo(){
212
- return $this->getGoods($this->_latestVersionPath,"_");
213
  }
214
-
215
- /** @return get current plugin version */
216
- public function getPluginVersion(){
217
- return $this->_pluginVersion;
 
 
 
218
  }
219
-
220
- /** @return string get minimum mage version for the plugin to work on */
221
- public function getMinimumMageVersion(){
222
- return $this->_minimumMageVersion;
 
 
 
223
  }
224
-
225
- /** assign latest version */
226
- protected function setLatestVersionUrl(){
227
- $this->_latestVersionUrl = $this->getGoods($this->localize($this->_latestVersionPath."_info","_"));
 
 
 
228
  }
229
-
230
  /**
231
- * Change locale of given string
232
- *
233
- * @param $string
234
- * @param $s
235
- * @return string
236
  */
237
- protected function localize($string, $s = "/"){
238
- return Mage::helper('payu_account')->localize($string, $s);
 
239
  }
240
-
241
- /** assign latest version data */
242
- protected function setLatestVersion(){
243
- $this->_latestVersion = $this->getArrayFromJsonResponse($this->_latestVersionUrl);
 
 
 
244
  }
245
-
246
- /** assign goods resources array */
247
- protected function setGoods(){
248
- $this->_goods = $this->getArrayFromJsonResponse($this->_goodsUrl);
 
 
 
249
  }
250
-
251
  /**
252
- * Converts json response to array
253
- *
254
- * @param $url string
255
- * @return array
256
  */
257
- protected function getArrayFromJsonResponse($url){
258
- $httpClient = new Varien_Http_Client($url);
259
- $response = $httpClient->request(Varien_Http_Client::GET);
260
- return json_decode($response->getBody(),true);
261
  }
262
-
263
  /**
264
  * get Store Config variable
265
  * @param $name
266
  * @return string
267
  */
268
- protected function getStoreConfig($name){
269
- return Mage::getStoreConfig($name,$this->_storeId);
 
270
  }
271
-
272
- public function getDomainName()
273
- {
274
- return $_SERVER['HTTP_HOST'];
275
- }
276
-
277
-
278
  }
279
-
1
  <?php
2
 
3
  /**
4
+ * PayU Config Model
5
+ *
6
+ * @copyright Copyright (c) 2011-2016 PayU
7
+ * @license http://opensource.org/licenses/GPL-3.0 Open Software License (GPL 3.0)
8
+ */
 
 
 
 
 
9
  class PayU_Account_Model_Config
10
  {
11
+ /**
12
+ * @var string self version
13
+ */
14
+ protected $_pluginVersion = '2.2.0';
15
+
16
+ /**
17
+ * @var string minimum Magento e-commerce version
18
+ */
19
+ protected $_minimumMageVersion = '1.6.0';
20
+
21
+ /**
22
+ * @var int
23
+ */
24
+ protected $_storeId;
25
+
26
+ /**
27
+ * Constructor
28
+ *
29
+ * @param $params
30
+ */
 
 
 
 
 
 
 
 
 
 
 
31
  public function __construct($params = array())
32
  {
33
+ // assign current store id
34
+ $this->setStoreId(Mage::app()->getStore()->getId());
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
  }
36
+
37
  /**
38
+ * @param int $storeId
39
+ * @return $this
40
  */
41
+ public function setStoreId($storeId)
42
+ {
43
+ $this->_storeId = $storeId;
44
+ return $this;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
  }
46
+
47
  /** @return string get Merchant POS Id */
48
+ public function getMerchantPosId()
49
+ {
50
+ return $this->getStoreConfig('payment/payu_account/pos_id');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  }
52
 
53
  /**
54
+ * @return string get signature key
 
 
55
  */
56
+ public function getSignatureKey()
57
+ {
58
+ return $this->getStoreConfig('payment/payu_account/signature_key');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
  }
60
+
61
+ /**
62
+ * @return string get (OAuth Client Name)
63
+ */
64
+ public function getClientId()
65
+ {
66
+ return $this->getStoreConfig('payment/payu_account/oauth_client_id');
67
  }
68
+
69
+ /**
70
+ * @return string get (OAuth Client Secret)
71
+ */
72
+ public function getClientSecret()
73
+ {
74
+ return $this->getStoreConfig('payment/payu_account/oauth_client_secret');
75
  }
76
+
77
+ /**
78
+ * @return string one step checkout button url
79
+ */
80
+ public function getButtonSrc()
81
+ {
82
+ return 'https://static.payu.com/pl/standard/partners/buttons/payu_account_button_01.png';
83
  }
84
+
85
  /**
86
+ * @return string base module url
 
 
 
 
87
  */
88
+ public function getUrl($action)
89
+ {
90
+ return Mage::getUrl("payu_account/payment/$action", array('_secure' => true));
91
  }
92
+
93
+ /**
94
+ * @return string check if is one step checkout method enabled
95
+ */
96
+ public function getIsOneStepCheckoutEnabled()
97
+ {
98
+ return $this->getStoreConfig('payment/payu_account/onestepcheckoutenabled');
99
  }
100
+
101
+ /**
102
+ * @return string get current plugin version
103
+ */
104
+ public function getPluginVersion()
105
+ {
106
+ return $this->_pluginVersion;
107
  }
108
+
109
  /**
110
+ * @return string get minimum mage version for the plugin to work on
 
 
 
111
  */
112
+ public function getMinimumMageVersion()
113
+ {
114
+ return $this->_minimumMageVersion;
 
115
  }
116
+
117
  /**
118
  * get Store Config variable
119
  * @param $name
120
  * @return string
121
  */
122
+ protected function getStoreConfig($name)
123
+ {
124
+ return Mage::getStoreConfig($name, $this->_storeId);
125
  }
126
+
 
 
 
 
 
 
127
  }
 
app/code/community/PayU/Account/Model/Environment.php DELETED
@@ -1,36 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * ver. 1.9.0
5
- * PayU Environment Model
6
- *
7
- * @copyright Copyright (c) 2011-2014 PayU
8
- * @license http://opensource.org/licenses/GPL-3.0 Open Software License (GPL 3.0)
9
- * http://www.payu.com
10
- * http://www.openpayu.com
11
- * http://twitter.com/openpayu
12
- */
13
-
14
-
15
- class PayU_Account_Model_Environment
16
- {
17
-
18
- /** @var string Production environment */
19
- const PRODUCTION = 'secure';
20
-
21
- /** @var string Testing environment */
22
- const SANDBOX = 'sandbox';
23
-
24
- public function toOptionArray() {
25
- return array(
26
- array(
27
- 'value' => PayU_Account_Model_Environment::PRODUCTION,
28
- 'label' => Mage::helper('payu_account')->__('No')
29
- ),
30
- array(
31
- 'value' => PayU_Account_Model_Environment::SANDBOX,
32
- 'label' => Mage::helper('payu_account')->__('Yes')
33
- )
34
- );
35
- }
36
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/PayU/Account/Model/Payment.php CHANGED
@@ -1,976 +1,555 @@
1
  <?php
2
 
3
  /**
4
- * ver. 1.9.0
5
  * PayU -Standard Payment Model
6
  *
7
- * @copyright Copyright (c) 2011-2014 PayU
8
  * @license http://opensource.org/licenses/GPL-3.0 Open Software License (GPL 3.0)
9
- * http://www.payu.com
10
- * http://www.openpayu.com
11
- * http://twitter.com/openpayu
12
  */
13
 
14
- require_once (Mage::getBaseDir('lib').'/payu/sdk_v21/openpayu.php');
15
 
16
- class PayU_Account_Model_Payment extends Mage_Payment_Model_Method_Abstract
17
 
 
18
  {
19
- /**
20
- * Configuration
21
- *
22
- * @var PayU_Account_Model_Config
23
- */
24
- protected $_config;
25
-
26
- /**
27
- * The base module url
28
- *
29
- * @var string
30
- */
31
- protected $_myUrl;
32
-
33
  /**
34
  * Payment method code
35
  *
36
  * @var string
37
  */
38
  protected $_code = 'payu_account';
39
-
40
- /**
41
- * Payment method title
42
- *
43
- * @var string
44
- */
45
- protected $_title = 'PayU';
46
-
47
  /**
48
  * Block type
49
  *
50
  * @var string
51
  */
52
  protected $_formBlockType = 'payu_account/form';
53
-
54
- /**
55
- * Is initialization needed
56
- *
57
- * @var boolean
58
- */
59
- protected $_isInitializeNeeded = true;
60
-
61
  /**
62
  * Transaction id
63
  */
64
  protected $_transactionId;
65
-
66
- /**
67
- * Pay method
68
- */
69
- protected $_payuPayMethod;
70
-
71
  /**
72
  * Currently processed order
73
  *
74
  * @var Mage_Sales_Model_Order
75
  */
76
  protected $_order;
77
- protected $_tempInfo = "AWAITING_PayU";
78
- protected $_isGateway = true;
79
- protected $_canOrder = true;
80
- protected $_canAuthorize = true;
81
  protected $_canCapture = true;
82
- protected $_canCapturePartial = true;
83
  protected $_canRefund = true;
84
  protected $_canRefundInvoicePartial = true;
85
  protected $_canVoid = false;
86
- protected $_canUseInternal = false;
87
  protected $_canUseCheckout = true;
88
  protected $_canUseForMultishipping = false;
89
- protected $_canSaveCc = false;
90
  protected $_canReviewPayment = true;
 
 
91
  protected $_payUOrderResult = null;
92
-
93
- const PAYMENT_STATUS_NEW = 'PAYMENT_STATUS_NEW';
94
- const PAYMENT_STATUS_CANCEL = 'PAYMENT_STATUS_CANCEL';
95
- const PAYMENT_STATUS_REJECT = 'PAYMENT_STATUS_REJECT';
96
- const PAYMENT_STATUS_INIT = 'PAYMENT_STATUS_INIT';
97
- const PAYMENT_STATUS_SENT = 'PAYMENT_STATUS_SENT';
98
- const PAYMENT_STATUS_NOAUTH = 'PAYMENT_STATUS_NOAUTH';
99
- const PAYMENT_STATUS_REJECT_DONE = 'PAYMENT_STATUS_REJECT_DONE';
100
- const PAYMENT_STATUS_END = 'PAYMENT_STATUS_END';
101
- const PAYMENT_STATUS_ERROR = 'PAYMENT_STATUS_ERROR';
102
-
103
- const NEW_PAYMENT_URL = "payu_account/payment/new";
104
-
105
- const ORDER_STATUS_COMPLETE = 'ORDER_STATUS_COMPLETE';
106
- const ORDER_STATUS_CANCEL = 'ORDER_STATUS_CANCEL';
107
- const ORDER_STATUS_REJECT = 'ORDER_STATUS_REJECT';
108
-
109
- const ORDER_V2_NEW = 'NEW';
110
- const ORDER_V2_PENDING = 'PENDING';
111
- const ORDER_V2_CANCELED = 'CANCELED';
112
- const ORDER_V2_REJECTED = 'REJECTED';
113
- const ORDER_V2_COMPLETED = 'COMPLETED';
114
- const ORDER_V2_WAITING_FOR_CONFIRMATION = 'WAITING_FOR_CONFIRMATION';
115
-
116
- public function __construct() {
117
- parent::__construct ();
118
- $this->initializeOpenPayUConfiguration ();
119
- }
120
 
121
- public function getTitle() {
122
- return $this->_title;
 
 
123
  }
124
-
125
  /**
126
- * Initializes the payment.
127
- * @param Mage_Sales_Model_Order
128
- * @param Mage_Shipping_Model_Shipping
129
- * @return array
130
  */
131
- public function orderCreateRequest(Mage_Sales_Model_Order $order, $allShippingRates) {
132
- $this->_order = $order;
133
-
134
- $orderCurrencyCode = $this->_order->getOrderCurrencyCode ();
135
- $orderCountryCode = $this->_order->getBillingAddress ()->getCountry ();
136
- $shippingCostList = array ();
137
-
138
- if (empty ( $allShippingRates ) || Mage::getSingleton ( 'customer/session' )->isLoggedIn()) {
139
-
140
- if($order->getShippingInclTax() > 0) {
141
- $shippingCostList ['shippingMethods'] [] = array(
142
- 'name' => $order->getShippingDescription(),
143
- 'country' => $orderCountryCode,
144
- 'price' => $this->toAmount($order->getShippingInclTax()),
145
- );
146
- }
147
-
148
- $grandTotal = $this->_order->getGrandTotal () - $order->getShippingInclTax();
149
-
150
-
151
- } else {
152
-
153
- $firstPrice = 0;
154
-
155
- foreach ( $allShippingRates as $key => $rate ) {
156
-
157
- $gross = $this->toAmount ( $rate->getPrice () );
158
-
159
- if($key == 0)
160
- $firstPrice = $rate->getPrice ();
161
-
162
- $shippingCostList ['shippingMethods'] [] = array (
163
- 'name' => $rate->getMethodTitle (),
164
- 'country' => $orderCountryCode,
165
- 'price' => $gross
166
- );
167
-
168
- }
169
-
170
- $grandTotal = $this->_order->getGrandTotal () - $firstPrice;
171
 
 
 
 
 
 
 
 
 
 
 
 
172
  }
173
-
174
- $shippingCost = array (
175
- 'countryCode' => $orderCountryCode,'shipToOtherCountry' => 'true','shippingCostList' => $shippingCostList
176
- );
177
-
178
- $orderItems = $this->_order->getAllVisibleItems ();
179
-
180
- $items = array ();
181
- $productsTotal = 0;
182
-
183
- $is_discount = false;
184
-
185
- foreach ( $orderItems as $key => $item ) {
186
-
187
- $itemInfo = $item->getData ();
188
-
189
- if($itemInfo ['discount_amount'] > 0){
190
- $itemInfo ['price_incl_tax'] = $itemInfo ['price_incl_tax'] - $itemInfo ['discount_amount'];
191
- $is_discount = true;
192
- }
193
-
194
- else if($itemInfo ['discount_percent'] > 0)
195
- $itemInfo ['price_incl_tax'] = $itemInfo ['price_incl_tax'] * (100 - $itemInfo ['discount_percent']) / 100;
196
-
197
- // Check if the item is countable one
198
- if ($this->toAmount ( $itemInfo ['price_incl_tax'] ) > 0) {
199
- $items ['products'] [] = array (
200
- 'quantity' => ( int ) $itemInfo ['qty_ordered'],'name' => $itemInfo ['name'],'unitPrice' => $this->toAmount ( $itemInfo ['price_incl_tax'] )
201
- );
202
- $productsTotal += $itemInfo ['price_incl_tax'] * $itemInfo ['qty_ordered'];
203
- }
204
- }
205
-
206
- //if($this->_order->getShippingAmount () > 0 && !empty ( $shippingCostList['shippingMethods'][0] ) ){
207
- // $items ['products'] ['products'] [] = array (
208
- // 'quantity' => 1 ,'name' => Mage::helper ( 'payu_account' )->__('Shipping costs') . " - " . $shippingCostList['shippingMethods'][0]['name'] ,'unitPrice' => $this->toAmount ( $this->_order->getShippingAmount () ));
209
- //}
210
-
211
- // assigning the shopping cart
212
- $shoppingCart = array (
213
- 'grandTotal' => $this->toAmount ( $grandTotal ),'CurrencyCode' => $orderCurrencyCode,'ShoppingCartItems' => $items
214
- );
215
-
216
- $orderInfo = array (
217
- 'merchantPosId' => OpenPayU_Configuration::getMerchantPosId (),'orderUrl' => Mage::getBaseUrl () . 'sales/order/view/order_id/' . $this->_order->getId () . '/','description' => 'Order no ' . $this->_order->getRealOrderId (),'validityTime' => $this->_config->getOrderValidityTime ()
218
- );
219
-
220
- if($is_discount){
221
- $items ['products'] = array();
222
- $items ['products'][] = array (
223
- 'quantity' => 1,'name' => Mage::helper ( 'payu_account' )->__('Order # ') . $this->_order->getId (),'unitPrice' => $this->toAmount ( $grandTotal )
224
- );
225
- }
226
-
227
- $OCReq = $orderInfo;
228
- $OCReq ['products'] = $items ['products'];
229
- $OCReq ['customerIp'] = Mage::app ()->getFrontController ()->getRequest ()->getClientIp ();
230
- $OCReq ['notifyUrl'] = $this->_myUrl . 'orderNotifyRequest';
231
- $OCReq ['cancelUrl'] = $this->_myUrl . 'cancelPayment';
232
- $OCReq ['continueUrl'] = $this->_myUrl . 'continuePayment';
233
- $OCReq ['currencyCode'] = $orderCurrencyCode;
234
- $OCReq ['totalAmount'] = $shoppingCart ['grandTotal'];
235
- $OCReq ['extOrderId'] = $this->_order->getId ().'-'.microtime();
236
- if(!empty($shippingCostList))
237
- $OCReq ['shippingMethods'] = $shippingCostList['shippingMethods'];
238
- unset ( $OCReq ['shoppingCart'] );
239
- $customer_sheet = array ();
240
-
241
- $billingAddressId = $this->_order->getBillingAddressId ();
242
-
243
- if (! empty ( $billingAddressId )) {
244
-
245
- $billingAddress = $this->_order->getBillingAddress ();
246
-
247
- $customer_mail = $billingAddress->getEmail ();
248
-
249
- if (! empty ( $customer_mail )) {
250
-
251
- $customer_sheet = array (
252
- 'email' => $billingAddress->getEmail (),'phone' => $billingAddress->getTelephone (),'firstName' => $billingAddress->getFirstname (),'lastName' => $billingAddress->getLastname ()
253
- );
254
-
255
- $shippingAddressId = $this->_order->getShippingAddressId ();
256
-
257
- if (! empty ( $shippingAddressId )) {
258
- $shippingAddress = $this->_order->getShippingAddress ();
259
- }
260
-
261
- if (! $this->_order->getIsVirtual ()) {
262
- $customer_sheet ['delivery'] = array (
263
- 'street' => trim ( implode ( ' ', $shippingAddress->getStreet () ) ),'postalCode' => $shippingAddress->getPostcode (),'city' => $shippingAddress->getCity (),'countryCode' => $shippingAddress->getCountry (),
264
- 'recipientName' => trim ( $shippingAddress->getFirstname () . ' ' . $shippingAddress->getLastname () ),'recipientPhone' => $shippingAddress->getTelephone (),'recipientEmail' => $shippingAddress->getEmail ()
265
- );
266
- }
267
-
268
- $OCReq ['buyer'] = $customer_sheet;
269
- }
270
- }
271
-
272
- $result = OpenPayU_Order::create($OCReq);
273
-
274
- if ($result->getStatus () == 'SUCCESS') {
275
-
276
- // store session identifier in session info
277
- Mage::getSingleton ( 'core/session' )->setPayUSessionId ( $result->getResponse ()->orderId );
278
-
279
- // assign current transaction id
280
- $this->_transactionId = $result->getResponse ()->orderId;
281
- $order->getPayment()->setLastTransId($this->_transactionId);
282
-
283
-
284
- $locale = Mage::getStoreConfig ( 'general/locale/code', Mage::app ()->getStore ()->getId () );
285
- $lang_code = explode ( '_', $locale, 2 );
286
-
287
- $ret = array (
288
- 'redirectUri' => $result->getResponse ()->redirectUri,'url' => OpenPayu_Configuration::getSummaryUrl (),'sessionId' => $result->getResponse ()->orderId,'lang' => strtolower ( $lang_code [1] )
289
- );
290
-
291
- $customer = Mage::getModel ( 'customer/customer' );
292
-
293
- if ($this->_order->getCustomerIsGuest ()) {
294
- $email = $billingAddress->getEmail ();
295
- $customer->setWebsiteId ( Mage::app ()->getWebsite ()->getId () );
296
- $customer->loadByEmail ( $email );
297
-
298
- } else {
299
- $customer->load ( $this->_order->getCustomerId () );
300
- }
301
-
302
- if (! $customer->getId ()) {
303
- $this->_order->setCustomerEmail ( $email );
304
- }
305
-
306
- $this->_order->sendNewOrderEmail ();
307
 
308
- $this->_order->save ();
309
-
310
- } else {
311
- Mage::throwException ( Mage::helper ( 'payu_account' )->__ ( 'There was a problem with initializing the payment, please contact the store administrator. ' . $result->getError () ) );
312
- }
313
-
314
- return $ret;
315
-
316
  }
317
 
318
-
319
  /**
320
- * Refund payment
321
  *
322
- * @param Varien_Object $payment
323
- * @param float $amount
324
- * @return $this
325
  */
326
- public function refund(Varien_Object $payment, $amount){
327
- $order = $payment->getOrder();
328
- $this->_order = $order;
329
- $amount = $amount*100;
330
- $result = OpenPayU_Refund::create($this->_order->getPayment ()->getLastTransId(), 'Magento payu refund', $amount);
331
-
332
- Mage::log($result,null, 'orderRefund.log');
333
-
334
- if ($result->getStatus() == 'SUCCESS') {
335
- return $this;
336
- }
337
-
338
- $serverMsg = OpenPayU_Util::statusDesc($result->getStatus());
339
- $errorMsg = $this->_getHelper()->__($serverMsg);
340
- Mage::throwException($errorMsg);
341
 
 
 
 
 
 
 
342
  }
343
-
344
  /**
345
- * One Step Checkout initialization
346
- *
347
  * @return Mage_Sales_Model_Order
348
  */
349
- public function newOneStep() {
350
-
351
- $checkout = Mage::getSingleton ( 'checkout/type_onepage' );
352
- $customerSession = Mage::getSingleton ( 'customer/session' );
353
- $checkout->initCheckout ();
354
-
355
- // if guest payment
356
- if (! $customerSession->isLoggedIn ()) {
357
-
358
- $billingAddress = array (
359
- 'address_id' => 5,'firstname' => $this->_tempInfo,'lastname' => $this->_tempInfo,'company' => "",'street' => array (
360
- 0 => $this->_tempInfo,1 => $this->_tempInfo
361
- ) ,'region_id' => '',
362
- 'region' => '','city' => $this->_tempInfo,'postcode' => $this->_tempInfo,'country_id' => Mage::helper ( 'core' )->getDefaultCountry (),'telephone' => "0000000",'save_in_address_book' => 0
363
- );
364
-
365
- $checkout->saveBilling ( $billingAddress, false );
366
- $checkout->saveShipping ( $billingAddress, false );
367
- $checkout->saveCheckoutMethod ( 'guest' );
368
- $checkout->getQuote ()->setCustomerId ( null )->setCustomerIsGuest ( true )->setCustomerEmail ( md5 ( rand () . rand () ) . "_TEMP_PayU@" . Mage::getModel ( 'payu_account/config' )->getDomainName () )->setCustomerGroupId ( Mage_Customer_Model_Group::NOT_LOGGED_IN_ID );
369
-
370
- } else {
371
- $customer = $customerSession->getCustomer ();
372
-
373
- $billing = $checkout->getQuote ()->getBillingAddress ();
374
- $shipping = $checkout->getQuote ()->isVirtual () ? null : $checkout->getQuote ()->getShippingAddress ();
375
-
376
- $customerBilling = $billing->exportCustomerAddress ();
377
-
378
- $billing->setCustomerAddress ( $customerBilling );
379
- $customerBilling->setIsDefaultBilling ( true );
380
-
381
- if ($shipping && ! $shipping->getSameAsBilling ()) {
382
- $customerShipping = $shipping->exportCustomerAddress ();
383
- $shipping->setCustomerAddress ( $customerShipping );
384
- $customerShipping->setIsDefaultShipping ( true );
385
- } else {
386
- $customerBilling->setIsDefaultShipping ( true );
387
- }
388
-
389
- $checkout->saveCheckoutMethod ( 'register' );
390
-
391
- $checkout->getQuote ()->setCustomerId ( $customerSession->getCustomerId () )->setCustomerIsGuest ( false );
392
- }
393
-
394
- $checkout->getQuote ()->getBillingAddress ()->setShippingMethod ( 'flatrate_flatrate' )->setCollectShippingRates ( true )->save();
395
- $checkout->getQuote ()->getShippingAddress()->setShippingMethod ( 'flatrate_flatrate' )->setCollectShippingRates ( true )->save();
396
-
397
- // presetting the default shipment method
398
- $checkout->saveShippingMethod ( 'flatrate_flatrate' );
399
- $checkout->getQuote ()->collectTotals ()->save ();
400
-
401
- // assigning the payment method type
402
- $checkout->savePayment ( array (
403
- 'method' => $this->_code
404
- ) );
405
-
406
- $checkout->saveOrder ();
407
-
408
- $this->_order = Mage::getModel ( 'sales/order' )->load ( $checkout->getQuote ()->getId (), 'quote_id' );
409
-
410
- $storeId = Mage::app ()->getStore ()->getId ();
411
- $paymentHelper = Mage::helper ( "payment" );
412
- $zeroSubTotalPaymentAction = $paymentHelper->getZeroSubTotalPaymentAutomaticInvoice ( $storeId );
413
- if ($paymentHelper->isZeroSubTotal ( $storeId ) && $this->_order->getGrandTotal () == 0 && $zeroSubTotalPaymentAction == Mage_Payment_Model_Method_Abstract::ACTION_AUTHORIZE_CAPTURE && $paymentHelper->getZeroSubTotalOrderStatus ( $storeId ) == 'pending') {
414
- $invoice = $this->_initInvoice ();
415
- $invoice->getOrder ()->setIsInProcess ( true );
416
- $transactionSave = Mage::getModel ( 'core/resource_transaction' )->addObject ( $invoice )->addObject ( $invoice->getOrder () );
417
- $transactionSave->save ();
418
- }
419
-
420
  return $this->_order;
421
-
422
  }
423
-
424
  /**
425
- *
426
- * @param Mage_Payment_Model_Info $payment
427
- * @return bool
428
  */
429
- public function acceptPayment(Mage_Payment_Model_Info $payment) {
430
- parent::acceptPayment ( $payment );
431
-
432
- $sessionId = $payment->getLastTransId ();
433
-
434
- if (empty ( $sessionId )) {
435
- return false;
436
- }
437
-
438
- if (! $this->orderStatusUpdateRequest ( self::ORDER_V2_COMPLETED, $sessionId )) {
439
- return false;
440
- }
441
-
442
- return true;
443
  }
444
-
445
  /**
 
446
  *
447
- * @param Mage_Payment_Model_Info $payment
448
- * @return bool
449
  */
450
- public function denyPayment(Mage_Payment_Model_Info $payment) {
451
- parent::denyPayment ( $payment );
452
-
453
- $sessionId = $payment->getLastTransId ();
454
-
455
- if (empty ( $sessionId )) {
456
- return false;
457
- }
458
-
459
- if (! $this->orderStatusUpdateRequest ( self::ORDER_V2_REJECTED, $sessionId )) {
460
- return false;
461
- }
462
-
463
- return true;
464
  }
465
-
466
  /**
 
467
  *
468
- * @param
469
- * $order
470
- * @return bool OpenPayU_Result
471
  */
472
- public function completeOrder($order) {
473
-
474
- $this->_order = $order;
475
- $result = $this->orderStatusUpdateRequest ( self::ORDER_V2_COMPLETED, $this->_order->getPayment ()->getLastTransId () );
476
- return $result;
477
-
478
  }
479
-
480
  /**
 
481
  *
482
- * @param $order
483
- * @return bool
484
  */
485
- public function rejectOrder($order) {
486
- $this->_order = $order;
487
- return $this->cancelOrder($this->_order);
488
  }
489
-
490
  /**
 
491
  *
492
- * @param $order
493
- * @return bool
494
  */
495
- public function cancelOrder($order) {
496
-
497
- $this->_order = $order;
498
- $result = OpenPayU_Order::cancel($this->_order->getPayment ()->getLastTransId ());
499
- if ($result->getStatus() == 'SUCCESS') {
500
- //$this->updateOrderStatus ( self::ORDER_V2_CANCELED );
501
- return true;
502
- }
503
- return false;
504
  }
505
-
506
  /**
507
- * Cancel payment
 
 
 
508
  */
509
- public function cancelPayment() {
510
-
511
- $sessionId = Mage::app ()->getRequest ()->getParam ( 'sessionId' );
512
- if (! empty ( $sessionId )) {
513
- $result = OpenPayU_Order::cancel ( $sessionId );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
514
  }
515
-
516
- }
517
-
518
- protected function retrieveAndUpdateByOrderRetrieved( $orderRetrieved ) {
519
-
520
- $this->setOrderByOrderId ( $orderRetrieved->extOrderId );
521
-
522
- $payUOrderStatus = $orderRetrieved->status;
523
-
524
- $payUPaymentStatus = $orderRetrieved->status;
525
-
526
- if(isset($orderRetrieved->payMethod->type))
527
- $this->_payuPayMethod = $orderRetrieved->payMethod->type;
528
-
529
- $this->updatePaymentStatus ( $payUPaymentStatus, $payUOrderStatus );
530
-
531
- if(!empty($orderRetrieved->buyer)){
532
- $this->updateCustomerData($orderRetrieved->buyer);
533
- //$this->updateShippingInfo($response->orders->orders[0]->buyer);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
534
  }
535
-
536
  }
537
-
 
538
  /**
539
- * @param $status
540
- * @param $sessionId
541
- * @return bool OpenPayU_Result
542
  */
543
- protected function orderStatusUpdateRequest($status, $sessionId) {
544
-
545
- if (empty ( $sessionId )) {
546
- $sessionId = $this->_order->getPayment ()->getLastTransId ();
547
- }
548
-
549
- if (empty ( $sessionId )) {
550
- Mage::log ( "PayU sessionId empty: " . $this->getId () );
551
  return false;
552
  }
553
-
554
- $status_update = array(
555
- "orderId" => stripslashes($sessionId),
556
- "orderStatus" => $status
557
- );
558
-
559
- $result = OpenPayU_Order::statusUpdate ( $status_update );
560
-
561
- if ($result) {
562
- return true;
563
- } else {
564
- Mage::log ( "PayU error while updating status: " . $result->getError () );
565
- }
566
-
567
- return $result;
568
- }
569
-
570
- protected function setOrderByOrderId( $extOrderId ) {
571
- $this->_order = Mage::getModel ( 'sales/order' )->load ( $extOrderId );
572
- }
573
-
574
- public function orderNotifyRequest() {
575
-
576
- $body = file_get_contents ( 'php://input' );
577
- $data = trim ( $body );
578
-
579
- $result = OpenPayU_Order::consumeNotification ( $data );
580
- $response = $result->getResponse();
581
- if ($response->order->orderId) {
582
-
583
- $this->_transactionId = $response->order->orderId;
584
-
585
- $extOrderIdExploded = $pieces = explode("-", $response->order->extOrderId);
586
- $orderId = $extOrderIdExploded[0];
587
- // Mage::log(print_r($orderId, true),null, 'notification.log');
588
-
589
- $this->setOrderByOrderId ( $orderId );
590
-
591
- if($response->order->status == 'COMPLETED' && $this->_order->getState() == Mage_Sales_Model_Order::STATE_PROCESSING){
592
- header("HTTP/1.1 200 OK");
593
- exit;
594
- }
595
 
596
- $this->retrieveAndUpdateByOrderRetrieved ( $response->order );
597
- //the response should be status 200
598
- header("HTTP/1.1 200 OK");
599
  }
600
- exit;
 
601
  }
602
-
603
  /**
604
- * Update order's customer information based on PayU information
605
- * @var array result data from payu with billing and shipping info
 
606
  */
607
- protected function updateCustomerData($data)
608
  {
609
-
610
- try {
611
-
612
- $customerRecord = $data;
613
-
614
- $this->_order->setCustomerFirstname($customerRecord->firstName);
615
- $this->_order->setCustomerLastname($customerRecord->lastName);
616
- $this->_order->setCustomerEmail($customerRecord->email);
617
-
618
- if (isset($data->delivery) && !empty( $data->delivery )) {
619
-
620
- $shippingAddress = $data->delivery;
621
-
622
- /* $billing = $this->_order->getBillingAddress();
623
-
624
- $billing->setCity($shippingAddress->city);
625
- $billing->setStreet($shippingAddress->street);
626
- $billing->setPostcode($shippingAddress->postalCode);
627
- $billing->setCountryId($shippingAddress->countryCode);
628
-
629
- $this->_order->setBillingAddress($billing)->save(); */
630
-
631
- $recipient = explode(" ", $shippingAddress->recipientName);
632
-
633
- $shipping = $this->_order->getShippingAddress();
634
-
635
- $shipping->setFirstname($recipient[0]);
636
- $shipping->setLastname($recipient[1]);
637
- //$shipping->setTelephone($customerRecord['phone']);
638
- $shipping->setCity($shippingAddress->city);
639
- $shipping->setStreet($shippingAddress->street);
640
- $shipping->setPostcode($shippingAddress->postalCode);
641
- $shipping->setCountryId($shippingAddress->countryCode);
642
-
643
- $this->_order->setShippingAddress($shipping)->save();
644
-
645
- }
646
-
647
- /* if (isset($data['billing']) && !empty( $data['billing'] )) {
648
- $billingAddress = $data['billing'];
649
-
650
- $billing = $this->_order->getBillingAddress();
651
-
652
- $recipient = explode(" ", $billingAddress['recipientName']);
653
-
654
- $billing->setFirstname($recipient[0]);
655
- $billing->setLastname($recipient[1]);
656
- $billing->setCompany($billingAddress['recipientName']);
657
- $billing->setTelephone($customerRecord['phone']);
658
- $billing->setCity($billingAddress['city']);
659
- $billing->setStreet($billingAddress['street']);
660
- $billing->setPostcode($billingAddress['postalCode']);
661
- $billing->setCountryId($billingAddress['countryCode']);
662
- //$this->_order->setCustomerTaxvat($billingAddress['TIN']);
663
-
664
- $this->_order->setBillingAddress($billing)->save();
665
- }
666
- else
667
- {
668
- $billing = $this->_order->getBillingAddress();
669
-
670
- $billing->setFirstname($customerRecord['firstName']);
671
- $billing->setLastname($customerRecord['lastName']);
672
- $billing->setTelephone($customerRecord['phone']);
673
-
674
- $this->_order->setBillingAddress($billing)->save();
675
- } */
676
-
677
- if (!$this->_order->getEmailSent()) {
678
- $this->_order->sendNewOrderEmail();
679
- $this->_order->setEmailSent(1);
680
- }
681
-
682
- $this->_order->save();
683
-
684
- } catch (Error $e) {
685
- Mage::logException("Can not update order data: " . $e);
686
  }
687
-
 
 
 
 
 
688
  }
689
-
690
  /**
 
691
  *
692
- * Update shipping info after notifyRequest
693
- * @param array $data
 
694
  */
695
- protected function updateShippingInfo($data)
696
  {
 
 
 
697
  try {
698
- $typeChosen = $data['Shipping']['ShippingType'];
699
- $cost = $data['Shipping']['ShippingCost']['Gross'];
700
-
701
- if (!empty($typeChosen)) {
702
-
703
- $quote = Mage::getModel('sales/quote')->load($this->_order->getQuoteId());
704
- $address = $quote->getShippingAddress();
705
-
706
- $shipping = Mage::getModel('shipping/shipping');
707
- $shippingRates = $shipping->collectRatesByAddress($address)->getResult();
708
-
709
- $shippingCostList = array();
710
-
711
- foreach ($shippingRates->getAllRates() as $rate) {
712
- $type = $rate->getCarrierTitle() . ' - ' . $rate->getMethodTitle();
713
-
714
- if ($type == $typeChosen) {
715
- $this->_order->setShippingDescription($typeChosen);
716
- $this->_order->setShippingMethod($rate->getCarrier() . "_" . $rate->getMethod());
717
- $current = $this->_order->getShippingAmount();
718
- $this->_order->setShippingAmount($cost / 100);
719
- $this->_order->setGrandTotal($this->_order->getGrandTotal() + $this->_order->getShippingAmount() - $current);
720
- $this->_order->save();
721
- }
722
- }
723
-
724
  }
725
-
726
- } catch (Exception $e) {
727
- Mage::logException("shipping info error: " . $e);
 
 
728
  }
729
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
730
  }
731
 
732
-
733
  /**
734
  * Update payment status
735
  *
736
  * @param $paymentStatus
737
- * @param $payUOrderStatus
738
  */
739
- protected function updatePaymentStatus($paymentStatus, $payUOrderStatus) {
740
-
741
- $payment = $this->_order->getPayment ();
742
- $currentState = $payment->getAdditionalInformation ( 'payu_payment_status' );
743
 
744
- if(($currentState == self::ORDER_V2_COMPLETED && $paymentStatus == self::ORDER_V2_PENDING) || ($currentState == self::ORDER_V2_COMPLETED && $paymentStatus == self::ORDER_V2_COMPLETED))
745
- return;
746
 
747
- if ($currentState != $paymentStatus) {
748
  try {
749
  switch ($paymentStatus) {
750
- case self::ORDER_V2_NEW:
751
- $this->updatePaymentStatusNew ( $payment );
752
- break;
753
-
754
- case self::ORDER_V2_PENDING:
755
- $this->updatePaymentStatusPending ( $payment );
756
  break;
757
-
758
- case self::ORDER_V2_CANCELED:
759
- $this->updatePaymentStatusCanceled ( $payment );
760
  break;
761
-
762
- case self::ORDER_V2_REJECTED:
763
- $this->updatePaymentStatusDenied ( $payment );
 
764
  break;
765
-
766
- case self::ORDER_V2_COMPLETED:
767
- $this->updatePaymentStatusCompleted ( $payment );
768
  break;
769
  }
770
- // set current PayU status information and save
771
- $payment->setAdditionalInformation ( 'payu_payment_status', $paymentStatus )->save ();
772
- } catch ( Exception $e ) {
773
- Mage::logException ( $e );
 
 
774
  }
775
  }
776
  }
777
-
778
- /**
779
- * Get PayU session namespace
780
- *
781
- * @return PayU_Account_Model_Session
782
- */
783
- public function getSession() {
784
- return Mage::getSingleton ( 'payu_account/session' );
785
- }
786
-
787
- /**
788
- * Get checkout session namespace
789
- *
790
- * @return Mage_Checkout_Model_Session
791
- */
792
- public function getCheckout() {
793
- return Mage::getSingleton ( 'checkout/session' );
794
- }
795
-
796
- /**
797
- * Returns amount in PayU acceptable format
798
- *
799
- * @param $val
800
- */
801
- protected function toAmount($val) {
802
- return Mage::helper ( 'payu_account' )->toAmount ( $val );
803
- }
804
-
805
- /**
806
- * Redirection url
807
- *
808
- * @return string
809
- */
810
- public function getOrderPlaceRedirectUrl() {
811
- return Mage::getUrl ( 'payu_account/payment/new', array (
812
- '_secure' => true
813
- ) );
814
- }
815
-
816
- /**
817
- * Get current quote
818
- *
819
- * @return Mage_Sales_Model_Quote
820
- */
821
- public function getQuote() {
822
- return $this->getCheckout ()->getQuote ();
823
- }
824
-
825
  /**
826
  * Update payment status to new
827
  *
828
- * @param $payment
829
  */
830
- public function updatePaymentStatusNew($payment) {
831
- $payment->setTransactionId ( $this->_transactionId );
832
- $payment->setPreparedMessage ( "PayU - " . Mage::helper ( 'payu_account' )->__ ( 'New transaction started.' ) );
833
- $payment->save ();
834
- $this->_order->setState ( Mage_Sales_Model_Order::STATE_NEW, true, "PayU - " . Mage::helper ( 'payu_account' )->__ ( 'New transaction started.' ), true )->sendOrderUpdateEmail ()->save ();
 
 
 
 
 
 
 
 
 
 
 
 
835
  }
836
-
837
  /**
838
  * Change the status to canceled
839
  *
840
- * @param unknown_type $payment
841
  */
842
- public function updatePaymentStatusCanceled($payment) {
843
- $payment->setTransactionId ( $this->_transactionId );
844
- $payment->setPreparedMessage ( "PayU - " . Mage::helper ( 'payu_account' )->__ ( 'Transaction canceled.' ) );
845
- $this->_order->setState ( Mage_Sales_Model_Order::STATE_CANCELED, true, "PayU - " . Mage::helper ( 'payu_account' )->__ ( 'The transaction has been canceled.' ), true )->sendOrderUpdateEmail ()->save ();
 
 
 
 
 
 
 
 
 
 
 
 
 
846
  }
847
-
848
  /**
849
  * Change the status to rejected
850
  *
851
- * @param $payment
852
  */
853
- public function updatePaymentStatusDenied($payment) {
854
- $payment->setTransactionId ( $this->_transactionId );
855
- $payment->setPreparedMessage ( "PayU - " . Mage::helper ( 'payu_account' )->__ ( 'Transaction rejected.' ) )->setParentTransactionId ( $this->_transactionId );
856
- $this->_order->setState ( Mage_Sales_Model_Order::STATE_CANCELED, true, "PayU - " . Mage::helper ( 'payu_account' )->__ ( 'The transaction has been rejected.' ), true )->sendOrderUpdateEmail ()->save ();
857
- }
858
-
859
- /**
860
- * Update payment status to sent
861
- *
862
- * @param $payment
863
- */
864
- public function updatePaymentStatusSent($payment) {
865
- if ($this->_order->getState () != Mage_Sales_Model_Order::STATE_PAYMENT_REVIEW) {
866
- $payment->setTransactionId ( $this->_transactionId );
867
- $payment->setIsTransactionApproved ( false );
868
- $payment->setIsTransactionClosed ( false );
869
- $payment->addTransaction ( Mage_Sales_Model_Order_Payment_Transaction::TYPE_ORDER );
870
- $payment->setPreparedMessage ( "PayU - " . Mage::helper ( 'payu_account' )->__ ( 'Transaction awaits approval.' ) );
871
- $this->_order->setState ( Mage_Sales_Model_Order::STATE_PAYMENT_REVIEW, true, "PayU - " . Mage::helper ( 'payu_account' )->__ ( 'Transaction awaits approval.' ), false )->save ();
872
- }
873
  }
874
-
875
  /**
876
- * Update payment status to returned and holded
877
  *
878
- * @param
879
- * $payment
880
  */
881
- public function updatePaymentStatusReturned($payment) {
882
- $payment->setTransactionId ( $this->_transactionId );
883
- $payment->setPreparedMessage ( "PayU - " . Mage::helper ( 'payu_account' )->__ ( 'Transaction returned.' ) );
884
- $this->_order->setState ( Mage_Sales_Model_Order::STATE_HOLDED, true, "PayU - " . Mage::helper ( 'payu_account' )->__ ( 'The transaction has been returned.' ), true )->sendOrderUpdateEmail ()->save ();
 
 
 
 
 
 
 
 
 
 
 
885
  }
886
-
887
  /**
888
- * Update payment status to pending
889
- *
890
- * @param $payment
891
  */
892
- public function updatePaymentStatusPending($payment) {
893
- if ($this->_order->getState () != Mage_Sales_Model_Order::STATE_PENDING_PAYMENT) {
894
- $payment->setTransactionId ( $this->_transactionId );
895
- $payment->setIsTransactionApproved ( false );
896
- $payment->setIsTransactionClosed ( false );
897
- $payment->addTransaction ( Mage_Sales_Model_Order_Payment_Transaction::TYPE_ORDER );
898
- $payment->setPreparedMessage ( "PayU - " . Mage::helper ( 'payu_account' )->__ ( 'The transaction is pending.' ) );
899
- $this->_order->setState ( Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, true, "PayU - " . Mage::helper ( 'payu_account' )->__ ( 'The transaction is pending.' ), false )->save ();
900
  }
901
- }
902
-
903
- /**
904
- * Update payment status to complete
905
- *
906
- * @param $payment
907
- */
908
- public function updatePaymentStatusCompleted($payment) {
909
- if ($this->_order->getState () != Mage_Sales_Model_Order::STATE_PROCESSING) {
910
- $payment->setTransactionId ( $this->_transactionId );
911
- $payment->setIsTransactionApproved ( true );
912
- $payment->setIsTransactionClosed ( true );
913
- $payment->addTransaction ( Mage_Sales_Model_Order_Payment_Transaction::TYPE_ORDER );
914
- if(isset($this->_payuPayMethod)){
915
-
916
- if($this->_payuPayMethod == "PBL")
917
- $method = Mage::helper( 'payu_account' )->__ ('Pay by link');
918
-
919
- if($this->_payuPayMethod == "CARD_TOKEN")
920
- $method = Mage::helper( 'payu_account' )->__ ('Pay with card');
921
- }
922
-
923
- if(isset($method)){
924
- $payment->setPreparedMessage ( "PayU - " . $method . " " . Mage::helper ( 'payu_account' )->__ ( 'The transaction completed successfully.' ) );
925
- $this->_order->setState ( Mage_Sales_Model_Order::STATE_PROCESSING, true, "PayU - " . $method . " " . Mage::helper ( 'payu_account' )->__ ( 'The transaction completed successfully.' ), false )->sendOrderUpdateEmail ( true, "PayU - " . Mage::helper ( 'payu_account' )->__ ( 'The transaction completed successfully in PayU.' ) )->save ();
926
- }else{
927
- $payment->setPreparedMessage ( "PayU - " . Mage::helper ( 'payu_account' )->__ ( 'The transaction completed successfully.' ) );
928
- $this->_order->setState ( Mage_Sales_Model_Order::STATE_PROCESSING, true, "PayU - " . Mage::helper ( 'payu_account' )->__ ( 'The transaction completed successfully.' ), false )->sendOrderUpdateEmail ( true, "PayU - " . Mage::helper ( 'payu_account' )->__ ( 'The transaction completed successfully in PayU.' ) )->save ();
929
- }
930
  }
931
  }
932
-
933
- /**
934
- * Update payment status to error
935
- *
936
- * @param $payment
937
- */
938
- public function updatePaymentStatusError($payment) {
939
- $payment->setTransactionId ( $this->_transactionId );
940
- $payment->setPreparedMessage ( "PayU - " . Mage::helper ( 'payu_account' )->__ ( 'The transaction is incorrect.' ) )->setParentTransactionId ( $this->_transactionId );
941
- $this->_order->setState ( Mage_Sales_Model_Order::STATE_PAYMENT_REVIEW, true, "PayU - " . Mage::helper ( 'payu_account' )->__ ( 'The transaction is incorrect.' ) )->sendOrderUpdateEmail ( true, "PayU - " . Mage::helper ( 'payu_account' )->__ ( 'The transaction is incorrect.' ) )->save ();
942
- }
943
-
944
- /**
945
- * calculating the tax rate
946
- */
947
- protected function calculateTaxRate() {
948
- return ($this->_order->getShippingAmount () > 0) ? $this->_order->getShippingTaxAmount () / $this->_order->getShippingAmount () : 0.0;
949
- }
950
-
951
  /**
952
- * Get PayU -configuration
953
  *
954
- * @return PayU_Account_Model_Config
955
- */
956
- protected function getConfig() {
957
- return Mage::getModel ( 'payu_account/config' );
958
- }
959
-
960
- /**
961
- * Initialize PayU configuration
962
  */
963
- protected function initializeOpenPayUConfiguration() {
964
-
965
- $this->_config = $this->getConfig ();
966
- $this->_myUrl = $this->_config->getBaseUrl ();
967
-
968
- OpenPayU_Configuration::setApiVersion ( 2.1 );
969
- OpenPayU_Configuration::setEnvironment ( 'secure' );
970
- OpenPayU_Configuration::setMerchantPosId ( $this->_config->getMerchantPosId () );
971
- OpenPayU_Configuration::setSignatureKey ( $this->_config->getSignatureKey () );
972
- OpenPayU_Configuration::setSender("Magento ver " . Mage::getVersion() . "/Plugin ver " . $this->_config->getPluginVersion());
973
-
974
  }
975
 
976
  }
1
  <?php
2
 
3
  /**
 
4
  * PayU -Standard Payment Model
5
  *
6
+ * @copyright Copyright (c) 2011-2016 PayU
7
  * @license http://opensource.org/licenses/GPL-3.0 Open Software License (GPL 3.0)
8
+ * http://www.payu.com
 
 
9
  */
10
 
11
+ require_once(Mage::getBaseDir('lib') . '/PayU/openpayu.php');
12
 
 
13
 
14
+ class PayU_Account_Model_Payment extends Mage_Payment_Model_Method_Abstract
15
  {
16
+ const DELIMITER = '-';
17
+
 
 
 
 
 
 
 
 
 
 
 
 
18
  /**
19
  * Payment method code
20
  *
21
  * @var string
22
  */
23
  protected $_code = 'payu_account';
24
+
 
 
 
 
 
 
 
25
  /**
26
  * Block type
27
  *
28
  * @var string
29
  */
30
  protected $_formBlockType = 'payu_account/form';
31
+
 
 
 
 
 
 
 
32
  /**
33
  * Transaction id
34
  */
35
  protected $_transactionId;
36
+
 
 
 
 
 
37
  /**
38
  * Currently processed order
39
  *
40
  * @var Mage_Sales_Model_Order
41
  */
42
  protected $_order;
43
+
44
+ protected $_isGateway = false;
45
+ protected $_canOrder = false;
46
+ protected $_canAuthorize = false;
47
  protected $_canCapture = true;
48
+ protected $_canCapturePartial = false;
49
  protected $_canRefund = true;
50
  protected $_canRefundInvoicePartial = true;
51
  protected $_canVoid = false;
52
+ protected $_canUseInternal = true;
53
  protected $_canUseCheckout = true;
54
  protected $_canUseForMultishipping = false;
 
55
  protected $_canReviewPayment = true;
56
+ protected $_isInitializeNeeded = true;
57
+
58
  protected $_payUOrderResult = null;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
 
60
+ public function __construct()
61
+ {
62
+ parent::__construct();
63
+ $this->initializeOpenPayUConfiguration();
64
  }
65
+
66
  /**
67
+ * @return PayU_Account_Helper_Data
 
 
 
68
  */
69
+ protected function _helper()
70
+ {
71
+ return Mage::helper('payu_account');
72
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
73
 
74
+ /**
75
+ * Initialize PayU configuration
76
+ */
77
+ protected function initializeOpenPayUConfiguration()
78
+ {
79
+ OpenPayU_Configuration::setEnvironment('secure');
80
+ OpenPayU_Configuration::setMerchantPosId($this->getConfig()->getMerchantPosId());
81
+ OpenPayU_Configuration::setSignatureKey($this->getConfig()->getSignatureKey());
82
+ if ($this->getConfig()->getClientId() && $this->getConfig()->getClientSecret()) {
83
+ OpenPayU_Configuration::setOauthClientId($this->getConfig()->getClientId());
84
+ OpenPayU_Configuration::setOauthClientSecret($this->getConfig()->getClientSecret());
85
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
 
87
+ OpenPayU_Configuration::setSender('Magento ver ' . Mage::getVersion() . '/Plugin ver ' . $this->getConfig()->getPluginVersion());
 
 
 
 
 
 
 
88
  }
89
 
 
90
  /**
91
+ * Get PayU configuration
92
  *
93
+ * @return PayU_Account_Model_Config
 
 
94
  */
95
+ public function getConfig()
96
+ {
97
+ return Mage::getSingleton('payu_account/config');
98
+ }
 
 
 
 
 
 
 
 
 
 
 
99
 
100
+ /**
101
+ * @param string $extOrderId
102
+ */
103
+ private function _setOrderByOrderId($extOrderId)
104
+ {
105
+ $this->_order = Mage::getModel('sales/order')->load($extOrderId);
106
  }
107
+
108
  /**
 
 
109
  * @return Mage_Sales_Model_Order
110
  */
111
+ public function getOrder()
112
+ {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  return $this->_order;
 
114
  }
115
+
116
  /**
117
+ * @param Mage_Sales_Model_Order $order
 
 
118
  */
119
+ public function setOrder(Mage_Sales_Model_Order $order)
120
+ {
121
+ $this->_order = $order;
 
 
 
 
 
 
 
 
 
 
 
122
  }
123
+
124
  /**
125
+ * Get PayU session namespace
126
  *
127
+ * @return PayU_Account_Model_Session
 
128
  */
129
+ public function getSession()
130
+ {
131
+ return Mage::getSingleton('payu_account/session');
 
 
 
 
 
 
 
 
 
 
 
132
  }
133
+
134
  /**
135
+ * Redirection url
136
  *
137
+ * @return string
 
 
138
  */
139
+ public function getOrderPlaceRedirectUrl()
140
+ {
141
+ return Mage::getUrl('payu_account/payment/new', array('_secure' => true));
 
 
 
142
  }
143
+
144
  /**
145
+ * Get current quote
146
  *
147
+ * @return Mage_Sales_Model_Quote
 
148
  */
149
+ public function getQuote()
150
+ {
151
+ return $this->getCheckoutSession()->getQuote();
152
  }
153
+
154
  /**
155
+ * Get checkout session namespace
156
  *
157
+ * @return Mage_Checkout_Model_Session
 
158
  */
159
+ public function getCheckoutSession()
160
+ {
161
+ return Mage::getSingleton('checkout/session');
 
 
 
 
 
 
162
  }
163
+
164
  /**
165
+ * Create order
166
+ *
167
+ * @param Mage_Sales_Model_Order
168
+ * @return array
169
  */
170
+ public function orderCreateRequest(Mage_Sales_Model_Order $order)
171
+ {
172
+ $this->setOrder($order);
173
+ $items = array();
174
+ $items[] = array(
175
+ 'quantity' => 1,
176
+ 'name' => $this->_helper()->__('Shipping') . ': ' . $order->getShippingDescription(),
177
+ 'unitPrice' => $this->_toAmount($order->getShippingInclTax())
178
+ );
179
+
180
+ $orderItems = $order->getAllVisibleItems();
181
+ $response = array();
182
+
183
+ foreach ($orderItems as $key => $item) {
184
+ $itemInfo = $item->getData();
185
+
186
+ $items[] = array(
187
+ 'quantity' => (int)$itemInfo['qty_ordered'],
188
+ 'name' => $itemInfo['name'],
189
+ 'unitPrice' => $this->_toAmount($itemInfo['price_incl_tax'])
190
+ );
191
  }
192
+
193
+ if ($order->getDiscountAmount()) {
194
+ $items[] = array(
195
+ 'quantity' => 1,
196
+ 'name' => $this->_helper()->__('Discount'),
197
+ 'unitPrice' => $this->_toAmount($order->getDiscountAmount())
198
+ );
199
+ }
200
+
201
+ $OCReq = array(
202
+ 'merchantPosId' => OpenPayU_Configuration::getMerchantPosId(),
203
+ 'orderUrl' => Mage::getUrl('sales/order/view', array('order_id' => $order->getId())),
204
+ 'description' => $this->_helper()->__('Order #%s', $order->getRealOrderId()),
205
+ 'products' => $items,
206
+ 'customerIp' => Mage::app()->getFrontController()->getRequest()->getClientIp(),
207
+ 'notifyUrl' => $this->getConfig()->getUrl('orderNotifyRequest'),
208
+ 'continueUrl' => $this->getConfig()->getUrl('continuePayment'),
209
+ 'currencyCode' => $order->getOrderCurrencyCode(),
210
+ 'totalAmount' => $this->_toAmount($order->getGrandTotal()),
211
+ 'extOrderId' => uniqid($order->getId() . self::DELIMITER, true),
212
+ 'settings' => array(
213
+ 'invoiceDisabled' => true
214
+ )
215
+ );
216
+
217
+ $billingAddressId = $order->getBillingAddressId();
218
+
219
+ if (!empty ($billingAddressId)) {
220
+ $billingAddress = $order->getBillingAddress();
221
+ $customerEmail = $billingAddress->getEmail();
222
+ if (!empty ($customerEmail)) {
223
+ $customerSheet = array(
224
+ 'email' => $billingAddress->getEmail(),
225
+ 'phone' => $billingAddress->getTelephone(),
226
+ 'firstName' => $billingAddress->getFirstname(),
227
+ 'lastName' => $billingAddress->getLastname()
228
+ );
229
+
230
+ if (!$order->getIsVirtual() && !empty($order->getShippingAddressId())) {
231
+ $shippingAddress = $order->getShippingAddress();
232
+
233
+ $customerSheet ['delivery'] = array(
234
+ 'street' => trim(implode(' ', $shippingAddress->getStreet())),
235
+ 'postalCode' => $shippingAddress->getPostcode(),
236
+ 'city' => $shippingAddress->getCity(),
237
+ 'countryCode' => $shippingAddress->getCountry(),
238
+ 'recipientName' => trim(
239
+ $shippingAddress->getFirstname() . ' ' . $shippingAddress->getLastname()
240
+ ),
241
+ 'recipientPhone' => $shippingAddress->getTelephone(),
242
+ 'recipientEmail' => $shippingAddress->getEmail()
243
+ );
244
+ }
245
+ $OCReq['buyer'] = $customerSheet;
246
+ }
247
+ }
248
+
249
+ try {
250
+ $result = OpenPayU_Order::create($OCReq);
251
+
252
+ if ($result->getStatus() == OpenPayU_Order::SUCCESS) {
253
+ $this->_transactionId = $result->getResponse()->orderId;
254
+
255
+ Mage::getSingleton('core/session')->setPayUSessionId($this->_transactionId);
256
+
257
+ $payment = $order->getPayment();
258
+ $payment->setAdditionalInformation('payu_payment_status', OpenPayuOrderStatus::STATUS_NEW)
259
+ ->save();
260
+
261
+ $this->_updatePaymentStatusNew($payment);
262
+
263
+ $locale = Mage::getStoreConfig('general/locale/code', Mage::app()->getStore()->getId());
264
+ $langCode = explode('_', $locale, 2);
265
+ $response = array(
266
+ 'redirectUri' => $result->getResponse()->redirectUri . '&lang=' . strtolower($langCode[1]),
267
+ );
268
+
269
+ } else {
270
+ Mage::throwException($this->_helper()
271
+ ->__('There was a problem with the payment initialization, please contact system administrator.'));
272
+ }
273
+ } catch (Exception $e) {
274
+ Mage::throwException($this->_helper()
275
+ ->__('There was a problem with the payment initialization - "%s", please contact system administrator.', $e->getMessage()));
276
+
277
+ Mage::logException($e);
278
  }
279
+ return $response;
280
  }
281
+
282
+
283
  /**
284
+ * @param Mage_Payment_Model_Info $payment
285
+ * @return bool
 
286
  */
287
+ public function acceptPayment(Mage_Payment_Model_Info $payment)
288
+ {
289
+ parent::acceptPayment($payment);
290
+ $sessionId = $payment->getLastTransId();
291
+
292
+ if (empty($sessionId)) {
 
 
293
  return false;
294
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
295
 
296
+ if (!$this->_orderStatusUpdateRequest(OpenPayuOrderStatus::STATUS_COMPLETED, $sessionId)) {
297
+ return false;
 
298
  }
299
+
300
+ return true;
301
  }
302
+
303
  /**
304
+ *
305
+ * @param Mage_Payment_Model_Info $payment
306
+ * @return bool
307
  */
308
+ public function denyPayment(Mage_Payment_Model_Info $payment)
309
  {
310
+ parent::denyPayment($payment);
311
+ $sessionId = $payment->getLastTransId();
312
+
313
+ if (empty($sessionId)) {
314
+ return false;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
315
  }
316
+
317
+ if (!$this->_orderStatusUpdateRequest(OpenPayuOrderStatus::STATUS_CANCELED, $sessionId)) {
318
+ return false;
319
+ }
320
+
321
+ return true;
322
  }
323
+
324
  /**
325
+ * Refund payment
326
  *
327
+ * @param Varien_Object $payment
328
+ * @param float $amount
329
+ * @return $this
330
  */
331
+ public function refund(Varien_Object $payment, $amount)
332
  {
333
+ /** @var Mage_Sales_Model_Order $order */
334
+ $order = $payment->getOrder();
335
+
336
  try {
337
+ $result = OpenPayU_Refund::create($order->getPayment()->getLastTransId(), $this->_helper()->__('Refund for order: %s', $order->getIncrementId()), $this->_toAmount($amount));
338
+
339
+ $comment = $this->_helper()->__('Payu refund - amount: %s, status: %s', $amount, $result->getStatus());
340
+
341
+ $order->addStatusHistoryComment($comment)
342
+ ->save();
343
+
344
+ if ($result->getStatus() == OpenPayU_Order::SUCCESS) {
345
+ return $this;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
346
  }
347
+
348
+ } catch (OpenPayU_Exception $e) {
349
+ $comment = $this->_helper()->__('Payu refund - amount: %s, status: %s', $amount, $e->getMessage());
350
+
351
+ Mage::throwException($comment);
352
  }
353
+
354
+ }
355
+
356
+ public function orderNotifyRequest()
357
+ {
358
+ $body = file_get_contents('php://input');
359
+ $data = trim($body);
360
+
361
+ $result = OpenPayU_Order::consumeNotification($data);
362
+ $response = $result->getResponse();
363
+ $orderRetrieved = $response->order;
364
+
365
+ if (isset($orderRetrieved) && is_object($orderRetrieved) && $orderRetrieved->orderId) {
366
+ $this->_transactionId = $orderRetrieved->orderId;
367
+ $extOrderIdExploded = explode(self::DELIMITER, $orderRetrieved->extOrderId);
368
+ $orderId = array_shift($extOrderIdExploded);
369
+
370
+ $this->_setOrderByOrderId($orderId);
371
+ $this->_updatePaymentStatus($orderRetrieved->status);
372
+
373
+ header("HTTP/1.1 200 OK");
374
+ }
375
+ exit;
376
  }
377
 
 
378
  /**
379
  * Update payment status
380
  *
381
  * @param $paymentStatus
 
382
  */
383
+ private function _updatePaymentStatus($paymentStatus)
384
+ {
385
+ $payment = $this->getOrder()->getPayment();
 
386
 
387
+ $currentState = $payment->getAdditionalInformation('payu_payment_status');
 
388
 
389
+ if ($currentState != OpenPayuOrderStatus::STATUS_COMPLETED && $currentState != $paymentStatus) {
390
  try {
391
  switch ($paymentStatus) {
392
+
393
+ case OpenPayuOrderStatus::STATUS_PENDING:
394
+ //nothing to do
 
 
 
395
  break;
396
+
397
+ case OpenPayuOrderStatus::STATUS_CANCELED:
398
+ $this->_updatePaymentStatusCanceled($payment);
399
  break;
400
+
401
+ case OpenPayuOrderStatus::STATUS_WAITING_FOR_CONFIRMATION:
402
+ case OpenPayuOrderStatus::STATUS_REJECTED:
403
+ $this->_updatePaymentStatusRejected($payment);
404
  break;
405
+
406
+ case OpenPayuOrderStatus::STATUS_COMPLETED:
407
+ $this->_updatePaymentStatusCompleted($payment);
408
  break;
409
  }
410
+
411
+ $payment->setAdditionalInformation('payu_payment_status', $paymentStatus)
412
+ ->save();
413
+
414
+ } catch (Exception $e) {
415
+ Mage::logException($e);
416
  }
417
  }
418
  }
419
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
420
  /**
421
  * Update payment status to new
422
  *
423
+ * @param Mage_Sales_Model_Order_Payment $payment
424
  */
425
+ private function _updatePaymentStatusNew(Mage_Sales_Model_Order_Payment $payment)
426
+ {
427
+ $comment = $this->_helper()->__('New transaction started.');
428
+
429
+ $payment->setTransactionId($this->_transactionId)
430
+ ->setPreparedMessage($comment)
431
+ ->setCurrencyCode($payment->getOrder()->getBaseCurrencyCode())
432
+ ->setIsTransactionApproved(false)
433
+ ->setIsTransactionClosed(false)
434
+ ->save();
435
+
436
+ $payment->addTransaction(Mage_Sales_Model_Order_Payment_Transaction::TYPE_ORDER, null, false, $comment)
437
+ ->save();
438
+
439
+ $payment->getOrder()
440
+ ->save();
441
+
442
  }
443
+
444
  /**
445
  * Change the status to canceled
446
  *
447
+ * @param Mage_Sales_Model_Order_Payment $payment
448
  */
449
+ private function _updatePaymentStatusCanceled(Mage_Sales_Model_Order_Payment $payment)
450
+ {
451
+ $comment = $this->_helper()->__('The transaction has been canceled.');
452
+
453
+ $payment->setTransactionId($this->_transactionId)
454
+ ->setPreparedMessage($comment)
455
+ ->setIsTransactionApproved(true)
456
+ ->setIsTransactionClosed(true)
457
+ ->save();
458
+
459
+ $payment->addTransaction(Mage_Sales_Model_Order_Payment_Transaction::TYPE_ORDER, null, false, $comment)
460
+ ->save();
461
+
462
+ $payment->getOrder()
463
+ ->cancel()
464
+ ->save();
465
+
466
  }
467
+
468
  /**
469
  * Change the status to rejected
470
  *
471
+ * @param Mage_Sales_Model_Order_Payment $payment
472
  */
473
+ private function _updatePaymentStatusRejected(Mage_Sales_Model_Order_Payment $payment)
474
+ {
475
+ $comment = $this->_helper()->__('The transaction is to be accepted or rejected.');
476
+
477
+ $payment->setTransactionId($this->_transactionId)
478
+ ->setPreparedMessage($comment)
479
+ ->save();
480
+
481
+ $payment->getOrder()
482
+ ->setState(Mage_Sales_Model_Order::STATE_PAYMENT_REVIEW, true, $comment)
483
+ ->save();
 
 
 
 
 
 
 
 
 
484
  }
485
+
486
  /**
487
+ * Update payment status to complete
488
  *
489
+ * @param Mage_Sales_Model_Order_Payment $payment
 
490
  */
491
+ private function _updatePaymentStatusCompleted(Mage_Sales_Model_Order_Payment $payment)
492
+ {
493
+ $comment = $this->_helper()->__('The transaction completed successfully.');
494
+
495
+ $payment->setTransactionId($this->_transactionId)
496
+ ->setPreparedMessage($comment)
497
+ ->setCurrencyCode($payment->getOrder()->getBaseCurrencyCode())
498
+ ->setIsTransactionApproved(true)
499
+ ->setIsTransactionClosed(true)
500
+ ->registerCaptureNotification($this->getOrder()->getTotalDue(), true)
501
+ ->save();
502
+
503
+ $this->getOrder()
504
+ ->save();
505
+
506
  }
507
+
508
  /**
509
+ * @param $status
510
+ * @param $sessionId
511
+ * @return bool OpenPayU_Result
512
  */
513
+ private function _orderStatusUpdateRequest($status, $sessionId)
514
+ {
515
+ if (empty($sessionId)) {
516
+ $sessionId = $this->getOrder()->getPayment()->getLastTransId();
 
 
 
 
517
  }
518
+
519
+ if (empty($sessionId)) {
520
+ Mage::log("PayU sessionId empty: " . $this->getId());
521
+ return false;
522
+ }
523
+
524
+ if ($status == OpenPayuOrderStatus::STATUS_CANCELED) {
525
+ $result = OpenPayU_Order::cancel($sessionId);
526
+ } elseif ($status == OpenPayuOrderStatus::STATUS_COMPLETED) {
527
+ $status_update = array(
528
+ "orderId" => $sessionId,
529
+ "orderStatus" => OpenPayuOrderStatus::STATUS_COMPLETED
530
+ );
531
+ $result = OpenPayU_Order::statusUpdate($status_update);
532
+ } else {
533
+ return false;
534
+ }
535
+
536
+ if ($result->getStatus() == OpenPayU_Order::SUCCESS) {
537
+ return true;
538
+ } else {
539
+ Mage::log("PayU error while updating status: " . $result->getError());
540
+ return false;
 
 
 
 
 
 
541
  }
542
  }
543
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
544
  /**
545
+ * Returns amount in PayU acceptable format
546
  *
547
+ * @param $val
548
+ * @return int
 
 
 
 
 
 
549
  */
550
+ private function _toAmount($val)
551
+ {
552
+ return $this->_helper()->toAmount($val);
 
 
 
 
 
 
 
 
553
  }
554
 
555
  }
app/code/community/PayU/Account/Model/Session.php CHANGED
@@ -1,16 +1,11 @@
1
  <?php
2
 
3
  /**
4
- * ver. 1.9.0
5
- * PayU Session Model
6
  *
7
- * @copyright Copyright (c) 2011-2014 PayU
8
- * @license http://opensource.org/licenses/GPL-3.0 Open Software License (GPL 3.0)
9
- * http://www.payu.com
10
- * http://www.openpayu.com
11
- * http://twitter.com/openpayu
12
  */
13
-
14
  class PayU_Account_Model_Session extends Mage_Core_Model_Session_Abstract
15
  {
16
  public function __construct()
1
  <?php
2
 
3
  /**
4
+ * PayU Session Model
 
5
  *
6
+ * @copyright Copyright (c) 2011-2016 PayU
7
+ * @license http://opensource.org/licenses/GPL-3.0 Open Software License (GPL 3.0)
 
 
 
8
  */
 
9
  class PayU_Account_Model_Session extends Mage_Core_Model_Session_Abstract
10
  {
11
  public function __construct()
app/code/community/PayU/Account/Model/Thumbnail.php DELETED
@@ -1,31 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * ver. 1.9.0
5
- * PayU Thumbnail Model
6
- *
7
- * @copyright Copyright (c) 2011-2014 PayU
8
- * @license http://opensource.org/licenses/GPL-3.0 Open Software License (GPL 3.0)
9
- * http://www.payu.com
10
- * http://www.openpayu.com
11
- * http://twitter.com/openpayu
12
- */
13
-
14
- class PayU_Account_Model_Thumbnail
15
- {
16
- public function toOptionArray()
17
- {
18
-
19
- $thumbnails = Mage::getModel('payu_account/config')->getGoods('media_logos');
20
-
21
- $options = array();
22
-
23
- foreach ($thumbnails as $label) {
24
- $options[] = array(
25
- 'value' => $label,
26
- 'label' => $label
27
- );
28
- }
29
- return $options;
30
- }
31
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/PayU/Account/Model/ValidityTime.php DELETED
@@ -1,42 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * ver. 1.9.0
5
- * PayU Validity Time Model
6
- *
7
- * @copyright Copyright (c) 2011-2014 PayU
8
- * @license http://opensource.org/licenses/GPL-3.0 Open Software License (GPL 3.0)
9
- * http://www.payu.com
10
- * http://www.openpayu.com
11
- * http://twitter.com/openpayu
12
- */
13
-
14
-
15
- class PayU_Account_Model_ValidityTime
16
- {
17
-
18
- public function toOptionArray() {
19
-
20
- $minutes = array(
21
-
22
- '86400' => '1440 min (24h)',
23
- '43200' => '720 min (12h)',
24
- '21600' => '360 min (6h)',
25
- '3600' => '60 min (1h)',
26
- '1800' => '30 min',
27
-
28
- );
29
-
30
- $options = array();
31
-
32
- foreach ($minutes as $code => $label) {
33
- $options[] = array(
34
- 'value' => $code,
35
- 'label' => $label
36
- );
37
- }
38
-
39
- return $options;
40
-
41
- }
42
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/PayU/Account/controllers/Adminhtml/Sales/OrderController.php DELETED
@@ -1,73 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * ver. 1.9.0
5
- * PayU Adminhtml Sales Order Controller
6
- *
7
- * @copyright Copyright (c) 2011-2014 PayU
8
- * @license http://opensource.org/licenses/GPL-3.0 Open Software License (GPL 3.0)
9
- * http://www.payu.com
10
- * http://www.openpayu.com
11
- * http://twitter.com/openpayu
12
- */
13
-
14
- include_once("Mage/Adminhtml/controllers/Sales/OrderController.php");
15
-
16
- class PayU_Account_Adminhtml_Sales_OrderController extends Mage_Adminhtml_Sales_OrderController{
17
-
18
-
19
- /**
20
- * Cancel
21
- */
22
- public function cancelPayUOrderAction(){
23
-
24
- $order = Mage::getModel('sales/order')->load(Mage::app()->getRequest()->getParam('order_id'));
25
- $payu = Mage::getModel('payu_account/payment');
26
- $session = Mage::getSingleton('adminhtml/session');
27
-
28
- if($payu->cancelOrder($order)){
29
- $session->addSuccess( Mage::helper('payu_account')->__('The order is awaiting for cancelation in PayU, please wait while status changes.') );
30
- }else{
31
- $session->addError( Mage::helper('payu_account')->__('There was a problem while canceling the order in PayU.') );
32
- }
33
- $this->_redirect('*/sales_order/view', array('order_id' => $order->getId()));
34
-
35
- }
36
-
37
- /**
38
- * Reject
39
- */
40
- public function rejectPayUOrderAction(){
41
-
42
- $order = Mage::getModel('sales/order')->load(Mage::app()->getRequest()->getParam('order_id'));
43
- $payu = Mage::getModel('payu_account/payment');
44
- $session = Mage::getSingleton('adminhtml/session');
45
-
46
- if($payu->rejectOrder($order)){
47
- $session->addSuccess( Mage::helper('payu_account')->__('The order has been rejected in PayU.') );
48
- }else{
49
- $session->addError( Mage::helper('payu_account')->__('There was a problem while rejecting the order in PayU.') );
50
- }
51
- $this->_redirect('*/sales_order/view', array('order_id' => $order->getId()));
52
-
53
- }
54
-
55
- /**
56
- *
57
- */
58
- public function completePayUOrderAction(){
59
-
60
- $order = Mage::getModel('sales/order')->load(Mage::app()->getRequest()->getParam('order_id'));
61
- $payu = Mage::getModel('payu_account/payment');
62
- $session = Mage::getSingleton('adminhtml/session');
63
-
64
- if($payu->completeOrder($order)){
65
- $session->addSuccess(Mage::helper('payu_account')->__('The order is completing in PayU, please wait while status changes.'));
66
- }else{
67
- $session->addError(Mage::helper('payu_account')->__('There was a problem while completing the order in PayU.'));
68
- }
69
- $this->_redirect('*/sales_order/view', array('order_id' => $order->getId()));
70
-
71
- }
72
-
73
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/PayU/Account/controllers/Checkout/CartController.php DELETED
@@ -1,19 +0,0 @@
1
- <?php
2
-
3
- /**
4
- * ver. 1.9.0
5
- * PayU Cart Controller
6
- *
7
- * @copyright Copyright (c) 2011-2014 PayU
8
- * @license http://opensource.org/licenses/GPL-3.0 Open Software License (GPL 3.0)
9
- * http://www.payu.com
10
- * http://www.openpayu.com
11
- * http://twitter.com/openpayu
12
- */
13
-
14
- require_once Mage::getModuleDir('controllers', 'Mage_Checkout').'/CartController.php';
15
-
16
- class PayU_Account_Checkout_CartController extends Mage_Checkout_CartController
17
- {
18
-
19
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/PayU/Account/controllers/PaymentController.php CHANGED
@@ -1,212 +1,97 @@
1
  <?php
2
 
3
  /**
4
- * ver. 1.9.0
5
- * PayU Standard Payment Controller
6
  *
7
- * @copyright Copyright (c) 2011-2014 PayU
8
- * @license http://opensource.org/licenses/GPL-3.0 Open Software License (GPL 3.0)
9
- * http://www.payu.com
10
- * http://www.openpayu.com
11
- * http://twitter.com/openpayu
12
  */
13
-
14
-
15
- class PayU_Account_PaymentController extends Mage_Core_Controller_Front_Action {
16
-
17
- protected $_session = null;
18
- protected $_order = null;
19
- protected $_payment = null;
20
-
21
- protected $_allShippingRates = null;
22
-
23
  /**
24
- * Initializes new One Step Checkout
 
 
25
  */
26
- public function newOneStepAction() {
27
-
28
- $this->setSession();
29
- $this->_order = Mage::getModel('payu_account/payment')->newOneStep();
30
- $this->_redirect('payu_account/payment/new');
31
-
32
  }
33
 
34
  /**
35
- * Create invoice
36
- *
37
- * @return Mage_Sales_Model_Order_Invoice
38
  */
39
- protected function _initInvoice()
40
  {
41
- $items = array();
42
- foreach ($this->_order->getAllItems() as $item) {
43
- $items[$item->getId()] = $item->getQtyOrdered();
44
- }
45
- /* @var $invoice Mage_Sales_Model_Service_Order */
46
- $invoice = Mage::getModel('sales/service_order', $this->_order)->prepareInvoice($items);
47
- $invoice->setEmailSent(true)->register();
48
-
49
- Mage::register('current_invoice', $invoice);
50
- return $invoice;
51
  }
52
 
 
53
  /**
54
  * Initializes new One Page payment
55
  */
56
- public function newAction() {
57
- $this->setSession();
58
- $this->setOrder();
59
- $this->forceNewOrderStatus();
60
- $this->setPayment(true);
61
- $this->_allShippingRates = Mage::getSingleton('checkout/type_onepage')->getQuote()->getShippingAddress()->getAllShippingRates();
62
- $this->getResponse()->setBody($this->getLayout()->createBlock('payu_account/redirect')->setAllShippingMethods($this->_allShippingRates)->setOrder($this->_order)->toHtml());
63
- }
64
 
65
- /**
66
- * Processes PayU OrderNotifyRequest
67
- */
68
- public function orderNotifyRequestAction(){
 
 
 
 
 
 
 
 
69
 
70
- try {
71
- Mage::getModel('payu_account/payment')->orderNotifyRequest();
72
  } catch (Exception $e) {
73
  Mage::logException($e);
 
 
74
  }
 
 
75
  }
76
 
77
  /**
78
- * Shipping cost retrieve
79
- *
80
- * @todo not functioning yet
81
  */
82
- public function shippingCostRetrieveAction(){
83
- $this->setSession();
84
- $this->setOrder();
85
  try {
86
- Mage::getModel('payu_account/payment')->shippingCostRetrieve();
87
  } catch (Exception $e) {
88
  Mage::logException($e);
89
  }
90
-
91
  }
92
 
93
- /**
94
- * Complete payment action
95
- */
96
- public function completePaymentAction(){
97
- $this->setSession();
98
- $this->setOrder();
99
- $this->setPayment();
100
-
101
- if(isset($_GET['error']))
102
- {
103
- $this->_order->setState(Mage_Sales_Model_Order::STATE_HOLDED, true)->save();
104
- }
105
- elseif (defined('Mage_Sales_Model_Order::STATE_PENDING_PAYMENT')) {
106
- $this->_order->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, true)->save();
107
- }
108
-
109
- Mage::getSingleton('checkout/session')->getQuote()->setIsActive(false)->save();
110
- Mage::getSingleton('checkout/session')->setSuccess( Mage::helper('payu_account')->__('Thank you.') );
111
-
112
- if(isset($_GET['error']))
113
- $this->_redirect('checkout/onepage/failure',array('_secure' => true));
114
- else
115
- $this->_redirect('checkout/onepage/success',array('_secure' => true));
116
-
117
- }
118
-
119
  /**
120
  * Continue payment action
121
  */
122
- public function continuePaymentAction(){
123
-
124
- $this->setSession();
125
- $this->setOrder();
126
- $this->setPayment();
127
-
128
- if(isset($_GET['error'])){
129
- $this->_order->setState(Mage_Sales_Model_Order::STATE_HOLDED, true)->save();
130
- }elseif ($this->_order->getState() != Mage_Sales_Model_Order::STATE_PROCESSING && defined('Mage_Sales_Model_Order::STATE_PENDING_PAYMENT')) {
131
- $this->_order->setState(Mage_Sales_Model_Order::STATE_PENDING_PAYMENT, true)->save();
132
  }
133
 
134
- Mage::getSingleton('checkout/session')->getQuote()->setIsActive(false)->save();
135
- Mage::getSingleton('checkout/session')->setSuccess( Mage::helper('payu_account')->__('Thank you.') );
136
-
137
- if(isset($_GET['error']))
138
- $this->_redirect('checkout/onepage/failure',array('_secure' => true));
139
- else
140
- $this->_redirect('checkout/onepage/success',array('_secure' => true));
141
-
142
- }
143
-
144
- /**
145
- * Cancel payment action
146
- *
147
- * @todo not yet implemented
148
- */
149
- public function cancelPaymentAction(){
150
- Mage::getSingleton('checkout/session')->setMessage( Mage::helper('payu_account')->__('The payment has been cancelled.') );
151
- $this->_redirect('checkout/cart', array('_secure'=>true));
152
  }
153
 
154
-
155
-
156
  /**
157
  * Error payment action
158
- *
159
- * @todo not yet implemented
160
- */
161
- public function errorAction() {
162
- $this->_redirect('checkout/onepage/failure', array('_secure'=>true));
163
- }
164
-
165
- /** Setting checkout session */
166
- private function setSession() {
167
- $this->_session = Mage::getSingleton('checkout/session');
168
- }
169
-
170
- /** Setting the order */
171
- private function setOrder() {
172
- $id = $this->_session->getLastRealOrderId();
173
- $this->_order = Mage::getModel('sales/order')->loadByIncrementId($id);
174
- }
175
-
176
- /** Setting the new order */
177
- private function setNewOrder() {
178
- $this->_order = Mage::getModel('payu_account/payment')->prepareNewOrderByCart();
179
- }
180
-
181
- /**
182
- * Setting the payment
183
- *
184
- * @param boolean
185
  */
186
- private function setPayment($is_order_new = false) {
187
- $this->_payment = $this->_order->getPayment();
188
- }
189
-
190
- /**
191
- * Check if the order is new
192
- *
193
- * @return boolean
194
- */
195
- private function isNewOrder() {
196
- return (Mage::getSingleton('checkout/session')->getLastRealOrderId() == $this->_order->getRealOrderId());
197
- }
198
-
199
-
200
- /** Forcing the order to be new */
201
- private function forceNewOrderStatus() {
202
- if ($this->isNewOrder()) {
203
- $status = $this->_order->getStatus();
204
- $state = $this->_order->getState();
205
- if ($state == Mage_Sales_Model_Order::STATE_NEW && $status != Mage::getStoreConfig("payment/payu_account/order_status")) {
206
- $this->_order->setState(Mage::getStoreConfig("payment/payu_account/order_status"), true)
207
- ->save();
208
- }
209
- }
210
  }
211
-
212
- }
1
  <?php
2
 
3
  /**
4
+ * PayU Standard Payment Controller
 
5
  *
6
+ * @copyright Copyright (c) 2011-2016 PayU
7
+ * @license http://opensource.org/licenses/GPL-3.0 Open Software License (GPL 3.0)
 
 
 
8
  */
9
+ class PayU_Account_PaymentController extends Mage_Core_Controller_Front_Action
10
+ {
 
 
 
 
 
 
 
 
11
  /**
12
+ * Get singleton of Checkout Session Model
13
+ *
14
+ * @return Mage_Checkout_Model_Session
15
  */
16
+ protected function _getCheckout()
17
+ {
18
+ return Mage::getSingleton('checkout/session');
 
 
 
19
  }
20
 
21
  /**
22
+ * @return PayU_Account_Model_Payment
 
 
23
  */
24
+ public function getPayment()
25
  {
26
+ return Mage::getModel('payu_account/payment');
 
 
 
 
 
 
 
 
 
27
  }
28
 
29
+
30
  /**
31
  * Initializes new One Page payment
32
  */
33
+ public function newAction()
34
+ {
35
+ try {
36
+ $session = $this->_getCheckout();
 
 
 
 
37
 
38
+ $order = Mage::getModel('sales/order');
39
+ $order->loadByIncrementId($session->getLastRealOrderId());
40
+
41
+ if (!$order->getId()) {
42
+ Mage::throwException($this->__('No order for processing found'));
43
+ }
44
+
45
+ $redirectData = $this->getPayment()->orderCreateRequest($order);
46
+
47
+ $this->_redirectUrl($redirectData['redirectUri']);
48
+
49
+ return;
50
 
 
 
51
  } catch (Exception $e) {
52
  Mage::logException($e);
53
+ Mage::getSingleton('core/session')->addError($e->getMessage());
54
+
55
  }
56
+
57
+ $this->_errorAction();
58
  }
59
 
60
  /**
61
+ * Processes PayU OrderNotifyRequest
 
 
62
  */
63
+ public function orderNotifyRequestAction()
64
+ {
 
65
  try {
66
+ $this->getPayment()->orderNotifyRequest();
67
  } catch (Exception $e) {
68
  Mage::logException($e);
69
  }
 
70
  }
71
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
  /**
73
  * Continue payment action
74
  */
75
+ public function continuePaymentAction()
76
+ {
77
+ try {
78
+ $this->_getCheckout()->getQuote()->setIsActive(false)->save();
79
+ } catch (Exception $e) {
80
+ Mage::logException($e);
 
 
 
 
81
  }
82
 
83
+ if (isset($_GET['error'])) {
84
+ $this->_redirect('checkout/onepage/failure', array('_secure' => true));
85
+ } else {
86
+ $this->_redirect('checkout/onepage/success', array('_secure' => true));
87
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  }
89
 
 
 
90
  /**
91
  * Error payment action
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92
  */
93
+ public function _errorAction()
94
+ {
95
+ $this->_redirect('checkout/onepage/failure', array('_secure' => true));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
96
  }
97
+ }
 
app/code/community/PayU/Account/etc/config.xml CHANGED
@@ -1,15 +1,13 @@
1
  <?xml version="1.0" encoding="UTF-8"?>
2
  <config>
3
-
4
- <modules>
5
- <PayU_Account>
6
- <version>2.1.3</version>
7
  <depends>
8
- <Mage_Payment />
9
  </depends>
10
- </PayU_Account>
11
- </modules>
12
-
13
  <global>
14
  <models>
15
  <payu_account>
@@ -25,100 +23,46 @@
25
  <payu_account>
26
  <class>PayU_Account_Block</class>
27
  </payu_account>
28
- <adminhtml>
29
- <rewrite>
30
- <sales_order_view>PayU_Account_Block_Adminhtml_Sales_Order_View</sales_order_view>
31
- </rewrite>
32
- </adminhtml>
33
  </blocks>
34
- <resources>
35
- <payu_account_setup>
36
- <setup>
37
- <module>PayU_Account</module>
38
- </setup>
39
- <connection>
40
- <use>core_setup</use>
41
- </connection>
42
- </payu_account_setup>
43
- <payu_account_write>
44
- <connection>
45
- <use>core_write</use>
46
- </connection>
47
- </payu_account_write>
48
- <payu_account_read>
49
- <connection>
50
- <use>core_read</use>
51
- </connection>
52
- </payu_account_read>
53
- </resources>
54
  </global>
55
- <adminhtml>
56
- <translate>
57
- <modules>
58
- <PayU_Account>
59
- <files>
60
- <default>PayU_Account.csv</default>
61
- </files>
62
- </PayU_Account>
63
- </modules>
64
- </translate>
65
- </adminhtml>
66
- <admin>
67
- <routers>
68
- <adminhtml>
69
- <args>
70
- <modules>
71
- <PayU_Account before="Mage_Adminhtml">PayU_Account_Adminhtml</PayU_Account>
72
- </modules>
73
- </args>
74
- </adminhtml>
75
- </routers>
76
- </admin>
77
-
78
- <frontend>
79
- <routers>
80
- <checkout>
81
- <args>
82
- <modules>
83
- <PayU_Account before="Mage_Checkout">PayU_Account_Checkout</PayU_Account>
84
- </modules>
85
- </args>
86
- </checkout>
87
- <PayU>
88
- <use>standard</use>
89
- <args>
90
- <module>PayU_Account</module>
91
- <frontName>payu_account</frontName>
92
- </args>
93
- </PayU>
94
- </routers>
95
- <layout>
96
- <updates>
97
- <payu_account module="PayU_Account">
98
- <file>payu_account.xml</file>
99
- </payu_account>
100
- </updates>
101
- </layout>
102
- <translate>
103
- <modules>
104
- <PayU_Account>
105
- <files>
106
- <default>PayU_Account.csv</default>
107
- </files>
108
- </PayU_Account>
109
- </modules>
110
- </translate>
111
- </frontend>
112
-
113
- <default>
114
- <payment>
115
- <payu_account>
116
- <active>1</active>
117
- <model>payu_account/payment</model>
118
- <order_status>1</order_status>
119
- <payment_action>authorize</payment_action>
120
- <allowspecific>0</allowspecific>
121
- </payu_account>
122
- </payment>
123
- </default>
124
- </config>
1
  <?xml version="1.0" encoding="UTF-8"?>
2
  <config>
3
+ <modules>
4
+ <PayU_Account>
5
+ <version>2.2.0</version>
 
6
  <depends>
7
+ <Mage_Payment/>
8
  </depends>
9
+ </PayU_Account>
10
+ </modules>
 
11
  <global>
12
  <models>
13
  <payu_account>
23
  <payu_account>
24
  <class>PayU_Account_Block</class>
25
  </payu_account>
 
 
 
 
 
26
  </blocks>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  </global>
28
+ <adminhtml>
29
+ <translate>
30
+ <modules>
31
+ <PayU_Account>
32
+ <files>
33
+ <default>PayU_Account.csv</default>
34
+ </files>
35
+ </PayU_Account>
36
+ </modules>
37
+ </translate>
38
+ </adminhtml>
39
+ <frontend>
40
+ <routers>
41
+ <payu_account>
42
+ <use>standard</use>
43
+ <args>
44
+ <module>PayU_Account</module>
45
+ <frontName>payu_account</frontName>
46
+ </args>
47
+ </payu_account>
48
+ </routers>
49
+ <translate>
50
+ <modules>
51
+ <PayU_Account>
52
+ <files>
53
+ <default>PayU_Account.csv</default>
54
+ </files>
55
+ </PayU_Account>
56
+ </modules>
57
+ </translate>
58
+ </frontend>
59
+ <default>
60
+ <payment>
61
+ <payu_account>
62
+ <active>0</active>
63
+ <title>PayU</title>
64
+ <model>payu_account/payment</model>
65
+ </payu_account>
66
+ </payment>
67
+ </default>
68
+ </config>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/code/community/PayU/Account/etc/system.xml CHANGED
@@ -3,14 +3,14 @@
3
  <sections>
4
  <payment>
5
  <groups>
6
- <payu_account translate="label" module="paygate">
7
- <label>PayU account</label>
8
  <frontend_type>text</frontend_type>
9
  <sort_order>670</sort_order>
10
  <show_in_default>1</show_in_default>
11
  <show_in_website>1</show_in_website>
12
  <show_in_store>1</show_in_store>
13
- <comment>Important: This plugin works only with checkout points of sales (POS).</comment>
14
  <fields>
15
  <header1 translate="label">
16
  <label>Main parameters</label>
@@ -21,115 +21,60 @@
21
  <show_in_store>1</show_in_store>
22
  </header1>
23
  <active translate="label">
24
- <label>Enabled</label>
25
  <frontend_type>select</frontend_type>
26
  <source_model>adminhtml/system_config_source_yesno</source_model>
27
- <sort_order>1</sort_order>
28
  <show_in_default>1</show_in_default>
29
  <show_in_website>1</show_in_website>
30
  <show_in_store>1</show_in_store>
31
  </active>
32
- <onestepcheckoutenabled translate="label">
33
- <label>OneStepCheckout Enabled</label>
34
- <frontend_type>select</frontend_type>
35
- <source_model>adminhtml/system_config_source_yesno</source_model>
36
- <sort_order>2</sort_order>
37
- <show_in_default>1</show_in_default>
38
- <show_in_website>1</show_in_website>
39
- <show_in_store>1</show_in_store>
40
- </onestepcheckoutenabled>
41
- <selfreturn translate="label">
42
- <label>Self-Return Enabled</label>
43
- <frontend_type>select</frontend_type>
44
- <source_model>adminhtml/system_config_source_yesno</source_model>
45
- <sort_order>3</sort_order>
46
- <show_in_default>1</show_in_default>
47
- <show_in_website>1</show_in_website>
48
- <show_in_store>1</show_in_store>
49
- </selfreturn>
50
- <order_status translate="label">
51
- <label>New Order Status</label>
52
- <frontend_type>select</frontend_type>
53
- <source_model>adminhtml/system_config_source_order_status</source_model>
54
- <sort_order>3</sort_order>
55
- <show_in_default>1</show_in_default>
56
- <show_in_website>1</show_in_website>
57
- <show_in_store>0</show_in_store>
58
- </order_status>
59
- <validity_time translate="label comment">
60
- <label>Order Validity Time</label>
61
- <frontend_type>select</frontend_type>
62
- <source_model>payu_account/validityTime</source_model>
63
- <sort_order>5</sort_order>
64
- <show_in_default>1</show_in_default>
65
- <show_in_website>1</show_in_website>
66
- <show_in_store>1</show_in_store>
67
- </validity_time>
68
- <!--<environment translate="label">
69
- <label>Test Mode Enabled</label>
70
- <frontend_type>select</frontend_type>
71
- <source_model>payu_account/environment</source_model>
72
- <sort_order>6</sort_order>
73
- <show_in_default>1</show_in_default>
74
- <show_in_website>1</show_in_website>
75
- <show_in_store>1</show_in_store>
76
- </environment>-->
77
  <header2 translate="label">
78
- <label>Parameters of production environment</label>
79
  <frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
80
- <sort_order>7</sort_order>
81
  <show_in_default>1</show_in_default>
82
  <show_in_website>1</show_in_website>
83
  <show_in_store>1</show_in_store>
84
  </header2>
85
- <oauth_client_name translate="label">
86
  <label>POS ID (pos_id)</label>
87
- <comment>Point of Sale identifier</comment>
88
  <frontend_type>text</frontend_type>
89
- <sort_order>8</sort_order>
90
  <show_in_default>1</show_in_default>
91
  <show_in_website>1</show_in_website>
92
  <show_in_store>1</show_in_store>
93
- </oauth_client_name>
94
  <signature_key translate="label">
95
  <label>Second key (MD5)</label>
96
  <comment>Symmetrical key for encrypting communication</comment>
97
  <frontend_type>text</frontend_type>
98
- <sort_order>11</sort_order>
99
  <show_in_default>1</show_in_default>
100
  <show_in_website>1</show_in_website>
101
  <show_in_store>1</show_in_store>
102
  </signature_key>
103
- <header4 translate="label">
104
- <label>Settings of external resources</label>
105
- <frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
106
- <sort_order>18</sort_order>
107
- <show_in_default>1</show_in_default>
108
- <show_in_website>1</show_in_website>
109
- <show_in_store>1</show_in_store>
110
- </header4>
111
- <payuthumbnail translate="label">
112
- <label>Small logo</label>
113
- <frontend_type>select</frontend_type>
114
- <source_model>payu_account/thumbnail</source_model>
115
- <sort_order>20</sort_order>
116
  <show_in_default>1</show_in_default>
117
  <show_in_website>1</show_in_website>
118
  <show_in_store>1</show_in_store>
119
- </payuthumbnail>
120
- <payuadvertisement translate="label">
121
- <label>PayU advertisement</label>
122
- <source_model>payu_account/advertisement</source_model>
123
- <frontend_type>select</frontend_type>
124
- <sort_order>21</sort_order>
125
  <show_in_default>1</show_in_default>
126
  <show_in_website>1</show_in_website>
127
  <show_in_store>1</show_in_store>
128
- </payuadvertisement>
129
  <header5 translate="label">
130
  <label>PayU Plugin Information</label>
131
  <frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
132
- <sort_order>22</sort_order>
133
  <show_in_default>1</show_in_default>
134
  <show_in_website>0</show_in_website>
135
  <show_in_store>0</show_in_store>
@@ -138,7 +83,7 @@
138
  <label></label>
139
  <frontend_type>multiline</frontend_type>
140
  <frontend_model>payu_account/updateInfo</frontend_model>
141
- <sort_order>23</sort_order>
142
  <show_in_default>1</show_in_default>
143
  <show_in_website>0</show_in_website>
144
  <show_in_store>0</show_in_store>
@@ -148,4 +93,4 @@
148
  </groups>
149
  </payment>
150
  </sections>
151
- </config>
3
  <sections>
4
  <payment>
5
  <groups>
6
+ <payu_account translate="label comment" module="paygate">
7
+ <label>PayU</label>
8
  <frontend_type>text</frontend_type>
9
  <sort_order>670</sort_order>
10
  <show_in_default>1</show_in_default>
11
  <show_in_website>1</show_in_website>
12
  <show_in_store>1</show_in_store>
13
+ <comment>Important: This plugin works only with REST (Checkout) points of sales (POS).</comment>
14
  <fields>
15
  <header1 translate="label">
16
  <label>Main parameters</label>
21
  <show_in_store>1</show_in_store>
22
  </header1>
23
  <active translate="label">
24
+ <label>Enable plugin?</label>
25
  <frontend_type>select</frontend_type>
26
  <source_model>adminhtml/system_config_source_yesno</source_model>
27
+ <sort_order>10</sort_order>
28
  <show_in_default>1</show_in_default>
29
  <show_in_website>1</show_in_website>
30
  <show_in_store>1</show_in_store>
31
  </active>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  <header2 translate="label">
33
+ <label>POS Parameters</label>
34
  <frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
35
+ <sort_order>70</sort_order>
36
  <show_in_default>1</show_in_default>
37
  <show_in_website>1</show_in_website>
38
  <show_in_store>1</show_in_store>
39
  </header2>
40
+ <pos_id translate="label">
41
  <label>POS ID (pos_id)</label>
42
+ <comment>Point of Sale identifier</comment>
43
  <frontend_type>text</frontend_type>
44
+ <sort_order>80</sort_order>
45
  <show_in_default>1</show_in_default>
46
  <show_in_website>1</show_in_website>
47
  <show_in_store>1</show_in_store>
48
+ </pos_id>
49
  <signature_key translate="label">
50
  <label>Second key (MD5)</label>
51
  <comment>Symmetrical key for encrypting communication</comment>
52
  <frontend_type>text</frontend_type>
53
+ <sort_order>90</sort_order>
54
  <show_in_default>1</show_in_default>
55
  <show_in_website>1</show_in_website>
56
  <show_in_store>1</show_in_store>
57
  </signature_key>
58
+ <oauth_client_id translate="label">
59
+ <label>OAuth protocol - client_id</label>
60
+ <frontend_type>text</frontend_type>
61
+ <sort_order>100</sort_order>
 
 
 
 
 
 
 
 
 
62
  <show_in_default>1</show_in_default>
63
  <show_in_website>1</show_in_website>
64
  <show_in_store>1</show_in_store>
65
+ </oauth_client_id>
66
+ <oauth_client_secret translate="label">
67
+ <label>OAuth protocol - client_secret</label>
68
+ <frontend_type>text</frontend_type>
69
+ <sort_order>110</sort_order>
 
70
  <show_in_default>1</show_in_default>
71
  <show_in_website>1</show_in_website>
72
  <show_in_store>1</show_in_store>
73
+ </oauth_client_secret>
74
  <header5 translate="label">
75
  <label>PayU Plugin Information</label>
76
  <frontend_model>adminhtml/system_config_form_field_heading</frontend_model>
77
+ <sort_order>230</sort_order>
78
  <show_in_default>1</show_in_default>
79
  <show_in_website>0</show_in_website>
80
  <show_in_store>0</show_in_store>
83
  <label></label>
84
  <frontend_type>multiline</frontend_type>
85
  <frontend_model>payu_account/updateInfo</frontend_model>
86
+ <sort_order>240</sort_order>
87
  <show_in_default>1</show_in_default>
88
  <show_in_website>0</show_in_website>
89
  <show_in_store>0</show_in_store>
93
  </groups>
94
  </payment>
95
  </sections>
96
+ </config>
app/design/frontend/base/default/layout/payu_account.xml DELETED
@@ -1,106 +0,0 @@
1
- <?xml version="1.0"?>
2
- <layout version="0.1.0">
3
-
4
- <catalog_product_view>
5
- <!--<reference name="product.info.addtocart">
6
- <block type="payu_account/onestep_checkout" name="payu_account.button" template="payu_account/onestep/checkout.phtml">
7
- <action method="setIsInCatalogProduct"><value>1</value></action>
8
- </block>
9
- </reference>-->
10
- <reference name="right">
11
- <block type="payu_account/advertisement" name="payu_account.advertisement" template="payu_account/advertisement.phtml">
12
- </block>
13
- </reference>
14
- </catalog_product_view>
15
-
16
- <checkout_cart_index>
17
- <reference name="checkout.cart.top_methods">
18
- <block type="payu_account/onestep_checkout" name="checkout.cart.methods.payu_express.top" before="-" template="payu_account/onestep/checkout.phtml">
19
- <action method="setIsQuoteAllowed"><value>1</value></action>
20
- </block>
21
- </reference>
22
-
23
- <reference name="checkout.cart.methods">
24
- <block type="payu_account/onestep_checkout" name="checkout.cart.methods.payu_express.bottom" before="-" template="payu_account/onestep/checkout.phtml">
25
- <action method="setIsQuoteAllowed"><value>1</value></action>
26
- </block>
27
- </reference>
28
-
29
- <update handle="SHORTCUT_popup" />
30
- </checkout_cart_index>
31
-
32
- <catalog_category_default>
33
- <update handle="SHORTCUT_popup" />
34
- <reference name="right">
35
- <block type="payu_account/advertisement" name="payu_account.partner.right.advertisement" template="payu_account/advertisement.phtml"/>
36
- </reference>
37
- </catalog_category_default>
38
-
39
- <catalog_category_layered>
40
- <update handle="SHORTCUT_popup" />
41
- <reference name="right">
42
- <block type="payu_account/advertisement" name="payu_account.partner.right.advertisement" template="payu_account/advertisement.phtml"/>
43
- </reference>
44
- </catalog_category_layered>
45
-
46
- <catalog_product_compare_index>
47
- <update handle="SHORTCUT_popup" />
48
- </catalog_product_compare_index>
49
-
50
- <catalogsearch_result_index>
51
- <update handle="SHORTCUT_popup" />
52
- </catalogsearch_result_index>
53
-
54
- <catalogsearch_advanced_result>
55
- <update handle="SHORTCUT_popup" />
56
- </catalogsearch_advanced_result>
57
-
58
- <tag_product_list>
59
- <update handle="SHORTCUT_popup" />
60
- </tag_product_list>
61
- <tag_customer_view>
62
- <update handle="SHORTCUT_popup" />
63
- </tag_customer_view>
64
-
65
- <wishlist_index_index>
66
- <update handle="SHORTCUT_popup" />
67
- </wishlist_index_index>
68
- <review_product_list>
69
- <update handle="SHORTCUT_popup" />
70
- </review_product_list>
71
-
72
- <checkout_onepage_success>
73
- <update handle="SHORTCUT_popup" />
74
- </checkout_onepage_success>
75
- <checkout_onepage_failure>
76
- <update handle="SHORTCUT_popup" />
77
- </checkout_onepage_failure>
78
-
79
- <cms_index_index>
80
- <reference name="right">
81
- <block type="payu_account/advertisement" name="payu_account.partner.right.advertisement" template="payu_account/advertisement.phtml"/>
82
- </reference>
83
- </cms_index_index>
84
-
85
- <default>
86
- <reference name="topCart.extra_actions">
87
- <block type="payu_account/onestep_checkout" name="payu_account.partner.top_cart.shortcut" template="payu_account/onestep/checkout.phtml"/>
88
- </reference>
89
- <reference name="cart_sidebar.extra_actions">
90
- <block type="payu_account/onestep_checkout" name="payu_account.partner.cart_sidebar.shortcut" template="payu_account/onestep/checkout.phtml"/>
91
- </reference>
92
- </default>
93
-
94
- <SHORTCUT_popup>
95
- <reference name="product.tooltip">
96
- <block type="page/html_wrapper" name="product.info.addtocart.payu_account.wrapper" translate="label">
97
- <block type="payu_account/onestep_checkout" name="product.info.addtocart.payu" template="payu_account/onestep/checkout.phtml">
98
- <action method="setIsInCatalogProduct"><value>1</value></action>
99
- <action method="setShowOrPosition"><value>after</value></action>
100
- </block>
101
- </block>
102
- </reference>
103
- </SHORTCUT_popup>
104
-
105
-
106
- </layout>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/frontend/base/default/template/payu_account/advertisement.phtml DELETED
@@ -1,4 +0,0 @@
1
- <div class="payu-advertisement" style="text-align:center;">
2
- <a href="<?php echo $this->getRedirectUrl();?>" target="_blank">
3
- <img src="<?php echo $this->getAdvertisementSrc();?>" alt="PayU We Accept" /></a>
4
- </div>
 
 
 
 
app/design/frontend/base/default/template/payu_account/form.phtml CHANGED
@@ -1,3 +1,7 @@
 
 
1
  <ul class="form-list" id="payment_form_<?php echo $this->getMethodCode() ?>" style="display:none;">
2
- <li class="form-alt"><?php echo Mage::helper('payu_account')->__('You will be redirected to PayU after submitting the order.'); ?></li>
3
- </ul>
 
 
1
+ <?php /** @var PayU_Account_Block_Form $this */ ?>
2
+
3
  <ul class="form-list" id="payment_form_<?php echo $this->getMethodCode() ?>" style="display:none;">
4
+ <li class="form-alt">
5
+ <?php echo $this->__('You will be redirected to PayU after submitting the order.'); ?>
6
+ </li>
7
+ </ul>
app/design/frontend/base/default/template/payu_account/info/payu_account.phtml DELETED
@@ -1,21 +0,0 @@
1
- <?php
2
- /**
3
- * ver. 1.9.0
4
- *
5
- * @copyright Copyright (c) 2011-2014 PayU
6
- * @license http://opensource.org/licenses/GPL-3.0 Open Software License (GPL 3.0)
7
- * http://www.payu.com
8
- * http://www.openpayu.com
9
- * http://twitter.com/openpayu
10
- */
11
- ?>
12
- <?php echo $this->getMethod()->getTitle() ?>
13
- <?php if($this->getInfo()->getAdditionalData()): ?>
14
- <?php if($this->getPayableTo()): ?><br /><?php echo Mage::helper('payment')->__('Make Check payable to: %s', $this->htmlEscape($this->getPayableTo())) ?><?php endif; ?>
15
- <?php if($this->getMailingAddress()): ?>
16
- <label><?php echo Mage::helper('payment')->__('Send Check to:') ?></label>
17
- <div class="checkmo-mailing-address">
18
- <?php echo nl2br($this->htmlEscape($this->getMailingAddress())) ?>
19
- </div>
20
- <?php endif; ?>
21
- <?php endif; ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
app/design/frontend/base/default/template/payu_account/onestep/checkout.phtml DELETED
@@ -1,5 +0,0 @@
1
- <?php if($this->getIsOneStepCheckoutEnabled()): ?>
2
- <p class="payu-button" style="margin:5px 0 5px 0;">
3
- <a onclick="<?php if(!$this->getIsOneStepCheckoutAvailable()): ?>alert('<?php echo $this->__('This feature is currently not available.'); ?>');return false;<?php endif; ?>" href="<?php echo $this->getCheckoutUrl();?>"><img src="<?php echo $this->getButtonSrc(); ?>" alt="PayU One Step Checkout" /></a>
4
- </p>
5
- <?php endif; ?>
 
 
 
 
 
app/etc/modules/PayU_Account.xml CHANGED
@@ -5,8 +5,8 @@
5
  <active>true</active>
6
  <codePool>community</codePool>
7
  <depends>
8
- <Mage_Payment />
9
  </depends>
10
  </PayU_Account>
11
  </modules>
12
- </config>
5
  <active>true</active>
6
  <codePool>community</codePool>
7
  <depends>
8
+ <Mage_Payment/>
9
  </depends>
10
  </PayU_Account>
11
  </modules>
12
+ </config>
app/locale/pl_PL/PayU_Account.csv CHANGED
@@ -1,66 +1,28 @@
1
- "PayU account","PayU"
2
- "Enabled","Czy włączyć wtyczkę?"
3
  "Main parameters","Główne parametry"
4
- "OneStepCheckout Enabled","Czy OneStepCheckout włączony"
5
- "Self-Return Enabled","Czy autoodbiór włączony"
6
- "New Order Status","Status nowego zamówienia"
7
- "Test Mode Enabled","Użyj środowiska testowego"
8
- "Parameters of production environment","Parametry środowiska produkcyjnego"
9
  "POS ID (pos_id)","Id punktu płatności (pos_id)"
10
- "Client ID (POS ID)","Nazwa klienta (ID POS)"
11
- "Key (MD5)","Klucz MD5"
12
- "POS Auth Key","Klucz autoryzacji płatności"
13
  "OAuth protocol - client_id","Protokół OAuth - client_id"
14
  "OAuth protocol - client_secret","Protokół OAuth - client_secret"
15
  "Symmetrical key for encrypting communication","Symetryczny klucz do szyfrowania komunikacji"
16
- "Settings of external resources","Ustawienia zewnętrznych zasobów"
17
- "OneStepCheckout button","Przycisk OneStepCheckout"
18
- "Small logo","Małe logo"
19
- "PayU advertisement","Reklama PayU"
20
- "Credit Card or E-transfer","Karta kredytowa lub e-przelew"
21
  "You are currently using version","Aktualnie zainstalowana wersja"
22
  "for","dla"
23
- "The latest version of PayU account plugin is","Najnowszą wersją pluginu konto PayU jest"
24
- "Get the latest version - ","Pobierz najnowszą wersję - "
25
- "Documents attached to this implementation","Dokumenty dołączone do tej implementacji"
26
- "Thank you.","Dziękujemy."
27
  "Yes","Tak"
28
  "No","Nie"
29
- "There was a problem with the payment initialization, please contact system administrator.","Wystąpił problem podczas inicjalizacji płatności, prosimy o kontakt z obsługą sklepu."
30
- "Transaction canceled.","Transakcja anulowana."
 
 
 
 
 
31
  "The transaction has been canceled.","Transakcja została anulowana."
32
- "Transaction rejected.","Transakcja odrzucona."
33
- "The transaction has been rejected.","Transakcja została odrzucona."
34
- "The transaction is in progress.","Transakcja w trakcie realizacji."
35
- "Transaction awaits approval.","Transakcja oczekuje na akceptację."
36
- "Transaction awaiting manual approval.","Transakcja oczekuje na ręczną akceptację."
37
- "The transaction is pending.","Transakcja w toku."
38
- "Transaction returned.","Transakcja zwrócona."
39
- "The transaction has been returned.","Transakcja została zwrócona."
40
- "The transaction completed successfully.","Transakcja zakończona pomyślnie"
41
- "The transaction is incorrect.","Transakcja nieprawidłowa."
42
- "You will be redirected to PayU after submitting the order.","Po złożeniu zamówienia nastąpi przekierowanie do PayU."
43
- "Accept PayU order","Akceptuj zamówienie PayU"
44
- "Cancel PayU order","Anuluj zamówienie PayU"
45
- "Complete PayU payment","Akceptuj płatność PayU"
46
- "Cancel PayU payment","Anuluj płatność PayU"
47
- "Order Validity Time","Czas ważności zamówienia"
48
- "More info on","Więcej informacji na"
49
- "The order is awaiting for cancelation in PayU, please wait while status changes.","Zamówienie jest w trakcie anulowania w PayU, proszę czekać na zmianę statusu w sklepie."
50
- "There was a problem while canceling the order in PayU.","Wystąpił błąd podczas próby anulowania zamówienia w PayU."
51
- "There was a problem while rejecting the order in PayU.","Wystąpił błąd podczas próby anulowania zamówienia w PayU."
52
- "The order is completing in PayU, please wait while status changes.","Zamówienie jest w trakcie zmiany na zakończone w PayU, proszę czekać na zmianę statusu w sklepie."
53
- "There was a problem while completing the order in PayU.","Wystąpił błąd podczas próby zakończenia zamówienia w PayU."
54
- "CAUTION: PayU plugin is not up to date.","UWAGA: Plugin PayU nie jest aktualny."
55
- "OK: PayU account plugin is up to date.","OK: Plugin konto PayU jest aktualny."
56
- "The latest version of PayU plugin is","Najnowszą wersją pluginu PayU jest"
57
- "PayU plugin information","Informacje o wtyczce PayU"
58
- "Important: This plugin works only with Checkout points of sales (POS).","Ważne: Plugin działa tylko z POS-ami typu Checkout."
59
- "Point of Sale identifier","Identyfikator punktu płatności"
60
- "Signature key (MD5)","Klucz sygnatury (MD5)"
61
- "Second key (MD5)","Drugi klucz (MD5)"
62
- "Order # ","Zamówienie # "
63
- "Shipping costs","Dostawa i koszty manipulacyjne"
64
- "The transaction completed successfully in PayU.","Transakcja zakończona pomyślnie w PayU."
65
- "Pay by link","Szybki przelew"
66
- "Pay with card","Płatność kartą"
1
+ "PayU","PayU"
2
+ "Enable plugin?","Czy włączyć wtyczkę?"
3
  "Main parameters","Główne parametry"
4
+ "POS parameters","Parametry punktu płatności (POS)"
 
 
 
 
5
  "POS ID (pos_id)","Id punktu płatności (pos_id)"
6
+ "Point of Sale identifier","Identyfikator punktu płatności"
7
+ "Second key (MD5)","Drugi klucz (MD5)"
 
8
  "OAuth protocol - client_id","Protokół OAuth - client_id"
9
  "OAuth protocol - client_secret","Protokół OAuth - client_secret"
10
  "Symmetrical key for encrypting communication","Symetryczny klucz do szyfrowania komunikacji"
11
+ "PayU Plugin Information","Informacja o wtyczce PayU"
 
 
 
 
12
  "You are currently using version","Aktualnie zainstalowana wersja"
13
  "for","dla"
 
 
 
 
14
  "Yes","Tak"
15
  "No","Nie"
16
+ "Important: This plugin works only with REST (Checkout) points of sales (POS).","WAŻNE: Plugin działa tylko z POS-ami typu REST (Checkout)."
17
+ "Pay with PayU","Zapłać przez PayU"
18
+ "Order #%s","Zamówienie #%s"
19
+ "Discount","Rabat"
20
+ "Shipping","Dostawa"
21
+ "No order for processing found","Brak zamówienia do przetwarzania"
22
+ "New transaction started.","Nowa Transakcjat została rozpoczęta"
23
  "The transaction has been canceled.","Transakcja została anulowana."
24
+ "The transaction is to be accepted or rejected.","Transakcja może być zaakceptowana lub odrzucona."
25
+ "The transaction completed successfully.","Transakcja zakończona pomyślnie."
26
+ "There was a problem with the payment initialization - "%s", please contact system administrator.","Wystąpił problem podczas inicjalizacji płatności - %s, prosimy o kontakt z obsługą sklepu."
27
+ "Refund for order: %s","Zwrot do zamówienia %s"
28
+ "Payu refund - amount: %s, status: %s","Zwrot Payu - kwota: %s, status: %s"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/PayU/Cache/.htaccess ADDED
@@ -0,0 +1,2 @@
 
 
1
+ order deny,allow
2
+ deny from all
lib/PayU/Cache/810290d4eed883975e0cd43d80497ac4 ADDED
Binary file
lib/PayU/Cache/index.php ADDED
File without changes
lib/PayU/OpenPayU/AuthType/AuthType.php ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ interface AuthType
4
+ {
5
+
6
+ /**
7
+ * @return array
8
+ */
9
+ public function getHeaders();
10
+
11
+
12
+ }
lib/PayU/OpenPayU/AuthType/Basic.php ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class AuthType_Basic implements AuthType
4
+ {
5
+
6
+ /**
7
+ * @var string
8
+ */
9
+ private $authBasicToken;
10
+
11
+ public function __construct($posId, $signatureKey)
12
+ {
13
+ if (empty($posId)) {
14
+ throw new OpenPayU_Exception_Configuration('PosId is empty');
15
+ }
16
+
17
+ if (empty($signatureKey)) {
18
+ throw new OpenPayU_Exception_Configuration('SignatureKey is empty');
19
+ }
20
+
21
+ $this->authBasicToken = base64_encode($posId . ':' . $signatureKey);
22
+ }
23
+
24
+ public function getHeaders()
25
+ {
26
+ return array(
27
+ 'Content-Type: application/json',
28
+ 'Accept: application/json',
29
+ 'Authorization: Basic ' . $this->authBasicToken
30
+ );
31
+ }
32
+
33
+ }
lib/PayU/OpenPayU/AuthType/Oauth.php ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class AuthType_Oauth implements AuthType
4
+ {
5
+
6
+ /**
7
+ * @var OauthResultClientCredentials
8
+ */
9
+ private $oauthResult;
10
+
11
+ public function __construct($clientId, $clientSecret)
12
+ {
13
+ if (empty($clientId)) {
14
+ throw new OpenPayU_Exception_Configuration('ClientId is empty');
15
+ }
16
+
17
+ if (empty($clientSecret)) {
18
+ throw new OpenPayU_Exception_Configuration('ClientSecret is empty');
19
+ }
20
+
21
+ try {
22
+ $this->oauthResult = OpenPayU_Oauth::getAccessToken();
23
+ } catch (OpenPayU_Exception $e) {
24
+ throw new OpenPayU_Exception('Oauth error: [code=' . $e->getCode() . '], [message=' . $e->getMessage() . ']');
25
+ }
26
+
27
+ }
28
+
29
+
30
+ public function getHeaders()
31
+ {
32
+ return array(
33
+ 'Content-Type: application/json',
34
+ 'Accept: */*',
35
+ 'Authorization: Bearer ' . $this->oauthResult->getAccessToken()
36
+ );
37
+ }
38
+
39
+ }
lib/PayU/OpenPayU/AuthType/TokenRequest.php ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class AuthType_TokenRequest implements AuthType
4
+ {
5
+
6
+ public function getHeaders()
7
+ {
8
+ return array(
9
+ 'Content-Type: application/x-www-form-urlencoded',
10
+ 'Accept: */*'
11
+ );
12
+ }
13
+
14
+ }
lib/PayU/OpenPayU/Configuration.php ADDED
@@ -0,0 +1,270 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * OpenPayU Standard Library
5
+ *
6
+ * @copyright Copyright (c) 2011-2016 PayU
7
+ * @license http://opensource.org/licenses/LGPL-3.0 Open Software License (LGPL 3.0)
8
+ * http://www.payu.com
9
+ * http://developers.payu.com
10
+ */
11
+ class OpenPayU_Configuration
12
+ {
13
+ private static $_availableEnvironment = array('custom', 'secure');
14
+ private static $_availableHashAlgorithm = array('SHA', 'SHA-256', 'SHA-384', 'SHA-512');
15
+
16
+ private static $env = 'secure';
17
+
18
+ /**
19
+ * Merchant Pos ID for Auth Basic and Notification Consume
20
+ */
21
+ private static $merchantPosId = '';
22
+
23
+ /**
24
+ * Signature Key for Auth Basic and Notification Consume
25
+ */
26
+ private static $signatureKey = '';
27
+
28
+ /**
29
+ * OAuth protocol - client_id
30
+ */
31
+ private static $oauthClientId = '';
32
+
33
+ /**
34
+ * OAuth protocol - client_secret
35
+ */
36
+ private static $oauthClientSecret = '';
37
+
38
+ /**
39
+ * OAuth protocol - endpoint address
40
+ */
41
+ private static $oauthEndpoint = '';
42
+
43
+ /**
44
+ * OAuth protocol - methods for token cache
45
+ */
46
+ private static $oauthTokenCache = null;
47
+
48
+ private static $serviceUrl = '';
49
+ private static $hashAlgorithm = 'SHA-256';
50
+
51
+ private static $sender = 'Generic';
52
+
53
+ const API_VERSION = '2.1';
54
+ const COMPOSER_JSON = "/composer.json";
55
+ const DEFAULT_SDK_VERSION = 'PHP SDK 2.2.2';
56
+ const OAUTH_CONTEXT = 'pl/standard/user/oauth/authorize';
57
+
58
+ /**
59
+ * @return string
60
+ */
61
+ public static function getApiVersion()
62
+ {
63
+ return self::API_VERSION;
64
+ }
65
+
66
+ /**
67
+ * @param string
68
+ * @throws OpenPayU_Exception_Configuration
69
+ */
70
+ public static function setHashAlgorithm($value)
71
+ {
72
+ if (!in_array($value, self::$_availableHashAlgorithm)) {
73
+ throw new OpenPayU_Exception_Configuration('Hash algorithm "' . $value . '"" is not available');
74
+ }
75
+
76
+ self::$hashAlgorithm = $value;
77
+ }
78
+
79
+ /**
80
+ * @return string
81
+ */
82
+ public static function getHashAlgorithm()
83
+ {
84
+ return self::$hashAlgorithm;
85
+ }
86
+
87
+ /**
88
+ * @param string $environment
89
+ * @param string $domain
90
+ * @param string $api
91
+ * @param string $version
92
+ * @throws OpenPayU_Exception_Configuration
93
+ */
94
+ public static function setEnvironment($environment = 'secure', $domain = 'payu.com', $api = 'api/', $version = 'v2_1/')
95
+ {
96
+ $environment = strtolower($environment);
97
+ $domain = strtolower($domain) . '/';
98
+
99
+ if (!in_array($environment, self::$_availableEnvironment)) {
100
+ throw new OpenPayU_Exception_Configuration($environment . ' - is not valid environment');
101
+ }
102
+
103
+ if ($environment == 'secure') {
104
+ self::$env = $environment;
105
+ self::$serviceUrl = 'https://' . $environment . '.' . $domain . $api . $version;
106
+ self::$oauthEndpoint = 'https://' . $environment . '.' . $domain . self::OAUTH_CONTEXT;
107
+ } else if ($environment == 'custom') {
108
+ self::$env = $environment;
109
+ self::$serviceUrl = $domain . $api . $version;
110
+ self::$oauthEndpoint = $domain . self::OAUTH_CONTEXT;
111
+ }
112
+ }
113
+
114
+ /**
115
+ * @return string
116
+ */
117
+ public static function getServiceUrl()
118
+ {
119
+ return self::$serviceUrl;
120
+ }
121
+
122
+ /**
123
+ * @return string
124
+ */
125
+ public static function getOauthEndpoint()
126
+ {
127
+ return self::$oauthEndpoint;
128
+ }
129
+
130
+ /**
131
+ * @return string
132
+ */
133
+ public static function getEnvironment()
134
+ {
135
+ return self::$env;
136
+ }
137
+
138
+ /**
139
+ * @param string
140
+ */
141
+ public static function setMerchantPosId($value)
142
+ {
143
+ self::$merchantPosId = trim($value);
144
+ }
145
+
146
+ /**
147
+ * @return string
148
+ */
149
+ public static function getMerchantPosId()
150
+ {
151
+ return self::$merchantPosId;
152
+ }
153
+
154
+ /**
155
+ * @param string
156
+ */
157
+ public static function setSignatureKey($value)
158
+ {
159
+ self::$signatureKey = trim($value);
160
+ }
161
+
162
+ /**
163
+ * @return string
164
+ */
165
+ public static function getSignatureKey()
166
+ {
167
+ return self::$signatureKey;
168
+ }
169
+
170
+ /**
171
+ * @return string
172
+ */
173
+ public static function getOauthClientId()
174
+ {
175
+ return self::$oauthClientId;
176
+ }
177
+
178
+ /**
179
+ * @return string
180
+ */
181
+ public static function getOauthClientSecret()
182
+ {
183
+ return self::$oauthClientSecret;
184
+ }
185
+
186
+ /**
187
+ * @param mixed $oauthClientId
188
+ */
189
+ public static function setOauthClientId($oauthClientId)
190
+ {
191
+ self::$oauthClientId = $oauthClientId;
192
+ }
193
+
194
+ /**
195
+ * @param mixed $oauthClientSecret
196
+ */
197
+ public static function setOauthClientSecret($oauthClientSecret)
198
+ {
199
+ self::$oauthClientSecret = $oauthClientSecret;
200
+ }
201
+
202
+ /**
203
+ * @return null | OauthCacheInterface
204
+ */
205
+ public static function getOauthTokenCache()
206
+ {
207
+ return self::$oauthTokenCache;
208
+ }
209
+
210
+ /**
211
+ * @param OauthCacheInterface $oauthTokenCache
212
+ * @throws OpenPayU_Exception_Configuration
213
+ */
214
+ public static function setOauthTokenCache($oauthTokenCache)
215
+ {
216
+ if (!$oauthTokenCache instanceof OauthCacheInterface) {
217
+ throw new OpenPayU_Exception_Configuration('Oauth token cache class is not instance of OauthCacheInterface');
218
+ }
219
+ self::$oauthTokenCache = $oauthTokenCache;
220
+ }
221
+
222
+ /**
223
+ * @param string $sender
224
+ */
225
+ public static function setSender($sender)
226
+ {
227
+ self::$sender = $sender;
228
+ }
229
+
230
+ /**
231
+ * @return string
232
+ */
233
+ public static function getSender()
234
+ {
235
+ return self::$sender;
236
+ }
237
+
238
+ /**
239
+ * @return string
240
+ */
241
+ public static function getFullSenderName()
242
+ {
243
+ return sprintf("%s@%s", self::getSender(), self::getSdkVersion());
244
+ }
245
+
246
+ /**
247
+ * @return string
248
+ */
249
+ public static function getSdkVersion()
250
+ {
251
+ $composerFilePath = self::getComposerFilePath();
252
+ if (file_exists($composerFilePath)) {
253
+ $fileContent = file_get_contents($composerFilePath);
254
+ $composerData = json_decode($fileContent);
255
+ if (isset($composerData->version) && isset($composerData->extra[0]->engine)) {
256
+ return sprintf("%s %s", $composerData->extra[0]->engine, $composerData->version);
257
+ }
258
+ }
259
+
260
+ return self::DEFAULT_SDK_VERSION;
261
+ }
262
+
263
+ /**
264
+ * @return string
265
+ */
266
+ private static function getComposerFilePath()
267
+ {
268
+ return realpath(dirname(__FILE__)) . '/../../' . self::COMPOSER_JSON;
269
+ }
270
+ }
lib/PayU/OpenPayU/Http.php ADDED
@@ -0,0 +1,166 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * OpenPayU Standard Library
4
+ *
5
+ * @copyright Copyright (c) 2011-2016 PayU
6
+ * @license http://opensource.org/licenses/LGPL-3.0 Open Software License (LGPL 3.0)
7
+ * http://www.payu.com
8
+ * http://developers.payu.com
9
+ */
10
+
11
+ class OpenPayU_Http
12
+ {
13
+
14
+ /**
15
+ * @param string $pathUrl
16
+ * @param string $data
17
+ * @param AuthType $authType
18
+ * @return mixed
19
+ * @throws OpenPayU_Exception_Configuration
20
+ * @throws OpenPayU_Exception_Network
21
+ */
22
+ public static function doPost($pathUrl, $data, $authType)
23
+ {
24
+ $response = OpenPayU_HttpCurl::doPayuRequest('POST', $pathUrl, $authType, $data);
25
+
26
+ return $response;
27
+ }
28
+
29
+ /**
30
+ * @param string $pathUrl
31
+ * @param AuthType $authType
32
+ * @return mixed
33
+ * @throws OpenPayU_Exception_Configuration
34
+ * @throws OpenPayU_Exception_Network
35
+ */
36
+ public static function doGet($pathUrl, $authType)
37
+ {
38
+ $response = OpenPayU_HttpCurl::doPayuRequest('GET', $pathUrl, $authType);
39
+
40
+ return $response;
41
+ }
42
+
43
+ /**
44
+ * @param string $pathUrl
45
+ * @param AuthType $authType
46
+ * @return mixed
47
+ * @throws OpenPayU_Exception_Configuration
48
+ * @throws OpenPayU_Exception_Network
49
+ */
50
+ public static function doDelete($pathUrl, $authType)
51
+ {
52
+ $response = OpenPayU_HttpCurl::doPayuRequest('DELETE', $pathUrl, $authType);
53
+
54
+ return $response;
55
+ }
56
+
57
+ /**
58
+ * @param string $pathUrl
59
+ * @param string $data
60
+ * @param AuthType $authType
61
+ * @return mixed
62
+ * @throws OpenPayU_Exception_Configuration
63
+ * @throws OpenPayU_Exception_Network
64
+ */
65
+ public static function doPut($pathUrl, $data, $authType)
66
+ {
67
+ $response = OpenPayU_HttpCurl::doPayuRequest('PUT', $pathUrl, $authType, $data);
68
+
69
+ return $response;
70
+ }
71
+
72
+ /**
73
+ * @param $statusCode
74
+ * @param null $message
75
+ * @throws OpenPayU_Exception
76
+ * @throws OpenPayU_Exception_Authorization
77
+ * @throws OpenPayU_Exception_Network
78
+ * @throws OpenPayU_Exception_ServerMaintenance
79
+ * @throws OpenPayU_Exception_ServerError
80
+ */
81
+ public static function throwHttpStatusException($statusCode, $message = null)
82
+ {
83
+
84
+ $response = $message->getResponse();
85
+ $statusDesc = ($response->status && $response->status->statusDesc) ? $response->status->statusDesc : '';
86
+
87
+ switch ($statusCode) {
88
+ case 400:
89
+ throw new OpenPayU_Exception($message->getStatus().' - '.$statusDesc, $statusCode);
90
+ break;
91
+
92
+ case 401:
93
+ case 403:
94
+ throw new OpenPayU_Exception_Authorization($message->getStatus().' - '.$statusDesc, $statusCode);
95
+ break;
96
+
97
+ case 404:
98
+ throw new OpenPayU_Exception_Network($message->getStatus().' - '.$statusDesc, $statusCode);
99
+ break;
100
+
101
+ case 408:
102
+ throw new OpenPayU_Exception_ServerError('Request timeout', $statusCode);
103
+ break;
104
+
105
+ case 500:
106
+ throw new OpenPayU_Exception_ServerError('PayU system is unavailable or your order is not processed.
107
+ Error:
108
+ [' . $statusDesc . ']', $statusCode);
109
+ break;
110
+
111
+ case 503:
112
+ throw new OpenPayU_Exception_ServerMaintenance('Service unavailable', $statusCode);
113
+ break;
114
+
115
+ default:
116
+ throw new OpenPayU_Exception_Network('Unexpected HTTP code response', $statusCode);
117
+ break;
118
+
119
+ }
120
+ }
121
+
122
+ /**
123
+ * @param $statusCode
124
+ * @param ResultError $resultError
125
+ * @throws OpenPayU_Exception
126
+ * @throws OpenPayU_Exception_Authorization
127
+ * @throws OpenPayU_Exception_Network
128
+ * @throws OpenPayU_Exception_ServerError
129
+ * @throws OpenPayU_Exception_ServerMaintenance
130
+ */
131
+ public static function throwErrorHttpStatusException($statusCode, $resultError)
132
+ {
133
+ switch ($statusCode) {
134
+ case 400:
135
+ throw new OpenPayU_Exception($resultError->getError().' - '.$resultError->getErrorDescription(), $statusCode);
136
+ break;
137
+
138
+ case 401:
139
+ case 403:
140
+ throw new OpenPayU_Exception_Authorization($resultError->getError().' - '.$resultError->getErrorDescription(), $statusCode);
141
+ break;
142
+
143
+ case 404:
144
+ throw new OpenPayU_Exception_Network($resultError->getError().' - '.$resultError->getErrorDescription(), $statusCode);
145
+ break;
146
+
147
+ case 408:
148
+ throw new OpenPayU_Exception_ServerError('Request timeout', $statusCode);
149
+ break;
150
+
151
+ case 500:
152
+ throw new OpenPayU_Exception_ServerError('PayU system is unavailable. Error: [' . $resultError->getErrorDescription() . ']', $resultError);
153
+ break;
154
+
155
+ case 503:
156
+ throw new OpenPayU_Exception_ServerMaintenance('Service unavailable', $statusCode);
157
+ break;
158
+
159
+ default:
160
+ throw new OpenPayU_Exception_Network('Unexpected HTTP code response', $statusCode);
161
+ break;
162
+
163
+ }
164
+ }
165
+
166
+ }
lib/{payu/sdk_v21 → PayU}/OpenPayU/HttpCurl.php RENAMED
@@ -1,14 +1,14 @@
1
  <?php
2
  /**
3
- * OpenPayU_HttpCurl
4
  *
5
- * @copyright Copyright (c) 2014 PayU
6
  * @license http://opensource.org/licenses/LGPL-3.0 Open Software License (LGPL 3.0)
7
  * http://www.payu.com
8
  * http://developers.payu.com
9
- * http://twitter.com/openpayu
10
  */
11
- class OpenPayU_HttpCurl implements OpenPayU_HttpProtocol
 
12
  {
13
  /**
14
  * @var
@@ -19,64 +19,46 @@ class OpenPayU_HttpCurl implements OpenPayU_HttpProtocol
19
  * @param $requestType
20
  * @param $pathUrl
21
  * @param $data
22
- * @param $signature
23
- * @return mixed
24
  * @throws OpenPayU_Exception_Configuration
25
  * @throws OpenPayU_Exception_Network
26
- * @throws OpenPayU_Exception_Authorization
27
  */
28
- public static function doRequest($requestType, $pathUrl, $data, $posId, $signatureKey)
29
  {
30
- if (empty($pathUrl))
31
- throw new OpenPayU_Exception_Configuration('The end point is empty');
32
-
33
- if (empty($posId)) {
34
- throw new OpenPayU_Exception_Configuration('PosId is empty');
35
  }
36
 
37
- if (empty($signatureKey)) {
38
- throw new OpenPayU_Exception_Configuration('SignatureKey is empty');
39
- }
40
-
41
- $userNameAndPassword = $posId.":".$signatureKey;
42
-
43
- $header = array();
44
-
45
- if(OpenPayU_Configuration::getApiVersion() >= 2)
46
- {
47
- $header[] = 'Content-Type:application/json';
48
- $header[] = 'Accept:application/json';
49
- }
50
-
51
- $ch = curl_init();
52
- curl_setopt($ch, CURLOPT_URL, $pathUrl);
53
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $requestType);
54
  curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
55
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
56
  curl_setopt($ch, CURLOPT_HEADER, false);
57
- curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
58
  curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'OpenPayU_HttpCurl::readHeader');
59
- curl_setopt($ch, CURLOPT_POSTFIELDS, (OpenPayU_Configuration::getApiVersion() < 2) ? 'DOCUMENT=' . urlencode($data) : $data);
 
 
60
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
61
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
62
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
63
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
64
  curl_setopt($ch, CURLOPT_TIMEOUT, 60);
65
- curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
66
- curl_setopt($ch, CURLOPT_USERPWD, $userNameAndPassword);
67
 
68
  $response = curl_exec($ch);
69
  $httpStatus = curl_getinfo($ch, CURLINFO_HTTP_CODE);
70
- if($response === false)
71
- throw new OpenPayU_Exception_Network(curl_error($ch));
72
 
 
 
 
73
  curl_close($ch);
74
 
75
  return array('code' => $httpStatus, 'response' => trim($response));
76
  }
77
 
78
  /**
79
- * @param $headers
80
  *
81
  * @return mixed
82
  */
@@ -87,11 +69,13 @@ class OpenPayU_HttpCurl implements OpenPayU_HttpProtocol
87
  if(preg_match('/X-OpenPayU-Signature/i', $name) || preg_match('/OpenPayu-Signature/i', $name))
88
  return $value;
89
  }
 
 
90
  }
91
 
92
  /**
93
- * @param $ch
94
- * @param $header
95
  * @return int
96
  */
97
  public static function readHeader($ch, $header)
@@ -103,19 +87,4 @@ class OpenPayU_HttpCurl implements OpenPayU_HttpProtocol
103
  return strlen($header);
104
  }
105
 
106
- /**
107
- * @param $headers
108
- */
109
- public static function setHeaders($headers)
110
- {
111
- self::$headers = $headers;
112
- }
113
-
114
- /**
115
- * @return mixed
116
- */
117
- public static function getHeader()
118
- {
119
- return self::$headers;
120
- }
121
  }
1
  <?php
2
  /**
3
+ * OpenPayU Standard Library
4
  *
5
+ * @copyright Copyright (c) 2011-2016 PayU
6
  * @license http://opensource.org/licenses/LGPL-3.0 Open Software License (LGPL 3.0)
7
  * http://www.payu.com
8
  * http://developers.payu.com
 
9
  */
10
+
11
+ class OpenPayU_HttpCurl
12
  {
13
  /**
14
  * @var
19
  * @param $requestType
20
  * @param $pathUrl
21
  * @param $data
22
+ * @param AuthType $auth
23
+ * @return array
24
  * @throws OpenPayU_Exception_Configuration
25
  * @throws OpenPayU_Exception_Network
 
26
  */
27
+ public static function doPayuRequest($requestType, $pathUrl, $auth, $data = null)
28
  {
29
+ if (empty($pathUrl)) {
30
+ throw new OpenPayU_Exception_Configuration('The endpoint is empty');
 
 
 
31
  }
32
 
33
+ $ch = curl_init($pathUrl);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
  curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $requestType);
35
  curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
36
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
37
  curl_setopt($ch, CURLOPT_HEADER, false);
38
+ curl_setopt($ch, CURLOPT_HTTPHEADER, $auth->getHeaders());
39
  curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'OpenPayU_HttpCurl::readHeader');
40
+ if ($data) {
41
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
42
+ }
43
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
44
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
45
  curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
46
  curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
47
  curl_setopt($ch, CURLOPT_TIMEOUT, 60);
 
 
48
 
49
  $response = curl_exec($ch);
50
  $httpStatus = curl_getinfo($ch, CURLINFO_HTTP_CODE);
 
 
51
 
52
+ if($response === false) {
53
+ throw new OpenPayU_Exception_Network(curl_error($ch));
54
+ }
55
  curl_close($ch);
56
 
57
  return array('code' => $httpStatus, 'response' => trim($response));
58
  }
59
 
60
  /**
61
+ * @param array $headers
62
  *
63
  * @return mixed
64
  */
69
  if(preg_match('/X-OpenPayU-Signature/i', $name) || preg_match('/OpenPayu-Signature/i', $name))
70
  return $value;
71
  }
72
+
73
+ return null;
74
  }
75
 
76
  /**
77
+ * @param resource $ch
78
+ * @param string $header
79
  * @return int
80
  */
81
  public static function readHeader($ch, $header)
87
  return strlen($header);
88
  }
89
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
  }
lib/PayU/OpenPayU/Oauth/Cache/OauthCacheFile.php ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class OauthCacheFile implements OauthCacheInterface
4
+ {
5
+ private $directory;
6
+
7
+ /**
8
+ * @param string $directory
9
+ * @throws OpenPayU_Exception_Configuration
10
+ */
11
+ public function __construct($directory = null)
12
+ {
13
+ if ($directory === null) {
14
+ $directory = dirname(__FILE__).'/../../../Cache';
15
+ }
16
+
17
+ if (!is_dir($directory) || !is_writable($directory)) {
18
+ throw new OpenPayU_Exception_Configuration('Cache directory [' . $directory . '] not exist or not writable.');
19
+ }
20
+
21
+ $this->directory = $directory . (substr($directory, -1) != '/' ? '/' : '');
22
+ }
23
+
24
+ public function get($key)
25
+ {
26
+ $cache = @file_get_contents($this->directory . md5($key));
27
+ return $cache === false ? null : unserialize($cache);
28
+ }
29
+
30
+ public function set($key, $value)
31
+ {
32
+ return @file_put_contents($this->directory . md5($key), serialize($value));
33
+ }
34
+
35
+ public function invalidate($key)
36
+ {
37
+ return @unlink($this->directory . md5($key));
38
+ }
39
+
40
+ }
lib/PayU/OpenPayU/Oauth/Cache/OauthCacheInterface.php ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+
4
+ interface OauthCacheInterface
5
+ {
6
+
7
+ /**
8
+ * @param string $key
9
+ * @return null | object
10
+ */
11
+ public function get($key);
12
+
13
+ /**
14
+ * @param string $key
15
+ * @param object $value
16
+ * @return bool
17
+ */
18
+ public function set($key, $value);
19
+
20
+ /**
21
+ * @param string $key
22
+ * @return bool
23
+ */
24
+ public function invalidate($key);
25
+
26
+ }
lib/PayU/OpenPayU/Oauth/Cache/OauthCacheMemcached.php ADDED
@@ -0,0 +1,43 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class OauthCacheMemcached implements OauthCacheInterface
4
+ {
5
+ private $memcached;
6
+
7
+ /**
8
+ * @param string $host
9
+ * @param int $port
10
+ * @param int $weight
11
+ * @throws OpenPayU_Exception_Configuration
12
+ */
13
+ public function __construct($host = 'localhost', $port = 11211, $weight = 0)
14
+ {
15
+ if (!class_exists('Memcached')) {
16
+ throw new OpenPayU_Exception_Configuration('PHP Memcached extension not installed.');
17
+ }
18
+
19
+ $this->memcached = new Memcached('PayU');
20
+ $this->memcached->addServer($host, $port, $weight);
21
+ $stats = $this->memcached->getStats();
22
+ if ($stats[$host . ':' . $port]['pid'] == -1) {
23
+ throw new OpenPayU_Exception_Configuration('Problem with connection to memcached server [host=' . $host . '] [port=' . $port . '] [weight=' . $weight . ']');
24
+ }
25
+ }
26
+
27
+ public function get($key)
28
+ {
29
+ $cache = $this->memcached->get($key);
30
+ return $cache === false ? null : unserialize($cache);
31
+ }
32
+
33
+ public function set($key, $value)
34
+ {
35
+ return $this->memcached->set($key, serialize($value));
36
+ }
37
+
38
+ public function invalidate($key)
39
+ {
40
+ return $this->memcached->delete($key);
41
+ }
42
+
43
+ }
lib/PayU/OpenPayU/Oauth/Oauth.php ADDED
@@ -0,0 +1,105 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class OpenPayU_Oauth
4
+ {
5
+ /**
6
+ * @var OauthCacheInterface
7
+ */
8
+ private static $oauthTokenCache;
9
+
10
+ const CACHE_KEY = 'AccessToken';
11
+
12
+ /**
13
+ * @param string $clientId
14
+ * @param string $clientSecret
15
+ * @return OauthResultClientCredentials
16
+ * @throws OpenPayU_Exception_ServerError
17
+ */
18
+ public static function getAccessToken($clientId = null, $clientSecret = null)
19
+ {
20
+ $cacheKey = self::CACHE_KEY . OpenPayU_Configuration::getOauthClientId();
21
+
22
+ self::getOauthTokenCache();
23
+
24
+ $tokenCache = self::$oauthTokenCache->get($cacheKey);
25
+
26
+ if ($tokenCache instanceof OauthResultClientCredentials && !$tokenCache->hasExpire()) {
27
+ return $tokenCache;
28
+ }
29
+
30
+ self::$oauthTokenCache->invalidate($cacheKey);
31
+
32
+ $authType = new AuthType_TokenRequest();
33
+
34
+ $oauthUrl = OpenPayU_Configuration::getOauthEndpoint();
35
+ $data = array(
36
+ 'grant_type' => OauthGrantType::CLIENT_CREDENTIAL,
37
+ 'client_id' => $clientId ? $clientId : OpenPayU_Configuration::getOauthClientId(),
38
+ 'client_secret' => $clientSecret ? $clientSecret : OpenPayU_Configuration::getOauthClientSecret()
39
+ );
40
+
41
+ $response = self::parseResponse(OpenPayU_Http::doPost($oauthUrl, http_build_query($data), $authType));
42
+
43
+ self::$oauthTokenCache->set($cacheKey, $response);
44
+
45
+ return $response;
46
+ }
47
+
48
+ /**
49
+ * Parse response from PayU
50
+ *
51
+ * @param array $response
52
+ * @return OauthResultClientCredentials
53
+ * @throws OpenPayU_Exception
54
+ * @throws OpenPayU_Exception_Authorization
55
+ * @throws OpenPayU_Exception_Network
56
+ * @throws OpenPayU_Exception_ServerError
57
+ * @throws OpenPayU_Exception_ServerMaintenance
58
+ */
59
+ private static function parseResponse($response)
60
+ {
61
+ $httpStatus = $response['code'];
62
+
63
+ if ($httpStatus == 500) {
64
+ $result = new ResultError();
65
+ $result->setErrorDescription($response['response']);
66
+ OpenPayU_Http::throwErrorHttpStatusException($httpStatus, $result);
67
+ }
68
+
69
+ $message = OpenPayU_Util::convertJsonToArray($response['response'], true);
70
+
71
+ if (json_last_error() == JSON_ERROR_SYNTAX) {
72
+ throw new OpenPayU_Exception_ServerError('Incorrect json response. Response: [' . $response['response'] . ']');
73
+ }
74
+
75
+ if ($httpStatus == 200) {
76
+ $result = new OauthResultClientCredentials();
77
+ $result->setAccessToken($message['access_token'])
78
+ ->setTokenType($message['token_type'])
79
+ ->setExpiresIn($message['expires_in'])
80
+ ->setGrantType($message['grant_type'])
81
+ ->calculateExpireDate(new \DateTime());
82
+
83
+ return $result;
84
+ }
85
+
86
+ $result = new ResultError();
87
+ $result->setError($message['error'])
88
+ ->setErrorDescription($message['error_description']);
89
+
90
+ OpenPayU_Http::throwErrorHttpStatusException($httpStatus, $result);
91
+
92
+ }
93
+
94
+ private static function getOauthTokenCache()
95
+ {
96
+ $oauthTokenCache = OpenPayU_Configuration::getOauthTokenCache();
97
+
98
+ if (!$oauthTokenCache instanceof OauthCacheInterface) {
99
+ $oauthTokenCache = new OauthCacheFile();
100
+ OpenPayU_Configuration::setOauthTokenCache($oauthTokenCache);
101
+ }
102
+
103
+ self::$oauthTokenCache = $oauthTokenCache;
104
+ }
105
+ }
lib/PayU/OpenPayU/Oauth/OauthGrantType.php ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ <?php
2
+
3
+ abstract class OauthGrantType
4
+ {
5
+ const CLIENT_CREDENTIAL = 'client_credentials';
6
+ }
lib/PayU/OpenPayU/Oauth/OauthResultClientCredentials.php ADDED
@@ -0,0 +1,121 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class OauthResultClientCredentials
4
+ {
5
+
6
+ /**
7
+ * @var string
8
+ */
9
+ private $accessToken;
10
+ /**
11
+ * @var string
12
+ */
13
+ private $tokenType;
14
+ /**
15
+ * @var string
16
+ */
17
+ private $expiresIn;
18
+ /**
19
+ * @var string
20
+ */
21
+ private $grantType;
22
+
23
+ /**
24
+ * @var DateTime
25
+ */
26
+ private $expireDate;
27
+
28
+ /**
29
+ * @return string
30
+ */
31
+ public function getAccessToken()
32
+ {
33
+ return $this->accessToken;
34
+ }
35
+
36
+ /**
37
+ * @param string $accessToken
38
+ * @return OauthResultClientCredentials
39
+ */
40
+ public function setAccessToken($accessToken)
41
+ {
42
+ $this->accessToken = $accessToken;
43
+ return $this;
44
+ }
45
+
46
+ /**
47
+ * @return string
48
+ */
49
+ public function getTokenType()
50
+ {
51
+ return $this->tokenType;
52
+ }
53
+
54
+ /**
55
+ * @param string $tokenType
56
+ * @return OauthResultClientCredentials
57
+ */
58
+ public function setTokenType($tokenType)
59
+ {
60
+ $this->tokenType = $tokenType;
61
+ return $this;
62
+ }
63
+
64
+ /**
65
+ * @return string
66
+ */
67
+ public function getExpiresIn()
68
+ {
69
+ return $this->expiresIn;
70
+ }
71
+
72
+ /**
73
+ * @param string $expiresIn
74
+ * @return OauthResultClientCredentials
75
+ */
76
+ public function setExpiresIn($expiresIn)
77
+ {
78
+ $this->expiresIn = $expiresIn;
79
+ return $this;
80
+ }
81
+
82
+ /**
83
+ * @return string
84
+ */
85
+ public function getGrantType()
86
+ {
87
+ return $this->grantType;
88
+ }
89
+
90
+ /**
91
+ * @param string $grantType
92
+ * @return OauthResultClientCredentials
93
+ */
94
+ public function setGrantType($grantType)
95
+ {
96
+ $this->grantType = $grantType;
97
+ return $this;
98
+ }
99
+
100
+ /**
101
+ * @return DateTime
102
+ */
103
+ public function getExpireDate()
104
+ {
105
+ return $this->expireDate;
106
+ }
107
+
108
+ /**
109
+ * @param DateTime $date
110
+ */
111
+ public function calculateExpireDate($date)
112
+ {
113
+ $this->expireDate = $date->add(new DateInterval('PT' . ($this->expiresIn - 60) . 'S'));
114
+ }
115
+
116
+ public function hasExpire()
117
+ {
118
+ return ($this->expireDate <= new DateTime());
119
+ }
120
+
121
+ }
lib/PayU/OpenPayU/OpenPayU.php ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * OpenPayU Standard Library
4
+ *
5
+ * @copyright Copyright (c) 2011-2016 PayU
6
+ * @license http://opensource.org/licenses/LGPL-3.0 Open Software License (LGPL 3.0)
7
+ * http://www.payu.com
8
+ * http://developers.payu.com
9
+ */
10
+
11
+ class OpenPayU
12
+ {
13
+ protected static function build($data)
14
+ {
15
+ $instance = new OpenPayU_Result();
16
+ $instance->init($data);
17
+
18
+ return $instance;
19
+ }
20
+
21
+ /**
22
+ * @param $data
23
+ * @param $incomingSignature
24
+ * @throws OpenPayU_Exception_Authorization
25
+ */
26
+ public static function verifyDocumentSignature($data, $incomingSignature)
27
+ {
28
+ $sign = OpenPayU_Util::parseSignature($incomingSignature);
29
+
30
+ if (false === OpenPayU_Util::verifySignature(
31
+ $data,
32
+ $sign->signature,
33
+ OpenPayU_Configuration::getSignatureKey(),
34
+ $sign->algorithm)
35
+ ) {
36
+ throw new OpenPayU_Exception_Authorization('Invalid signature - ' . $sign->signature);
37
+ }
38
+ }
39
+
40
+ /**
41
+ * @return AuthType
42
+ * @throws OpenPayU_Exception
43
+ */
44
+ protected static function getAuth()
45
+ {
46
+ if (OpenPayU_Configuration::getOauthClientId() && OpenPayU_Configuration::getOauthClientSecret()) {
47
+ $authType = new AuthType_Oauth(OpenPayU_Configuration::getOauthClientId(), OpenPayU_Configuration::getOauthClientSecret());
48
+ } else {
49
+ $authType = new AuthType_Basic(OpenPayU_Configuration::getMerchantPosId(), OpenPayU_Configuration::getSignatureKey());
50
+ }
51
+
52
+ return $authType;
53
+ }
54
+
55
+
56
+ }
lib/PayU/OpenPayU/OpenPayUException.php ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * OpenPayU Standard Library
4
+ *
5
+ * @copyright Copyright (c) 2011-2016 PayU
6
+ * @license http://opensource.org/licenses/LGPL-3.0 Open Software License (LGPL 3.0)
7
+ * http://www.payu.com
8
+ * http://developers.payu.com
9
+ */
10
+
11
+ class OpenPayU_Exception extends \Exception
12
+ {
13
+
14
+ }
15
+
16
+ class OpenPayU_Exception_Configuration extends OpenPayU_Exception
17
+ {
18
+
19
+ }
20
+
21
+ class OpenPayU_Exception_Network extends OpenPayU_Exception
22
+ {
23
+
24
+ }
25
+
26
+ class OpenPayU_Exception_ServerError extends OpenPayU_Exception
27
+ {
28
+
29
+ }
30
+
31
+ class OpenPayU_Exception_ServerMaintenance extends OpenPayU_Exception
32
+ {
33
+
34
+ }
35
+
36
+ class OpenPayU_Exception_Authorization extends OpenPayU_Exception
37
+ {
38
+
39
+ }
lib/PayU/OpenPayU/OpenPayuOrderStatus.php ADDED
@@ -0,0 +1,24 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * OpenPayU Standard Library
5
+ *
6
+ * @copyright Copyright (c) 2011-2016 PayU
7
+ * @license http://opensource.org/licenses/LGPL-3.0 Open Software License (LGPL 3.0)
8
+ * http://www.payu.com
9
+ * http://developers.payu.com
10
+ */
11
+
12
+ /**
13
+ * Class OpenPayuOrderStatus
14
+ */
15
+ abstract class OpenPayuOrderStatus
16
+ {
17
+ const STATUS_NEW = 'NEW';
18
+ const STATUS_PENDING = 'PENDING';
19
+ const STATUS_CANCELED = 'CANCELED';
20
+ const STATUS_REJECTED = 'REJECTED';
21
+ const STATUS_COMPLETED = 'COMPLETED';
22
+ const STATUS_WAITING_FOR_CONFIRMATION = 'WAITING_FOR_CONFIRMATION';
23
+
24
+ }
lib/{payu/sdk_v21 → PayU}/OpenPayU/Result.php RENAMED
@@ -1,14 +1,12 @@
1
  <?php
2
-
3
- /*
4
- OpenPayU Standard Library
5
-
6
- @copyright Copyright (c) 2011-2014 PayU
7
- @license http://opensource.org/licenses/LGPL-3.0 Open Software License (LGPL 3.0)
8
- http://www.payu.com
9
- http://developers.payu.com
10
- http://twitter.com/openpayu
11
- */
12
 
13
  class OpenPayU_Result
14
  {
1
  <?php
2
+ /**
3
+ * OpenPayU Standard Library
4
+ *
5
+ * @copyright Copyright (c) 2011-2016 PayU
6
+ * @license http://opensource.org/licenses/LGPL-3.0 Open Software License (LGPL 3.0)
7
+ * http://www.payu.com
8
+ * http://developers.payu.com
9
+ */
 
 
10
 
11
  class OpenPayU_Result
12
  {
lib/PayU/OpenPayU/ResultError.php ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * OpenPayU Standard Library
4
+ *
5
+ * @copyright Copyright (c) 2011-2016 PayU
6
+ * @license http://opensource.org/licenses/LGPL-3.0 Open Software License (LGPL 3.0)
7
+ * http://www.payu.com
8
+ * http://developers.payu.com
9
+ */
10
+
11
+ class ResultError
12
+ {
13
+
14
+ /**
15
+ * @var string
16
+ */
17
+ private $error;
18
+ /**
19
+ * @var string
20
+ */
21
+ private $errorDescription;
22
+
23
+ /**
24
+ * @return string
25
+ */
26
+ public function getError()
27
+ {
28
+ return $this->error;
29
+ }
30
+
31
+ /**
32
+ * @param string $error
33
+ * @return ResultError
34
+ */
35
+ public function setError($error)
36
+ {
37
+ $this->error = $error;
38
+ return $this;
39
+ }
40
+
41
+ /**
42
+ * @return string
43
+ */
44
+ public function getErrorDescription()
45
+ {
46
+ return $this->errorDescription;
47
+ }
48
+
49
+ /**
50
+ * @param string $errorDescription
51
+ * @return ResultError
52
+ */
53
+ public function setErrorDescription($errorDescription)
54
+ {
55
+ $this->errorDescription = $errorDescription;
56
+ return $this;
57
+ }
58
+
59
+ }
lib/{payu/sdk_v21 → PayU}/OpenPayU/Util.php RENAMED
@@ -1,23 +1,28 @@
1
  <?php
 
2
  /**
3
- * OpenPayU
4
  *
5
- * @copyright Copyright (c) 2014 PayU
 
 
 
6
  */
7
-
8
  class OpenPayU_Util
9
  {
10
  /**
11
  * Function generate sign data
12
- * @access public
13
- * @param string $data
14
  * @param string $algorithm
15
  * @param string $merchantPosId
16
  * @param string $signatureKey
17
- * @return string $signData
 
 
18
  * @throws OpenPayU_Exception_Configuration
19
  */
20
- public static function generateSignData($data, $algorithm = 'SHA', $merchantPosId = '', $signatureKey = '')
21
  {
22
  if (empty($signatureKey))
23
  throw new OpenPayU_Exception_Configuration('Merchant Signature Key should not be null or empty.');
@@ -25,43 +30,56 @@ class OpenPayU_Util
25
  if (empty($merchantPosId))
26
  throw new OpenPayU_Exception_Configuration('MerchantPosId should not be null or empty.');
27
 
28
- $signature = '';
 
29
 
30
- $data = $data . $signatureKey;
 
 
31
 
32
- if ($algorithm == 'MD5') {
33
- $signature = md5($data);
34
- } else if (in_array($algorithm, array('SHA', 'SHA1', 'SHA-1'))) {
35
- $signature = sha1($data);
36
- $algorithm = 'SHA-1';
37
- } else if (in_array($algorithm, array('SHA-256', 'SHA256', 'SHA_256'))) {
38
- $signature = hash('sha256', $data);
39
  $algorithm = 'SHA-256';
 
 
 
 
 
 
40
  }
41
 
42
- $signData = 'sender=' . $merchantPosId . ';signature=' . $signature . ';algorithm=' . $algorithm . ';content=DOCUMENT';
 
 
43
 
44
  return $signData;
45
  }
46
 
47
  /**
48
  * Function returns signature data object
 
49
  * @param string $data
 
50
  * @return null|object
51
  */
52
  public static function parseSignature($data)
53
  {
54
- if (empty($data))
55
  return null;
 
56
 
57
  $signatureData = array();
58
 
59
  $list = explode(';', rtrim($data, ';'));
60
- if (empty($list))
61
  return null;
 
62
 
63
  foreach ($list as $value) {
64
  $explode = explode('=', $value);
 
 
 
65
  $signatureData[$explode[0]] = $explode[1];
66
  }
67
 
@@ -70,10 +88,12 @@ class OpenPayU_Util
70
 
71
  /**
72
  * Function returns signature validate
73
- * @param $message
74
- * @param $signature
75
- * @param $signatureKey
76
- * @param $algorithm
 
 
77
  * @return bool
78
  */
79
  public static function verifySignature($message, $signature, $signatureKey, $algorithm = 'MD5')
@@ -99,18 +119,21 @@ class OpenPayU_Util
99
 
100
  /**
101
  * Function builds OpenPayU Json Document
102
- * @access public
103
  * @param string $data
104
  * @param string $rootElement
105
- * @return string $xml
 
106
  */
107
  public static function buildJsonFromArray($data, $rootElement = '')
108
  {
109
- if (!is_array($data))
110
  return null;
 
111
 
112
- if (!empty($rootElement))
113
  $data = array($rootElement => $data);
 
114
 
115
  $data = self::setSenderProperty($data);
116
 
@@ -118,113 +141,21 @@ class OpenPayU_Util
118
  }
119
 
120
  /**
121
- * Function builds OpenPayU Xml Document
122
- * @access public
123
  * @param string $data
124
- * @param string $rootElement
125
- * @param string $version
126
- * @param string $encoding
127
- * @param string $rootElementXsi
128
- * @return string $xml
129
- */
130
- public static function buildXmlFromArray($data, $rootElement, $version = '1.0', $encoding = 'UTF-8', $rootElementXsi = null)
131
- {
132
- if (!is_array($data))
133
- return null;
134
-
135
- $xml = new XmlWriter();
136
-
137
- $xml->openMemory();
138
-
139
- $xml->setIndent(true);
140
-
141
- $xml->startDocument($version, $encoding);
142
- $xml->startElementNS(null, 'OpenPayU', 'http://www.openpayu.com/20/openpayu.xsd');
143
-
144
- $xml->startElement($rootElement);
145
-
146
- if (!empty($rootElementXsi)) {
147
- $xml->startAttributeNs('xsi', 'type', 'http://www.w3.org/2001/XMLSchema-instance');
148
- $xml->text($rootElementXsi);
149
- $xml->endAttribute();
150
- }
151
-
152
- self::convertArrayToXml($xml, $data);
153
- $xml->endElement();
154
-
155
- $xml->endElement();
156
- $xml->endDocument();
157
-
158
- return trim($xml->outputMemory(true));
159
- }
160
-
161
- /**
162
- * Function converts array to XML document
163
- * @access public
164
- * @param XMLWriter $xml
165
- * @param array $data
166
- */
167
- public static function convertArrayToXml(XMLWriter $xml, $data)
168
- {
169
- if (!empty($data) && is_array($data)) {
170
- foreach ($data as $key => $value) {
171
- if (is_array($value)) {
172
- if (is_numeric($key)) {
173
- self::convertArrayToXml($xml, $value);
174
- } else {
175
- $xml->startElement($key);
176
- self::convertArrayToXml($xml, $value);
177
- $xml->endElement();
178
- }
179
- continue;
180
- }
181
- $xml->writeElement($key, $value);
182
- }
183
- }
184
- }
185
-
186
- /**
187
- * @param $data
188
- * @return array
189
- */
190
- public static function parseXmlDocument($data)
191
- {
192
- if (empty($data))
193
- return null;
194
-
195
- $assoc = self::convertXmlToArray($data);
196
-
197
- return $assoc;
198
- }
199
-
200
- /**
201
- * Function converts xml to array
202
- * @access public
203
- * @param string $xml
204
- * @return array $tree
205
- */
206
- public static function convertXmlToArray($xml)
207
- {
208
- $xmlObject = simplexml_load_string($xml);
209
- $xmlArray = array( $xmlObject->getName() => (array)$xmlObject );
210
- return json_decode(json_encode($xmlArray),1);
211
- }
212
-
213
- /**
214
- * @param $data
215
  * @param bool $assoc
216
  * @return mixed|null
217
  */
218
  public static function convertJsonToArray($data, $assoc = false)
219
  {
220
- if (empty($data))
221
  return null;
 
222
 
223
  return json_decode($data, $assoc);
224
  }
225
 
226
  /**
227
- * @param $array
228
  * @return bool|stdClass
229
  */
230
  public static function parseArrayToObject($array)
@@ -233,21 +164,19 @@ class OpenPayU_Util
233
  return $array;
234
  }
235
 
236
- if (self::isAssocArray($array)){
237
  $object = new stdClass();
238
- }
239
- else{
240
  $object = array();
241
  }
242
 
243
  if (is_array($array) && count($array) > 0) {
244
  foreach ($array as $name => $value) {
245
  $name = trim($name);
246
- if (isset($name)){
247
- if (is_numeric($name)){
248
  $object[] = self::parseArrayToObject($value);
249
- }
250
- else{
251
  $object->$name = self::parseArrayToObject($value);
252
  }
253
  }
@@ -263,22 +192,24 @@ class OpenPayU_Util
263
  */
264
  public static function getRequestHeaders()
265
  {
266
- if(!function_exists('apache_request_headers')) {
267
- $headers = array();
268
- foreach($_SERVER as $key => $value) {
269
- if(substr($key, 0, 5) == 'HTTP_') {
270
- $headers[str_replace(' ', '-', ucwords(str_replace('_', ' ', strtolower(substr($key, 5)))))] = $value;
271
- }
272
  }
273
- return $headers;
274
- }else{
 
275
  return apache_request_headers();
276
  }
277
 
278
  }
 
279
  /**
280
  * @param $array
281
  * @param string $namespace
 
282
  * @return string
283
  */
284
  public static function convertArrayToHtmlForm($array, $namespace = "", &$outputFields)
@@ -289,9 +220,6 @@ class OpenPayU_Util
289
 
290
  foreach ($array as $key => $value) {
291
 
292
- //Temporary important changes only for order by form method
293
- $key = self::changeFormFieldFormat($namespace, $key);
294
-
295
  if ($namespace && $assoc) {
296
  $key = $namespace . '.' . $key;
297
  } elseif ($namespace && !$assoc) {
@@ -334,51 +262,54 @@ class OpenPayU_Util
334
  }
335
 
336
  /**
337
- * @param $data
338
- * @return mixed
339
  */
340
- public static function setSenderProperty($data)
341
  {
342
- $data['properties'][0]['name'] = 'sender';
343
- $data['properties'][0]['value'] = OpenPayU_Configuration::getFullSenderName();
 
 
344
  return $data;
345
  }
346
 
347
- public static function statusDesc($response){
 
348
 
349
  $msg = '';
350
 
351
- switch ($response){
352
  case 'SUCCESS':
353
  $msg = 'Request has been processed correctly.';
354
- break;
355
  case 'DATA_NOT_FOUND':
356
  $msg = 'Data indicated in the request is not available in the PayU system.';
357
- break;
358
  case 'WARNING_CONTINUE_3_DS':
359
  $msg = '3DS authorization required.Redirect the Buyer to PayU to continue the 3DS process by calling OpenPayU.authorize3DS().';
360
- break;
361
  case 'WARNING_CONTINUE_CVV':
362
  $msg = 'CVV/CVC authorization required. Call OpenPayU.authorizeCVV() method.';
363
- break;
364
  case 'ERROR_SYNTAX':
365
  $msg = 'BIncorrect request syntax. Supported formats are JSON or XML.';
366
- break;
367
  case 'ERROR_VALUE_INVALID':
368
  $msg = 'One or more required values are incorrect.';
369
- break;
370
  case 'ERROR_VALUE_MISSING':
371
  $msg = 'One or more required values are missing.';
372
- break;
373
  case 'BUSINESS_ERROR':
374
  $msg = 'PayU system is unavailable. Try again later.';
375
- break;
376
  case 'ERROR_INTERNAL':
377
  $msg = 'PayU system is unavailable. Try again later.';
378
- break;
379
  case 'GENERAL_ERROR':
380
  $msg = 'Unexpected error. Try again later.';
381
- break;
382
  }
383
 
384
  return $msg;
1
  <?php
2
+
3
  /**
4
+ * OpenPayU Standard Library
5
  *
6
+ * @copyright Copyright (c) 2011-2016 PayU
7
+ * @license http://opensource.org/licenses/LGPL-3.0 Open Software License (LGPL 3.0)
8
+ * http://www.payu.com
9
+ * http://developers.payu.com
10
  */
 
11
  class OpenPayU_Util
12
  {
13
  /**
14
  * Function generate sign data
15
+ *
16
+ * @param array $data
17
  * @param string $algorithm
18
  * @param string $merchantPosId
19
  * @param string $signatureKey
20
+ *
21
+ * @return string
22
+ *
23
  * @throws OpenPayU_Exception_Configuration
24
  */
25
+ public static function generateSignData(array $data, $algorithm = 'SHA-256', $merchantPosId = '', $signatureKey = '')
26
  {
27
  if (empty($signatureKey))
28
  throw new OpenPayU_Exception_Configuration('Merchant Signature Key should not be null or empty.');
30
  if (empty($merchantPosId))
31
  throw new OpenPayU_Exception_Configuration('MerchantPosId should not be null or empty.');
32
 
33
+ $contentForSign = '';
34
+ ksort($data);
35
 
36
+ foreach ($data as $key => $value) {
37
+ $contentForSign .= $key . '=' . urlencode($value) . '&';
38
+ }
39
 
40
+ if (in_array($algorithm, array('SHA-256', 'SHA'))) {
41
+ $hashAlgorithm = 'sha256';
 
 
 
 
 
42
  $algorithm = 'SHA-256';
43
+ } else if ($algorithm == 'SHA-384') {
44
+ $hashAlgorithm = 'sha384';
45
+ $algorithm = 'SHA-384';
46
+ } else if ($algorithm == 'SHA-512') {
47
+ $hashAlgorithm = 'sha512';
48
+ $algorithm = 'SHA-512';
49
  }
50
 
51
+ $signature = hash($hashAlgorithm, $contentForSign . $signatureKey);
52
+
53
+ $signData = 'sender=' . $merchantPosId . ';algorithm=' . $algorithm . ';signature=' . $signature;
54
 
55
  return $signData;
56
  }
57
 
58
  /**
59
  * Function returns signature data object
60
+ *
61
  * @param string $data
62
+ *
63
  * @return null|object
64
  */
65
  public static function parseSignature($data)
66
  {
67
+ if (empty($data)) {
68
  return null;
69
+ }
70
 
71
  $signatureData = array();
72
 
73
  $list = explode(';', rtrim($data, ';'));
74
+ if (empty($list)) {
75
  return null;
76
+ }
77
 
78
  foreach ($list as $value) {
79
  $explode = explode('=', $value);
80
+ if (count($explode) != 2) {
81
+ return null;
82
+ }
83
  $signatureData[$explode[0]] = $explode[1];
84
  }
85
 
88
 
89
  /**
90
  * Function returns signature validate
91
+ *
92
+ * @param string $message
93
+ * @param string $signature
94
+ * @param string $signatureKey
95
+ * @param string $algorithm
96
+ *
97
  * @return bool
98
  */
99
  public static function verifySignature($message, $signature, $signatureKey, $algorithm = 'MD5')
119
 
120
  /**
121
  * Function builds OpenPayU Json Document
122
+ *
123
  * @param string $data
124
  * @param string $rootElement
125
+ *
126
+ * @return null|string
127
  */
128
  public static function buildJsonFromArray($data, $rootElement = '')
129
  {
130
+ if (!is_array($data)) {
131
  return null;
132
+ }
133
 
134
+ if (!empty($rootElement)) {
135
  $data = array($rootElement => $data);
136
+ }
137
 
138
  $data = self::setSenderProperty($data);
139
 
141
  }
142
 
143
  /**
 
 
144
  * @param string $data
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
145
  * @param bool $assoc
146
  * @return mixed|null
147
  */
148
  public static function convertJsonToArray($data, $assoc = false)
149
  {
150
+ if (empty($data)) {
151
  return null;
152
+ }
153
 
154
  return json_decode($data, $assoc);
155
  }
156
 
157
  /**
158
+ * @param array $array
159
  * @return bool|stdClass
160
  */
161
  public static function parseArrayToObject($array)
164
  return $array;
165
  }
166
 
167
+ if (self::isAssocArray($array)) {
168
  $object = new stdClass();
169
+ } else {
 
170
  $object = array();
171
  }
172
 
173
  if (is_array($array) && count($array) > 0) {
174
  foreach ($array as $name => $value) {
175
  $name = trim($name);
176
+ if (isset($name)) {
177
+ if (is_numeric($name)) {
178
  $object[] = self::parseArrayToObject($value);
179
+ } else {
 
180
  $object->$name = self::parseArrayToObject($value);
181
  }
182
  }
192
  */
193
  public static function getRequestHeaders()
194
  {
195
+ if (!function_exists('apache_request_headers')) {
196
+ $headers = array();
197
+ foreach ($_SERVER as $key => $value) {
198
+ if (substr($key, 0, 5) == 'HTTP_') {
199
+ $headers[str_replace(' ', '-', ucwords(str_replace('_', ' ', strtolower(substr($key, 5)))))] = $value;
 
200
  }
201
+ }
202
+ return $headers;
203
+ } else {
204
  return apache_request_headers();
205
  }
206
 
207
  }
208
+
209
  /**
210
  * @param $array
211
  * @param string $namespace
212
+ * @param array $outputFields
213
  * @return string
214
  */
215
  public static function convertArrayToHtmlForm($array, $namespace = "", &$outputFields)
220
 
221
  foreach ($array as $key => $value) {
222
 
 
 
 
223
  if ($namespace && $assoc) {
224
  $key = $namespace . '.' . $key;
225
  } elseif ($namespace && !$assoc) {
262
  }
263
 
264
  /**
265
+ * @param array $data
266
+ * @return array
267
  */
268
+ private static function setSenderProperty($data)
269
  {
270
+ $data['properties'][0] = array(
271
+ 'name' => 'sender',
272
+ 'value' => OpenPayU_Configuration::getFullSenderName()
273
+ );
274
  return $data;
275
  }
276
 
277
+ public static function statusDesc($response)
278
+ {
279
 
280
  $msg = '';
281
 
282
+ switch ($response) {
283
  case 'SUCCESS':
284
  $msg = 'Request has been processed correctly.';
285
+ break;
286
  case 'DATA_NOT_FOUND':
287
  $msg = 'Data indicated in the request is not available in the PayU system.';
288
+ break;
289
  case 'WARNING_CONTINUE_3_DS':
290
  $msg = '3DS authorization required.Redirect the Buyer to PayU to continue the 3DS process by calling OpenPayU.authorize3DS().';
291
+ break;
292
  case 'WARNING_CONTINUE_CVV':
293
  $msg = 'CVV/CVC authorization required. Call OpenPayU.authorizeCVV() method.';
294
+ break;
295
  case 'ERROR_SYNTAX':
296
  $msg = 'BIncorrect request syntax. Supported formats are JSON or XML.';
297
+ break;
298
  case 'ERROR_VALUE_INVALID':
299
  $msg = 'One or more required values are incorrect.';
300
+ break;
301
  case 'ERROR_VALUE_MISSING':
302
  $msg = 'One or more required values are missing.';
303
+ break;
304
  case 'BUSINESS_ERROR':
305
  $msg = 'PayU system is unavailable. Try again later.';
306
+ break;
307
  case 'ERROR_INTERNAL':
308
  $msg = 'PayU system is unavailable. Try again later.';
309
+ break;
310
  case 'GENERAL_ERROR':
311
  $msg = 'Unexpected error. Try again later.';
312
+ break;
313
  }
314
 
315
  return $msg;
lib/{payu/sdk_v21 → PayU}/OpenPayU/v2/Order.php RENAMED
@@ -1,15 +1,12 @@
1
  <?php
2
 
3
  /**
4
- * OpenPayU Order module
5
  *
6
- * @copyright Copyright (c) 2014 PayU
7
  * @license http://opensource.org/licenses/LGPL-3.0 Open Software License (LGPL 3.0)
8
- *
9
  * http://www.payu.com
10
  * http://developers.payu.com
11
- * http://twitter.com/openpayu
12
- *
13
  */
14
 
15
  /**
@@ -36,21 +33,27 @@ class OpenPayU_Order extends OpenPayU
36
  * Creates new Order
37
  * - Sends to PayU OrderCreateRequest
38
  *
39
- * @access public
40
  * @param array $order A array containing full Order
41
  * @return object $result Response array with OrderCreateResponse
42
  * @throws OpenPayU_Exception
43
  */
44
  public static function create($order)
45
  {
46
- $pathUrl = OpenPayU_Configuration::getServiceUrl() . self::ORDER_SERVICE;
47
  $data = OpenPayU_Util::buildJsonFromArray($order);
48
 
49
  if (empty($data)) {
50
  throw new OpenPayU_Exception('Empty message OrderCreateRequest');
51
  }
52
 
53
- $result = self::verifyResponse(OpenPayU_Http::post($pathUrl, $data), 'OrderCreateResponse');
 
 
 
 
 
 
 
 
54
 
55
  return $result;
56
  }
@@ -59,7 +62,6 @@ class OpenPayU_Order extends OpenPayU
59
  * Retrieves information about the order
60
  * - Sends to PayU OrderRetrieveRequest
61
  *
62
- * @access public
63
  * @param string $orderId PayU OrderId sent back in OrderCreateResponse
64
  * @return OpenPayU_Result $result Response array with OrderRetrieveResponse
65
  * @throws OpenPayU_Exception
@@ -70,9 +72,15 @@ class OpenPayU_Order extends OpenPayU
70
  throw new OpenPayU_Exception('Empty value of orderId');
71
  }
72
 
 
 
 
 
 
 
73
  $pathUrl = OpenPayU_Configuration::getServiceUrl() . self::ORDER_SERVICE . $orderId;
74
 
75
- $result = self::verifyResponse(OpenPayU_Http::get($pathUrl, $pathUrl), 'OrderRetrieveResponse');
76
 
77
  return $result;
78
  }
@@ -81,7 +89,6 @@ class OpenPayU_Order extends OpenPayU
81
  * Cancels Order
82
  * - Sends to PayU OrderCancelRequest
83
  *
84
- * @access public
85
  * @param string $orderId PayU OrderId sent back in OrderCreateResponse
86
  * @return OpenPayU_Result $result Response array with OrderCancelResponse
87
  * @throws OpenPayU_Exception
@@ -92,9 +99,15 @@ class OpenPayU_Order extends OpenPayU
92
  throw new OpenPayU_Exception('Empty value of orderId');
93
  }
94
 
 
 
 
 
 
 
95
  $pathUrl = OpenPayU_Configuration::getServiceUrl() . self::ORDER_SERVICE . $orderId;
96
 
97
- $result = self::verifyResponse(OpenPayU_Http::delete($pathUrl, $pathUrl), 'OrderCancelResponse');
98
  return $result;
99
  }
100
 
@@ -102,24 +115,27 @@ class OpenPayU_Order extends OpenPayU
102
  * Updates Order status
103
  * - Sends to PayU OrderStatusUpdateRequest
104
  *
105
- * @access public
106
- * @param string $orderStatus A array containing full OrderStatus
107
  * @return OpenPayU_Result $result Response array with OrderStatusUpdateResponse
108
  * @throws OpenPayU_Exception
109
  */
110
  public static function statusUpdate($orderStatusUpdate)
111
  {
112
- $data = array();
113
  if (empty($orderStatusUpdate)) {
114
  throw new OpenPayU_Exception('Empty order status data');
115
  }
116
 
 
 
 
 
 
 
117
  $data = OpenPayU_Util::buildJsonFromArray($orderStatusUpdate);
118
- $orderId = $orderStatusUpdate['orderId'];
119
 
120
- $pathUrl = OpenPayU_Configuration::getServiceUrl() . self::ORDER_SERVICE . $orderId . '/status';
121
 
122
- $result = self::verifyResponse(OpenPayU_Http::put($pathUrl, $data), 'OrderStatusUpdateResponse');
123
  return $result;
124
  }
125
 
@@ -133,8 +149,6 @@ class OpenPayU_Order extends OpenPayU
133
  */
134
  public static function consumeNotification($data)
135
  {
136
- $sslConnection = self::isSecureConnection();
137
-
138
  if (empty($data)) {
139
  throw new OpenPayU_Exception('Empty value of data');
140
  }
@@ -142,11 +156,7 @@ class OpenPayU_Order extends OpenPayU
142
  $headers = OpenPayU_Util::getRequestHeaders();
143
  $incomingSignature = OpenPayU_HttpCurl::getSignature($headers);
144
 
145
- if ($sslConnection) {
146
- self::verifyBasicAuthCredentials();
147
- } else {
148
- self::verifyDocumentSignature($data, $incomingSignature);
149
- }
150
 
151
  return OpenPayU_Order::verifyResponse(array('response' => $data, 'code' => 200), 'OrderNotifyRequest');
152
  }
@@ -165,48 +175,45 @@ class OpenPayU_Order extends OpenPayU
165
 
166
  $message = OpenPayU_Util::convertJsonToArray($response['response'], true);
167
 
168
- if (isset($message[$messageName])) {
169
- $data['status'] = isset($message['status']['statusCode']) ? $message['status']['statusCode'] : null;
 
 
 
170
  unset($message[$messageName]['Status']);
171
  $data['response'] = $message[$messageName];
172
  } elseif (isset($message)) {
173
  $data['response'] = $message;
174
- $data['status'] = isset($message['status']['statusCode']) ? $message['status']['statusCode'] : null;
175
  unset($message['status']);
176
  }
177
 
178
  $result = self::build($data);
179
 
180
- if ($httpStatus == 200 || $httpStatus == 201 || $httpStatus == 422 || $httpStatus == 301 || $httpStatus == 302 || $httpStatus
181
- == 400 || $httpStatus == 404)
182
  {
183
  return $result;
184
  } else {
185
  OpenPayU_Http::throwHttpStatusException($httpStatus, $result);
186
  }
187
-
188
- return null;
189
  }
190
 
191
  /**
192
  * Generate a form body for hosted order
193
  *
194
  * @access public
195
- * @param $order An array containing full Order
196
- * @param $params An optional array with form elements' params
197
  * @return string Response html form
198
  */
199
  public static function hostedOrderForm($order, $params = array())
200
  {
201
  $orderFormUrl = OpenPayU_Configuration::getServiceUrl() . 'orders';
202
 
203
- $usortedFormFieldValuesAsArray = array();
204
- $htmlFormFields = OpenPayU_Util::convertArrayToHtmlForm($order, "", $usortedFormFieldValuesAsArray);
205
- ksort($usortedFormFieldValuesAsArray);
206
- $sortedFormFieldValuesAsString = implode('', array_values($usortedFormFieldValuesAsArray));
207
 
208
  $signature = OpenPayU_Util::generateSignData(
209
- $sortedFormFieldValuesAsString,
210
  OpenPayU_Configuration::getHashAlgorithm(),
211
  OpenPayU_Configuration::getMerchantPosId(),
212
  OpenPayU_Configuration::getSignatureKey()
@@ -222,4 +229,5 @@ class OpenPayU_Order extends OpenPayU
222
 
223
  return $htmlOutput;
224
  }
 
225
  }
1
  <?php
2
 
3
  /**
4
+ * OpenPayU Standard Library
5
  *
6
+ * @copyright Copyright (c) 2011-2016 PayU
7
  * @license http://opensource.org/licenses/LGPL-3.0 Open Software License (LGPL 3.0)
 
8
  * http://www.payu.com
9
  * http://developers.payu.com
 
 
10
  */
11
 
12
  /**
33
  * Creates new Order
34
  * - Sends to PayU OrderCreateRequest
35
  *
 
36
  * @param array $order A array containing full Order
37
  * @return object $result Response array with OrderCreateResponse
38
  * @throws OpenPayU_Exception
39
  */
40
  public static function create($order)
41
  {
 
42
  $data = OpenPayU_Util::buildJsonFromArray($order);
43
 
44
  if (empty($data)) {
45
  throw new OpenPayU_Exception('Empty message OrderCreateRequest');
46
  }
47
 
48
+ try {
49
+ $authType = self::getAuth();
50
+ } catch (OpenPayU_Exception $e) {
51
+ throw new OpenPayU_Exception($e->getMessage(), $e->getCode());
52
+ }
53
+
54
+ $pathUrl = OpenPayU_Configuration::getServiceUrl() . self::ORDER_SERVICE;
55
+
56
+ $result = self::verifyResponse(OpenPayU_Http::doPost($pathUrl, $data, $authType), 'OrderCreateResponse');
57
 
58
  return $result;
59
  }
62
  * Retrieves information about the order
63
  * - Sends to PayU OrderRetrieveRequest
64
  *
 
65
  * @param string $orderId PayU OrderId sent back in OrderCreateResponse
66
  * @return OpenPayU_Result $result Response array with OrderRetrieveResponse
67
  * @throws OpenPayU_Exception
72
  throw new OpenPayU_Exception('Empty value of orderId');
73
  }
74
 
75
+ try {
76
+ $authType = self::getAuth();
77
+ } catch (OpenPayU_Exception $e) {
78
+ throw new OpenPayU_Exception($e->getMessage(), $e->getCode());
79
+ }
80
+
81
  $pathUrl = OpenPayU_Configuration::getServiceUrl() . self::ORDER_SERVICE . $orderId;
82
 
83
+ $result = self::verifyResponse(OpenPayU_Http::doGet($pathUrl, $authType), 'OrderRetrieveResponse');
84
 
85
  return $result;
86
  }
89
  * Cancels Order
90
  * - Sends to PayU OrderCancelRequest
91
  *
 
92
  * @param string $orderId PayU OrderId sent back in OrderCreateResponse
93
  * @return OpenPayU_Result $result Response array with OrderCancelResponse
94
  * @throws OpenPayU_Exception
99
  throw new OpenPayU_Exception('Empty value of orderId');
100
  }
101
 
102
+ try {
103
+ $authType = self::getAuth();
104
+ } catch (OpenPayU_Exception $e) {
105
+ throw new OpenPayU_Exception($e->getMessage(), $e->getCode());
106
+ }
107
+
108
  $pathUrl = OpenPayU_Configuration::getServiceUrl() . self::ORDER_SERVICE . $orderId;
109
 
110
+ $result = self::verifyResponse(OpenPayU_Http::doDelete($pathUrl, $authType), 'OrderCancelResponse');
111
  return $result;
112
  }
113
 
115
  * Updates Order status
116
  * - Sends to PayU OrderStatusUpdateRequest
117
  *
118
+ * @param string $orderStatusUpdate A array containing full OrderStatus
 
119
  * @return OpenPayU_Result $result Response array with OrderStatusUpdateResponse
120
  * @throws OpenPayU_Exception
121
  */
122
  public static function statusUpdate($orderStatusUpdate)
123
  {
 
124
  if (empty($orderStatusUpdate)) {
125
  throw new OpenPayU_Exception('Empty order status data');
126
  }
127
 
128
+ try {
129
+ $authType = self::getAuth();
130
+ } catch (OpenPayU_Exception $e) {
131
+ throw new OpenPayU_Exception($e->getMessage(), $e->getCode());
132
+ }
133
+
134
  $data = OpenPayU_Util::buildJsonFromArray($orderStatusUpdate);
135
+ $pathUrl = OpenPayU_Configuration::getServiceUrl() . self::ORDER_SERVICE . $orderStatusUpdate['orderId'] . '/status';
136
 
137
+ $result = self::verifyResponse(OpenPayU_Http::doPut($pathUrl, $data, $authType), 'OrderStatusUpdateResponse');
138
 
 
139
  return $result;
140
  }
141
 
149
  */
150
  public static function consumeNotification($data)
151
  {
 
 
152
  if (empty($data)) {
153
  throw new OpenPayU_Exception('Empty value of data');
154
  }
156
  $headers = OpenPayU_Util::getRequestHeaders();
157
  $incomingSignature = OpenPayU_HttpCurl::getSignature($headers);
158
 
159
+ self::verifyDocumentSignature($data, $incomingSignature);
 
 
 
 
160
 
161
  return OpenPayU_Order::verifyResponse(array('response' => $data, 'code' => 200), 'OrderNotifyRequest');
162
  }
175
 
176
  $message = OpenPayU_Util::convertJsonToArray($response['response'], true);
177
 
178
+ $data['status'] = isset($message['status']['statusCode']) ? $message['status']['statusCode'] : null;
179
+
180
+ if (json_last_error() == JSON_ERROR_SYNTAX) {
181
+ $data['response'] = $response['response'];
182
+ } elseif (isset($message[$messageName])) {
183
  unset($message[$messageName]['Status']);
184
  $data['response'] = $message[$messageName];
185
  } elseif (isset($message)) {
186
  $data['response'] = $message;
 
187
  unset($message['status']);
188
  }
189
 
190
  $result = self::build($data);
191
 
192
+ if ($httpStatus == 200 || $httpStatus == 201 || $httpStatus == 422 || $httpStatus == 301 || $httpStatus == 302)
 
193
  {
194
  return $result;
195
  } else {
196
  OpenPayU_Http::throwHttpStatusException($httpStatus, $result);
197
  }
 
 
198
  }
199
 
200
  /**
201
  * Generate a form body for hosted order
202
  *
203
  * @access public
204
+ * @param array $order an array containing full Order
205
+ * @param array $params an optional array with form elements' params
206
  * @return string Response html form
207
  */
208
  public static function hostedOrderForm($order, $params = array())
209
  {
210
  $orderFormUrl = OpenPayU_Configuration::getServiceUrl() . 'orders';
211
 
212
+ $formFieldValuesAsArray = array();
213
+ $htmlFormFields = OpenPayU_Util::convertArrayToHtmlForm($order, '', $formFieldValuesAsArray);
 
 
214
 
215
  $signature = OpenPayU_Util::generateSignData(
216
+ $formFieldValuesAsArray,
217
  OpenPayU_Configuration::getHashAlgorithm(),
218
  OpenPayU_Configuration::getMerchantPosId(),
219
  OpenPayU_Configuration::getSignatureKey()
229
 
230
  return $htmlOutput;
231
  }
232
+
233
  }
lib/{payu/sdk_v21 → PayU}/OpenPayU/v2/Refund.php RENAMED
@@ -1,14 +1,12 @@
1
  <?php
 
2
  /**
3
- * OpenPayU
4
  *
5
- * @copyright Copyright (c) 2014 PayU
6
  * @license http://opensource.org/licenses/LGPL-3.0 Open Software License (LGPL 3.0)
7
- *
8
  * http://www.payu.com
9
  * http://developers.payu.com
10
- * http://twitter.com/openpayu
11
- *
12
  */
13
 
14
  class OpenPayU_Refund extends OpenPayU
@@ -23,28 +21,33 @@ class OpenPayU_Refund extends OpenPayU
23
  */
24
  public static function create($orderId, $description, $amount = null)
25
  {
26
- if (empty($orderId))
27
  throw new OpenPayU_Exception('Invalid orderId value for refund');
 
28
 
29
- if (empty($description))
30
  throw new OpenPayU_Exception('Invalid description of refund');
31
-
32
  $refund = array(
33
  'orderId' => $orderId,
34
  'refund' => array('description' => $description)
35
  );
36
 
37
- if (!empty($amount))
38
  $refund['refund']['amount'] = (int)$amount;
 
 
 
 
 
 
 
39
 
40
  $pathUrl = OpenPayU_Configuration::getServiceUrl().'orders/'. $refund['orderId'] . '/refund';
41
 
42
  $data = OpenPayU_Util::buildJsonFromArray($refund);
43
 
44
- if (empty($data))
45
- throw new OpenPayU_Exception('Empty message RefundCreateResponse');
46
-
47
- $result = self::verifyResponse(OpenPayU_Http::post($pathUrl, $data), 'RefundCreateResponse');
48
 
49
  return $result;
50
  }
@@ -52,7 +55,7 @@ class OpenPayU_Refund extends OpenPayU
52
  /**
53
  * @param string $response
54
  * @param string $messageName
55
- * @return null|OpenPayU_Result
56
  */
57
  public static function verifyResponse($response, $messageName='')
58
  {
@@ -61,25 +64,24 @@ class OpenPayU_Refund extends OpenPayU
61
 
62
  $message = OpenPayU_Util::convertJsonToArray($response['response'], true);
63
 
64
- if (isset($message[$messageName])) {
65
- $data['status'] = isset($message['status']['statusCode']) ? $message['status']['statusCode'] : null;
 
 
 
66
  unset($message[$messageName]['Status']);
67
  $data['response'] = $message[$messageName];
68
  } elseif (isset($message)) {
69
  $data['response'] = $message;
70
- $data['status'] = isset($message['status']['statusCode']) ? $message['status']['statusCode'] : null;
71
  unset($message['status']);
72
  }
73
 
74
  $result = self::build($data);
75
 
76
- if ($httpStatus == 200 || $httpStatus == 201 || $httpStatus == 422 || $httpStatus == 302 || $httpStatus ==
77
- 400 || $httpStatus == 404)
78
  return $result;
79
- else {
80
  OpenPayU_Http::throwHttpStatusException($httpStatus, $result);
81
  }
82
-
83
- return null;
84
  }
85
  }
1
  <?php
2
+
3
  /**
4
+ * OpenPayU Standard Library
5
  *
6
+ * @copyright Copyright (c) 2011-2016 PayU
7
  * @license http://opensource.org/licenses/LGPL-3.0 Open Software License (LGPL 3.0)
 
8
  * http://www.payu.com
9
  * http://developers.payu.com
 
 
10
  */
11
 
12
  class OpenPayU_Refund extends OpenPayU
21
  */
22
  public static function create($orderId, $description, $amount = null)
23
  {
24
+ if (empty($orderId)) {
25
  throw new OpenPayU_Exception('Invalid orderId value for refund');
26
+ }
27
 
28
+ if (empty($description)) {
29
  throw new OpenPayU_Exception('Invalid description of refund');
30
+ }
31
  $refund = array(
32
  'orderId' => $orderId,
33
  'refund' => array('description' => $description)
34
  );
35
 
36
+ if (!empty($amount)) {
37
  $refund['refund']['amount'] = (int)$amount;
38
+ }
39
+
40
+ try {
41
+ $authType = self::getAuth();
42
+ } catch (OpenPayU_Exception $e) {
43
+ throw new OpenPayU_Exception($e->getMessage(), $e->getCode());
44
+ }
45
 
46
  $pathUrl = OpenPayU_Configuration::getServiceUrl().'orders/'. $refund['orderId'] . '/refund';
47
 
48
  $data = OpenPayU_Util::buildJsonFromArray($refund);
49
 
50
+ $result = self::verifyResponse(OpenPayU_Http::doPost($pathUrl, $data, $authType), 'RefundCreateResponse');
 
 
 
51
 
52
  return $result;
53
  }
55
  /**
56
  * @param string $response
57
  * @param string $messageName
58
+ * @return OpenPayU_Result
59
  */
60
  public static function verifyResponse($response, $messageName='')
61
  {
64
 
65
  $message = OpenPayU_Util::convertJsonToArray($response['response'], true);
66
 
67
+ $data['status'] = isset($message['status']['statusCode']) ? $message['status']['statusCode'] : null;
68
+
69
+ if (json_last_error() == JSON_ERROR_SYNTAX) {
70
+ $data['response'] = $response['response'];
71
+ } elseif (isset($message[$messageName])) {
72
  unset($message[$messageName]['Status']);
73
  $data['response'] = $message[$messageName];
74
  } elseif (isset($message)) {
75
  $data['response'] = $message;
 
76
  unset($message['status']);
77
  }
78
 
79
  $result = self::build($data);
80
 
81
+ if ($httpStatus == 200 || $httpStatus == 201 || $httpStatus == 422 || $httpStatus == 302) {
 
82
  return $result;
83
+ } else {
84
  OpenPayU_Http::throwHttpStatusException($httpStatus, $result);
85
  }
 
 
86
  }
87
  }
lib/PayU/OpenPayU/v2/Retrieve.php ADDED
@@ -0,0 +1,75 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * OpenPayU Standard Library
4
+ *
5
+ * @copyright Copyright (c) 2011-2016 PayU
6
+ * @license http://opensource.org/licenses/LGPL-3.0 Open Software License (LGPL 3.0)
7
+ * http://www.payu.com
8
+ * http://developers.payu.com
9
+ */
10
+
11
+ class OpenPayU_Retrieve extends OpenPayU
12
+ {
13
+
14
+ const PAYMETHODS_SERVICE = 'paymethods';
15
+
16
+ /**
17
+ * Get Pay Methods from POS
18
+ * @param string $lang
19
+ * @return null|OpenPayU_Result
20
+ * @throws OpenPayU_Exception
21
+ * @throws OpenPayU_Exception_Configuration
22
+ */
23
+ public static function payMethods($lang = null)
24
+ {
25
+
26
+ try {
27
+ $authType = self::getAuth();
28
+ } catch (OpenPayU_Exception $e) {
29
+ throw new OpenPayU_Exception($e->getMessage(), $e->getCode());
30
+ }
31
+
32
+ if (!$authType instanceof AuthType_Oauth) {
33
+ throw new OpenPayU_Exception_Configuration('Retrieve works only with OAuth');
34
+ }
35
+
36
+ $pathUrl = OpenPayU_Configuration::getServiceUrl() . self::PAYMETHODS_SERVICE;
37
+ if ($lang !== null) {
38
+ $pathUrl .= '?lang=' . $lang;
39
+ }
40
+
41
+ $response = self::verifyResponse(OpenPayU_Http::doGet($pathUrl, $authType));
42
+
43
+ return $response;
44
+ }
45
+
46
+ /**
47
+ * @param string $response
48
+ * @return null|OpenPayU_Result
49
+ */
50
+ public static function verifyResponse($response)
51
+ {
52
+ $data = array();
53
+ $httpStatus = $response['code'];
54
+
55
+ $message = OpenPayU_Util::convertJsonToArray($response['response'], true);
56
+
57
+ $data['status'] = isset($message['status']['statusCode']) ? $message['status']['statusCode'] : null;
58
+
59
+ if (json_last_error() == JSON_ERROR_SYNTAX) {
60
+ $data['response'] = $response['response'];
61
+ } elseif (isset($message)) {
62
+ $data['response'] = $message;
63
+ unset($message['status']);
64
+ }
65
+
66
+ $result = self::build($data);
67
+
68
+ if ($httpStatus == 200 || $httpStatus == 201 || $httpStatus == 422 || $httpStatus == 302 || $httpStatus == 400 || $httpStatus == 404) {
69
+ return $result;
70
+ } else {
71
+ OpenPayU_Http::throwHttpStatusException($httpStatus, $result);
72
+ }
73
+
74
+ }
75
+ }
lib/PayU/openpayu.php ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ /**
4
+ * OpenPayU Standard Library
5
+ * ver. 2.1.3
6
+ *
7
+ * @copyright Copyright (c) 2011-2016 PayU
8
+ * @license http://opensource.org/licenses/LGPL-3.0 Open Software License (LGPL 3.0)
9
+ * http://www.payu.com
10
+ * http://developers.payu.com
11
+ */
12
+
13
+ include_once('OpenPayU/Configuration.php');
14
+ include_once('OpenPayU/OpenPayUException.php');
15
+ include_once('OpenPayU/Util.php');
16
+ include_once('OpenPayU/OpenPayU.php');
17
+ include_once('OpenPayU/OpenPayuOrderStatus.php');
18
+
19
+ include_once('OpenPayU/Result.php');
20
+
21
+ require_once('OpenPayU/Http.php');
22
+ require_once('OpenPayU/HttpCurl.php');
23
+
24
+ require_once('OpenPayU/Oauth/Oauth.php');
25
+ require_once('OpenPayU/Oauth/OauthGrantType.php');
26
+ require_once('OpenPayU/Oauth/OauthResultClientCredentials.php');
27
+ require_once('OpenPayU/Oauth/Cache/OauthCacheInterface.php');
28
+ require_once('OpenPayU/Oauth/Cache/OauthCacheFile.php');
29
+ require_once('OpenPayU/Oauth/Cache/OauthCacheMemcached.php');
30
+
31
+ require_once('OpenPayU/ResultError.php');
32
+
33
+ require_once('OpenPayU/AuthType/AuthType.php');
34
+ require_once('OpenPayU/AuthType/Basic.php');
35
+ require_once('OpenPayU/AuthType/TokenRequest.php');
36
+ require_once('OpenPayU/AuthType/Oauth.php');
37
+
38
+ include_once('OpenPayU/v2/Refund.php');
39
+ include_once('OpenPayU/v2/Order.php');
40
+ include_once('OpenPayU/v2/Retrieve.php');
lib/payu/sdk_v21/OpenPayU/Configuration.php DELETED
@@ -1,302 +0,0 @@
1
- <?php
2
-
3
- /*
4
- OpenPayU Standard Library
5
-
6
- @copyright Copyright (c) 2011-2014 PayU
7
- @license http://opensource.org/licenses/LGPL-3.0 Open Software License (LGPL 3.0)
8
- http://www.payu.com
9
- http://developers.payu.com
10
- http://twitter.com/openpayu
11
- */
12
-
13
- class OpenPayU_Configuration
14
- {
15
- private static $_availableEnvironment = array('custom', 'secure');
16
- public static $env = 'secure';
17
- public static $merchantPosId = '';
18
- public static $posAuthKey = '';
19
- public static $clientId = '';
20
- public static $clientSecret = '';
21
- public static $signatureKey = '';
22
-
23
- public static $serviceUrl = '';
24
- public static $summaryUrl = '';
25
- public static $authUrl = '';
26
- public static $serviceDomain = '';
27
-
28
- private static $apiVersion = 2;
29
- private static $_availableHashAlgorithm = array('MD5', 'SHA', 'SHA1', 'SHA-1', 'SHA-256', 'SHA256', 'SHA_256');
30
- private static $hashAlgorithm = 'SHA-1';
31
-
32
- private static $dataFormat = 'json';
33
-
34
- private static $sender = 'Generic';
35
-
36
- const COMPOSER_JSON = "/composer.json";
37
- const DEFAULT_SDK_VERSION = 'PHP SDK 2.1.0';
38
-
39
-
40
- /**
41
- * @access public
42
- * @param int $version
43
- * @throws OpenPayU_Exception_Configuration
44
- */
45
- public static function setApiVersion($version)
46
- {
47
- if (empty($version))
48
- throw new OpenPayU_Exception_Configuration('Invalid API version');
49
-
50
- self::$apiVersion = intval($version);
51
- }
52
-
53
- /**
54
- * @return int
55
- */
56
- public static function getApiVersion()
57
- {
58
- return self::$apiVersion;
59
- }
60
-
61
- /**
62
- * @access public
63
- * @param string
64
- * @throws OpenPayU_Exception_Configuration
65
- */
66
- public static function setHashAlgorithm($value)
67
- {
68
- if (!in_array($value, self::$_availableHashAlgorithm))
69
- throw new OpenPayU_Exception_Configuration($value . ' - is not available');
70
-
71
- self::$hashAlgorithm = $value;
72
- }
73
-
74
- /**
75
- * @access public
76
- * @return string
77
- */
78
- public static function getHashAlgorithm()
79
- {
80
- return self::$hashAlgorithm;
81
- }
82
-
83
- /**
84
- * @access public
85
- * @param string $value
86
- * @param string $domain
87
- * @param string $country
88
- * @throws OpenPayU_Exception_Configuration
89
- */
90
- public static function setEnvironment($value = 'secure', $domain = 'payu.com', $country = 'pl', $api = 'api/', $version = 'v2_1/')
91
- {
92
- $value = strtolower($value);
93
- $domain = strtolower($domain) . '/';
94
-
95
- if (!in_array($value, self::$_availableEnvironment))
96
- throw new OpenPayU_Exception_Configuration($value . ' - is not valid environment');
97
-
98
-
99
- if ($value == 'secure') {
100
- self::$env = $value;
101
-
102
- self::$serviceDomain = $domain;
103
-
104
- self::$serviceUrl = 'https://' . $value . '.' . $domain . $api . $version;
105
- self::$summaryUrl = self::$serviceUrl . 'co/summary';
106
- self::$authUrl = self::$serviceUrl . 'oauth/user/authorize';
107
- } else if ($value == 'custom') {
108
- self::$env = $value;
109
-
110
- self::$serviceUrl = $domain . $api . $version;
111
- self::$summaryUrl = self::$serviceUrl . 'co/summary';
112
- self::$authUrl = self::$serviceUrl . 'oauth/user/authorize';
113
- }
114
- }
115
-
116
- /**
117
- * @access public
118
- * @return string
119
- */
120
- public static function getServiceUrl()
121
- {
122
- return self::$serviceUrl;
123
- }
124
-
125
- /**
126
- * @access public
127
- * @return string
128
- */
129
- public static function getSummaryUrl()
130
- {
131
- return self::$summaryUrl;
132
- }
133
-
134
- /**
135
- * @access public
136
- * @return string
137
- */
138
- public static function getAuthUrl()
139
- {
140
- return self::$authUrl;
141
- }
142
-
143
- /**
144
- * @access public
145
- * @return string
146
- */
147
- public static function getEnvironment()
148
- {
149
- return self::$env;
150
- }
151
-
152
- /**
153
- * @access public
154
- * @param string
155
- */
156
- public static function setMerchantPosId($value)
157
- {
158
- self::$merchantPosId = trim($value);
159
- }
160
-
161
- /**
162
- * @access public
163
- * @return string
164
- */
165
- public static function getMerchantPosId()
166
- {
167
- return self::$merchantPosId;
168
- }
169
-
170
- /**
171
- * @access public
172
- * @param string
173
- */
174
- public static function setPosAuthKey($value)
175
- {
176
- self::$posAuthKey = trim($value);
177
- }
178
-
179
- /**
180
- * @access public
181
- * @return string
182
- */
183
- public static function getPosAuthKey()
184
- {
185
- return self::$posAuthKey;
186
- }
187
-
188
- /**
189
- * @access public
190
- * @param string
191
- */
192
- public static function setClientId($value)
193
- {
194
- self::$clientId = trim($value);
195
- }
196
-
197
- /**
198
- * @access public
199
- * @return string
200
- */
201
- public static function getClientId()
202
- {
203
- return self::$clientId;
204
- }
205
-
206
- /**
207
- * @access public
208
- * @param string
209
- */
210
- public static function setClientSecret($value)
211
- {
212
- self::$clientSecret = trim($value);
213
- }
214
-
215
- /**
216
- * @access public
217
- * @return string
218
- */
219
- public static function getClientSecret()
220
- {
221
- return self::$clientSecret;
222
- }
223
-
224
- /**
225
- * @access public
226
- * @param string
227
- */
228
- public static function setSignatureKey($value)
229
- {
230
- self::$signatureKey = trim($value);
231
- }
232
-
233
- /**
234
- * @access public
235
- * @return string
236
- */
237
- public static function getSignatureKey()
238
- {
239
- return self::$signatureKey;
240
- }
241
-
242
- /**
243
- * @access public
244
- * @return string
245
- */
246
- public static function getDataFormat($withDot = false)
247
- {
248
- if ($withDot) {
249
- return "." . self::$dataFormat;
250
- }
251
-
252
- return self::$dataFormat;
253
- }
254
-
255
- /**
256
- * @access public
257
- * @param string $sender
258
- */
259
- public static function setSender($sender)
260
- {
261
- self::$sender = $sender;
262
- }
263
-
264
- /**
265
- * @return string
266
- */
267
- public static function getSender()
268
- {
269
- return self::$sender;
270
- }
271
-
272
- /**
273
- * @return string
274
- */
275
- public static function getFullSenderName()
276
- {
277
- return sprintf("%s@%s", self::getSender(), self::getSdkVersion());
278
- }
279
-
280
- /**
281
- * @return string
282
- */
283
- public static function getSdkVersion()
284
- {
285
- $composerFilePath = self::getComposerFilePath();
286
- if (file_exists($composerFilePath)) {
287
- $fileContent = file_get_contents($composerFilePath);
288
- $composerData = json_decode($fileContent);
289
- if (isset($composerData->version) && isset($composerData->extra[0]->engine) )
290
- return sprintf("%s %s", $composerData->extra[0]->engine, $composerData->version);
291
- }
292
- return self::DEFAULT_SDK_VERSION;
293
- }
294
-
295
- /**
296
- * @return string
297
- */
298
- private static function getComposerFilePath()
299
- {
300
- return realpath(dirname(__FILE__)) .'/../../'.self::COMPOSER_JSON;
301
- }
302
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/payu/sdk_v21/OpenPayU/Http.php DELETED
@@ -1,135 +0,0 @@
1
- <?php
2
- /**
3
- * OpenPayU
4
- *
5
- * @copyright Copyright (c) 2014 PayU
6
- */
7
- class OpenPayU_Http
8
- {
9
- /**
10
- * @param $pathUrl
11
- * @param $data
12
- * @return mixed
13
- */
14
- public static function post($pathUrl, $data)
15
- {
16
- //$signature = OpenPayU_Util::generateSignData($data, OpenPayU_Configuration::getHashAlgorithm(), OpenPayU_Configuration::getMerchantPosId(), OpenPayU_Configuration::getSignatureKey());
17
-
18
- $posId = OpenPayU_Configuration::getMerchantPosId();
19
- $sigantureKey = OpenPayU_Configuration::getSignatureKey();
20
-
21
- $response = OpenPayU_HttpCurl::doRequest('POST', $pathUrl, $data, $posId, $sigantureKey);
22
-
23
- return $response;
24
- }
25
-
26
- public static function postWithSignature($pathUrl, $data)
27
- {
28
- //$signature = OpenPayU_Util::generateSignData($data, OpenPayU_Configuration::getHashAlgorithm(), OpenPayU_Configuration::getMerchantPosId(), OpenPayU_Configuration::getSignatureKey());
29
-
30
- $posId = OpenPayU_Configuration::getMerchantPosId();
31
- $sigantureKey = OpenPayU_Configuration::getSignatureKey();
32
-
33
- $response = OpenPayU_HttpCurl::doRequest('POST', $pathUrl, $data, $posId, $sigantureKey);
34
-
35
- return $response;
36
- }
37
-
38
- /**
39
- * @param $pathUrl
40
- * @param $data
41
- * @return mixed
42
- */
43
- public static function get($pathUrl, $data)
44
- {
45
- $posId = OpenPayU_Configuration::getMerchantPosId();
46
- $sigantureKey = OpenPayU_Configuration::getSignatureKey();
47
-
48
- $response = OpenPayU_HttpCurl::doRequest('GET', $pathUrl, $data, $posId, $sigantureKey);
49
-
50
- return $response;
51
- }
52
-
53
- /**
54
- * @param $pathUrl
55
- * @param $data
56
- * @return mixed
57
- */
58
- public static function put($pathUrl, $data)
59
- {
60
- $posId = OpenPayU_Configuration::getMerchantPosId();
61
- $sigantureKey = OpenPayU_Configuration::getSignatureKey();
62
-
63
- $response = OpenPayU_HttpCurl::doRequest('PUT', $pathUrl, $data, $posId, $sigantureKey);
64
-
65
- return $response;
66
- }
67
-
68
- /**
69
- * @param $pathUrl
70
- * @param $data
71
- * @return mixed
72
- */
73
- public static function delete($pathUrl, $data)
74
- {
75
- $posId = OpenPayU_Configuration::getMerchantPosId();
76
- $sigantureKey = OpenPayU_Configuration::getSignatureKey();
77
-
78
- $response = OpenPayU_HttpCurl::doRequest('DELETE', $pathUrl, $data, $posId, $sigantureKey);
79
-
80
- return $response;
81
- }
82
-
83
- /**
84
- *
85
- *
86
- * @param $statusCode
87
- * @param null $message
88
- * @throws OpenPayU_Exception
89
- * @throws OpenPayU_Exception_Authorization
90
- * @throws OpenPayU_Exception_Network
91
- * @throws OpenPayU_Exception_ServerMaintenance
92
- * @throws OpenPayU_Exception_ServerError
93
- */
94
- public static function throwHttpStatusException($statusCode, $message = null)
95
- {
96
- switch ($statusCode) {
97
- default:
98
- throw new OpenPayU_Exception_Network('Unexpected HTTP code response', $statusCode);
99
- break;
100
-
101
- case 400:
102
- throw new OpenPayU_Exception(trim($message->Status->StatusCode . (isset($message->Status->StatusDesc) ?
103
- ' - ' . $message->Status->StatusDesc : '')), $statusCode);
104
- break;
105
-
106
- case 401:
107
- throw new OpenPayU_Exception_Authorization(trim($message->Status->StatusCode .
108
- (isset($message->Status->StatusDesc) ? ' - ' . $message->Status->StatusDesc : '')), $statusCode);
109
- break;
110
-
111
- case 403:
112
- throw new OpenPayU_Exception_Authorization(trim($message->Status->StatusCode), $statusCode);
113
- break;
114
-
115
- case 404:
116
- throw new OpenPayU_Exception_Network('Data indicated in the request is not available in the PayU system.');
117
- break;
118
-
119
- case 408:
120
- throw new OpenPayU_Exception_ServerError('Request timeout', $statusCode);
121
- break;
122
-
123
- case 500:
124
- throw new OpenPayU_Exception_ServerError('PayU system is unavailable or your order is not processed.
125
- Error:
126
- [' . (isset($message->Status->StatusDesc) ?
127
- $message->Status->StatusDesc : '') . ']', $statusCode);
128
- break;
129
-
130
- case 503:
131
- throw new OpenPayU_Exception_ServerMaintenance('Service unavailable', $statusCode);
132
- break;
133
- }
134
- }
135
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/payu/sdk_v21/OpenPayU/HttpProtocol.php DELETED
@@ -1,10 +0,0 @@
1
- <?php
2
- /**
3
- * OpenPayU
4
- *
5
- * @copyright Copyright (c) 2014 PayU
6
- */
7
- interface OpenPayU_HttpProtocol
8
- {
9
- public static function doRequest($requestType, $pathUrl, $fieldsList, $posId, $signatureKey);
10
- }
 
 
 
 
 
 
 
 
 
 
lib/payu/sdk_v21/OpenPayU/OpenPayU.php DELETED
@@ -1,250 +0,0 @@
1
- <?php
2
-
3
- /*
4
- OpenPayU Standard Library
5
-
6
- @copyright Copyright (c) 2011-2014 PayU
7
- @license http://opensource.org/licenses/LGPL-3.0 Open Software License (LGPL 3.0)
8
- http://www.payu.com
9
- http://developers.payu.com
10
- http://twitter.com/openpayu
11
- */
12
-
13
- class OpenPayU extends OpenPayUBase
14
- {
15
-
16
- /**
17
- * Function builds OrderCreateRequest Document
18
- * @access public
19
- * @param string $data
20
- * @return string
21
- */
22
- public static function buildOrderCreateRequest($data)
23
- {
24
- $xml = OpenPayU::buildOpenPayURequestDocument($data, 'OrderCreateRequest');
25
- return $xml;
26
- }
27
-
28
- /**
29
- * Function builds OrderRetrieveRequest Document
30
- * @access public
31
- * @param array $data
32
- * @return string $xml
33
- */
34
- public static function buildOrderRetrieveRequest($data)
35
- {
36
- $xml = OpenPayU::buildOpenPayURequestDocument($data, 'OrderRetrieveRequest');
37
- return $xml;
38
- }
39
-
40
- /**
41
- * Function builds ShippingCostRetrieveResponse Document
42
- * @access public
43
- * @param array $data
44
- * @param string $reqId
45
- * @return string $xml
46
- */
47
- public static function buildShippingCostRetrieveResponse($data, $reqId)
48
- {
49
-
50
- $cost = array(
51
- 'ResId' => $reqId,
52
- 'Status' => array('StatusCode' => 'OPENPAYU_SUCCESS'),
53
- 'AvailableShippingCost' => $data
54
- );
55
-
56
- $xml = OpenPayU::buildOpenPayUResponseDocument($cost, 'ShippingCostRetrieveResponse');
57
- return $xml;
58
- }
59
-
60
- /**
61
- * Function builds buildOrderNotifyResponse Document
62
- * @access public
63
- * @param string $reqId
64
- * @return string $xml
65
- */
66
- public static function buildOrderNotifyResponse($reqId)
67
- {
68
-
69
- $data = array(
70
- 'resId' => $reqId,
71
- 'status' => array('statusCode' => 'SUCCESS')
72
- );
73
-
74
- $response = OpenPayU_Util::buildJsonFromArray($data);
75
- return $response;
76
- }
77
-
78
- /**
79
- * Function builds verifyResponse Status
80
- * @access public
81
- * @param string $data
82
- * @param string $message
83
- * @return string $xml
84
- */
85
- public static function verifyResponse($data, $message)
86
- {
87
- $document = OpenPayU_Util::parseXmlDocument(stripslashes($data));
88
- $status = null;
89
-
90
- if (OpenPayU_Configuration::getApiVersion() < 2)
91
- $status = $document['OpenPayU']['OrderDomainResponse'][$message]['Status'];
92
- else
93
- $status = $document['OpenPayU'][$message]['Status'];
94
-
95
- if (empty($status) && OpenPayU_Configuration::getApiVersion() < 2)
96
- $status = $document['OpenPayU']['HeaderResponse']['Status'];
97
-
98
- return $status;
99
- }
100
-
101
- /**
102
- * Function returns OrderCancelResponse Status Document
103
- * @access public
104
- * @param string $data
105
- * @return OpenPayU_Result
106
- */
107
- public static function verifyOrderCancelResponseStatus($data)
108
- {
109
- return OpenPayU::verifyResponse($data, 'OrderCancelResponse');
110
- }
111
-
112
- /**
113
- * Function returns OrderStatusUpdateResponse Status Document
114
- * @access public
115
- * @param string $data
116
- * @return mixed
117
- */
118
- public static function verifyOrderStatusUpdateResponseStatus($data)
119
- {
120
- return OpenPayU::verifyResponse($data, 'OrderStatusUpdateResponse');
121
- }
122
-
123
- /**
124
- * Function returns OrderCreateResponse Status
125
- * @access public
126
- * @param string $data
127
- * @return mixed
128
- */
129
- public static function verifyOrderCreateResponse($data)
130
- {
131
- return OpenPayU::verifyResponse($data, 'OrderCreateResponse');
132
- }
133
-
134
- /**
135
- * Function returns OrderRetrieveResponse Status
136
- * @access public
137
- * @param string $data
138
- * @return mixed
139
- */
140
- public static function verifyOrderRetrieveResponseStatus($data)
141
- {
142
- return OpenPayU::verifyResponse($data, 'OrderRetrieveResponse');
143
- }
144
-
145
- /**
146
- * Function returns OrderRetrieveResponse Data
147
- * @access public
148
- * @param string $data
149
- * @return array $document
150
- */
151
- public static function getOrderRetrieveResponse($data)
152
- {
153
- $response = OpenPayU::parseXmlDocument(stripslashes($data));
154
-
155
- $document = $response['OpenPayU']['OrderDomainResponse']['OrderRetrieveResponse'];
156
-
157
- if (OpenPayU_Configuration::getApiVersion() >= 2)
158
- $document = $response['OpenPayU']['OrderRetrieveResponse'];
159
-
160
- return $document;
161
- }
162
-
163
- /**
164
- * Function builds OrderCancelRequest Document
165
- * @access public
166
- * @param string $data
167
- * @return string $xml
168
- */
169
- public static function buildOrderCancelRequest($data)
170
- {
171
- $xml = OpenPayU::buildOpenPayURequestDocument($data, 'OrderCancelRequest');
172
-
173
- return $xml;
174
- }
175
-
176
- /**
177
- * Function builds OrderStatusUpdateRequest Document
178
- * @access public
179
- * @param string $data
180
- * @return string $xml
181
- */
182
- public static function buildOrderStatusUpdateRequest($data)
183
- {
184
- $xml = OpenPayU::buildOpenPayURequestDocument($data, 'OrderStatusUpdateRequest');
185
-
186
- return $xml;
187
- }
188
-
189
- protected static function build($data)
190
- {
191
- $instance = new OpenPayU_Result();
192
- $instance->init($data);
193
-
194
- return $instance;
195
- }
196
-
197
- /**
198
- * @throws OpenPayU_Exception_Authorization
199
- */
200
- public static function verifyBasicAuthCredentials()
201
- {
202
- if (isset($_SERVER['PHP_AUTH_USER'])) {
203
- $user = (string)$_SERVER['PHP_AUTH_USER'];
204
- } else {
205
- throw new OpenPayU_Exception_Authorization('Empty user name');
206
- }
207
-
208
- if (isset($_SERVER['PHP_AUTH_PW'])) {
209
- $password = (string)$_SERVER['PHP_AUTH_PW'];
210
- } else {
211
- throw new OpenPayU_Exception_Authorization('Empty password');
212
- }
213
-
214
- if ($user !== OpenPayU_Configuration::getMerchantPosId() ||
215
- $password !== OpenPayU_Configuration::getSignatureKey()
216
- ) {
217
- throw new OpenPayU_Exception_Authorization("invalid credentials");
218
- }
219
- }
220
-
221
- /**
222
- * @param $data
223
- * @param $incomingSignature
224
- * @throws OpenPayU_Exception_Authorization
225
- */
226
- public static function verifyDocumentSignature($data, $incomingSignature)
227
- {
228
- $sign = OpenPayU_Util::parseSignature($incomingSignature);
229
-
230
- if (false === OpenPayU_Util::verifySignature(
231
- $data,
232
- $sign->signature,
233
- OpenPayU_Configuration::getSignatureKey(),
234
- $sign->algorithm
235
- )
236
- ) {
237
- throw new OpenPayU_Exception_Authorization('Invalid signature - ' . $sign->signature);
238
- }
239
- }
240
-
241
- /**
242
- * @return bool
243
- */
244
- public static function isSecureConnection()
245
- {
246
- if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on')
247
- return true;
248
- return false;
249
- }
250
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/payu/sdk_v21/OpenPayU/OpenPayUBase.php DELETED
@@ -1,265 +0,0 @@
1
- <?php
2
-
3
- /*
4
- OpenPayU Standard Library
5
-
6
- @copyright Copyright (c) 2011-2014 PayU
7
- @license http://opensource.org/licenses/LGPL-3.0 Open Software License (LGPL 3.0)
8
- http://www.payu.com
9
- http://developers.payu.com
10
- http://twitter.com/openpayu
11
- */
12
-
13
- class OpenPayUBase extends OpenPayUNetwork
14
- {
15
-
16
- /** @var string outputConsole message */
17
- protected static $outputConsole = '';
18
-
19
- /**
20
- * Show outputConsole message
21
- * @access public
22
- */
23
- public static function printOutputConsole()
24
- {
25
- echo OpenPayU::$outputConsole;
26
- }
27
-
28
- /**
29
- * Add $outputConsole message
30
- * @access public
31
- * @param string $header
32
- * @param string $text
33
- */
34
- public static function addOutputConsole($header, $text = '')
35
- {
36
- OpenPayU::$outputConsole .= '<br/><strong>' . $header . ':</strong><br />' . $text . '<br/>';
37
- }
38
-
39
- /**
40
- * Function builds OpenPayU Request Document
41
- * @access public
42
- * @param string $data
43
- * @param string $startElement Name of Document Element
44
- * @param string $version Xml Version
45
- * @param string $xml_encoding Xml Encoding
46
- * @return string
47
- */
48
- public static function buildOpenPayURequestDocument($data, $startElement, $version = '1.0', $xml_encoding = 'UTF-8')
49
- {
50
- return OpenPayUBase::buildOpenPayUDocument($data, $startElement, 1, $version, $xml_encoding);
51
- }
52
-
53
- /**
54
- * Function builds OpenPayU Response Document
55
- * @access public
56
- * @param string $data
57
- * @param string $startElement Name of Document Element
58
- * @param string $version Xml Version
59
- * @param string $xml_encoding Xml Encoding
60
- * @return string
61
- */
62
- public static function buildOpenPayUResponseDocument($data, $startElement, $version = '1.0', $xml_encoding = 'UTF-8')
63
- {
64
- return OpenPayUBase::buildOpenPayUDocument($data, $startElement, 0, $version, $xml_encoding);
65
- }
66
-
67
- /**
68
- * Function converts array to XML document
69
- * @access public
70
- * @deprecated
71
- * @param XMLWriter $xml
72
- * @param array $data
73
- */
74
- public static function arr2xml(XMLWriter $xml, $data)
75
- {
76
- if (!empty($data) && is_array($data)) {
77
- foreach ($data as $key => $value) {
78
- if (is_array($value)) {
79
- if (is_numeric($key)) {
80
- self::arr2xml($xml, $value);
81
- } else {
82
- $xml->startElement($key);
83
- self::arr2xml($xml, $value);
84
- $xml->endElement();
85
- }
86
- continue;
87
- }
88
- $xml->writeElement($key, $value);
89
- }
90
- }
91
- }
92
-
93
- /**
94
- * Function converts array to Form
95
- * @access public
96
- * @param array $data
97
- * @param string $parent
98
- * @param integer $index
99
- * @return string $fragment
100
- */
101
- public static function arr2form($data, $parent, $index)
102
- {
103
- $fragment = '';
104
-
105
- if (!empty($data) && is_array($data)) {
106
- foreach ($data as $key => $value) {
107
- if (is_array($value)) {
108
- if (is_numeric($key)) {
109
- $fragment .= OpenPayUBase::arr2form($value, $parent, $key);
110
- } else {
111
- $p = $parent != '' ? $parent . '.' . $key : $key;
112
- if (is_numeric($index)) {
113
- $p .= '[' . $index . ']';
114
- }
115
- $fragment .= OpenPayUBase::arr2form($value, $p, $key);
116
- }
117
- continue;
118
- }
119
-
120
- $path = $parent != '' ? $parent . '.' . $key : $key;
121
- $fragment .= OpenPayUBase::buildFormFragmentInput($path, $value);
122
- }
123
- }
124
-
125
- return $fragment;
126
- }
127
-
128
- /**
129
- * Function converts xml to array
130
- * @access public
131
- * @deprecated
132
- * @param XMLReader $xml
133
- * @return array $tree
134
- */
135
- public static function read($xml)
136
- {
137
- $tree = null;
138
- if(isset($xml))
139
- {
140
- while ($xml->read()) {
141
- if ($xml->nodeType == XMLReader::END_ELEMENT) {
142
- return $tree;
143
- } else if ($xml->nodeType == XMLReader::ELEMENT) {
144
- if (!$xml->isEmptyElement) {
145
- $tree[$xml->name] = OpenPayUBase::read($xml);
146
- }
147
- } else if ($xml->nodeType == XMLReader::TEXT) {
148
- $tree = $xml->value;
149
- }
150
- }
151
- }
152
- return $tree;
153
- }
154
-
155
- /**
156
- * Function builds OpenPayU Xml Document
157
- * @access public
158
- * @param string $data
159
- * @param string $startElement
160
- * @param integer $request
161
- * @param string $xml_version
162
- * @param string $xml_encoding
163
- * @return string $xml
164
- */
165
- public static function buildOpenPayUDocument($data, $startElement, $request = 1, $xml_version = '1.0', $xml_encoding = 'UTF-8')
166
- {
167
- if (!is_array($data))
168
- return false;
169
-
170
- $xml = new XmlWriter();
171
- $xml->openMemory();
172
- $xml->startDocument($xml_version, $xml_encoding);
173
-
174
- if(OpenPayU_Configuration::getApiVersion() < 2)
175
- {
176
- $xml->startElementNS(null, 'OpenPayU', 'http://www.openpayu.com/openpayu.xsd');
177
- $header = $request == 1 ? 'HeaderRequest' : 'HeaderResponse';
178
-
179
- $xml->startElement($header);
180
-
181
- $xml->writeElement('Algorithm', OpenPayU_Configuration::getHashAlgorithm());
182
-
183
- $xml->writeElement('SenderName', 'exampleSenderName');
184
- $xml->writeElement('Version', $xml_version);
185
-
186
- $xml->endElement();
187
- }
188
- else
189
- $xml->startElementNS(null, 'OpenPayU', 'http://www.openpayu.com/20/openpayu.xsd');
190
-
191
- // domain level - open
192
- if(OpenPayU_Configuration::getApiVersion() < 2)
193
- $xml->startElement(OpenPayUDomain::getDomain4Message($startElement));
194
-
195
- // message level - open
196
- $xml->startElement($startElement);
197
-
198
- OpenPayU_Util::convertArrayToXml($xml, $data);
199
-
200
- // message level - close
201
- $xml->endElement();
202
- // domain level - close
203
- $xml->endElement();
204
-
205
- // document level - close
206
- if(OpenPayU_Configuration::getApiVersion() < 2)
207
- $xml->endElement();
208
-
209
- return $xml->outputMemory(true);
210
- }
211
-
212
- /**
213
- * Function builds form input element
214
- * @access public
215
- * @param string $name
216
- * @param string $value
217
- * @param string $type
218
- * @return string
219
- */
220
- public static function buildFormFragmentInput($name, $value, $type = 'hidden')
221
- {
222
- return "<input type='" . $type . "' name='" . $name . "' value='" . $value . "'>\n";
223
- }
224
-
225
- /**
226
- * Function builds OpenPayU Form
227
- * @access public
228
- * @param string $data
229
- * @param string $msgName
230
- * @param string $version
231
- * @return string
232
- */
233
- public static function buildOpenPayuForm($data, $msgName, $version = '1.0')
234
- {
235
- if (!is_array($data))
236
- return false;
237
-
238
- $url = OpenPayUNetwork::getOpenPayuEndPoint();
239
-
240
- $form = "<form method='post' action='" . $url . "'>\n";
241
- $form .= OpenPayUBase::buildFormFragmentInput('HeaderRequest.Version', $version);
242
- $form .= OpenPayUBase::buildFormFragmentInput('HeaderRequest.Name', $msgName);
243
- $form .= OpenPayUBase::arr2form($data, '', '');
244
- $form .= "</form>";
245
-
246
- return $form;
247
- }
248
-
249
- /**
250
- * Function converts Xml string to array
251
- * @access public
252
- * @deprecated
253
- * @param string $xmldata
254
- * @return array $assoc
255
- */
256
- public static function parseOpenPayUDocument($xmldata)
257
- {
258
- $xml = new XMLReader();
259
- $xml->XML($xmldata);
260
-
261
- $assoc = self::read($xml);
262
-
263
- return $assoc;
264
- }
265
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/payu/sdk_v21/OpenPayU/OpenPayUException.php DELETED
@@ -1,43 +0,0 @@
1
- <?php
2
- /**
3
- * OpenPayU Exception
4
- *
5
- * @copyright Copyright (c) 2014 PayU
6
- * @license http://opensource.org/licenses/LGPL-3.0 Open Software License (LGPL 3.0)
7
- *
8
- * http://www.payu.com
9
- * http://developers.payu.com
10
- * http://twitter.com/openpayu
11
- *
12
- */
13
-
14
-
15
- class OpenPayU_Exception extends Exception
16
- {
17
-
18
- }
19
-
20
- class OpenPayU_Exception_Configuration extends OpenPayU_Exception
21
- {
22
-
23
- }
24
-
25
- class OpenPayU_Exception_Network extends OpenPayU_Exception
26
- {
27
-
28
- }
29
-
30
- class OpenPayU_Exception_ServerError extends OpenPayU_Exception
31
- {
32
-
33
- }
34
-
35
- class OpenPayU_Exception_ServerMaintenance extends OpenPayU_Exception
36
- {
37
-
38
- }
39
-
40
- class OpenPayU_Exception_Authorization extends OpenPayU_Exception
41
- {
42
-
43
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/payu/sdk_v21/OpenPayU/OpenPayUNetwork.php DELETED
@@ -1,181 +0,0 @@
1
- <?php
2
-
3
- /*
4
- OpenPayU Standard Library
5
-
6
- @copyright Copyright (c) 2011-2014 PayU
7
- @license http://opensource.org/licenses/LGPL-3.0 Open Software License (LGPL 3.0)
8
- http://www.payu.com
9
- http://developers.payu.com
10
- http://twitter.com/openpayu
11
- */
12
-
13
- class OpenPayUNetwork
14
- {
15
- /** @var string OpenPayU EndPoint Url */
16
- protected static $openPayuEndPointUrl = '';
17
-
18
- /**
19
- * The function sets EndPointUrl param of OpenPayU
20
- * @access public
21
- * @param string $ep
22
- */
23
- public static function setOpenPayuEndPoint($ep)
24
- {
25
- self::$openPayuEndPointUrl = $ep;
26
- }
27
-
28
- /**
29
- * The function gets EndPointUrl param of OpenPayU
30
- * @access public
31
- * @return string;
32
- */
33
- public static function getOpenPayuEndPoint()
34
- {
35
- return self::$openPayuEndPointUrl;
36
- }
37
-
38
- /**
39
- * This function checks the availability of cURL
40
- * @access private
41
- * @return bool
42
- */
43
- private static function isCurlInstalled()
44
- {
45
- if (in_array('curl', get_loaded_extensions()))
46
- return true;
47
-
48
- return false;
49
- }
50
-
51
- /**
52
- * The function returns the parameter EndPointUrl OpenPayU
53
- * @access public
54
- * @deprecated
55
- * @return string
56
- * @throws OpenPayU_Exception_Configuration
57
- */
58
- public static function OpenPayU_Exception_Configuration()
59
- {
60
- if (empty(self::$openPayuEndPointUrl))
61
- throw new OpenPayU_Exception_Configuration('OpenPayUNetwork::$openPayuEndPointUrl is empty');
62
-
63
- return self::$openPayuEndPointUrl;
64
- }
65
-
66
- /**
67
- * This function sends data to the EndPointUrl OpenPayU
68
- * @access public
69
- * @deprecated
70
- * @param string $doc
71
- * @return string
72
- * @throws OpenPayU_Exception_Configuration
73
- */
74
- public static function sendOpenPayuDocument($doc)
75
- {
76
-
77
- if (empty(self::$openPayuEndPointUrl))
78
- throw new OpenPayU_Exception_Configuration('OpenPayUNetwork::$openPayuEndPointUrl is empty');
79
-
80
- if (!self::isCurlInstalled())
81
- throw new OpenPayU_Exception_Configuration('cURL is not available');
82
-
83
- $xml = urlencode($doc);
84
- return OpenPayU::sendData(self::$openPayuEndPointUrl, 'DOCUMENT=' . $xml);
85
- }
86
-
87
- /**
88
- * This function sends auth data to the EndPointUrl OpenPayU
89
- * @access public
90
- * @param string $doc
91
- * @param integer $merchantPosId
92
- * @param string $signatureKey
93
- * @param string $algorithm
94
- * @return string
95
- * @throws OpenPayU_Exception_Configuration
96
- * @deprecated
97
- */
98
- public static function sendOpenPayuDocumentAuth($doc, $merchantPosId, $signatureKey, $algorithm = 'MD5')
99
- {
100
- if (empty(self::$openPayuEndPointUrl))
101
- throw new OpenPayU_Exception_Configuration('OpenPayUNetwork::$openPayuEndPointUrl is empty');
102
-
103
- if (empty($signatureKey))
104
- throw new OpenPayU_Exception_Configuration('Merchant Signature Key should not be null or empty.');
105
-
106
- if (empty($merchantPosId))
107
- throw new OpenPayU_Exception_Configuration('MerchantPosId should not be null or empty.');
108
-
109
- $tosigndata = $doc . $signatureKey;
110
- $xml = urlencode($doc);
111
- $signature = '';
112
- if ($algorithm == 'MD5') {
113
- $signature = md5($tosigndata);
114
- } else if ($algorithm == 'SHA') {
115
- $signature = sha1($tosigndata);
116
- } else if ($algorithm == 'SHA-256' || $algorithm == 'SHA256' || $algorithm == 'SHA_256') {
117
- $signature = hash('sha256', $tosigndata);
118
- }
119
- $authData = 'sender=' . $merchantPosId .
120
- ';signature=' . $signature .
121
- ';algorithm=' . $algorithm .
122
- ';content=DOCUMENT';
123
-
124
- if (!self::isCurlInstalled())
125
- throw new OpenPayU_Exception_Configuration('curl is not available');
126
-
127
- return OpenPayU::sendDataAuth(self::$openPayuEndPointUrl, 'DOCUMENT=' . $xml, $authData);
128
- }
129
-
130
- /**
131
- * This function sends auth data to the EndPointUrl OpenPayU
132
- * @access public
133
- * @deprecated
134
- * @param string $url
135
- * @param string $doc
136
- * @param string $authData
137
- * @return string $response
138
- */
139
- public static function sendDataAuth($url, $doc, $authData)
140
- {
141
- $ch = curl_init($url);
142
- curl_setopt($ch, CURLOPT_POST, 1);
143
- curl_setopt($ch, CURLOPT_POSTFIELDS, $doc);
144
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
145
- curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
146
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
147
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
148
- curl_setopt($ch, CURLOPT_HEADER, false);
149
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
150
-
151
- curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-OpenPayU-Signature:' . $authData));
152
-
153
- $response = curl_exec($ch);
154
-
155
- return $response;
156
- }
157
-
158
- /**
159
- * This function sends data to the EndPointUrl OpenPayU
160
- * @access public
161
- * @param string $url
162
- * @param string $doc
163
- * @return string $response
164
- */
165
- public static function sendData($url, $doc)
166
- {
167
- $ch = curl_init($url);
168
- curl_setopt($ch, CURLOPT_POST, 1);
169
- curl_setopt($ch, CURLOPT_POSTFIELDS, $doc);
170
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
171
- curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
172
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
173
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
174
- curl_setopt($ch, CURLOPT_HEADER, false);
175
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
176
-
177
- $response = curl_exec($ch);
178
-
179
- return $response;
180
- }
181
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/payu/sdk_v21/OpenPayU/v2/Token.php DELETED
@@ -1,66 +0,0 @@
1
- <?php
2
- /**
3
- * OpenPayU Token module
4
- *
5
- * @copyright Copyright (c) 2014 PayU
6
- * @license http://opensource.org/licenses/LGPL-3.0 Open Software License (LGPL 3.0)
7
- *
8
- * http://www.payu.com
9
- * http://developers.payu.com
10
- * http://twitter.com/openpayu
11
- *
12
- */
13
-
14
- class OpenPayU_Token extends OpenPayU
15
- {
16
- /**
17
- * @deprecated
18
- * @param array $data
19
- * @return OpenPayU_Result
20
- */
21
- public static function create($data)
22
- {
23
- $pathUrl = OpenPayU_Configuration::getServiceUrl() . 'token' . OpenPayU_Configuration::getDataFormat(true);
24
-
25
- $xml = OpenPayU_Util::buildXmlFromArray($data, 'TokenCreateRequest');
26
-
27
- $result = self::verifyResponse(OpenPayU_Http::post($pathUrl, $xml), 'TokenCreateResponse');
28
-
29
- return $result;
30
- }
31
-
32
- /**
33
- * @param string $response
34
- * @param string $messageName
35
- * @return null|OpenPayU_Result
36
- */
37
- public static function verifyResponse($response, $messageName)
38
- {
39
- $data = array();
40
- $httpStatus = $response['code'];
41
- $message = OpenPayU_Util::parseXmlDocument($response['response']);
42
-
43
- if (isset($message['OpenPayU'][$messageName])) {
44
- $status = $message['OpenPayU'][$messageName]['Status'];
45
- $data['Status'] = $status;
46
- unset($message['OpenPayU'][$messageName]['Status']);
47
- $data['Response'] = $message['OpenPayU'][$messageName];
48
- }
49
- elseif(isset($message['OpenPayU']))
50
- {
51
- $status = $message['OpenPayU']['Status'];
52
- $data['Status'] = $status;
53
- unset($message['OpenPayU']['Status']);
54
- }
55
-
56
- $result = self::build($data);
57
-
58
- if ($httpStatus == 200 || $httpStatus == 201 || $httpStatus == 422 || $httpStatus == 302)
59
- return $result;
60
- else {
61
- OpenPayU_Http::throwHttpStatusException($httpStatus, $result);
62
- }
63
-
64
- return null;
65
- }
66
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/payu/sdk_v21/openpayu.php DELETED
@@ -1,30 +0,0 @@
1
- <?php
2
-
3
- /*
4
- * ver. 1.9.2
5
- * OpenPayU Standard Library
6
-
7
- * @copyright Copyright (c) 2011-2014 PayU
8
- * @license http://opensource.org/licenses/LGPL-3.0 Open Software License (LGPL 3.0)
9
- * http://www.payu.com
10
- * http://developers.payu.com
11
- * http://twitter.com/openpayu
12
- */
13
-
14
- define('OPENPAYU_LIBRARY', true);
15
- include_once('OpenPayU/Util.php');
16
- include_once('openpayu_domain.php');
17
- include_once('OpenPayU/OpenPayUException.php');
18
- include_once('OpenPayU/OpenPayUNetwork.php');
19
- include_once('OpenPayU/OpenPayUBase.php');
20
- include_once('OpenPayU/OpenPayU.php');
21
-
22
- include_once('OpenPayU/Result.php');
23
- include_once('OpenPayU/Configuration.php');
24
-
25
-
26
- include_once('OpenPayU/v2/Refund.php');
27
- include_once('OpenPayU/v2/Order.php');
28
- require_once('OpenPayU/Http.php');
29
- require_once('OpenPayU/HttpProtocol.php');
30
- require_once('OpenPayU/HttpCurl.php');
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lib/payu/sdk_v21/openpayu_domain.php DELETED
@@ -1,67 +0,0 @@
1
- <?php
2
-
3
- /*
4
- OpenPayU Standard Library
5
-
6
- @copyright Copyright (c) 2011-2014 PayU
7
- @license http://opensource.org/licenses/LGPL-3.0 Open Software License (LGPL 3.0)
8
- http://www.payu.com
9
- http://developers.payu.com
10
- http://twitter.com/openpayu
11
-
12
- */
13
-
14
- class OpenPayUDomain
15
- {
16
-
17
- private static $msg2domain = null;
18
-
19
- /**
20
- * @deprecated
21
- */
22
- private static function builder()
23
- {
24
- OpenPayUDomain::$msg2domain = array
25
- (
26
- 'OrderCreateRequest' => 'OrderDomainRequest',
27
- 'OrderCreateResponse' => 'OrderDomainResponse',
28
- 'OrderStatusUpdateRequest' => 'OrderDomainRequest',
29
- 'OrderStatusUpdateResponse' => 'OrderDomainResponse',
30
- 'OrderCancelRequest' => 'OrderDomainRequest',
31
- 'OrderCancelResponse' => 'OrderDomainResponse',
32
- 'OrderNotifyRequest' => 'OrderDomainRequest',
33
- 'OrderNotifyResponse' => 'OrderDomainResponse',
34
- 'OrderRetrieveRequest' => 'OrderDomainRequest',
35
- 'OrderRetrieveResponse' => 'OrderDomainResponse',
36
- 'ShippingCostRetrieveRequest' => 'OrderDomainRequest',
37
- 'ShippingCostRetrieveResponse' => 'OrderDomainResponse'
38
- );
39
- }
40
-
41
- /**
42
- * Function returns Message domain
43
- * @param string $msg
44
- * @access public
45
- * @return array
46
- */
47
- public static function getDomain4Message($msg)
48
- {
49
- self::$msg2domain = array
50
- (
51
- 'OrderCreateRequest' => 'OrderDomainRequest',
52
- 'OrderCreateResponse' => 'OrderDomainResponse',
53
- 'OrderStatusUpdateRequest' => 'OrderDomainRequest',
54
- 'OrderStatusUpdateResponse' => 'OrderDomainResponse',
55
- 'OrderCancelRequest' => 'OrderDomainRequest',
56
- 'OrderCancelResponse' => 'OrderDomainResponse',
57
- 'OrderNotifyRequest' => 'OrderDomainRequest',
58
- 'OrderNotifyResponse' => 'OrderDomainResponse',
59
- 'OrderRetrieveRequest' => 'OrderDomainRequest',
60
- 'OrderRetrieveResponse' => 'OrderDomainResponse',
61
- 'ShippingCostRetrieveRequest' => 'OrderDomainRequest',
62
- 'ShippingCostRetrieveResponse' => 'OrderDomainResponse'
63
- );
64
-
65
- return self::$msg2domain[$msg];
66
- }
67
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
package.xml CHANGED
@@ -1,18 +1,23 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>PayU_Account</name>
4
- <version>2.1.6</version>
5
  <stability>stable</stability>
6
- <license uri="http://opensource.org/licenses/gpl-license.php">GNU General Public License</license>
7
  <channel>community</channel>
8
  <extends/>
9
- <summary>Official PayU payment gateway module (Poland)</summary>
10
- <description>PayU account is a new tool for making payments for items bought in several places on the Internet. By choosing it, you will increase transaction security and speed up the shopping process, as the time of waiting for funds from buyers is reduced to the minimum. The PayU account allows a buyer to define his favourite payment channels as well as save in one place personal and contact details needed to make payment for shopping. If a buyer uses a payment card, he may also save its details on the PayU account and afterwards, pay with one click, while data for delivery will be completed automatically. As a result, a payment is made within not more than a few seconds. An additional functionality for registered users of the PayU account is access to the whole transaction history in shops which have made this payment method available. Moreover, a special searcher allows you to sort items bought by such criteria as: date, transaction status, amount. </description>
11
- <notes> * API 2.1 compatible</notes>
12
- <authors><author><name>PayU</name><user>PayU</user><email>openpayu@payu.pl</email></author></authors>
13
- <date>2015-02-26</date>
14
- <time>09:34:56</time>
15
- <contents><target name="magecommunity"><dir name="PayU"><dir name="Account"><dir name="Block"><dir name="Adminhtml"><dir name="Sales"><dir name="Order"><file name="View.php" hash="e4d1548109d6b9ca77fa3b4ae0b912e7"/></dir></dir></dir><file name="Advertisement.php" hash="186bcf6ed26df892ebc1333e8132c0ff"/><file name="BeforeSummary.php" hash="b7c65007a988465635170f595b048ea2"/><file name="Button.php" hash="9dd6156281c59b36336bdc599ff24112"/><file name="Form.php" hash="f71e055c842bb5152ec2f51af25ade1c"/><dir name="Onestep"><file name="Checkout.php" hash="9769ffd629808ab8a0c316d15f0d8f36"/></dir><file name="Redirect.php" hash="deeba95c3f50426481aeaf1b4b5ea26a"/><file name="UpdateInfo.php" hash="eef0d7a69e8024818ed1cbf9dd6b9ea1"/></dir><dir name="Helper"><file name="Data.php" hash="4aa6e43dae6e69d89b39360bf771141e"/></dir><dir name="Model"><dir name="Adminhtml"><dir name="Sales"><file name="Order.php" hash="faf6a7c3551674bbc4050d82b6900ae7"/></dir></dir><file name="Advertisement.php" hash="21701b6564bfbba2d2ab21b64c6a9917"/><file name="Button.php" hash="d1a1507cf4801fc2d1ad90e9479735c1"/><file name="Config.php" hash="c2773d0ed5583970e92413e3d4b210a9"/><file name="Environment.php" hash="446c8e78f5923c171a2a363ced3ce1f5"/><file name="Payment.php" hash="4756fca938a345bc9349359e8150cc32"/><file name="Session.php" hash="1cd688735d39340d85214c84eab25dd2"/><file name="Thumbnail.php" hash="5b5f336dcacddcb7c7f5ea65e1478b04"/><file name="ValidityTime.php" hash="8d60e2fab99e1995d590c28d5e85303d"/></dir><dir name="controllers"><dir name="Adminhtml"><dir name="Sales"><file name="OrderController.php" hash="a4e1a3923015b9518d78aa351e0e466e"/></dir></dir><dir name="Checkout"><file name="CartController.php" hash="f6e8777ef73b82a051de92a76b319ad4"/></dir><file name="PaymentController.php" hash="0e8716e3f1a7a60e4579de486645d99d"/></dir><dir name="etc"><file name="config.xml" hash="541222259df033f03ba9974bb25f17ee"/><file name="system.xml" hash="2690f90070c4e308425184d44b943130"/></dir></dir></dir></target><target name="magelib"><dir name="payu"><dir name="sdk_v21"><dir name="OpenPayU"><file name="Configuration.php" hash="a1404629671855a5e985a7905242af05"/><file name="Http.php" hash="73013e320194c3fd343f740d0ca5dfe4"/><file name="HttpCurl.php" hash="ba96429021ebc1ee30977756523b6b6b"/><file name="HttpProtocol.php" hash="9e205aa61cc5d2fe2238293dbc4344c5"/><file name="OpenPayU.php" hash="8c371308fb480f37841e9fbd3f66dd30"/><file name="OpenPayUBase.php" hash="4b563318f412036e1eb3c02786ad8897"/><file name="OpenPayUException.php" hash="46ad89b423ae1d3e46ad98f5949e4fd6"/><file name="OpenPayUNetwork.php" hash="5444af11f08d68a68ab23df9616e3bb0"/><file name="Result.php" hash="e0660298d79d2ae55747cc83c5169f5f"/><file name="Util.php" hash="8184c8ed5e4db8ccfce2b3becec4395c"/><dir name="v2"><file name="Order.php" hash="90cbd111012b8cb6cbb316a155f89a09"/><file name="Refund.php" hash="7c86127db291fa1fffdc87a05123b8b2"/><file name="Token.php" hash="473b335713c78caa435d405bc09be4a0"/></dir></dir><file name="openpayu.php" hash="4fc5e4ab3246649ad0c84ec2ef077085"/><file name="openpayu_domain.php" hash="b4810443906d08462ff92794872e656d"/></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="payu_account.xml" hash="433c0d85f093a87658cca04fa2dcddd4"/></dir><dir name="template"><dir name="payu_account"><file name="advertisement.phtml" hash="2fc6547dc439c7a5c65b190b0b3bbd26"/><file name="form.phtml" hash="9dd9fd37672b2f249cd5b8701b8ce511"/><dir name="info"><file name="payu_account.phtml" hash="28053a7a03ea4db79c73e551c9dcebca"/></dir><dir name="onestep"><file name="checkout.phtml" hash="e4149c323496f479233b48442ef99212"/></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="PayU_Account.xml" hash="9d406b007155fce6fa31788207a66c12"/></dir></target><target name="magelocale"><dir name="pl_PL"><file name="PayU_Account.csv" hash="7e9c0b85f1f921d7e43a6d65bccefd0d"/></dir></target><target name="mage"><dir name="readme_images"><file name="cache_flushed.png" hash="fe5381a25fb5cb1804bc4d66305490c3"/><file name="save_config.png" hash="413841a43725b5a5eab20cbeba878aef"/></dir></target></contents>
 
 
 
 
 
16
  <compatible/>
17
- <dependencies><required><php><min>5.4.0</min><max>5.6.0</max></php><extension><name>curl</name><min>7.36</min><max/></extension></required></dependencies>
18
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>PayU_Account</name>
4
+ <version>2.2.0</version>
5
  <stability>stable</stability>
6
+ <license>Free</license>
7
  <channel>community</channel>
8
  <extends/>
9
+ <summary>The plug-in redirects to payment method summary page where user can choose among the most popular payment methods.</summary>
10
+ <description>Note: it is required to establish a merchant account with PayU S.A. in order to create POS ID needed to configure the plug-in.</description>
11
+ <notes>Integration with PayU based on REST API.&#xD;
12
+ Authentication via OAuth.&#xD;
13
+ &#xD;
14
+ More info:&#xD;
15
+ https://github.com/PayU/plugin_magento&#xD;
16
+ http://developers.payu.com/en/restapi.html</notes>
17
+ <authors><author><name>PayU</name><user>testuser</user><email>sdk@payu.com</email></author></authors>
18
+ <date>2016-12-12</date>
19
+ <time>10:41:14</time>
20
+ <contents><target name="magecommunity"><dir name="PayU"><dir name="Account"><dir name="Block"><file name="Form.php" hash="70db3feb73a9628609742490bc5018db"/><file name="UpdateInfo.php" hash="ad8059411091251e4545e7849ca5cc49"/></dir><dir name="Helper"><file name="Data.php" hash="ef537fab5d0e9b97a7529f6b06b8e5c9"/></dir><dir name="Model"><file name="Config.php" hash="d781caad54f6aa1d29bdbda3d0be05ad"/><file name="Payment.php" hash="9413c7d6b51a13b932296b651e51d625"/><file name="Session.php" hash="3f4eec3f5530dc984911d9b6397955a5"/></dir><dir name="controllers"><file name="PaymentController.php" hash="4c92bccb53c4ba13049a992b697a2b0d"/></dir><dir name="etc"><file name="config.xml" hash="7eb44198d389e261d77c6f03fc465da7"/><file name="system.xml" hash="d5206a7caa0ec2b73605f53340f5218b"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="PayU_Account.xml" hash="19c5f7d97751e1ff01023277653f03ba"/></dir></target><target name="magelocale"><dir><dir name="pl_PL"><file name="PayU_Account.csv" hash="89b688fa47c5d0de715a147b3c9b0b2e"/></dir></dir></target><target name="magelib"><dir name="PayU"><dir name="Cache"><file name="810290d4eed883975e0cd43d80497ac4" hash="80c55f0b73f1e71951b2395eb846b7f8"/><file name="index.php" hash="d41d8cd98f00b204e9800998ecf8427e"/><file name=".htaccess" hash="e45967d66b550e75c8b8dc0b7a465393"/></dir><dir name="OpenPayU"><dir name="AuthType"><file name="AuthType.php" hash="2ec8762fd13fda9d0688a68f9d2bd933"/><file name="Basic.php" hash="896bd3e2a47632a971f65b6deaf2f153"/><file name="Oauth.php" hash="65986c4607710e90670668838533aa6d"/><file name="TokenRequest.php" hash="f4bb0f92451a55489c75de6cffad346d"/></dir><file name="Configuration.php" hash="056bd679a45e6098b17bb16b5c3a157e"/><file name="Http.php" hash="cdd4045bf5ae1a833a8ff10b1d9e5835"/><file name="HttpCurl.php" hash="6d143ecf17179bd0d7b3f1758ac4cacb"/><dir name="Oauth"><dir name="Cache"><file name="OauthCacheFile.php" hash="b57ccb709b5505cb19abd571168a8b8f"/><file name="OauthCacheInterface.php" hash="d68b90815ab5d60f4cbb38ccac9c84e5"/><file name="OauthCacheMemcached.php" hash="3555d44cb94c11f09f1c38289a68cdfb"/></dir><file name="Oauth.php" hash="7e7ec220e34b46e7a4e9fdbd82427574"/><file name="OauthGrantType.php" hash="40ae9161926e907a63d7c3ec7fb58a7b"/><file name="OauthResultClientCredentials.php" hash="450d98ce57200f578a93f24a18071b8d"/></dir><file name="OpenPayU.php" hash="8d0af96bd7308cac3dbab070693a7c0c"/><file name="OpenPayUException.php" hash="f9a320613e170232a0b058e14e3f08b1"/><file name="OpenPayuOrderStatus.php" hash="77cee41c66c42c5b817638b6199e068b"/><file name="Result.php" hash="64dd8c0e1c7ea58da4ff3493a5ea08b7"/><file name="ResultError.php" hash="314179abf5a6f75712d78825353f67d6"/><file name="Util.php" hash="af84a905d23ee5abb712db9dc2e52dfd"/><dir name="v2"><file name="Order.php" hash="4b1b8fb83358b324b80a47a758095e68"/><file name="Refund.php" hash="abfaaf1b0d23b9c2dc92dc3e87c59cb2"/><file name="Retrieve.php" hash="cddd1fb292a23eb79f411a32da1654a2"/></dir></dir><file name="openpayu.php" hash="597ad90c6fa2ae1f0b43f318589ed76f"/></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="payu_account"><file name="form.phtml" hash="f003e7a1d5908f83e20cb53fdc1f5a6e"/></dir></dir></dir></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="css"><dir name="payu"><file name="payu.css" hash="d6133348fe2e0c4df1ef1031ecf999f7"/></dir></dir></dir></dir></dir></target></contents>
21
  <compatible/>
22
+ <dependencies><required><php><min>5.3.0</min><max>5.7.0</max></php></required></dependencies>
23
  </package>
readme_images/cache_flushed.png DELETED
Binary file
readme_images/save_config.png DELETED
Binary file
skin/frontend/base/default/css/payu/payu.css ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ .formPayuLogo {
2
+ height: 20px;
3
+ margin-right: 10px;
4
+ }