@guilherme_efi Estou achando que preciso colocar o "$dados" dentro de colchetes [], porque o webhook está entregando sem esses colchetes, os dados estão vindo dentro de chaves. Vou fazer isso e volto já.
Na imagem que mandou anteriormente, faça da seguinte forma:
@tarcizio5821, se foi feito o json_decode o valor em $data será um array.
Sugiro debugar, colocar um var_dump($data); na linha 40 para visualizar o array completo.
- json_decode() expects parameter 1 to be string, array given on line 33.
- Invalid argument supplied for foreach() on line 35.
- json_decode() expects parameter 1 to be string, array given linha 39.
- Trying to get property 'pix' of non-object linha 40.
- Trying to get property 'txid' of non-object linha 40.
@tarcizio5821, na parte que mencionou que deu certo a captura do txid, quando coloca no arquivo de "index.php" dentro da função "salvar($dados)" do webhook, quais erros são apresentados?
Bom dia Igor.
Não consegui pegar o txid, tentei de várias formas. Como disse anteriormente, não tenho conhecimentos em array e por esse motivo, tentei das seguintes maneiras:
//////////////////////
$json = '[
{
"pix":[
{"endToEndId":"EEEEEEEEEEEEEEEEEEEEEEEEEEE","txid":"444444444444444444444444444444444","chave":"00000000-0000000-00008-000-0000000","valor":"0.01","horario":"2024-03-26T20:51:56.000Z"}
]}
]';
$data = json_decode($json); // aqui seria o retorno do "$dados"
foreach($data as $item) {
echo $item->pix[0]->txid;
}
//////////////////////
Essa deu certo, mas quando coloco no arquivo de "index.php" dentro da função "salvar($dados)" do webhook, dá erros.
Tentei também todas alternativas abaixo e sem sucesso:
//////////////////////
//$data = json_decode($dados);
//$dd = $data->pix->txid;
//$conteudo = json_encode($dados).' ---- '.json_encode($dados['pix']['txid']).' ----- '.$dados['pix']['txid'].' ---- '.$dados->pix[0]->txid;
//$conteudo = json_encode($dados->pix[0]->txid).' ----- '.$dd.' ----- '.json_encode($dd).' ---- '.json_encode($dd->pix[0]->txid);
//////////////////////
Se puder me ajudar fico muito grato.
Não, os dados do cartão não podem ser trafegados na rede, é por este motivo que a geração do payment_token precisa ser realizado no front end e você trafegar somente o payment_token para o seu backend.
Você pode trafegar as demais informações do cliente, mas as informações do cartão de credito não
Então o ideal seria gerar o token no app/front enviar para back-end juntamente com os dados do cartão e gerar a cobrança, seria isso?
O objetivo dos exemplos são para o uso no backend usando o framework Flutter.
Em breve estas funcionalidades da SDK vão sair da versão mobile e frontend do framework
Temos uma SDK para .NET Core: https://dev.efipay.com.br/docs/sdk/dotnet-core/
Segue o link com os exemplos de integração: https://github.com/efipay/sdk-dotnet-apis-efi/tree/main/Examples
Recomendamos que o procedimento de criação da cobrança seja feito no backend do seu projeto.
No aplicativo Flutter você gera o payment token, envia esta informação para o seu backend e o seu backend realiza a comunicação para criação da cobrança em nossa API.
Qual linguagem o seu backend foi desenvolvido?
Consegui fazer parte da integração funcionar. Chamei o método abaixo e consegui obter o token:
paymentToken = await efi.call("paymentToken", body: card);
Passo o token na chamada do proximo método e recebo o seguinte erro:
efi.call("createOneStepCharge", body: body);
Já validei no ambiente de homologação, as chaves estão corretas e as opções habilitadas para cartão de crédito. O que poderia ser?