 |
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
katumblo Novato

Registrado: Sábado, 1 de Junho de 2019 Mensagens: 3
|
Enviada: Sáb Jun 01, 2019 1:54 pm Assunto: Executar um código javascript com o delphi |
|
|
Galera, boa tarde.
Eu to querendo usar um intermediador de pagamento, e pra usar cartão de crédito eu tenho que criptografar os dados do cartão através de um script (em JS) que o site disponibiliza ( https://sandbox.boletobancario.com/boletofacil/wro/direct-checkout.min.js )
Alguém pode me ajudar sobre como eu posso enviar os dados do cartão para essa função em JS e obter o resultado ? Eu entendo nada de JS, mas o código de exemplo (se eu tivesse desenvolvendo na linguagem deles) é esse:
Código: | <script>
var checkout = new DirectCheckout(' TOKEN ');
var cardData = {
cardNumber: '0000000000000000',
holderName: 'Name',
securityCode: '000',
expirationMonth: '12',
expirationYear: '2045'
};
checkout.getCardHash(cardData, function(cardHash) {
/* Sucess */
}, function(error) {
/* Error */
});
</script> |
(Obs: Estou fazendo a aplicação para Android) |
|
Voltar ao Topo |
|
 |
katumblo Novato

Registrado: Sábado, 1 de Junho de 2019 Mensagens: 3
|
Enviada: Seg Jun 03, 2019 11:00 am Assunto: |
|
|
Alguém aí pode me ajudar? Até agora não achei a solução |
|
Voltar ao Topo |
|
 |
strak2012 Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014 Mensagens: 1518 Localização: Maceió - AL
|
Enviada: Seg Jun 03, 2019 3:40 pm Assunto: |
|
|
vai precisar de um ambiente que carregue sandbox.boletobancario.com/boletofacil/wro/direct-checkout.min.js e a deixe disponivel para todas as demais possiveis rotinas criada posteriomente.
voce em delphi só vai conseguir algo funcional usando o Twebbrowser, claramente que o intermediador de pagamento não estar a disponibilizar esta soluções em delphi e sim para uma linguagem voltada para web com o foco em javascript.
mais vamos ve como poderia ser feito no delphi com o uso do twebbroswer.
codigo:
Código: | unit Unit2;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
FMX.Controls.Presentation, FMX.StdCtrls, FMX.WebBrowser, FMX.Edit;
type
TForm2 = class(TForm)
WebBrowser1: TWebBrowser;
Button1: TButton;
edit_TOKEN: TEdit;
edit_cardNumber: TEdit;
edit_holderName: TEdit;
edit_securityCode: TEdit;
edit_expirationMonth: TEdit;
edit_expirationYear: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
sourcerHtml=
'<html>'+
'<head>'+
'</head>'+
'<body>'+
'<div id="resultado">Aguarde...</div>'+
'<script type="text/javascript" src="https://sandbox.boletobancario.com/boletofacil/wro/direct-checkout.min.js"></script>'+
'<script>'+
'var checkout = new DirectCheckout("%TOKEN%");'+
'var cardData = {'+
' cardNumber: "%cardNumber%",'+
' holderName: "%holderName%",'+
' securityCode: %securityCode%,'+
' expirationMonth: "%expirationMonth%",'+
' expirationYear: "%expirationYear%"'+
'};'+
'checkout.getCardHash(cardData, function(cardHash) {'+
' document.getElementById(resultado).innerHTML=cardHash.toString();'+
'}, function(error) {'+
' document.getElementById(resultado).innerHTML=error.toString();'+
'});'+
'</script>'+
'</body>'+
'</html>';
var
Form2: TForm2;
implementation
{$R *.fmx}
procedure TForm2.Button1Click(Sender: TObject);
var
txthtml:string;
begin
txthtml:=sourcerHtml;
txthtml:=StringReplace(txthtml,'%TOKEN%',edit_TOKEN.text,[]);
txthtml:=StringReplace(txthtml,'%cardNumber%',edit_cardNumber.text,[]);
txthtml:=StringReplace(txthtml,'%holderName%',edit_holderName.text,[]);
txthtml:=StringReplace(txthtml,'%securityCode%',edit_securityCode.text,[]);
txthtml:=StringReplace(txthtml,'%expirationMonth%',edit_expirationMonth.text,[]);
txthtml:=StringReplace(txthtml,'%expirationYear%',edit_expirationYear.text,[]);
WebBrowser1.LoadFromStrings(txthtml,'');
end;
end.
|
a ideia é preparar na mão um codigo string de um html que carregue a sandbox.boletobancario.com/boletofacil/wro/direct-checkout.min.js e em seguida rode um outro script
voce pode rodar um script no corpo do body de um html e tiver voce editado o mesmo na mão com o uso da função LoadFromStrings do twebbroswer, mais caso o conteudo forsse online então precisaria rodar o script por meio da função EvaluateJavaScript do twebbroswer, no seu caso será o primeiro metodo, a introdução do script será no body com o uso da função LoadFromStrings do twebbroswer.
se os edits estiverem correto, se o token estiver correto a div de id resultado deverar receber a informação do intermediador de pagamento.
é tb provavel que este meio tb não funcione se caso o intermediador de pagamento requerir que as solicitações feita seja de alguma pagina hospedada e não local no client, bom vale apenas testar os dois meio.
se o intermediador de pagamento requerir que a solicitação seja feita por uma pagina hospedada então vai precisar ter um site em algum local com o codio html e chama-lo no delphi no twebbroswer.
pode add meu skype: strak2005, caso queira o codigo fonte e o executavel do codigo acima.
abraço e boa sorte!. _________________ Tudo podemos quando tudo sabemos! |
|
Voltar ao Topo |
|
 |
katumblo Novato

Registrado: Sábado, 1 de Junho de 2019 Mensagens: 3
|
Enviada: Ter Jun 04, 2019 1:55 pm Assunto: |
|
|
strak2012 escreveu: | vai precisar de um ambiente que carregue sandbox.boletobancario.com/boletofacil/wro/direct-checkout.min.js e a deixe disponivel para todas as demais possiveis rotinas criada posteriomente.
voce em delphi só vai conseguir algo funcional usando o Twebbrowser, claramente que o intermediador de pagamento não estar a disponibilizar esta soluções em delphi e sim para uma linguagem voltada para web com o foco em javascript.
mais vamos ve como poderia ser feito no delphi com o uso do twebbroswer.
codigo:
Código: | unit Unit2;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
FMX.Controls.Presentation, FMX.StdCtrls, FMX.WebBrowser, FMX.Edit;
type
TForm2 = class(TForm)
WebBrowser1: TWebBrowser;
Button1: TButton;
edit_TOKEN: TEdit;
edit_cardNumber: TEdit;
edit_holderName: TEdit;
edit_securityCode: TEdit;
edit_expirationMonth: TEdit;
edit_expirationYear: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
sourcerHtml=
'<html>'+
'<head>'+
'</head>'+
'<body>'+
'<div>Aguarde...</div>'+
'<script></script>'+
'<script>'+
'var checkout = new DirectCheckout("%TOKEN%");'+
'var cardData = {'+
' cardNumber: "%cardNumber%",'+
' holderName: "%holderName%",'+
' securityCode: %securityCode%,'+
' expirationMonth: "%expirationMonth%",'+
' expirationYear: "%expirationYear%"'+
'};'+
'checkout.getCardHash(cardData, function(cardHash) {'+
' document.getElementById(resultado).innerHTML=cardHash.toString();'+
'}, function(error) {'+
' document.getElementById(resultado).innerHTML=error.toString();'+
'});'+
'</script>'+
'</body>'+
'</html>';
var
Form2: TForm2;
implementation
{$R *.fmx}
procedure TForm2.Button1Click(Sender: TObject);
var
txthtml:string;
begin
txthtml:=sourcerHtml;
txthtml:=StringReplace(txthtml,'%TOKEN%',edit_TOKEN.text,[]);
txthtml:=StringReplace(txthtml,'%cardNumber%',edit_cardNumber.text,[]);
txthtml:=StringReplace(txthtml,'%holderName%',edit_holderName.text,[]);
txthtml:=StringReplace(txthtml,'%securityCode%',edit_securityCode.text,[]);
txthtml:=StringReplace(txthtml,'%expirationMonth%',edit_expirationMonth.text,[]);
txthtml:=StringReplace(txthtml,'%expirationYear%',edit_expirationYear.text,[]);
WebBrowser1.LoadFromStrings(txthtml,'');
end;
end.
|
a ideia é preparar na mão um codigo string de um html que carregue a sandbox.boletobancario.com/boletofacil/wro/direct-checkout.min.js e em seguida rode um outro script
voce pode rodar um script no corpo do body de um html e tiver voce editado o mesmo na mão com o uso da função LoadFromStrings do twebbroswer, mais caso o conteudo forsse online então precisaria rodar o script por meio da função EvaluateJavaScript do twebbroswer, no seu caso será o primeiro metodo, a introdução do script será no body com o uso da função LoadFromStrings do twebbroswer.
se os edits estiverem correto, se o token estiver correto a div de id resultado deverar receber a informação do intermediador de pagamento.
é tb provavel que este meio tb não funcione se caso o intermediador de pagamento requerir que as solicitações feita seja de alguma pagina hospedada e não local no client, bom vale apenas testar os dois meio.
se o intermediador de pagamento requerir que a solicitação seja feita por uma pagina hospedada então vai precisar ter um site em algum local com o codio html e chama-lo no delphi no twebbroswer.
pode add meu skype: strak2005, caso queira o codigo fonte e o executavel do codigo acima.
abraço e boa sorte!. |
Cara, MUITISSIMO obrigado pela ajuda, sério ! Eu não tenho palavras para descrever o quanto você ajudou.
Só fiquei com dúvida em uma coisa: Como faço para pegar o resultado (ou seja, o hash) ? No html ele está aramazenado na variável cardHash na função:
Código: | 'checkout.getCardHash(cardData, function(cardHash) {'+
' document.getElementById(resultado).innerHTML=cardHash.toString();'+
'}, function(error) {'+
' document.getElementById(resultado).innerHTML=error.toString();'+
'});'+ |
Mas como eu posso retirar o valor dessa variável daí ?
Obrigado pela atenção |
|
Voltar ao Topo |
|
 |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|