コード例 #1
0
 public function button()
 {
     $paymentRequest = new \PagSeguroPaymentRequest();
     $paymentRequest->setCurrency('BRL');
     $paymentRequest->setReference($this->options['dataPedido']['codigo']);
     foreach ($this->options['dataPedido']['ComponentProdutosDoPedido'] as $product) {
         $paymentRequest->addItem($product['component_produtos_id'], sprintf('%s %s', $product['ComponentProdutos']['titulo'], $product['ComponentProdutos']['chapeu']), $product['quantity'], $product['preco']);
     }
     if ($this->options['dataPedido']['desconto'] > 0) {
         $paymentRequest->setExtraAmount($this->options['dataPedido']['desconto'] * -1);
     }
     if ($this->options['dataPedido']['shipping_price'] > 0) {
         $paymentRequest->addItem('frete', sprintf('Frete por %s', $this->options['dataPedido']['ComponentFormasDeEntrega']['titulo']), 1, $this->options['dataPedido']['shipping_price']);
     }
     // customer information.
     $paymentRequest->setSender($this->options['dataUsuario']['titulo'], $this->options['dataUsuario']['email'], mb_substr($this->options['dataUsuario']['telefone'], 1, 2), preg_replace('/[^\\d]/', '', mb_substr($this->options['dataUsuario']['telefone'], 5)), 'CPF', $this->options['dataUsuario']['cpf']);
     $paymentRequest->setRedirectUrl($this->options['redirectUrl']);
     $paymentRequest->addParameter('notificationURL', $this->options['notificationURL']);
     try {
         // Register this payment request in PagSeguro to obtain the payment URL to redirect your customer.
         $url = $paymentRequest->register(new \PagSeguroAccountCredentials($this->credentials['email'], $this->credentials['token']));
         return sprintf('<a class="btn btn-fill btn-lg btn-aircode btn-aircode-primary" href="%s" target="_blank">Pagar com PagSeguro</a>', $url);
     } catch (\PagSeguroServiceException $e) {
         return $e->getMessage();
     }
 }
コード例 #2
0
 private function _generatePagSeguroRequestData($order, $notify_url, $return_url)
 {
     $paymentRequest = new PagSeguroPaymentRequest();
     $paymentRequest->setCurrency(PagSeguroCurrencies::getIsoCodeByName('REAL'));
     // currency
     $paymentRequest->setReference($order->order_id);
     // reference
     $paymentRequest->setRedirectURL($return_url);
     // redirect url
     $paymentRequest->setNotificationURL($notify_url);
     // notification url
     $paymentRequest->setItems($this->_generateProductsData($order));
     // products
     $paymentRequest->setExtraAmount($this->_getExtraAmountValues($order));
     // extra values
     $paymentRequest->setSender($this->_generateSenderData($order));
     // sender
     $paymentRequest->setShipping($this->_generateShippingData($order));
     // shipping
     return $paymentRequest;
 }
コード例 #3
0
ファイル: pagseguro.php プロジェクト: vidaecor/opencart
 /**
  * Generate PagSeguro Payment Request
  * @return \PagSeguroPaymentRequest
  */
 private function _generatePagSeguroPaymentRequestObject()
 {
     $paymentRequest = new PagSeguroPaymentRequest();
     $paymentRequest->setCurrency(PagSeguroCurrencies::getIsoCodeByName("REAL"));
     $paymentRequest->setExtraAmount($this->_generateExtraAmount());
     $paymentRequest->setRedirectURL($this->_getPagSeguroRedirectUrl());
     $paymentRequest->setNotificationURL($this->_getPagSeguroNotificationURL());
     $paymentRequest->setItems($this->_generatePagSeguroProductsData());
     $paymentRequest->setSender($this->_generatepagSeguroSenderDataObject());
     $paymentRequest->setShipping($this->_generatePagSeguroShippingDataObject());
     return $paymentRequest;
 }
