Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Gutto Faria

Pagamento com Cartão de Crédito

Recommended Posts

Olá, estou com uma dúvida sobre pagamentos online com cartão de crédito.

Está tudo OK para a implementação desta forma de pagamento. Contato com a Redecard, Certificado SSL e tudo mais.

 

Mas a plataforma KOMERCI trabalha com redirecionamento, abrindo uma janela popup para que o cliente coloque suas informações.

Gostaria que o cliente pudesse fazer tudo dentro da minha página, colcoando as informações do cartão de crédito e tudo mais, sem abrir aquela janela popup chata ou direcionar para a página de pagamento da redecard.

 

Como eu faço isso? Alguém tem uma solução ou algo para me direcionar?

 

Aguardo uma resposta. Estou pecisando muito disso e não sei por onde começar, minhas buscas não deram em nada.

 

Valeu..

 

ATUALIZAÇÃO:

Lembrando que o pagamento será direto, sem intermediários(pagseguro, Pagamento Digital etc)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não vou usar sistema pronto nenhum. A empresa já faz pagamentos físicos e por telefone com cartão de crédito.

Agora, vai ter pagamentos online. Direto para a empresa, sem intermediários.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não vou usar sistema pronto nenhum. A empresa já faz pagamentos físicos e por telefone com cartão de crédito.

Agora, vai ter pagamentos online. Direto para a empresa, sem intermediários.

 

Talvez possa ser interessante trabalhar com a Cielo.

 

Caso resolva trabalhar com a Cielo, o código para integração você encontra em: https://github.com/iMastersDev/cielo

Compartilhar este post


Link para o post
Compartilhar em outros sites

O negócio é que a empresa já trabalha com a Redecard. Não sei ao certo se também tem Cielo.

 

Mas o sistema da Cielo dá para fazer essa integração? Do cliente digitar os dados do cartão na minha página, sem precisar ser direcionado à página da Cielo?

Há como fazer o mesmo com a redecard?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O negócio é que a empresa já trabalha com a Redecard. Não sei ao certo se também tem Cielo.

 

Mas o sistema da Cielo dá para fazer essa integração? Do cliente digitar os dados do cartão na minha página, sem precisar ser direcionado à página da Cielo?

Há como fazer o mesmo com a redecard?

 

Sim Gutto,

 

O código que está disponibilizado no github do iMasters Developer faz a integração completa para você, inclusive pegando os dados do cliente na diretamente na sua aplicação.

 

Abaixo, um exemplo simples de uso, fazendo a captura dos dados do cartão na aplicação:

 

<?php
require_once 'dso/cielo/CreditCard.php';
require_once 'dso/cielo/Cielo.php';
require_once 'dso/cielo/CieloMode.php';
require_once 'dso/cielo/PaymentProduct.php';

date_default_timezone_set( 'America/Sao_Paulo' );

/**
* Cria o objeto de integração com a Cielo usando o ambiente de desenvolvimento
* @var Cielo
*/
$cielo = new Cielo( CieloMode::DEPLOYMENT );

/**
* Define o código de afiliação.
* O código abaixo é usado no ambiente de testes para poder recuperar
* os dados do cartão do cliente dentro da loja
*/
$cielo->setAffiliationCode( '1006993069' );

/**
* Define a chave de afiliação.
* A chave abaixo é usada no ambiente de testes para poder recuperar
* os dados do cartão do cliente dentro da loja
*/
$cielo->setAffiliationKey( '25fbb99741c739dd84d7b06ec78c9bac718838630f30b112d033ce2e621b34f3' );

/**
* O primeiro passo é requerir um TID para a autorização direto na loja
* Esse passo é necessário para garantir que uma transação não seja autorizada
* mais de uma vez, caso um timeout de conexão ou algum problema de rede ocorra.
* Você poderia utilizar também CreditCard::MASTER_CARD.
* @var string
*/
$tid = $cielo->buildTIDRequest( CreditCard::VISA , PaymentProduct::ONE_TIME_PAYMENT )->call()->getTID();

/**
* Número do cartão do cliente
* @var string
*/
$cardNumber = '4551870000000183'; //$_POST[ 'cardNumber' ]

/**
* Data de expiração do cartão no formato yyyymm
* @var string
*/
$cardExpiration = '201201'; //$_POST[ 'cardExpiration' ];

