Kali Postado Abril 3, 2015 Denunciar Share Postado Abril 3, 2015 (editado) Olá amigos da Script brasil, Eu estou desenvolvendo um aplicativo (jogo on-line) com uma forma de pagamento própria, enfim. Consegui um website para verificar os tipos dos cartões (crédito/debito) . Seguinte, o website disponibiliza o meio REQUEST : http://www.binlist.net/json/ Meu script está basicamente assim: const strWEB = 'http://www.binlist.net/json/'+ strCompletWebRequest.Text; begin end; No caso ficando da seguinte forma: http://www.binlist.net/json/548826 O website exibe o seguinte resultado: {"bin":"548826","brand":"MASTERCARD","sub_brand":"","country_code":"BR","country_name":"Brazil","bank":"CAIXA ECONOMICA FEDERAL","card_type":"CREDIT","card_category":"STANDARD","latitude":"-10","longitude":"-55","query_time":"344.902µs"} Queria exibir em um outro edit da seguinte forma: CAIXA ECONOMICA FEDERAL | CREDIT MASTERCARD | BRAZIL Como posso fazer isto ? Obrigado !! Preciso com urgencia !!!! Editado Abril 3, 2015 por Kali Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Abril 3, 2015 Denunciar Share Postado Abril 3, 2015 OBS: os links não estão funcionando "brand":"MASTERCARD" "country_name":"Brazil" "bank":"CAIXA ECONOMICA FEDERAL" "card_type":"CREDIT" voce pode usar essas palavras chaves para procurar as strings dentro de ( por exemplo ) um memo {"bin":"548826","brand":"MASTERCARD","sub_brand":"","country_code":"BR","country_name":"Brazil","bank":"CAIXA ECONOMICA FEDERAL","card_type":"CREDIT","card_category":"STANDARD","latitude":"-10","longitude":"-55","query_time":"344.902µs"} exemplo unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var s, cartao, tipo, cidade, banco : string; i : integer; begin s := Memo1.Lines.text; if pos('brand',s) > 0 then begin tipo := copy(s,pos('brand',s)+8,10); showmessage(tipo); end; if pos('country_name',s) > 0 then begin cidade := UpperCase(copy(s,pos('country_name',s)+15,6)); showmessage(cidade); end; if pos('bank',s) > 0 then begin banco := UpperCase(copy(s,pos('bank',s)+7,25)); showmessage(banco); end; if pos('card_type',s) > 0 then begin cartao:= UpperCase(copy(s,pos('card_type',s)+12,6)); showmessage(cartao); end; end; end. OBS: Faça as mudanças necessarias para o seu uso abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Kali Postado Abril 3, 2015 Autor Denunciar Share Postado Abril 3, 2015 (editado) Aqui o link correto: http://www.binlist.net/xml/406669 No caso (O final ali os 6 numeros depois do /xml/ seria os 6 primeiros números do cartão) Eu queria colocar eles num edit é ir para WEB. Achei essa forma mais simples, como ficaria??? abraços. No website fica assim: <Response> <Bin>406669</Bin> <Brand>VISA</Brand> <SubBrand/> <CountryCode>BR</CountryCode> <CountryName>Brazil</CountryName> <Bank>BANCO BRADESCO CARTOES, S.A.</Bank> <CardType>CREDIT</CardType> <CardCategory>INFINITE</CardCategory> <Latitude>-10</Latitude> <Longitude>-55</Longitude> <QueryTime>323.243µs</QueryTime> </Response> Queria que no meu Edit2 Exibi-se o resultado da seguinte forma: BANCO BRADESCO CARTOES, S.A. | CREDIT INFINITE | BRAZIL Como faço isso? abraçossssss !!! Editado Abril 3, 2015 por Kali Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Abril 3, 2015 Denunciar Share Postado Abril 3, 2015 jogue o conteudo da pagina em um memo faça da mesma forma que te expliquei unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; Edit1: TEdit; Edit2: TEdit; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var s, cartao, tipo, cidade, banco : string; i : integer; begin for i := 0 to Memo1.Lines.Count-1 do begin s := Memo1.Lines.Strings[i]; if pos('Bank',s) > 0 then banco := UpperCase(copy(s,pos('Bank',s)+5,pos('</Bank',s)-7)); if pos('CountryName',s) > 0 then cidade := UpperCase(copy(s,pos('CountryName',s)+12,pos('</CountryName',s)-14)); if pos('CardCategory',s) > 0 then cartao:= UpperCase(copy(s,pos('CardCategory',s)+13,pos('</CardCategory',s)-15)); if pos('CardType',s) > 0 then tipo:= UpperCase(copy(s,pos('CardType',s)+9,pos('</CardType',s)-11)); edit2.Text := banco + ' | ' + tipo + ' ' + cartao + ' | ' + cidade; end; end; end. resultado BANCO BRADESCO CARTOES, S.A. | CREDIT INFINITE | BRAZIL abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Kali Postado Abril 3, 2015 Autor Denunciar Share Postado Abril 3, 2015 Consegui seguir o exemplo, agora meu problema é o seguinte, eu quero verificar o banco emissor no caso, tenho o seguinte script na WEB: <?xml version="1.0" encoding="UTF-8" ?> - <Response> <Bin>376449</Bin> <Brand>AMERICAN EXPRESS</Brand> <SubBrand /> <CountryCode>BR</CountryCode> <CountryName>Brazil</CountryName> <Bank>BANCO BRADESCO</Bank> <CardType>CREDIT</CardType> <CardCategory>PLATINUM</CardCategory> <Latitude>-10</Latitude> <Longitude>-55</Longitude> <QueryTime>329.457µs</QueryTime> </Response> O script no delphi está da seguinte forma: var s, cartao, tipo, cidade, banco, bandeira : string; i : integer; begin for i := 0 to Memo1.Lines.Count-1 do begin s := Memo1.Lines.Strings[i]; if pos('Brand',s) > 0 then bandeira := UpperCase(copy(s,pos('Brand',s)+13,pos('</Brand',s)-9)); if pos('Bank',s) > 0 then banco := UpperCase(copy(s,pos('Bank',s)+5,pos('</Bank',s)-9)); if pos('CountryName',s) > 0 then cidade := UpperCase(copy(s,pos('CountryName',s)+12,pos('</CountryName',s)-16)); if pos('CardCategory',s) > 0 then cartao:= UpperCase(copy(s,pos('CardCategory',s)+13,pos('</CardCategory',s)-17)); if pos('CardType',s) > 0 then tipo:= UpperCase(copy(s,pos('CardType',s)+9,pos('</CardType',s)-13)); edit1.Text := banco + ' | ' + tipo + ' ' + cartao + ' | ' + cidade + ' | ' + bandeira; end; end; Resultado exibido no Edit1: BANCO BRADESCO | CREDIT PLATINUM | BRAZIL | (Aqui no final não está vindo á função da minha Bandeira) que deveria ficar assim: BANCO BRADESCO | CREDIT PLATINUM | BRAZIL | AMERICAN EXPRESS Como faço ? e se possível poderia me explicar Os números nas funções +12,pos('</CountryName',s)-16 Abraços. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Abril 3, 2015 Denunciar Share Postado Abril 3, 2015 <Brand>AMERICAN EXPRESS</Brand> <SubBrand /> observe que existem 2 strings que contem a substring Brand nesse caso voce deve usar um diferencial para que o valor correto seja pego <Brand>AMERICAN EXPRESS</Brand> <SubBrand /> então voce deve usar o Brand> procedure TForm1.Button1Click(Sender: TObject); var s, cartao, tipo, cidade, banco, bandeira : string; i : integer; begin for i := 0 to Memo1.Lines.Count-1 do begin s := Memo1.Lines.Strings[i]; if pos('Brand>',s) > 0 then bandeira := UpperCase(copy(s,pos('Brand',s)+6,pos('</Brand',s)-8)); if pos('Bank',s) > 0 then banco := UpperCase(copy(s,pos('Bank',s)+5,pos('</Bank',s)-7)); if pos('CountryName',s) > 0 then cidade := UpperCase(copy(s,pos('CountryName',s)+12,pos('</CountryName',s)-14)); if pos('CardCategory',s) > 0 then cartao:= UpperCase(copy(s,pos('CardCategory',s)+13,pos('</CardCategory',s)-15)); if pos('CardType',s) > 0 then tipo:= UpperCase(copy(s,pos('CardType',s)+9,pos('</CardType',s)-11)); edit2.Text := banco + ' | ' + tipo + ' ' + cartao + ' | ' + cidade + ' | ' + bandeira; end; end; poderia me explicar Os números nas funções +12,pos('</CountryName',s)-16 ???? faça a correção cidade := UpperCase(copy(s,pos('CountryName',s)+12,pos('</CountryName',s)-14)); veja <CountryName>Brazil</CountryName> tem 12 caracteres ... depois disso vem a palavra Brazil <CountryName>Brazil</CountryName> tem 13 caracteres + 1 ... como quero pegar somente a palavra Brazil tenho que eliminar os caracteres que estão depois da palavra Brazil Abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Kali Postado Abril 3, 2015 Autor Denunciar Share Postado Abril 3, 2015 Muito obrigado Jonathan. Á parte de obter o código-fonte do XML na WEB fiz por Web Request é está pqp muito lindo, segue o script é ve se ficou bacana , rss. Procedure WebRequestMethode; var sString, sString2 : String; begin with Form1 do begin sString := Edit1.Text; Edit2.Text := copy(sString,0,6); idHTTP1.Request.UserAgent := ('Mozilla/5.0 (Windows NT 6.3; rv:36.0) Gecko/20100101 Firefox/36.0'); Memo1.Lines.Add(idHTTP1.Get('http://www.binlist.net/xml/' + Edit2.Text)); Application.ProcessMessages; end; end; procedure TForm1.Button2Click(Sender: TObject); var hID : Dword; uThread : Cardinal; begin uThread := beginThread(nil,0,@WebRequestMethode,nil,0,hID); O mesmo foi resolvido muito obrigado Jonathan, pode fechar aqui , aproveita e ve se o script que fiz ficou bacana , oakskoaska Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jhonas Postado Abril 4, 2015 Denunciar Share Postado Abril 4, 2015 Ok... ficou bom abraço Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Kali
Olá amigos da Script brasil,
Eu estou desenvolvendo um aplicativo (jogo on-line) com uma forma de pagamento própria, enfim.
Consegui um website para verificar os tipos dos cartões (crédito/debito) .
Seguinte, o website disponibiliza o meio REQUEST : http://www.binlist.net/json/
Meu script está basicamente assim:
const
strWEB = 'http://www.binlist.net/json/'+ strCompletWebRequest.Text;
begin
end;
No caso ficando da seguinte forma:
http://www.binlist.net/json/548826
O website exibe o seguinte resultado:
{"bin":"548826","brand":"MASTERCARD","sub_brand":"","country_code":"BR","country_name":"Brazil","bank":"CAIXA ECONOMICA FEDERAL","card_type":"CREDIT","card_category":"STANDARD","latitude":"-10","longitude":"-55","query_time":"344.902µs"}
Queria exibir em um outro edit da seguinte forma:
CAIXA ECONOMICA FEDERAL | CREDIT MASTERCARD | BRAZIL
Como posso fazer isto ? Obrigado !! Preciso com urgencia !!!!
Editado por KaliLink para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.