コード例 #4
0
ファイル: wpwcpagseguro.php プロジェクト: moterra/woocommerce
 /**
  * Use PagSeguroLibrary
  * 
  * @param type $order_id
  * @return type
  */
 public function payment($order)
 {
     global $woocommerce;
     // Instantiate a new payment request
     $paymentRequest = new PagSeguroPaymentRequest();
     // Set cms version
     PagSeguroLibrary::setCMSVersion('woocommerce-v.' . $woocommerce->version);
     // Set plugin version
     PagSeguroLibrary::setModuleVersion('woocommerce-v.' . $this->plugin_version);
     // Set charset
     PagSeguroConfig::setApplicationCharset($this->charset);
     // Sets the currency
     $paymentRequest->setCurrency(PagSeguroCurrencies::getIsoCodeByName("REAL"));
     // Set a reference
     $paymentRequest->setReference($this->invoice_prefix . $order->id);
     //Sets shipping data
     $paymentRequest->setShippingAddress($order->billing_postcode, $order->billing_address_1, '', $order->billing_address_2, '', $order->billing_city, $order->billing_state, $order->billing_country);
     $paymentRequest->setShippingCost($order->order_shipping);
     $paymentRequest->setShippingType(PagSeguroShippingType::getCodeByType('NOT_SPECIFIED'));
     // Sets your customer information.
     $paymentRequest->setSender($order->billing_first_name . ' ' . $order->billing_last_name, $order->billing_email, substr($order->billing_phone, 0, 2), substr($order->billing_phone, 2));
     // Sets the url used by PagSeguro for redirect user after ends checkout process
     if (!empty($this->url_redirect)) {
         $paymentRequest->setRedirectUrl($this->url_redirect);
     } else {
         $paymentRequest->setRedirectUrl($this->get_return_url($order));
     }
     // Sets the url used by PagSeguro for redirect user after ends checkout process
     if (!empty($this->url_notification)) {
         $paymentRequest->setNotificationURL($this->url_notification);
     } else {
         $paymentRequest->setNotificationURL(home_url() . '/index.php?notificationurl=true');
     }
     //Sets Items
     if (sizeof($order->get_items()) > 0) {
         $paymentRequest->setItems($this->setItems($order));
     }
     // Sets the sum of discounts
     $paymentRequest->setExtraAmount(($order->order_discount + $order->cart_discount) * -1 + ($order->order_tax + $order->order_shipping_tax + $order->prices_include_tax));
     try {
         $credentials = new PagSeguroAccountCredentials($this->email, $this->token);
         return $paymentRequest->register($credentials);
     } catch (PagSeguroServiceException $e) {
         $woocommerce->add_error(__('Sorry, unfortunately there was an error during checkout. Please contact the store administrator if the problem persists.', 'wpwcpagseguro'));
         $woocommerce->show_messages();
         wp_die();
     }
 }
コード例 #5
0
 /**
  *  Generates PagSeguro request data
  */
 private function _generatePagSeguroRequestData()
 {
     $payment_request = new PagSeguroPaymentRequest();
     $payment_request->setCurrency(PagSeguroCurrencies::getIsoCodeByName('Real'));
     /* Currency */
     $payment_request->setExtraAmount($this->_getExtraAmountValues());
     /* Extra amount */
     $payment_request->setItems($this->_generateProductsData());
     /* Products */
     $payment_request->setSender($this->_generateSenderData());
     /* Sender */
     $payment_request->setShipping($this->_generateShippingData());
     /* Shipping */
     if (!Tools::isEmpty(Configuration::get('PAGSEGURO_URL_REDIRECT'))) {
         /* Redirect URL */
         $payment_request->setRedirectURL(Configuration::get('PAGSEGURO_URL_REDIRECT'));
     }
     $this->_payment_request = $payment_request;
 }
コード例 #6
0
 /**
  * Generates PagSeguro request data
  * @param VirtueMartCart $cart
  * @param array $order
  * @param TablePaymentmethods $method
  * @return PagSeguroPaymentRequest
  */
 private function _generatePagSeguroRequestData(VirtueMartCart $cart, array $order, TablePaymentmethods $method)
 {
     $paymentRequest = new PagSeguroPaymentRequest();
     $paymentRequest->setCurrency(PagSeguroCurrencies::getIsoCodeByName('REAL'));
     // currency
     $paymentRequest->setReference($order['details']['BT']->virtuemart_order_id);
     // reference
     $paymentRequest->setRedirectURL($this->_getRedirectUrl($method->pagseguro_url_redirect));
     // redirect url
     $paymentRequest->setNotificationURL($this->_getNotificationUrl($method->pagseguro_url_notification));
     // notification url
     $paymentRequest->setItems($this->_generateProductsData($cart));
     // products
     $paymentRequest->setExtraAmount($this->_getExtraAmountValues($cart));
     // extra values
     $sender = isset($order['details']['ST']) && count($order['details']['ST'] > 0) ? $order['details']['ST'] : $order['details']['BT'];
     $paymentRequest->setSender($this->_generateSenderData($sender));
     // sender
     $paymentRequest->setShipping($this->_generateShippingData($sender, $cart->pricesUnformatted['salesPriceShipment']));
     // shipping
     return $paymentRequest;
 }