/**
* Indicador do código de segurança
* @var integer
*/
$indicator = 1;

/**
* Três dígitos do código de segurança que ficam no verso do cartão
* @var integer
*/
$securityCode = 123;

/**
* Número do pedido
* @var string
*/
$orderNumber = '1234';

/**
* Valor do pedido, esse valor deve ser um inteiro onde os últimos
* dois dígitos são os centavos, no caso o valor 10000 corresponde
* ao valor de R$ 100,00
* @var integer
*/
$orderValue = 10000;

/**
* Tipo do pagamento, a vista, débito, parcelado pela loja ou pelo banco,
* @var integer
*/
$paymentProduct = PaymentProduct::ONE_TIME_PAYMENT;

/**
* Número de parcelas que a compra será dividida
* @var integer
*/
$parcels = 1;

/**
* Cria a transação com autorização dentro da loja, fazendo captura automática
* @var Transaction
*/
$transaction = $cielo
   	->automaticCapture()
   	->buildAuthorizationRequest( $tid , CreditCard::VISA , $cardNumber , $cardExpiration , $indicator , $securityCode , $orderNumber , $orderValue , $paymentProduct )
   	->call();

/**
* Dados da autorização
* @var AuthorizationNode
*/
$authorization = $transaction->getAuthorization();

var_dump( $transaction->getPan() );
var_dump( $transaction->getStatus() );
var_dump( $transaction->getTID() );
var_dump( $authorization->getArp() );
var_dump( $authorization->getCode() );
var_dump( $authorization->getDateTime() );
var_dump( $authorization->getLR() );
var_dump( $authorization->getMessage() );
var_dump( $authorization->getValue() );

 

A saída será:

 

string(44) "uv9yI5tkhX9jpuCt+dfrtoSVM4U3gIjvrcwMBfZcadE="
int(6)
string(20) "100699306901DA151001"
string(6) "183412"
string(1) "6"
string(19) "2011-03-07 18:34:11"
string(2) "00"
string(22) "Transação autorizada"
float(100)

 

Ainda não cheguei a escrever o código de integração para o Komerci, quem sabe não é uma oportunidade. :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Deu esse erro comigo amigão...

 

O que pode ser? O valor do pedido está numérico, porém o programa mesmo pede como string... tentei das duas formas e não deu...

 

 

Fatal error: Uncaught exception 'UnexpectedValueException' with message 'O valor do pedido deve ser numérico, string foi dado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você provavelmente, está enviando alguma string no valor do pedido, tipo 'R$ ... ', o método espera apenas valores númericos

 

Realmente, ele estava convertendo pra String automaticamente, erro bobo... vlw...

 

Porém todas as transações que faço dá negada... utilizo o número Mastercard 5453010000066167 e Visa 4551870000000183

 

int(39000)
PAN: string(44) "IqVz7P9zaIgTYdU41HaW/OB/d7Idwttqwb2vaTt8MT0="
STATUS: int(5)
TID: string(20) "10069930690FF8321001"
ARP: NULL
CODE: string(1) "5"
DATA: string(19) "2011-07-20 09:33:56"
LR: string(2) "14"
MSG: string(18) "Autorização negada"
VALOR: float(390) 

 

Não entendi essas linahs tb, podem ser alteradas? Por exemplo, para parcelamento pela administradora ou pela loja

 

$paymentProduct = PaymentProduct::ONE_TIME_PAYMENT;

E o que faz essa... Esse "CreditCard::VISA" - mas se o usuário escolher outra bandeira, esse valor não deve ser alterado? Ou é fixo?

 

$transaction = $cielo
       ->automaticCapture()
       ->buildAuthorizationRequest( $tid , CreditCard::VISA , $cardNumber , $cardExpiration , $indicator , $securityCode , $orderNumber , $orderValue , $paymentProduct )
       ->call();

 

Obrigaa=do por me ajudarem com as dúvidas!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você deve alterar os dados de acordo com o que você quer testar. Leia os comentários no código que o João postou com bastante atenção. Lá tem informações importantes. Veja que o código que ele postou é um exemplo, onde os dados são fixos. Na sua aplicação, os dados serão variáveis, de acordo com o cartão que o usuário utilizar (dados do cartão, como número e bandeira, parcelamento...).

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.