RicardoMartins_PagSeguro - Version 2.0.0

Version Notes

Versão estável.

Os bugs devem ser reportador na área de Issues no github do projeto em https://github.com/r-martins/PagSeguro-Magento-Transparente

Download this release

Release Info

Developer Ricardo Martins
Extension RicardoMartins_PagSeguro
Version 2.0.0
Comparing to
See all releases


Code changes from version 1.0.13 to 2.0.0

app/code/community/RicardoMartins/PagSeguro/Helper/Data.php CHANGED
@@ -9,9 +9,13 @@ class RicardoMartins_PagSeguro_Helper_Data extends Mage_Core_Helper_Abstract
9
  const XML_PATH_PAYMENT_PAGSEGURO_SANDBOX_EMAIL = 'payment/pagseguro/sandbox_merchant_email';
10
  const XML_PATH_PAYMENT_PAGSEGURO_SANDBOX_TOKEN = 'payment/pagseguro/sandbox_token';
11
  const XML_PATH_PAYMENT_PAGSEGURO_WS_URL = 'payment/pagseguro/ws_url';
 
12
  const XML_PATH_PAYMENT_PAGSEGURO_JS_URL = 'payment/pagseguro/js_url';
13
  const XML_PATH_PAYMENT_PAGSEGURO_SANDBOX_WS_URL = 'payment/pagseguro/sandbox_ws_url';
 
14
  const XML_PATH_PAYMENT_PAGSEGURO_SANDBOX_JS_URL = 'payment/pagseguro/sandbox_js_url';
 
 
15
 
16
 
17
  /**
@@ -21,10 +25,14 @@ class RicardoMartins_PagSeguro_Helper_Data extends Mage_Core_Helper_Abstract
21
  */
22
  public function getSessionId()
23
  {
24
- $client = new Zend_Http_Client($this->getWsUrl('sessions'));
 
25
  $client->setMethod(Zend_Http_Client::POST);
26
- $client->setParameterGet('email', $this->getMerchantEmail());
27
- $client->setParameterGet('token', $this->getToken());
 
 
 
28
  $client->setConfig(array('timeout'=>30));
29
  try{
30
  $response = $client->request();
@@ -60,15 +68,25 @@ class RicardoMartins_PagSeguro_Helper_Data extends Mage_Core_Helper_Abstract
60
  /**
61
  * Retorna URL do Webservice do Pagseguro de acordo com o ambiente selecionado
62
  * @param string $amend acrescenta algo no final
 
63
  *
64
  * @return string
65
  */
66
- public function getWsUrl($amend='')
67
  {
68
  if($this->isSandbox())
69
  {
70
- return Mage::getStoreConfig(self::XML_PATH_PAYMENT_PAGSEGURO_SANDBOX_WS_URL) . $amend;
 
 
 
 
71
  }
 
 
 
 
 
72
  return Mage::getStoreConfig(self::XML_PATH_PAYMENT_PAGSEGURO_WS_URL) . $amend;
73
  }
74
 
@@ -146,4 +164,42 @@ class RicardoMartins_PagSeguro_Helper_Data extends Mage_Core_Helper_Abstract
146
  $customer_cpf_attribute = Mage::getStoreConfig('payment/pagseguro/customer_cpf_attribute');
147
  return empty($customer_cpf_attribute);
148
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
149
  }
9
  const XML_PATH_PAYMENT_PAGSEGURO_SANDBOX_EMAIL = 'payment/pagseguro/sandbox_merchant_email';
10
  const XML_PATH_PAYMENT_PAGSEGURO_SANDBOX_TOKEN = 'payment/pagseguro/sandbox_token';
11
  const XML_PATH_PAYMENT_PAGSEGURO_WS_URL = 'payment/pagseguro/ws_url';
12
+ const XML_PATH_PAYMENT_PAGSEGURO_WS_URL_APP = 'payment/pagseguro/ws_url_app';
13
  const XML_PATH_PAYMENT_PAGSEGURO_JS_URL = 'payment/pagseguro/js_url';
14
  const XML_PATH_PAYMENT_PAGSEGURO_SANDBOX_WS_URL = 'payment/pagseguro/sandbox_ws_url';
15
+ const XML_PATH_PAYMENT_PAGSEGURO_SANDBOX_WS_URL_APP = 'payment/pagseguro/sandbox_ws_url_app';
16
  const XML_PATH_PAYMENT_PAGSEGURO_SANDBOX_JS_URL = 'payment/pagseguro/sandbox_js_url';
17
+ const XML_PATH_PAYMENT_PAGSEGURO_KEY_TYPE = 'payment/pagseguropro/key_type';
18
+ const XML_PATH_PAYMENT_PAGSEGURO_KEY = 'payment/pagseguropro/key';
19
 
20
 
21
  /**
25
  */
26
  public function getSessionId()
27
  {
28
+ $useapp = $this->getLicenseType() == 'app';
29
+ $client = new Zend_Http_Client($this->getWsUrl('sessions',$useapp));
30
  $client->setMethod(Zend_Http_Client::POST);
31
+ $client->setParameterPost('email', $this->getMerchantEmail());
32
+ $client->setParameterPost('token', $this->getToken());
33
+ if($useapp){
34
+ $client->setParameterPost('public_key',$this->getPagSeguroProKey());
35
+ }
36
  $client->setConfig(array('timeout'=>30));
37
  try{
38
  $response = $client->request();
68
  /**
69
  * Retorna URL do Webservice do Pagseguro de acordo com o ambiente selecionado
70
  * @param string $amend acrescenta algo no final
71
+ * @param bool $useapp usa modelo de aplicacao
72
  *
73
  * @return string
74
  */
75
+ public function getWsUrl($amend='', $useapp = false)
76
  {
77
  if($this->isSandbox())
78
  {
79
+ if($this->getLicenseType()=='app' && $useapp){
80
+ return Mage::getStoreConfig(self::XML_PATH_PAYMENT_PAGSEGURO_SANDBOX_WS_URL_APP) . $amend;;
81
+ }else{
82
+ return Mage::getStoreConfig(self::XML_PATH_PAYMENT_PAGSEGURO_SANDBOX_WS_URL) . $amend;
83
+ }
84
  }
85
+
86
+ if($this->getLicenseType()=='app' && $useapp){
87
+ return Mage::getStoreConfig(self::XML_PATH_PAYMENT_PAGSEGURO_WS_URL_APP) . $amend;
88
+ }
89
+
90
  return Mage::getStoreConfig(self::XML_PATH_PAYMENT_PAGSEGURO_WS_URL) . $amend;
91
  }
92
 
164
  $customer_cpf_attribute = Mage::getStoreConfig('payment/pagseguro/customer_cpf_attribute');
165
  return empty($customer_cpf_attribute);
166
  }
167
+
168
+ /**
169
+ * Retorna o tipo de licença (se houver)
170
+ * @return string
171
+ */
172
+ public function getLicenseType()
173
+ {
174
+ return Mage::getStoreConfig(self::XML_PATH_PAYMENT_PAGSEGURO_KEY_TYPE);
175
+ }
176
+
177
+ /**
178
+ * Retorna chave do PagSeguro PRO (se houver)
179
+ * @return string
180
+ */
181
+ public function getPagSeguroProKey()
182
+ {
183
+ return Mage::getStoreConfig(self::XML_PATH_PAYMENT_PAGSEGURO_KEY);
184
+ }
185
+
186
+ /**
187
+ * Faz a tradução dos termos dinamicos do PagSeguro
188
+ * @author Ricardo Martins
189
+ * @return string
190
+ */
191
+ public function __(){
192
+ $args = func_get_args();
193
+ $expr = new Mage_Core_Model_Translate_Expr(array_shift($args), $this->_getModuleName());
194
+ array_unshift($args, $expr);
195
+
196
+ $text = $args[0]->getText();
197
+ preg_match('/(.*)\:(.*)/',$text, $matches);
198
+ if($matches!==false && isset($matches[1])){
199
+ array_shift($matches);
200
+ $matches[0] .= ': %s';
201
+ $args = $matches;
202
+ }
203
+ return Mage::app()->getTranslator()->translate($args);
204
+ }
205
  }
app/code/community/RicardoMartins/PagSeguro/Helper/Params.php CHANGED
@@ -38,8 +38,7 @@ class RicardoMartins_PagSeguro_Helper_Params extends Mage_Core_Helper_Abstract
38
  public function getSenderParams(Mage_Sales_Model_Order $order, $payment)
39
  {
40
  $digits = new Zend_Filter_Digits();
41
-
42
- $cpf = $this->_getCustomerCpfValue($order->getCustomer(),$payment);
43
 
44
  //telefone
45
  $phone = $this->_extractPhone($order->getBillingAddress()->getTelephone());
@@ -53,6 +52,10 @@ class RicardoMartins_PagSeguro_Helper_Params extends Mage_Core_Helper_Abstract
53
  'senderAreaCode'=> $phone['area'],
54
  'senderPhone' => $phone['number'],
55
  );
 
 
 
 
56
 
57
  return $retorno;
58
  }