コード例 #7
0
ファイル: pagseguro.php プロジェクト: huluwa/mariazul
 protected function index()
 {
     $this->language->load('payment/pagseguro');
     $this->data['button_confirm'] = $this->language->get('button_confirm_pagseguro');
     $this->data['text_information'] = $this->language->get('text_information');
     $this->data['text_wait'] = $this->language->get('text_wait');
     require_once DIR_SYSTEM . 'library/PagSeguroLibrary/PagSeguroLibrary.php';
     // Altera a codificação padrão da API do PagSeguro (ISO-8859-1)
     PagSeguroConfig::setApplicationCharset('UTF-8');
     $mb_substr = function_exists("mb_substr") ? true : false;
     $this->load->model('checkout/order');
     $order_info = $this->model_checkout_order->getOrder($this->session->data['order_id']);
     $paymentRequest = new PagSeguroPaymentRequest();
     /* 
      * Dados do cliente
      */
     // Ajuste no nome do comprador para o máximo de 50 caracteres exigido pela API
     $customer_name = trim($order_info['payment_firstname']) . ' ' . trim($order_info['payment_lastname']);
     if ($mb_substr) {
         $customer_name = mb_substr($customer_name, 0, 50, 'UTF-8');
     } else {
         $customer_name = utf8_encode(substr(utf8_decode($customer_name), 0, 50));
     }
     if ($order_info['currency_code'] != "BRL") {
         $this->log->write("PagSeguro :: Pedido " . $this->session->data['order_id'] . ". O PagSeguro só aceita moeda BRL (Real) e a loja está configurada para a moeda " . $order_info['currency_code']);
     }
     $paymentRequest->setCurrency($order_info['currency_code']);
     $paymentRequest->setSenderName(trim($customer_name));
     $paymentRequest->setSenderEmail(trim($order_info['email']));
     // há limitação de 60 caracteres de acordo com a API
     // OpenCart não separa o DDD do número do telefone. Assim, tentamos separá-los.
     $telefone = preg_replace("/[^0-9]/", '', $order_info['telephone']);
     $telefone = ltrim($telefone, '0');
     if (strlen($telefone) >= 9) {
         $paymentRequest->setSenderPhone(substr($telefone, 0, 2), substr($telefone, 2, strlen($telefone) - 1));
     }
     /* 
      * Frete
      */
     $tipo_frete = $this->config->get('pagseguro_tipo_frete');
     if ($tipo_frete) {
         $paymentRequest->setShippingType($tipo_frete);
     } else {
         $paymentRequest->setShippingType(3);
         // 3: Não especificado
     }
     $this->load->model('localisation/zone');
     if ($this->cart->hasShipping()) {
         $zone = $this->model_localisation_zone->getZone($order_info['shipping_zone_id']);
         // Endereço para entrega
         $paymentRequest->setShippingAddress(array('postalCode' => preg_replace("/[^0-9]/", '', $order_info['shipping_postcode']), 'street' => $order_info['shipping_address_1'], 'number' => '', 'complement' => '', 'district' => $order_info['shipping_address_2'], 'city' => $order_info['shipping_city'], 'state' => isset($zone['code']) ? $zone['code'] : '', 'country' => $order_info['shipping_iso_code_3']));
     } else {
         $zone = $this->model_localisation_zone->getZone($order_info['payment_zone_id']);
         // Endereço para entrega
         $paymentRequest->setShippingAddress(array('postalCode' => preg_replace("/[^0-9]/", '', $order_info['payment_postcode']), 'street' => $order_info['payment_address_1'], 'number' => '', 'complement' => '', 'district' => $order_info['payment_address_2'], 'city' => $order_info['payment_city'], 'state' => isset($zone['code']) ? $zone['code'] : '', 'country' => $order_info['payment_iso_code_3']));
     }
     /*
      * Produtos
      */
     foreach ($this->cart->getProducts() as $product) {
         $options_names = '';
         foreach ($product['option'] as $option) {
             $options_names .= '/' . $option['name'];
         }
         // limite de 100 caracteres para a descrição do produto
         if ($mb_substr) {
             $description = mb_substr($product['model'] . '-' . $product['name'] . $options_names, 0, 100, 'UTF-8');
         } else {
             $description = utf8_encode(substr(utf8_decode($product['model'] . '-' . $product['name'] . $options_names), 0, 100));
         }
         $item = array('id' => $product['product_id'], 'description' => trim($description), 'quantity' => $product['quantity'], 'amount' => $this->currency->format($product['price'], $order_info['currency_code'], false, false));
         // O frete será calculado pelo PagSeguro.
         if ($tipo_frete) {
             $peso = $this->getPesoEmGramas($product['weight_class_id'], $product['weight']) / $product['quantity'];
             $item['weight'] = round($peso);
         }
         $paymentRequest->addItem($item);
     }
     // Referência do pedido no PagSeguro
     if ($this->config->get('pagseguro_posfixo') != "") {
         $paymentRequest->setReference($this->session->data['order_id'] . "_" . $this->config->get('pagseguro_posfixo'));
     } else {
         $paymentRequest->setReference($this->session->data['order_id']);
     }
     // url para redirecionar o comprador ao finalizar o pagamento
     $paymentRequest->setRedirectUrl($this->url->link('checkout/success'));
     // url para receber notificações sobre o status das transações
     $paymentRequest->setNotificationURL($this->url->link('payment/pagseguro/callback'));
     // obtendo frete, descontos e taxas
     $total = $this->currency->format($order_info['total'] - $this->cart->getSubTotal(), $order_info['currency_code'], false, false);
     if ($total > 0) {
         $item = array('id' => '-', 'description' => $this->language->get('text_extra_amount'), 'quantity' => 1, 'amount' => $total);
         $paymentRequest->addItem($item);
     } else {
         if ($total < 0) {
             $paymentRequest->setExtraAmount($total);
         }
     }
     /* 
      * Fazendo a chamada para a API de Pagamentos do PagSeguro. 
      * Se tiver sucesso, retorna o código (url) de requisição para este pagamento.
      */
     $this->data['url'] = '';
     try {
         $credentials = new PagSeguroAccountCredentials($this->config->get('pagseguro_email'), $this->config->get('pagseguro_token'));
         $url = $paymentRequest->register($credentials);
         $this->data['url'] = $url;
     } catch (PagSeguroServiceException $e) {
         $this->log->write('PagSeguro: ' . $e->getOneLineMessage());
     }
     if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/payment/pagseguro.tpl')) {
         $this->template = $this->config->get('config_template') . '/template/payment/pagseguro.tpl';
     } else {
         $this->template = 'default/template/payment/pagseguro.tpl';
     }
     $this->render();
 }
