Estou desenvolvendo uma aplicaçao que é uma loja simples de venda.
Gostaria de saber se alguem tem uma extensao de carrinho de compra
Alguem ja implementou o pagseguro em um carrinho proprio, e poderia compartilhar o codigo.
A respeito do frete como faria o calculo.
Envio da lista de produtos e retorno do pagseguro, alguem ja fex esta implementaçao que poderia dar uma help.
Valew amigos.
Newerton
(Newerton Araujo)
March 15, 2012, 6:09pm
2
Edson,
Segue abaixo minhas respostas.
Gostaria de saber se alguem tem uma extensao de carrinho de compra
Até o momento não sei se existe ou se alguem fez uma extensão.
Alguem ja implementou o pagseguro em um carrinho proprio, e poderia compartilhar o codigo.
Eu ja fiz algumas implementação no cliente do pagseguro com carrinho do pagseguro e carrinho próprio, que é onde contêm as tabela pedidos que ficar armazenado no seu sistema.
http://www.yiiframework.com/forum/index.php/topic/12594-pagseguro-uol/page__p__61605
A respeito do frete como faria o calculo.
Você envia o peso de cada produto para o pagseguro, e deixa ele fazer o calculo do frete. Acho melhor fazer isso, do que quebrar a cabeça colocando um calculo de envio no sistema, por que esse ano o correios já mudo a forma de calculo de produto pelo tamanho da caixa do produto, ai fica ao seu critério.
Envio da lista de produtos e retorno do pagseguro, alguem ja fex esta implementaçao que poderia dar uma help.
Eu já fiz e sempre funciono para a versão 1, agora na versão 2 da API ainda não desenvolvi.
No link que passei acima tem o código do retorno automático da versão 1.
Eu tenho algo aqui bem primitivo em forma de componente, segue abaixo o código:
<?php
class UPagseguro
{
public $email;
public $type = 'CP';
public $currency = 'BRL';
public $shipping = 'EN';
public $encoding = 'UTF-8';
public $url = 'https://pagseguro.uol.com.br/checkout/checkout.jhtml';
public $verifyUrl = 'https://pagseguro.uol.com.br/pagseguro-ws/checkout/NPI.jhtml';
public $fields = array();
public $data = array();
public $token;
public function __construct($options)
{
foreach($options as $k=>$v)
$this->$k = $v;
$this->addField('email_cobranca',$this->email);
$this->addField('tipo',$this->type);
$this->addField('moeda',$this->currency);
$this->addField('tipo_frete',$this->shipping);
$this->addField('encoding',$this->encoding);
}
public function addField($key,$value)
{
$this->fields[$key] = $value;
}
public function getForm()
{
$html = CHtml::beginForm($this->url,'post',array('id'=>'payseguroForm'));
foreach ($this->fields as $name => $value)
$html.= CHtml::hiddenField($name,$value);
$html.= CHtml::endForm();
$html.= CHtml::script('jQuery("#payseguroForm").submit();');
return $html;
}
public function verify()
{
$data = 'Comando=validar&Token='.$this->token;
foreach($_POST as $k=>$v)
{
$this->data[$k] = $v;
$v = get_magic_quotes_gpc()?$v:addslashes($v);
$data.= "&$k=$v";
}
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $this->verifyUrl);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$content = trim(curl_exec($curl));
curl_close($curl);
/*
$result = '';
$fp = fsockopen("ssl://pagseguro.uol.com.br", 443, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "POST /pagseguro-ws/checkout/NPI.jhtml HTTP/1.1\r\n";
$out .= "Host: pagseguro.uol.com.br\r\n";
$out .= "Content-type: application/x-www-form-urlencoded\r\n";
$out .= "Content-length: " . strlen($data) . "\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
fwrite($fp, $data);
while (!feof($fp)) {
$result.= fgets($fp, 128);
}
fclose($fp);
}
$result = preg_replace('/\r/','',$result);
list($headers,$content) = explode("\n\n",$result);
*/
return $content == "VERIFICADO";
}
public function formatAmount($amount)
{
$parts = explode('.',$amount);
if(!isset($parts[1]))
$parts[1] = '00';
return implode('',$parts);
} ?>
Eu tenho algo aqui bem primitivo em forma de componente, segue abaixo o código:
<?php
class UPagseguro
{
public $email;
public $type = 'CP';
public $currency = 'BRL';
public $shipping = 'EN';
public $encoding = 'UTF-8';
public $url = 'https://pagseguro.uol.com.br/checkout/checkout.jhtml';
public $verifyUrl = 'https://pagseguro.uol.com.br/pagseguro-ws/checkout/NPI.jhtml';
public $fields = array();
public $data = array();
public $token;
public function __construct($options)
{
foreach($options as $k=>$v)
$this->$k = $v;
$this->addField('email_cobranca',$this->email);
$this->addField('tipo',$this->type);
$this->addField('moeda',$this->currency);
$this->addField('tipo_frete',$this->shipping);
$this->addField('encoding',$this->encoding);
}
public function addField($key,$value)
{
$this->fields[$key] = $value;
}
public function getForm()
{
$html = CHtml::beginForm($this->url,'post',array('id'=>'payseguroForm'));
foreach ($this->fields as $name => $value)
$html.= CHtml::hiddenField($name,$value);
$html.= CHtml::endForm();
$html.= CHtml::script('jQuery("#payseguroForm").submit();');
return $html;
}
public function verify()
{
$data = 'Comando=validar&Token='.$this->token;
foreach($_POST as $k=>$v)
{
$this->data[$k] = $v;
$v = get_magic_quotes_gpc()?$v:addslashes($v);
$data.= "&$k=$v";
}
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $this->verifyUrl);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$content = trim(curl_exec($curl));
curl_close($curl);
/*
$result = '';
$fp = fsockopen("ssl://pagseguro.uol.com.br", 443, $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
$out = "POST /pagseguro-ws/checkout/NPI.jhtml HTTP/1.1\r\n";
$out .= "Host: pagseguro.uol.com.br\r\n";
$out .= "Content-type: application/x-www-form-urlencoded\r\n";
$out .= "Content-length: " . strlen($data) . "\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
fwrite($fp, $data);
while (!feof($fp)) {
$result.= fgets($fp, 128);
}
fclose($fp);
}
$result = preg_replace('/\r/','',$result);
list($headers,$content) = explode("\n\n",$result);
*/
return $content == "VERIFICADO";
}
public function formatAmount($amount)
{
$parts = explode('.',$amount);
if(!isset($parts[1]))
$parts[1] = '00';
return implode('',$parts);
} ?>
Blz Broder,
Mais vc esta usando um carrinho?
Mostra ai como vc esta utilizando este componente.
valew
Só adcionar ele ao config e chamar ele no controller…
$p = Yii::app()->UPagseguro($_POST['Formulario']);
Formulário seriam os dados enviados pela tela de Checkout com os produtos em questão!