@@ -67,7 +70,7 @@ class RicardoMartins_PagSeguro_Helper_Params extends Mage_Core_Helper_Abstract
67
  {
68
  $digits = new Zend_Filter_Digits();
69
 
70
- $cpf = $this->_getCustomerCpfValue($order->getCustomer(),$payment);
71
 
72
 
73
  //dados
@@ -244,6 +247,11 @@ class RicardoMartins_PagSeguro_Helper_Params extends Mage_Core_Helper_Abstract
244
  {
245
  $digits = new Zend_Filter_Digits();
246
  $phone = $digits->filter($phone);
 
 
 
 
 
247
  $original_phone = $phone;
248
 
249
  $phone = preg_replace('/^(\d{2})(\d{7,9})$/','$1-$2',$phone);
@@ -327,12 +335,12 @@ class RicardoMartins_PagSeguro_Helper_Params extends Mage_Core_Helper_Abstract
327
 
328
  /**
329
  * Retorna o CPF do cliente baseado na selecao realizada na configuração do modulo
330
- * @param Mage_Customer_Model_Customer $customer
331
  * @param Mage_Payment_Model_Method_Abstract $payment
332
  *
333
  * @return mixed
334
  */
335
- private function _getCustomerCpfValue(Mage_Customer_Model_Customer $customer, $payment)
336
  {
337
  $customer_cpf_attribute = Mage::getStoreConfig('payment/pagseguro/customer_cpf_attribute');
338
 
@@ -342,8 +350,18 @@ class RicardoMartins_PagSeguro_Helper_Params extends Mage_Core_Helper_Abstract
342
  return $payment['additional_information'][$payment->getMethod().'_cpf'];
343
  }
344
  }
 
 
 
 
 
 
 
345
 
346
- $cpf = $customer->getResource()->getAttribute($customer_cpf_attribute)->getFrontend()->getValue($customer);
 
 
 
347
 
348
  return $cpf;
349
  }
38
  public function getSenderParams(Mage_Sales_Model_Order $order, $payment)
39
  {
40
  $digits = new Zend_Filter_Digits();
41
+ $cpf = $this->_getCustomerCpfValue($order,$payment);
 
42
 
43
  //telefone
44
  $phone = $this->_extractPhone($order->getBillingAddress()->getTelephone());
52
  'senderAreaCode'=> $phone['area'],
53
  'senderPhone' => $phone['number'],
54
  );
55
+ if(strlen($retorno['senderCPF']) > 11){
56
+ $retorno['senderCNPJ'] = $retorno['senderCPF'];
57
+ unset($retorno['senderCPF']);
58
+ }
59
 
60
  return $retorno;
61
  }
70
  {
71
  $digits = new Zend_Filter_Digits();
72
 
73
+ $cpf = $this->_getCustomerCpfValue($order,$payment);
74
 
75
 
76
  //dados
247
  {
248
  $digits = new Zend_Filter_Digits();
249
  $phone = $digits->filter($phone);
250
+ //se começar com zero, pula o primeiro digito
251
+ if(substr($phone,0,1) == '0')
252
+ {
253
+ $phone = substr($phone,1,strlen($phone));
254
+ }
255
  $original_phone = $phone;
256
 
257
  $phone = preg_replace('/^(\d{2})(\d{7,9})$/','$1-$2',$phone);
335
 
336
  /**
337
  * Retorna o CPF do cliente baseado na selecao realizada na configuração do modulo
338
+ * @param Mage_Sales_Model_Order $order
339
  * @param Mage_Payment_Model_Method_Abstract $payment
340
  *
341
  * @return mixed
342
  */
343
+ private function _getCustomerCpfValue(Mage_Sales_Model_Order $order, $payment)
344
  {
345
  $customer_cpf_attribute = Mage::getStoreConfig('payment/pagseguro/customer_cpf_attribute');
346
 
350
  return $payment['additional_information'][$payment->getMethod().'_cpf'];
351
  }
352
  }
353
+ $entity = explode('|',$customer_cpf_attribute);
354
+ $cpf = '';
355
+ if(count($entity) == 1 || $entity[0] == 'customer'){
356
+ if(count($entity) == 2){
357
+ $customer_cpf_attribute = $entity[1];
358
+ }
359
+ $customer = $order->getCustomer();
360
 
361
+ $cpf = $customer->getData($customer_cpf_attribute);
362
+ }else if(count($entity) == 2 && $entity[0] == 'billing' ){ //billing
363
+ $cpf = $order->getShippingAddress()->getData($entity[1]);
364
+ }
365
 
366
  return $cpf;
367
  }
app/code/community/RicardoMartins/PagSeguro/Model/Abstract.php CHANGED
@@ -99,9 +99,13 @@ class RicardoMartins_PagSeguro_Model_Abstract extends Mage_Payment_Model_Method_
99
  'token'=>$helper->getToken(),
100
  'email'=> $helper->getMerchantEmail(),
101
  ));
 
102
  $client->request();
103
- $helper->writeLog(sprintf('Retorno do Pagseguro para notificationCode %s: %s', $notificationCode, $client->getLastResponse()->getBody()));
104
- return simplexml_load_string($client->getLastResponse()->getBody());
 
 
 
105
  }
106
 