コード例 #8
0
 /**
  * Create PagSeguro payment request html with payment url
  *
  * @return string
  */
 private function createPaymentRequest()
 {
     $this->_validator();
     $PaymentRequest = new PagSeguroPaymentRequest();
     $PaymentRequest->setCurrency(PagSeguroCurrencies::getIsoCodeByName(self::REAL));
     $PaymentRequest->setReference($this->Order->getId());
     //Order ID
     $PaymentRequest->setShipping($this->getShippingInformation());
     //Shipping
     $PaymentRequest->setSender($this->getSenderInformation());
     //Sender
     $PaymentRequest->setItems($this->getItensInformation());
     //Itens
     $PaymentRequest->setShippingType(SHIPPING_TYPE);
     $PaymentRequest->setShippingCost(number_format($this->Order->getShippingAmount(), 2, '.', ''));
     $PaymentRequest->setNotificationURL($this->getNotificationURL());
     //Define Redirect Url
     $redirect_url = $this->getRedirectUrl();
     if (!empty($redirect_url) and $redirect_url != null) {
         $PaymentRequest->setRedirectURL($redirect_url);
     } else {
         $PaymentRequest->setRedirectURL(Mage::getUrl() . 'checkout/onepage/success/');
     }
     //Define Extra Amount Information
     $PaymentRequest->setExtraAmount($this->_extraAmount());
     try {
         $payment_url = $PaymentRequest->register($this->getCredentialsInformation());
     } catch (PagSeguroServiceException $ex) {
         Mage::log($ex->getMessage());
         $this->_redirectUrl(Mage::getUrl() . 'checkout/onepage');
     }
     return $payment_url;
 }