107
  /**
@@ -173,25 +177,32 @@ class RicardoMartins_PagSeguro_Model_Abstract extends Mage_Payment_Model_Method_
173
  public function callApi($params, $payment)
174
  {
175
  $helper = Mage::helper('ricardomartins_pagseguro');
 
 
 
 
176
  $params = $this->_convertEnconding($params);
177
- $client = new Zend_Http_Client($helper->getWsUrl('transactions'));
178
- $client->setMethod(Zend_Http_Client::POST);
179
- $client->setConfig(array('timeout'=>45));
180
-
181
- $client->setParameterPost($params); //parametros enviados via POST
182
-
183
  $helper->writeLog('Parametros sendo enviados para API (/transactions): '. var_export($params,true));
 
 
 
 
 
 
 
184
  try{
185
- $response = $client->request(); //faz o request
 
186
  }catch(Exception $e){
187
  Mage::throwException('Falha na comunicação com Pagseguro (' . $e->getMessage() . ')');
188
  }
189
 
190
- $response = $client->getLastResponse()->getBody();
191
  $helper->writeLog('Retorno PagSeguro (/transactions): ' . var_export($response,true));
192
 
193
  libxml_use_internal_errors(true);
194
- $xml = simplexml_load_string($response);
195
  if(false === $xml){
196
  switch($response){
197
  case 'Unauthorized':
@@ -201,12 +212,11 @@ class RicardoMartins_PagSeguro_Model_Abstract extends Mage_Payment_Model_Method_
201
  $helper->writeLog('Acesso não autorizado à Api Pagseguro. Verifique se você tem permissão para usar este serviço. Retorno: ' . var_export($response,true));
202
  break;
203
  default:
204
- $helper->writeLog('Retorno inesperado do PagSeguro. Retorno: ' . var_export($response,true));
205
  }
206
  Mage::throwException('Houve uma falha ao processar seu pedido/pagamento. Por favor entre em contato conosco.');
207
  }
208
-
209
-
210
  return $xml;
211
  }
212
 
@@ -224,4 +234,21 @@ class RicardoMartins_PagSeguro_Model_Abstract extends Mage_Payment_Model_Method_
224
  }
225
  return $params;
226
  }
227
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99
  'token'=>$helper->getToken(),
100
  'email'=> $helper->getMerchantEmail(),
101
  ));
102
+
103
  $client->request();
104
+ $resposta = $client->getLastResponse()->getBody();
105
+
106
+ $helper->writeLog(sprintf('Retorno do Pagseguro para notificationCode %s: %s', $notificationCode, $resposta));
107
+
108
+ return simplexml_load_string(trim($resposta));
109
  }
110
 
111
  /**
177
  public function callApi($params, $payment)
178
  {
179
  $helper = Mage::helper('ricardomartins_pagseguro');
180
+ $useapp = $helper->getLicenseType() == 'app';
181
+ if($useapp){
182
+ $params['public_key'] = Mage::getStoreConfig('payment/pagseguropro/key');
183
+ }
184
  $params = $this->_convertEnconding($params);
185
+ $params_string = $this->_convertToCURLString($params);
186
+
 
 
 
 
187
  $helper->writeLog('Parametros sendo enviados para API (/transactions): '. var_export($params,true));
188
+
189
+ $ch = curl_init();
190
+ curl_setopt($ch,CURLOPT_URL, $helper->getWsUrl('transactions'));
191
+ curl_setopt($ch,CURLOPT_POST, count($params));
192
+ curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
193
+ curl_setopt($ch,CURLOPT_POSTFIELDS, $params_string);
194
+
195
  try{
196
+ $response = curl_exec($ch);
197
+ curl_close($ch);
198
  }catch(Exception $e){
199
  Mage::throwException('Falha na comunicação com Pagseguro (' . $e->getMessage() . ')');
200
  }
201
 
 
202
  $helper->writeLog('Retorno PagSeguro (/transactions): ' . var_export($response,true));
203
 
204
  libxml_use_internal_errors(true);
205
+ $xml = simplexml_load_string(trim($response));
206
  if(false === $xml){
207
  switch($response){
208
  case 'Unauthorized':
212
  $helper->writeLog('Acesso não autorizado à Api Pagseguro. Verifique se você tem permissão para usar este serviço. Retorno: ' . var_export($response,true));
213
  break;
214
  default:
215
+ $helper->writeLog('Retorno inesperado do PagSeguro. Retorno: ' . $response);
216
  }
217
  Mage::throwException('Houve uma falha ao processar seu pedido/pagamento. Por favor entre em contato conosco.');
218
  }
219
+
 
220
  return $xml;
221
  }
222
 
234
  }
235
  return $params;
236
  }
237
+
238
+ /**
239
+ * Converte para um única string os valores a serem enviados à api (já convertidos para ISO-8859-1)
240
+ * @param array $params
241
+ *
242
+ * @return string
243
+ */
244
+ protected function _convertToCURLString(array $params)
245
+ {
246
+ $fields_string = '';
247
+ foreach($params as $k => $v)
248
+ {
249
+ $fields_string .= $k.'='.urlencode($v).'&';
250
+ }
251
+
252
+ return rtrim($fields_string, '&');
253
+ }
254
+ }
app/code/community/RicardoMartins/PagSeguro/Model/Payment/Cc.php CHANGED
@@ -20,9 +20,8 @@ class RicardoMartins_PagSeguro_Model_Payment_Cc extends RicardoMartins_PagSeguro
20
  if (empty($quote)){
21
  return $is_available;
22
  }
23
- if (Mage::getStoreConfigFlag("payment/pagseguro_cc/group_restriction")
24
- == false) {
25
- return true;
26
  }
27
 
28
  $current_group_id = $quote->getCustomerGroupId ();
20
  if (empty($quote)){
21
  return $is_available;
22
  }
23
+ if (Mage::getStoreConfigFlag("payment/pagseguro_cc/group_restriction") == false) {
24
+ return $is_available;
 
25
  }
26
 
27
  $current_group_id = $quote->getCustomerGroupId ();
app/code/community/RicardoMartins/PagSeguro/Model/Source/Customer/Cpf.php CHANGED
@@ -14,7 +14,14 @@ class RicardoMartins_PagSeguro_Model_Source_Customer_Cpf
14
 
15
  foreach($fields as $key => $value) {
16
  if(!is_null($value['frontend_label'])) {
17
- $options[$value['frontend_label']] = array('value' => $value['attribute_code'], 'label' => $value['frontend_label'] . ' (' . $value['attribute_code'] . ')');
 
 
 
 
 
 
 
18
  }
19
  }
20
 
14
 
15
  foreach($fields as $key => $value) {
16
  if(!is_null($value['frontend_label'])) {
17
+ $options['customer|'.$value['frontend_label']] = array('value' => 'customer|'.$value['attribute_code'], 'label' => 'Customer: '.$value['frontend_label'] . ' (' . $value['attribute_code'] . ')');
18
+ }
19
+ }
20
+
21
+ $address_fields = Mage::helper('ricardomartins_pagseguro/internal')->getFields('customer_address');
22
+ foreach($address_fields as $key => $value) {
23
+ if(!is_null($value['frontend_label'])) {
24
+ $options['address|'.$value['frontend_label']] = array('value' => 'billing|'.$value['attribute_code'], 'label' => 'Billing: '.$value['frontend_label'] . ' (' . $value['attribute_code'] . ')');
25
  }
26
  }
27
 
app/code/community/RicardoMartins/PagSeguro/controllers/AjaxController.php CHANGED
@@ -8,7 +8,7 @@ class RicardoMartins_PagSeguro_AjaxController extends Mage_Core_Controller_Front
8
  {
9
  $total = Mage::helper('checkout/cart')->getQuote()->getGrandTotal();
10
 
11
- $this->getResponse()->setHeader('Content-type','application/json');
12
  $this->getResponse()->setBody(json_encode(array('total'=>$total)));
13
  }
14
 
@@ -17,7 +17,7 @@ class RicardoMartins_PagSeguro_AjaxController extends Mage_Core_Controller_Front
17
  $_helper = Mage::helper('ricardomartins_pagseguro');
18
  $session_id = $_helper->getSessionId();
19
 
20
- $this->getResponse()->setHeader('Content-type','application/json');
21
  $this->getResponse()->setBody(json_encode(array('session_id'=>$session_id)));
22
  }
23
- }
8
  {
9
  $total = Mage::helper('checkout/cart')->getQuote()->getGrandTotal();
10
 
11
+ $this->getResponse()->setHeader('Content-type','application/json', true);
12
  $this->getResponse()->setBody(json_encode(array('total'=>$total)));
13
  }
14
 
17
  $_helper = Mage::helper('ricardomartins_pagseguro');
18
  $session_id = $_helper->getSessionId();
19
 
20
+ $this->getResponse()->setHeader('Content-type','application/json', true);
21
  $this->getResponse()->setBody(json_encode(array('session_id'=>$session_id)));
22
  }
23
+ }
app/code/community/RicardoMartins/PagSeguro/controllers/NotificationController.php CHANGED
@@ -2,13 +2,13 @@
2
  class RicardoMartins_PagSeguro_NotificationController extends Mage_Core_Controller_Front_Action
3
  {
4
  /**
5
- * Recebe e processa as notificações do pagseguro quando há alguma notificacao.
6
  * Não esqueça de configurar a url de retorno como http://sualoja.com.br/pagseguro/notification
7
  */
8
  public function indexAction()
9
  {
10
  /** @var RicardoMartins_PagSeguro_Model_Abstract $model */
11
- Mage::helper('ricardomartins_pagseguro')->writeLog('Recebido notificacao do pagseguro com os parametros:'. var_export($this->getRequest()->getParams(),true));
12
  $model = Mage::getModel('ricardomartins_pagseguro/abstract');
13
  $response = $model->getNotificationStatus($this->getRequest()->getPost('notificationCode'));
14
  $model->proccessNotificatonResult($response);
2
  class RicardoMartins_PagSeguro_NotificationController extends Mage_Core_Controller_Front_Action
3
  {
4
  /**
5
+ * Recebe e processa as notificações do pagseguro quando há alguma notificação.
6
  * Não esqueça de configurar a url de retorno como http://sualoja.com.br/pagseguro/notification
7
  */
8
  public function indexAction()
9
  {
10
  /** @var RicardoMartins_PagSeguro_Model_Abstract $model */
11
+ Mage::helper('ricardomartins_pagseguro')->writeLog('Notificação recebida do pagseguro com os parametros:'. var_export($this->getRequest()->getParams(),true));
12
  $model = Mage::getModel('ricardomartins_pagseguro/abstract');
13
  $response = $model->getNotificationStatus($this->getRequest()->getPost('notificationCode'));
14
  $model->proccessNotificatonResult($response);
app/code/community/RicardoMartins/PagSeguro/controllers/TestController.php CHANGED
@@ -2,122 +2,25 @@
2
  class RicardoMartins_PagSeguro_TestController extends Mage_Core_Controller_Front_Action
3
  {
4
  public function indexAction(){
5
-
6
- $client = new Zend_Http_Client('https://ws.pagseguro.uol.com.br/v2/sessions/');
7
- $client->setMethod(Zend_Http_Client::POST);
8
- $client->setParameterGet('email','ricardo@ricardomartins.info');
9
- $client->setParameterGet('token','9F79900A9B454CE6B18613D7224C0621');
10
- $client->request();
11
-
12
- var_dump($client->getLastResponse()->getBody());
13
- }
14
-
15
- public function xmlAction()
16
- {
17
- echo Mage::helper('ricardomartins_pagseguro')->_getToken();
18
  }
19
 
20
-
21
- public function formAction()
22
- {
23
- $this->loadLayout();
24
-
25
- $scriptblock = Mage::app()->getLayout()->createBlock('core/text', 'js_pagseguro');
26
- $scriptblock->setText(sprintf(
27
- '<script type="text/javascript" src="%s"></script>
28
- <script type="text/javascript" src="/js/pagseguro/pagseguro.js"/>
29
- ',
30
- Mage::helper('ricardomartins_pagseguro')->getJsUrl()
31
- ));
32
- $head = Mage::app()->getLayout()->getBlock('after_body_start');
33
- $head->append($scriptblock);
34
-
35
- $_helper = Mage::helper('ricardomartins_pagseguro');
36
-
37
-
38
- $html =<<<EOF
39
-
40
- <form id="meu_form" action="#">
41
- <li>
42
- <label for="pagseguro_cc_cc_number" class="required"><em>*</em>Credit Card Number</label>
43
- <div class="input-box">
44
- <input autocomplete="off" id="pagseguro_cc_cc_number" name="payment[ps_cc_number]" title="Credit Card Number" class="input-text validate-cc-number validate-cc-type" value="" type="text">
45
- <span id="card-brand"></span>
46
- </div>
47
- </li>
48
- <li id="pagseguro_cc_cc_type_exp_div">
49
- <label for="pagseguro_cc_expiration" class="required"><em>*</em>Expiration Date</label>
50
- <div class="input-box">
51
- <div class="v-fix">
52
- <select autocomplete="off" id="pagseguro_cc_expiration" name="payment[ps_cc_exp_month]" class="month validate-cc-exp required-entry">
53
- <option value="" selected="selected">Month</option>
54
- <option value="1">01 - janeiro</option>
55
- <option value="2">02 - fevereiro</option>
56
- <option value="3">03 - março</option>
57
- <option value="4">04 - abril</option>
58
- <option value="5">05 - maio</option>
59
- <option value="6">06 - junho</option>
60
- <option value="7">07 - julho</option>
61
- <option value="8">08 - agosto</option>
62
- <option value="9">09 - setembro</option>
63
- <option value="10">10 - outubro</option>
64
- <option value="11">11 - novembro</option>
65
- <option value="12">12 - dezembro</option>
66
- </select>
67
- </div>
68
- <div class="v-fix">
69
- <select autocomplete="off" id="pagseguro_cc_expiration_yr" name="payment[ps_cc_exp_year]" class="year required-entry">
70
- <option value="" selected="selected">Year</option>
71
- <option value="2014">2014</option>
72
- <option value="2015">2015</option>
73
- <option value="2016">2016</option>
74
- <option value="2017">2017</option>
75
- <option value="2018">2018</option>
76
- <option value="2019">2019</option>
77
- <option value="2020">2020</option>
78
- <option value="2021">2021</option>
79
- <option value="2022">2022</option>
80
- <option value="2023">2023</option>
81
- <option value="2024">2024</option>
82
- </select>
83
- </div>
84
- </div>
85
- </li>
86
- <li id="pagseguro_cc_cc_type_cvv_div">
87
- <label for="pagseguro_cc_cc_cid" class="required"><em>*</em>Card Verification Number</label>
88
- <div class="input-box">
89
- <div class="v-fix">
90
- <input autocomplete="off" title="Card Verification Number" class="input-text cvv required-entry validate-cc-cvn" id="ps_cc_cid" name="payment[ps_cc_cid]" value="" type="text">
91
- </div>
92
- <a href="#" class="cvv-what-is-this">What is this?</a>
93
- </div>
94
-
95
- <?php #nao remover/alterar ?>
96
- <input type="hidden" name="payment[sender_hash]"/>
97
- <input type="hidden" name="payment[credit_card_token]"/>
98
-
99
-
100
- <input type="submit"/>
101
-
102
-
103
-
104
- </li>
105
- </form>
106
- <script type="text/javascript">
107
- //<![CDATA[
108
-
109
-
110
- PagSeguroDirectPayment.setSessionId('{$_helper->getSessionId()}');
111
-
112
-
113
- //]]>
114
- </script>
115
-
116
- EOF;
117
-
118
- $block = Mage::app()->getLayout()->createBlock('core/text')->setText($html);
119
-
120
- Mage::app()->getLayout()->getBlock('content')->append($block, 'teste');
121
- $this->renderLayout();
122
  }
123
  }
2
  class RicardoMartins_PagSeguro_TestController extends Mage_Core_Controller_Front_Action
3
  {
4
  public function indexAction(){
5
+ $this->getResponse()->setBody('works');
 
 
 
 
 
 
 
 
 
 
 
 
6
  }
7
 
8
+ /**
9
+ * Devolve algumas informações básicas sobre os modulos e suas configurações.
10
+ * Apenas para fim de suporte e auxílio ao lojista.
11
+ * Pode ser removido se assim preferir.
12
+ */
13
+ public function getConfigAction(){
14
+ $info = array();
15
+ $info['RicardoMartins_PagSeguro']['version'] = (string)Mage::getConfig()->getModuleConfig('RicardoMartins_PagSeguro')->version;
16
+ $info['RicardoMartins_PagSeguro']['debug'] = Mage::getStoreConfigFlag('payment/pagseguro/debug');
17
+ $info['RicardoMartins_PagSeguro']['sandbox'] = Mage::getStoreConfigFlag('payment/pagseguro/sandbox');
18
+
19
+ if(Mage::getConfig()->getModuleConfig('RicardoMartins_PagSeguroPro')){
20
+ $info['RicardoMartins_PagSeguroPro']['version'] = (string)Mage::getConfig()->getModuleConfig('RicardoMartins_PagSeguroPro')->version;
21
+ $info['RicardoMartins_PagSeguroPro']['key_type'] = (string)Mage::getStoreConfig('payment/pagseguropro/key_type');
22
+ }
23
+ $this->getResponse()->setHeader('Content-type','application/json');
24
+ $this->getResponse()->setBody(json_encode($info));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  }
26
  }
app/code/community/RicardoMartins/PagSeguro/etc/config.xml CHANGED
@@ -2,7 +2,7 @@
2
  <config>
3
  <modules>
4
  <RicardoMartins_PagSeguro>
5
- <version>1.0.13</version>
6
  </RicardoMartins_PagSeguro>
7
  </modules>
8
  <global>
@@ -72,8 +72,12 @@
72
  <address_number_attribute>street_2</address_number_attribute>
73
  <address_neighborhood_attribute>street_2</address_neighborhood_attribute>
74
  <ws_url>https://ws.pagseguro.uol.com.br/v2/</ws_url>
 
 
75
  <js_url>https://stc.pagseguro.uol.com.br/pagseguro/api/v2/checkout/pagseguro.directpayment.js</js_url>
76
  <sandbox_ws_url>https://ws.sandbox.pagseguro.uol.com.br/v2/</sandbox_ws_url>
 
 
77
  <sandbox_js_url>https://stc.sandbox.pagseguro.uol.com.br/pagseguro/api/v2/checkout/pagseguro.directpayment.js</sandbox_js_url>
78
  </pagseguro>
79
  </payment>
2
  <config>
3
  <modules>
4
  <RicardoMartins_PagSeguro>
5
+ <version>2.0.0</version>
6
  </RicardoMartins_PagSeguro>
7
  </modules>
8
  <global>
72
  <address_number_attribute>street_2</address_number_attribute>
73
  <address_neighborhood_attribute>street_2</address_neighborhood_attribute>
74
  <ws_url>https://ws.pagseguro.uol.com.br/v2/</ws_url>
75
+ <ws_url_app>https://ws.ricardomartins.net.br/pspro/v6/wspagseguro/v2/</ws_url_app>
76
+ <!--<ws_url_app>http://ws.local.com.br/pspro/v6/wspagseguro/v2/</ws_url_app>-->
77
  <js_url>https://stc.pagseguro.uol.com.br/pagseguro/api/v2/checkout/pagseguro.directpayment.js</js_url>
78
  <sandbox_ws_url>https://ws.sandbox.pagseguro.uol.com.br/v2/</sandbox_ws_url>
79
+ <sandbox_ws_url_app>https://ws.ricardomartins.net.br/pspro/v6/wspagseguro/sandbox/v2/</sandbox_ws_url_app>
80
+ <!--<sandbox_ws_url_app>http://ws.local.com.br/pspro/v6/wspagseguro/sandbox/v2/</sandbox_ws_url_app>-->
81
  <sandbox_js_url>https://stc.sandbox.pagseguro.uol.com.br/pagseguro/api/v2/checkout/pagseguro.directpayment.js</sandbox_js_url>
82
  </pagseguro>
83
  </payment>
app/code/community/RicardoMartins/PagSeguro/etc/system.xml CHANGED
@@ -30,14 +30,13 @@
30
  <payment>
31
  <groups>
32
  <pagseguro module="ricardomartins_pagseguro">
33
- <comment><![CDATA[<a href="http://r-martins.github.io/PagSeguro-Magento-Transparente" target="_blank">Precisa de ajuda?</a><br/> Lembre-se de <a href="https://pagseguro.uol.com.br/receba-pagamentos.jhtml#checkout-transparent" target="_blank">solicitar acesso</a> à API transparente.<br/>Para suporte a TEF e Boleto, solicite a <a href="http://r-martins.github.io/PagSeguro-Magento-Transparente/pro" target="_blank">versão PRO</a>.]]></comment>
34
  <label>PagSeguro - Ricardo Martins</label>
35
  <frontend_type>text</frontend_type>
36
  <sort_order>110</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
- <!--<comment><![CDATA[<a href="http://celinks.magento.com/authorize_netRegistration" target="_blank">Click here to sign up for an Authorize.net account</a>]]></comment>-->
41
  <fields>
42
  <merchant_email translate="label">
43
  <label>E-mail</label>
@@ -66,7 +65,7 @@
66
  <show_in_default>1</show_in_default>
67
  <show_in_website>1</show_in_website>
68
  <show_in_store>0</show_in_store>
69
- <comment><![CDATA[No modo de testes, os dados são enviados para sandbox do PagSeguro. Habilite o acesso à Sandbox <a href="http://sandbox.pagseguro.uol.com.br" target="_blank">aqui</a>]]></comment>
70
  </sandbox>
71
  <sandbox_merchant_email translate="label">
72
  <label>E-mail Sandbox</label>
30
  <payment>
31
  <groups>
32
  <pagseguro module="ricardomartins_pagseguro">
33
+ <comment><![CDATA[<a href="http://r-martins.github.io/PagSeguro-Magento-Transparente" target="_blank">Precisa de ajuda?</a><br/> Lembre-se de <a href="https://pagseguro.uol.com.br/receba-pagamentos.jhtml#checkout-transparent" target="_blank">solicitar acesso</a> à API transparente ou <a href="http://r-martins.github.io/PagSeguro-Magento-Transparente/pro/app.html"><strong>autorize sua conta</strong></a> com o modelo de aplicação.<br/>Para suporte a TEF e Boleto, solicite a versão PRO <a href="http://r-martins.github.io/PagSeguro-Magento-Transparente/pro" target="_blank">aqui</a> ou autorize sua conta para o modelo de aplicação.<a href="http://r-martins.github.io/PagSeguro-Magento-Transparente"></a>]]></comment>
34
  <label>PagSeguro - Ricardo Martins</label>
35
  <frontend_type>text</frontend_type>
36
  <sort_order>110</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
  <fields>
41
  <merchant_email translate="label">
42
  <label>E-mail</label>
65
  <show_in_default>1</show_in_default>
66
  <show_in_website>1</show_in_website>
67
  <show_in_store>0</show_in_store>
68
+ <comment><![CDATA[No modo de testes, os dados são enviados para sandbox do PagSeguro. Habilite o acesso à Sandbox <a href="http://sandbox.pagseguro.uol.com.br/" target="_blank">aqui</a>]]></comment>
69
  </sandbox>
70
  <sandbox_merchant_email translate="label">
71
  <label>E-mail Sandbox</label>
app/design/frontend/base/default/template/ricardomartins_pagseguro/form/cc/dob.phtml CHANGED
@@ -54,21 +54,21 @@ NOTE: Regarding styles - if we leave it this way, we'll move it to boxes.css
54
  <?php
55
  $this->setDateInput('d',
56
  '<div class="dob-day">
57
- <input type="text" maxlength="2" id="' . $this->getFieldId('day') . '" name="' . $this->getFieldName('day') . '" value="' . $this->getDay() . '" title="' . $this->__('Day') . '" class="input-text validate-custom" ' . $this->getFieldParams() . ' />
58
  <label for="' . $this->getFieldId('day') . '">' . $this->__('DD') . '</label>
59
  </div>'
60
  );
61
 
62
  $this->setDateInput('m',
63
  '<div class="dob-month">
64
- <input type="text" maxlength="2" id="' . $this->getFieldId('month') . '" name="' . $this->getFieldName('month') . '" value="' . $this->getMonth() . '" title="' . $this->__('Month') . '" class="input-text validate-custom" ' . $this->getFieldParams() . ' />
65
  <label for="' . $this->getFieldId('month') . '">' . $this->__('MM') . '</label>
66
  </div>'
67
  );
68
 
69
  $this->setDateInput('y',
70
  '<div class="dob-year">
71
- <input type="text" maxlength="4" id="' . $this->getFieldId('year') . '" name="' . $this->getFieldName('year') . '" value="' . $this->getYear() . '" title="' . $this->__('Year') . '" class="input-text validate-custom" ' . $this->getFieldParams() . ' />
72
  <label for="' . $this->getFieldId('year') . '">' . $this->__('YYYY') . '</label>
73
  </div>'
74
  );
54
  <?php
55
  $this->setDateInput('d',
56
  '<div class="dob-day">
57
+ <input type="text" id="' . $this->getFieldId('day') . '" name="' . $this->getFieldName('day') . '" value="' . $this->getDay() . '" title="' . $this->__('Day') . '" class="input-text validate-custom" ' . $this->getFieldParams() . ' />
58
  <label for="' . $this->getFieldId('day') . '">' . $this->__('DD') . '</label>
59
  </div>'
60
  );
61
 
62
  $this->setDateInput('m',
63
  '<div class="dob-month">
64
+ <input type="text" id="' . $this->getFieldId('month') . '" name="' . $this->getFieldName('month') . '" value="' . $this->getMonth() . '" title="' . $this->__('Month') . '" class="input-text validate-custom" ' . $this->getFieldParams() . ' />
65
  <label for="' . $this->getFieldId('month') . '">' . $this->__('MM') . '</label>
66
  </div>'
67
  );
68
 
69
  $this->setDateInput('y',
70
  '<div class="dob-year">
71
+ <input type="text" id="' . $this->getFieldId('year') . '" name="' . $this->getFieldName('year') . '" value="' . $this->getYear() . '" title="' . $this->__('Year') . '" class="input-text validate-custom" ' . $this->getFieldParams() . ' />
72
  <label for="' . $this->getFieldId('year') . '">' . $this->__('YYYY') . '</label>
73
  </div>'
74
  );
app/design/frontend/base/default/template/ricardomartins_pagseguro/form/directpayment.phtml CHANGED
@@ -4,7 +4,6 @@ $_helper = Mage::helper('ricardomartins_pagseguro');
4
  <input type="hidden" name="payment[sender_hash]"/>
5
  <script type="text/javascript">
6
  //<![CDATA[
7
- PagSeguroDirectPayment.setSessionId('<?php echo $_helper->getSessionId();?>');
8
  var iid = setInterval(function()
9
  {
10
  if(typeof PagSeguroDirectPayment != "undefined" && PagSeguroDirectPayment.ready){
4
  <input type="hidden" name="payment[sender_hash]"/>
5
  <script type="text/javascript">
6
  //<![CDATA[
 
7
  var iid = setInterval(function()
8
  {
9
  if(typeof PagSeguroDirectPayment != "undefined" && PagSeguroDirectPayment.ready){
app/locale/pt_BR/RicardoMartins_PagSeguro.csv CHANGED
@@ -51,4 +51,110 @@
51
  "Credit Card Owner's CPF","CPF do Dono do Cartão"
52
  "Credit Card Number","Número do Cartão"
53
  "Your CPF","Seu CPF"
54
- "Send new order email","Enviar e-mail de novo pedido"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
51
  "Credit Card Owner's CPF","CPF do Dono do Cartão"
52
  "Credit Card Number","Número do Cartão"
53
  "Your CPF","Seu CPF"
54
+ "Send new order email","Enviar e-mail de novo pedido"
55
+ "invalid creditcard brand.","Bandeira do cartão inválida"
56
+ "creditcard number with invalid length.","Cartão de crédito com tamanho inválido"
57
+ "invalid date format.","Data com formato inválido"
58
+ "invalid security field.","Campo de segurança inválido"
59
+ "cvv is mandatory.","CVV é obrigatório"
60
+ "security field with invalid length.","Código de segurança com tamanho incorreto"
61
+ "items invalid quantity.","Quantidade inválida de itens"
62
+ "currency is required.","Moeda é obrigatório"
63
+ "currency invalid value: %s","Moeda inválida: %s"
64
+ "reference invalid length: %s","Referência com tamanho inválido: %s"
65
+ "notificationURL invalid length: %s","Tamanho inválido do notificationURL: %s"
66
+ "notificationURL invalid value: %s","Valor inválido do notificationURL: %s"
67
+ "sender email is required.","Email do comprador é obrigatório"
68
+ "sender email invalid length: %s","Tamanho inválido do email do comprador: %s"
69
+ "sender email invalid value: %s","Email do comprador incorreto: %s"
70
+ "sender name is required.","Nome do comprador é obrigatório"
71
+ "sender name invalid length: %s","Nome do comprador com tamanho inválido: %s"
72
+ "sender name invalid value: %s","Nome do comprador com valor inválido: %s"
73
+ "sender cpf invalid value: %s","CPF do comprador inválido"
74
+ "sender area code is required.","Código de área do comprador é obrigatório"
75
+ "sender area code invalid value: %s","Código de área do comprador inválido: %s"
76
+ "sender phone is required.","Telefone do comprador é obrigatório."
77
+ "sender phone invalid value: %s","Telefone do comprador inválido: %s"
78
+ "shipping address postal code is required.","CEP de entrega é obrigatório"
79
+ "shipping address postal code invalid value: %s","CEP de entrega inválido: %s"
80
+ "shipping address street is required.","Endereço de entrega é obrigatório."
81
+ "shipping address street invalid length: %s","Endereço de entrega com tamanho inválido: %s"
82
+ "shipping address number is required.","Número do endereço de entrega é obrigatório."
83
+ "shipping address number invalid length: %s","Número do endereço de entrega com tamanho inválido: %s"
84
+ "shipping address complement invalid length: %s","Complemento do endereço de entrega com tamanho inválido: %s"
85
+ "shipping address district is required.","Bairro de entrega é obrigatório"
86
+ "shipping address district invalid length: %s","Bairro de entrega com tamanho inválido: %s"
87
+ "shipping address city is required.","Cidade de entrega é obrigatório."
88
+ "shipping address city invalid length: %s","Cidade de entrega com tamanho inválido: %s"
89
+ "shipping address state is required.","Estado de entrega é obrigatório."
90
+ "shipping address state invalid value: %s","Estado de entrega com valor inválido: %s"
91
+ "shipping address country is required.","País de entrega é obrigatório."
92
+ "shipping address country invalid length: %s","País de entrega com tamanho inválido: %s"
93
+ "credit card token is required.","Token do cartão é obrigatório."
94
+ "installment quantity is required.","Quantidade de parcelas é obrigatório."
95
+ "installment quantity invalid value: %s","Quantidade de parcelas incorreto: %s"
96
+ "installment value is required.","Valor da parcela é obrigatório."
97
+ "installment value invalid value: %s","Valor da parcela inválido: %s"
98
+ "credit card holder name is required.","Nome do titular do cartão é obrigatório."
99
+ "credit card holder name invalid length: %s","Nome do titular do cartão com tamanho inválido: %s"
100
+ "credit card holder name invalid value: %s","Nome do titular do cartão incorreto: %s"
101
+ "credit card holder cpf is required.","CPF do titular do cartão é obrigatório."
102
+ "credit card holder cpf invalid value: %s","CPF do titular do cartão inválido: %s"
103
+ "credit card holder birthdate is required.","Data de nascimento do titular do cartão é obrigatório."
104
+ "credit card holder birthdate invalid value: %s","Data de nascimento do titular do cartão incorreto: %s"
105
+ "credit card holder area code is required.","Código de área do titular do cartão é obrigatório."
106
+ "credit card holder area code invalid value: %s","Código de área do titular do cartão inválido: %s"
107
+ "credit card holder phone is required.","Telefone do titular do cartão é obrigatório."
108
+ "credit card holder phone invalid value: %s","Telefone do titular do cartão inválido: %s"
109
+ "billing address postal code is required.","CEP de cobrança é obrigatório."
110
+ "billing address postal code invalid value: %s","CEP de cobrança inválido: %s"
111
+ "billing address street is required.","Endereço de cobrança é obrigatório."
112
+ "billing address street invalid length: %s","Endereço de cobrança com tamanho inválido: %s"
113
+ "billing address number is required.","Número do endereço de cobrança é obrigatório."
114
+ "billing address number invalid length: %s","Número do endereço de cobrança com tamanho inválido: %s"
115
+ "billing address complement invalid length: %s","Complemento do endereço de cobrança com tamanho inválido: %s"
116
+ "billing address district is required.","Bairro do endereço de cobrança é obrigatório."
117
+ "billing address district invalid length: %s","Bairro do endereço de cobrança com tamanho inválido: %s"
118
+ "billing address city is required.","Cidade do endereço de cobrança é obrigatório."
119
+ "billing address city invalid length: %s","Cidade do endereço de cobrança com tamanho inválido: %s"
120
+ "billing address state is required.","Estado do endereço de cobrança é obrigatório."
121
+ "billing address state invalid value: %s","Estado do endereço de cobrança inválido: %s"
122
+ "billing address country is required.","País do endereço de cobrança é obrigatório."
123
+ "billing address country invalid length: %s","País do endereço de cobrança com tamanho inválido: %s"
124
+ "receiver email invalid length: %s","E-mail do vendedor com tamanho inválido: %s"
125
+ "receiver email invalid value: %s","E-mail do vendedor inválido: %s"
126
+ "item id is required.","Id do item é obrigatório."
127
+ "item id invalid length: %s","Id do item possuí tamanho inválido: %s"
128
+ "item description is required.","Descrição do item é obrigatório."
129
+ "item description invalid length: %s","Descrição do item com tamanho inválido: %s"
130
+ "item quantity is required.","Quantidade do item é obrigatório."
131
+ "item quantity out of range: %s","Quantidade do item fora do permitido: %s"
132
+ "item quantity invalid value: %s","Quantidade do item inválida: %s"
133
+ "item amount is required.","Valor do item é obrigatório."
134
+ "item amount invalid pattern: %s. Must fit the patern: \\d+.\\d\{2\}","Valor do item deve seguir o padrão: \\d+.\\d\{2\}"
135
+ "item amount out of range: %s","Valor do item fora do permitido: %s"
136
+ "sender is related to receiver.","O comprador está relacionado ao vendedor."
137
+ "invalid receiver: %s, verify receiver's account status and if it is a seller's account.","Vendedor inválido: %s, verifique se a conta do lojista é uma conta de vendedor."
138
+ "payment method unavailable.","Método de pagamento não disponível."
139
+ "cart total amount out of range: %s","Valor total do carrinho fora do permitido: %s"
140
+ "invalid credit card data.","Dados de cartão inválidos."
141
+ "sender hash invalid.","Hash de comprador inválido."
142
+ "credit card brand is not accepted.","Bandeira de cartão não aceita."
143
+ "shipping type invalid pattern: %s","Tipo de frete for do padrão: %s"
144
+ "shipping cost invalid pattern: %s","Custo de frete fora dos padrões: %s"
145
+ "shipping cost out of range: %s","Custo de frete fora dos limites: %s"
146
+ "cart total value is negative: %s","Valor total do carrinho é negativo: %s"
147
+ "extra amount invalid pattern: %s. Must fit the patern: -?\\d+.\\d\{2\}","Valor extra incompatível: %s. Deve seguir o padrão: -?\\d+.\\d{2\}"
148
+ "payment mode invalid value, valid values are default and gateway.","Modo de pagamento inválido. Valores válidos são: default e gateway."
149
+ "payment method invalid value, valid values are creditCard, boleto e eft.","Método de pagamento inválido. Valores aceitos são: creditCard, boleto e eft"
150
+ "shipping cost was provided, shipping address must be complete.","Valor de frete foi especificado, endereço de entrega deve estar completo."
151
+ "sender information was provided, email must be provided too.","Dados do comprador foram especificados, email deve ser especificado também."
152
+ "credit card holder is incomplete.","Nome do titular do cartão está incompleto."
153
+ "shipping address information was provided, sender email must be provided too.","Endereço de entrega foi fornecido, e-mail do comprador também deve ser fornecido."
154
+ "eft bank is required.","Banco para tef é obrigatório."
155
+ "eft bank is not accepted.","Banco não aceito para tef."
156
+ "sender born date invalid value: %s","Data de nascimento do comprador inválida: %s"
157
+ "sender email invalid domain: %s. You must use an email @sandbox.pagseguro.com.br","Domínio do e-mail do comprador inválido: %s. Você deve usar um e-mail @sandbox.pagseguro.com.br"
158
+ "installment quantity out of range: %s. The value must be greater than zero.","Quantidade de parcelas fora do limite: %s. O valor deve ser maior que zero."
159
+ "sender is blocked.","Comprador está bloqueado."
160
+ "credit card token invalid.","Token de cartão de crédito inválido."
js/pagseguro/pagseguro.js CHANGED
@@ -2,8 +2,9 @@
2
  * PagSeguro Transparente para Magento
3
  * @author Ricardo Martins <ricardo@ricardomartins.net.br>
4
  * @link https://github.com/r-martins/PagSeguro-Magento-Transparente
5
- * @version 0.2.2
6
  */
 
7
  document.observe("dom:loaded", function() {
8
  RMPagSeguro = function RMPagSeguro(){};
9
  RMPagSeguro.updateSenderHash = function(){
@@ -95,8 +96,8 @@ document.observe("dom:loaded", function() {
95
  var ccCvvElm = $$('input[name="payment[ps_cc_cid]"]').first();
96
 
97
  Element.observe(ccNumElm,'keyup',function(e){RMPagSeguro.updateCreditCardToken();});
98
- Element.observe(ccExpMoElm,'keyup',function(e){RMPagSeguro.updateCreditCardToken();});
99
- Element.observe(ccExpYrElm,'keyup',function(e){RMPagSeguro.updateCreditCardToken();});
100
  Element.observe(ccCvvElm,'keyup',function(e){RMPagSeguro.updateCreditCardToken();});
101
  }
102
 
@@ -117,7 +118,7 @@ document.observe("dom:loaded", function() {
117
  parcelsDrop.length = 0;
118
  for(var x=0; x < b.length; x++){
119
  var option = document.createElement('option');
120
- option.text = b[x].quantity + "x de R$" + b[x].installmentAmount.toString().replace('.',',');
121
  option.text += (b[x].interestFree)?" sem juros":" com juros";
122
  option.value = b[x].quantity + "|" + b[x].installmentAmount;
123
  parcelsDrop.add(option);
@@ -159,5 +160,7 @@ document.observe("dom:loaded", function() {
159
  }
160
  });
161
  }
162
-
 
163
  });
 
2
  * PagSeguro Transparente para Magento
3
  * @author Ricardo Martins <ricardo@ricardomartins.net.br>
4
  * @link https://github.com/r-martins/PagSeguro-Magento-Transparente
5
+ * @version 2.0.0
6
  */
7
+ (function() {
8
  document.observe("dom:loaded", function() {
9
  RMPagSeguro = function RMPagSeguro(){};
10
  RMPagSeguro.updateSenderHash = function(){
96
  var ccCvvElm = $$('input[name="payment[ps_cc_cid]"]').first();
97
 
98
  Element.observe(ccNumElm,'keyup',function(e){RMPagSeguro.updateCreditCardToken();});
99
+ Element.observe(ccExpMoElm,'change',function(e){RMPagSeguro.updateCreditCardToken();});
100
+ Element.observe(ccExpYrElm,'change',function(e){RMPagSeguro.updateCreditCardToken();});
101
  Element.observe(ccCvvElm,'keyup',function(e){RMPagSeguro.updateCreditCardToken();});
102
  }
103
 
118
  parcelsDrop.length = 0;
119
  for(var x=0; x < b.length; x++){
120
  var option = document.createElement('option');
121
+ option.text = b[x].quantity + "x de R$" + b[x].installmentAmount.toFixed(2).toString().replace('.',',');
122
  option.text += (b[x].interestFree)?" sem juros":" com juros";
123
  option.value = b[x].quantity + "|" + b[x].installmentAmount;
124
  parcelsDrop.add(option);
160
  }
161
  });
162
  }
163
+ window.RMPagSeguro = RMPagSeguro;
164
+ RMPagSeguro.updateSessionId();
165
  });
166
+ }());
package.xml CHANGED
@@ -1,7 +1,7 @@
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>RicardoMartins_PagSeguro</name>
4
- <version>1.0.13</version>
5
  <stability>stable</stability>
6
  <license>MIT</license>
7
  <channel>community</channel>
@@ -13,9 +13,9 @@ Os dados do cart&#xE3;o s&#xE3;o enviados para o site do pagseguro de forma segu
13
  &#xD;
14
  Os bugs devem ser reportador na &#xE1;rea de Issues no github do projeto em https://github.com/r-martins/PagSeguro-Magento-Transparente</notes>
15
  <authors><author><name>Ricardo Martins</name><user>MAG001517858</user><email>ricardo@ricardomartins.info</email></author></authors>
16
- <date>2014-10-23</date>
17
- <time>00:08:27</time>
18
- <contents><target name="magecommunity"><dir name="RicardoMartins"><dir name="PagSeguro"><dir name="Block"><dir name="Form"><dir name="Cc"><file name="Dob.php" hash="ed45c9f5576c289897eb5c86a46c6d85"/></dir><file name="Cc.php" hash="3ec300291bfb59a545bfb99a23f2d670"/><file name="Directpayment.php" hash="937273e541d362f353b2bde87c041631"/><dir name="Info"><file name="Cc.php" hash="ef4952bfb9d12dae0b6ce13afeb0d1bb"/></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="57cbe8b75ae926b3f2e7561e0f191184"/><file name="Internal.php" hash="fbf64a95060a3d2f47ef44bde57a5c70"/><file name="Params.php" hash="40f9780ced1f4545441a66226432daee"/></dir><dir name="Model"><file name="Abstract.php" hash="5d82cd2de41bff2c5e78dd3dc31f593b"/><file name="Observer.php" hash="e709c92bc86416ffdcfe2fda5b8a4d37"/><dir name="Payment"><file name="Cc.php" hash="ecfec49878d375d701068be6d4526740"/></dir><dir name="Source"><dir name="Customer"><dir name="Address"><dir name="Attributes"><file name="Optional.php" hash="f25cdc6fe64c4e815cc9550e1d8f0977"/></dir><file name="Attributes.php" hash="01b0c102f051ec79fcf09feef3c79a63"/></dir><file name="Attributes.php" hash="4632cc4e9a67ef1d2633058def2c2e03"/><file name="Cpf.php" hash="037bd96ec4975c3587295e6bc1c2f43c"/><file name="Dob.php" hash="ec1b44beafb11cd5dc30b8fe1aea2a74"/></dir><file name="Paymentmethods.php" hash="5ea1877c9f73a6dec6bc91900309a5a5"/></dir><dir name="System"><dir name="Config"><dir name="Source"><dir name="Customer"><file name="Groups.php" hash="9649812c9f20e055ed1cb9fd92fbe656"/></dir></dir></dir></dir></dir><dir name="controllers"><file name="AjaxController.php" hash="e95043b5da35be441bf8b1e8f64007d1"/><file name="NotificationController.php" hash="47641a62f0d1850ea7711d997bfa1fa5"/><file name="TestController.php" hash="b0d6a8e347b45f3013435a4c2ac4a16b"/></dir><dir name="etc"><file name="config.xml" hash="c6bf384c6acddfda85a1e951e360b278"/><file name="system.xml" hash="bfb232212cbae79463cf74202f20b8f0"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="RicardoMartins_PagSeguro.xml" hash="82d8294eccac1fb4047f27566b0c9f2a"/></dir></target><target name="magelocale"><dir name="pt_BR"><file name="RicardoMartins_PagSeguro.csv" hash="bc2444ea954caf1b63603c37cfabedff"/></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="pagseguro"><dir><dir name="selo"><file name="selo01_160x90.gif" hash="e6729bb969abb20588f134f7d29ea0ec"/><file name="selo01_200x60.gif" hash="e91ed131018bae7d9abc2cc1a72f539b"/><file name="selo01_300x60.gif" hash="13b07e35250b30a61c86c98815e3310c"/><file name="selo02_160x90.gif" hash="4e65530d2c42bae4e5fab617a4d0afdf"/><file name="selo02_200x60.gif" hash="ba629a85cef8982423c7679a4875283c"/><file name="selo02_300x60.gif" hash="5827aca40455f22caffee1392917f16c"/><file name="selo03_160x90.gif" hash="e3c69ace0991d7841728c6203fc305bf"/><file name="selo03_200x60.gif" hash="63135b65df64a70629748d66f5c0c453"/><file name="selo03_300x60.gif" hash="e88f1529f2d27d4732cd7c374752618e"/><file name="selo04_160x90.gif" hash="8e71cb1942c15427ba96ac21aacdb9d6"/><file name="selo04_200x60.gif" hash="f08b80b40541e35491a8d966cb420c78"/><file name="selo04_300x60.gif" hash="43f9fc4ad730111654777c26059e9fbf"/></dir></dir></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="ricardomartins_pagseguro"><dir><dir name="form"><dir name="cc"><file name="dob.phtml" hash="ed953a0e3ae788025653c7318e7c5777"/></dir><file name="cc.phtml" hash="fef544ca8afd619526b9ea2a9d19e7e5"/><file name="directpayment.phtml" hash="e4c2ed8d53d1334f6715f3c6fb638369"/><dir name="info"><file name="cc.phtml" hash="0a3aa78e0775cd51bb7a168b813dd466"/></dir></dir></dir></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="template"><dir name="ricardomartins_pagseguro"><dir><dir name="form"><file name="directpayment.phtml" hash="d7f02da712e3bb310a6f785ebc36e3d3"/><dir name="info"><file name="cc.phtml" hash="0a3aa78e0775cd51bb7a168b813dd466"/></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mageweb"><dir name="js"><dir name="pagseguro"><file name="pagseguro.js" hash="06ad1084da010774c1cf045944b3797a"/></dir></dir></target></contents>
19
  <compatible/>
20
  <dependencies><required><php><min>5.2.1</min><max>5.6.16</max></php></required></dependencies>
21
  </package>
1
  <?xml version="1.0"?>
2
  <package>
3
  <name>RicardoMartins_PagSeguro</name>
4
+ <version>2.0.0</version>
5
  <stability>stable</stability>
6
  <license>MIT</license>
7
  <channel>community</channel>
13
  &#xD;
14
  Os bugs devem ser reportador na &#xE1;rea de Issues no github do projeto em https://github.com/r-martins/PagSeguro-Magento-Transparente</notes>
15
  <authors><author><name>Ricardo Martins</name><user>MAG001517858</user><email>ricardo@ricardomartins.info</email></author></authors>
16
+ <date>2015-02-20</date>
17
+ <time>11:10:13</time>
18
+ <contents><target name="magecommunity"><dir name="RicardoMartins"><dir name="PagSeguro"><dir name="Block"><dir name="Form"><dir name="Cc"><file name="Dob.php" hash="ed45c9f5576c289897eb5c86a46c6d85"/></dir><file name="Cc.php" hash="3ec300291bfb59a545bfb99a23f2d670"/><file name="Directpayment.php" hash="937273e541d362f353b2bde87c041631"/><dir name="Info"><file name="Cc.php" hash="ef4952bfb9d12dae0b6ce13afeb0d1bb"/></dir></dir></dir><dir name="Helper"><file name="Data.php" hash="86aaa614abfce783a8316bc5bc12dd65"/><file name="Internal.php" hash="fbf64a95060a3d2f47ef44bde57a5c70"/><file name="Params.php" hash="08810ebf498d274f0eadf07fc9ca6a24"/></dir><dir name="Model"><file name="Abstract.php" hash="5d187902514bcf834c0784f93973f37d"/><file name="Observer.php" hash="e709c92bc86416ffdcfe2fda5b8a4d37"/><dir name="Payment"><file name="Cc.php" hash="e90824569c405dd113afbc45ee9b6f17"/></dir><dir name="Source"><dir name="Customer"><dir name="Address"><dir name="Attributes"><file name="Optional.php" hash="f25cdc6fe64c4e815cc9550e1d8f0977"/></dir><file name="Attributes.php" hash="01b0c102f051ec79fcf09feef3c79a63"/></dir><file name="Attributes.php" hash="4632cc4e9a67ef1d2633058def2c2e03"/><file name="Cpf.php" hash="fae15336acbf15a9bf43f7ae5e3fc9f2"/><file name="Dob.php" hash="ec1b44beafb11cd5dc30b8fe1aea2a74"/></dir><file name="Paymentmethods.php" hash="5ea1877c9f73a6dec6bc91900309a5a5"/></dir><dir name="System"><dir name="Config"><dir name="Source"><dir name="Customer"><file name="Groups.php" hash="9649812c9f20e055ed1cb9fd92fbe656"/></dir></dir></dir></dir></dir><dir name="controllers"><file name="AjaxController.php" hash="f4678d73ebdfa7419870d74ca7f651f7"/><file name="NotificationController.php" hash="aff107804410c1573bfbdb9a24194aee"/><file name="TestController.php" hash="dc8831ab4de2bd10d62a3ff9b6397add"/></dir><dir name="etc"><file name="config.xml" hash="457d44b85f793b6ae800e2504d7971f9"/><file name="system.xml" hash="1241d9220e774cb9a76beb3d7052bab6"/></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="RicardoMartins_PagSeguro.xml" hash="82d8294eccac1fb4047f27566b0c9f2a"/></dir></target><target name="magelocale"><dir name="pt_BR"><file name="RicardoMartins_PagSeguro.csv" hash="84a6cc4fb73769ac822c9e8e22b8cec8"/></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="pagseguro"><dir><dir name="selo"><file name="selo01_160x90.gif" hash="e6729bb969abb20588f134f7d29ea0ec"/><file name="selo01_200x60.gif" hash="e91ed131018bae7d9abc2cc1a72f539b"/><file name="selo01_300x60.gif" hash="13b07e35250b30a61c86c98815e3310c"/><file name="selo02_160x90.gif" hash="4e65530d2c42bae4e5fab617a4d0afdf"/><file name="selo02_200x60.gif" hash="ba629a85cef8982423c7679a4875283c"/><file name="selo02_300x60.gif" hash="5827aca40455f22caffee1392917f16c"/><file name="selo03_160x90.gif" hash="e3c69ace0991d7841728c6203fc305bf"/><file name="selo03_200x60.gif" hash="63135b65df64a70629748d66f5c0c453"/><file name="selo03_300x60.gif" hash="e88f1529f2d27d4732cd7c374752618e"/><file name="selo04_160x90.gif" hash="8e71cb1942c15427ba96ac21aacdb9d6"/><file name="selo04_200x60.gif" hash="f08b80b40541e35491a8d966cb420c78"/><file name="selo04_300x60.gif" hash="43f9fc4ad730111654777c26059e9fbf"/></dir></dir></dir></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="template"><dir name="ricardomartins_pagseguro"><dir><dir name="form"><dir name="cc"><file name="dob.phtml" hash="0ea9d4ff767a43d1393ddf1e2882a5da"/></dir><file name="cc.phtml" hash="fef544ca8afd619526b9ea2a9d19e7e5"/><file name="directpayment.phtml" hash="f270246e0c95fedbb86b3337e2f033eb"/><dir name="info"><file name="cc.phtml" hash="0a3aa78e0775cd51bb7a168b813dd466"/></dir></dir></dir></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="template"><dir name="ricardomartins_pagseguro"><dir><dir name="form"><file name="directpayment.phtml" hash="d7f02da712e3bb310a6f785ebc36e3d3"/><dir name="info"><file name="cc.phtml" hash="0a3aa78e0775cd51bb7a168b813dd466"/></dir></dir></dir></dir></dir></dir></dir></dir></target><target name="mageweb"><dir name="js"><dir name="pagseguro"><file name="pagseguro.js" hash="7307814157df2a927163ead731232e6c"/></dir></dir></target></contents>
19
  <compatible/>
20
  <dependencies><required><php><min>5.2.1</min><max>5.6.16</max></php></required></dependencies>
21
  </package>