Histórico de mensagens sobre input

EXIBINDO CONVERSAS RECENTES:

Texto: input
# pix
Avatar discord do usuario diogojunior.

diogojunior.

# encoding: utf-8

from efipay import EfiPay
import sys

# Configurações de credenciais
credentials = {
'client_id': '',
'client_secret': '',
'sandbox': False, # Altere para True se estiver usando o ambiente de sandbox
'certificate': r''
}

def obter_dados_usuario():
try:
chave_pix = input("Informe a chave PIX do destinatário: ")
valor = input("Informe o valor da transferência: ")

# Verificando se os valores informados são válidos
if not chave_pix:
raise ValueError("A chave PIX não pode ser vazia.")

# Substituir vírgula por ponto e converter para float
valor_float = float(valor.replace(',', '.'))

if valor_float <= 0:
raise ValueError("O valor deve ser um número positivo.")

return chave_pix, "{:.2f}".format(valor_float)
except ValueError as ve:
print(f"Erro de validação: {ve}")
sys.exit(1)

# pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Ok, no $body insira o ?ignorar=
$body = '{
"webhookUrl": "https://julioerp.agenciaweblab.com.br/webhook.php?ignorar="
}';

E no arquivo "/webhook.php" inseira o exemplo de código abaixo:

php

function resposta($status, $mensagem, $dados)
{
$resposta['status'] = $status;
$resposta['mensagem'] = $mensagem;
$resposta['dados'] = $dados;
$json_resposta = '
' . json_encode($resposta, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . '
';

header("HTTP/1.1 " . $status);
echo $json_resposta;
}

function salvar($dados)
{
// Crie um arquivo .;json para salvar as informações
$nomeArquivo = './dados.json';
$dadosGravados = json_decode(file_get_contents($nomeArquivo), true);
$arquivo = fopen($nomeArquivo, 'w');

// Incrementa as informações enviadas com o que já havia gravado
array_push($dadosGravados, $dados);

if (fwrite($arquivo, json_encode($dadosGravados))) {
resposta(200, "Requisição realizada com sucesso!", $dados);
} else {
resposta(300, "Falha ao salvar os dados da requisição.", $dados);
}

fclose($arquivo);
}

function requisicao($metodo, $body, $parametros)
{
switch ($metodo) {
case 'POST':
salvar($body);
break;
case 'GET':
resposta(200, "Requisição realizada com sucesso!", $body);
break;
}
}

// Obtém o método HTTP, body e parâmetros da requisição
$metodo = $_SERVER['REQUEST_METHOD'];
$parametros = explode('/', trim($_SERVER['REQUEST_URI'], '/'));
$body = json_decode(file_get_contents('php://input'), true);

try {
requisicao($metodo, $body, $parametros);
} catch (Exception $e) {
resposta(400, $e->getMessage(), $e);
}

A fim de teste, neste exemplo está salvando o json recebido em um arquivo dados.json. Então na mesma raiz crie-o com permissão de leitura e escrita. E escreva dentro do arquivo dados.json assim: [] para iniciar o json. Então simule um pagamento para receber a notificação.
Depois dos testes, pode manipular o json e gravar em um banco de dados.

# pix
Avatar discord do usuario allgood.eth

allgood.eth

vou ter que dar uma saida. obrigado pelo input @rubenskuhl

# pix
Avatar discord do usuario allgood.eth

allgood.eth

Ver Respostas

Obrigado pelo seu input.

estou fazendo uma prova de conceito ainda com a EFI.

# pix
Avatar discord do usuario peduuuu

peduuuu

to usando o codigo da própria documentação para tratar o JSON de notificação, imagino eu que essa linha seja a responsável por colher o json

$body = json_decode(file_get_contents('php://input'), true);

# pix
Avatar discord do usuario joabsilvalima

joabsilvalima

Ver Respostas

import React from 'react'
import PropTypes from 'prop-types'
import MaskedInput from 'react-text-mask'
import createNumberMask from 'text-mask-addons/dist/createNumberMask'

const defaultMaskOptions = {
prefix: 'R$',
suffix: '',
includeThousandsSeparator: true,
thousandsSeparatorSymbol: '.',
allowDecimal: true,
decimalSymbol: ',',
decimalLimit: 2, // how many digits allowed after the decimal
integerLimit: 7, // limit length of integer numbers
allowNegative: false,
allowLeadingZeroes: false,
}

const CurrencyInput = ({ maskOptions, ...inputProps }) => {
const currencyMask = createNumberMask({
...defaultMaskOptions,
...maskOptions,
})

return
}

CurrencyInput.defaultProps = {
inputMode: 'numeric',
maskOptions: {},
}

CurrencyInput.propTypes = {
inputmode: PropTypes.string,
maskOptions: PropTypes.shape({
prefix: PropTypes.string,
suffix: PropTypes.string,
includeThousandsSeparator: PropTypes.bool,
thousandsSeparatorSymbol: PropTypes.string,
allowDecimal: PropTypes.bool,
decimalSymbol: PropTypes.string,
decimalLimit: PropTypes.string,
requireDecimal: PropTypes.bool,
allowNegative: PropTypes.bool,
allowLeadingZeroes: PropTypes.bool,
integerLimit: PropTypes.number,
}),
}

export default CurrencyInput

# pix
Avatar discord do usuario hspatz

hspatz

Ver Respostas

Eu estou utilizando o SDK-PHP de voces.
Cadastrei o webhook como "https://meudominio.com.br/pixefi"
Recebo os eventos da criação no endereço acima

( [{"evento":"teste_webhook","data_criacao":"2024-03-30T11:20:39.415Z"}] ).

O "index.php" nesta pasta é o mesmo do site.

Abaixo deste diretório existe uma pasta "pix" onde o mesmo "index.php"rdt's lá. ( "meusite.com.br/pixefi/pix" )
AO criar um pagamento PIX em produção e o mesmo pago, não recebo nenhuma informação de retorno da EFI.
Foi colocadouma função que salva qualquer acesso a pasta, como exemplo fiz um acesso pelo Chrome "https://meudominio.com.br/pixefi/pix" e o resultado salvo foi.


Metodo: GET
Parametros: a:2:{i:0;s:6:"pixefi";i:1;s:3:"pix";}
Body: null


Segue o parte do script "index.php" onde salva qualquer acesso a pasta

===============================================================
// Obtém o método HTTP, body e parâmetros da requisição
$metodo = $_SERVER['REQUEST_METHOD'];
$parametros = explode('/', trim($_SERVER['REQUEST_URI'], '/'));
$body = json_decode(file_get_contents('php://input'), true);


//
/
$nomeArquivo = 'dados/dados_recebidos.json';
$dadosJson = "\n Metodo: " .$metodo ."\n Parametros: " .serialize($parametros) ."\n" ."Body: " .json_encode($body) ."\n";
$arquivo = fopen($nomeArquivo, 'a');
fwrite($arquivo, $dadosJson);
fclose($arquivo);
//
/


try {
requisicao($metodo, $body, $parametros);
} catch (Exception $e) {
salvar ( $xdados);
resposta(400, $e->getMessage(), $e);
}
=================================================================

Estou tentando gerar cobranças no modo homologação de R$ 0,01 e não recebo notificação no modo de homologação também.

# cartões
Avatar discord do usuario mcunha98

mcunha98

esse cara eu ja inclui via tag

# pix
Avatar discord do usuario .thallestks

.thallestks

Ver Respostas

gerencianet
.createCharge({}, chargeInput)
.then((resposta) => {
console.log(resposta)
})
.catch((error) => {
console.log(error)
res.status(500).send('Erro');
})

# pix
Avatar discord do usuario tolribeiro

tolribeiro

Ver Respostas

Pessoal boa tarde, por via das duvidas ja havia lido sobre esse probleminha…mas soh pra confirmar se vcs estao cientes

O codigo do copia e cola (ao ser copiado como texto do whatsapp por ex) , ao ser colado no input de aplicativos de banco, adiciona automaticamente eh adicionado um “https” . Isso eh conhecido por vcs ja?

# pix
Avatar discord do usuario celo_diana

celo_diana

js
const chargeInput = {
"valor": "1.00",
"pagador": {
"chave": "exemplo",
"infoPagador": "Segue o pagamento da conta"
},
"favorecido": {
"chave": "[email protected]"
}
}
seguindo desse jeito

# devs
Avatar discord do usuario nivs4584

nivs4584

Olá equipe Efi. preciso de uma ajuda de vocês. Estou implementando o gateway de vocês em um dos nossos sistemas que utiliza o Perfex CRM. Estamos usando um módulo criado por terceiros, entretanto conseguimos lidar diretamente com o código fonte.

Estamos usando os metódos de pagamento: Pix e Cartão de crédito.
PARA PIX FUNCIONA PERFEITAMENTE, já para cartão de crédito não.

Em uma parte das regras para realizar o pagamento com cartão de crédito, ele busca no nosso db as informações relacionadas a CEP, estado, cidade, etc...
Entretanto, mudamos um pouco a regra, aonde colocamos inputs para o usuário colocar essas informações. E mandamos isso via POST para o controller.

Porém, dá erro na finalização do pagamento. E não estou conseguindo diagnosticar o que está ocorrendo.

Sobre o retorno dos dados: tão retornando sem problemas. Fiz o teste a respeito e aparenta está funcionavel. (Infelizmente não estou conseguindo testar localmente, e agora eu não poderia fazer novamente o teste disso no ambiente de produção, mas caso seja necessário, busco o que está retornando quando faço o POST e trago aqui para vocês).

Mandei o código do controller que recebe os dados.
Framework utilizado: Codeigniter (PHP) (Perfex CRM)

Obrigado desde já para qualquer direcionamento que vocês me darem. E peço desculpas pela complexidade da pergunta.
787064638020780103/1720807198563message.txt

# cartões
Avatar discord do usuario celo_diana

celo_diana

Ver Respostas

@rubenskuhl boa noite tudo bão? Tu sabe porque retorna :

{
code: 3500034,
error: 'validation_error',
error_description: {
property: '/id',
message: 'Tipo inválido: string (esperado integer).'
}
}


apartir daqui :

js
const responseCobranca = await efipay.createCharge([], chargeInput);

const cobrancaId = parseInt(responseCobranca.data.charge_id);
const pagamentoCartao = {
payment: {
credit_card: {
customer: {
name: "Gorbadoc Oldbuck",
cpf: "94271564656",
email: "[email protected]",
birth: "1990-08-29",
phone_number: "5144916523"
},
installments: 1,
payment_token: "",
billing_address: {
street: "Avenida Juscelino Kubitschek",
number: "909",
neighborhood: "Bauxita",
zipcode: "35400000",
city: "Ouro Preto",
complement: "",
state: "MG"
}
}
}
};

const responseDefinePayMethod = await efipay.definePayMethod([], pagamentoCartao);

estou tentando adicionar um metodo de cartão ao pagamento

# pix
Avatar discord do usuario .viniciusc

.viniciusc

java
InputStreamReader reader = new InputStreamReader(conn.getInputStream());
BufferedReader br = new BufferedReader(reader);

String response;
StringBuilder responseBuilder = new StringBuilder();
while ((response = br.readLine()) != null) {
responseBuilder.append(response);
}

ObjectMapper mapper = new ObjectMapper();
token = mapper.readValue(responseBuilder.toString(), Token.class);

conn.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}

# pix
Avatar discord do usuario .viniciusc

.viniciusc

java
public static Token authorizeToken(String client_id, String client_secret, byte[] certificateBytes) {
Token token = null;
String basicAuth;
try {
System.out.println(certificateBytes.length);
basicAuth = Base64.getEncoder().encodeToString((client_id + ':' + client_secret).getBytes());

File tempFile = File.createTempFile("certificate", ".p12");
tempFile.deleteOnExit();

try (FileOutputStream fos = new FileOutputStream(tempFile)) {
fos.write(certificateBytes);
}

System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", tempFile.getAbsolutePath());

SSLSocketFactory sslSocketFactory = (SSLSocketFactory) SSLSocketFactory.getDefault();

URL url = new URL("https://api-pix-h.gerencianet.com.br/oauth/token");
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Authorization", "Basic " + basicAuth);
conn.setSSLSocketFactory(sslSocketFactory);
String input = "{\"grant_type\": \"client_credentials\"}";

OutputStream os = conn.getOutputStream();
os.write(input.getBytes());
os.flush();

# pix
Avatar discord do usuario vitor.oliveira94

vitor.oliveira94

estou usando o exemplo de código que esta no site.

function resposta($status, $mensagem, $dados)
{
$resposta['status'] = $status;
$resposta['mensagem'] = $mensagem;
$resposta['dados'] = $dados;
$json_resposta = '
' . json_encode($resposta, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . '
';

header("HTTP/1.1 " . $status);
echo $json_resposta;
}

function salvar($dados)
{
// Crie um arquivo .;json para salvar as informações
$nomeArquivo = 'dados.json';
$dadosGravados = json_decode(file_get_contents($nomeArquivo), true);
$arquivo = fopen($nomeArquivo, 'w');

// Incrementa as informações enviadas com o que já havia gravado
array_push($dadosGravados, $dados);

if (fwrite($arquivo, json_encode($dadosGravados))) {
resposta(200, "Requisição realizada com sucesso!", $dados);
} else {
resposta(300, "Falha ao salvar os dados da requisição.", $dados);
}

fclose($arquivo);
}

function requisicao($metodo, $body, $parametros)
{
switch ($metodo) {
case 'POST':
salvar($body);
break;
case 'GET':
resposta(200, "Requisição realizada com sucesso!", $body);
break;
}
}

// Obtém o método HTTP, body e parâmetros da requisição
$metodo = $_SERVER['REQUEST_METHOD'];
$parametros = explode('/', trim($_SERVER['REQUEST_URI'], '/'));
$body = json_decode(file_get_contents('php://input'), true);

try {
requisicao($metodo, $body, $parametros);
} catch (Exception $e) {
resposta(400, $e->getMessage(), $e);
}

# pix
Avatar discord do usuario martheuss777

martheuss777

Ver Respostas

estatico, o usuario digita o valor no input e gera o qr code, isso ja consegui.... agr só falta a questao do código q copia e cola

# pix
Avatar discord do usuario .viniciusc

.viniciusc

java
public static Cob createCharge(String token, String payload) {
Cob cob = null;
try {
Generex txid = new Generex("[a-zA-Z0-9]{26,35}");
URL url = new URL("https://api-pix-h.gerencianet.com.br/v2/cob/" + txid.random());
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("PUT");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Authorization", "Bearer " + token);

OutputStream os = conn.getOutputStream(); // O erro do connection reset ocorre aqui
os.write(payload.getBytes());
os.flush();

int responseCode = conn.getResponseCode();

StringBuilder responseBuilder = new StringBuilder();
BufferedReader br;

if (responseCode >= 400) {
br = new BufferedReader(new InputStreamReader(conn.getErrorStream()));
} else {
br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
}

String response;
while ((response = br.readLine()) != null) {
responseBuilder.append(response);
}

//System.out.println("Código de resposta HTTP: " + responseCode);
//System.out.println("Resposta do servidor: " + responseBuilder);

JsonMapper mapper = JsonMapper
.builder()
.configure(MapperFeature.USE_ANNOTATIONS, false)
.build();

cob = mapper.readValue(responseBuilder.toString(), Cob.class);

conn.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return (cob != null) ? cob : new Cob();
}

# módulos-plugins
Avatar discord do usuario marcosresende_

marcosresende_

Ver Respostas

preciso de ajuda com a Integração do Woocommerce. Quando o usuário clica nas opções boleto ou cartão de crédito as abas não abrem mostrando os campos para input dos dados de pagamento.
No console de erro do navegador aparece essa mensagem:

Uncaught TypeError: Cannot read properties of undefined (reading 'length')
at onCardClick (checkout.js?ver=6.2.2:133:43)
at HTMLDivElement. (checkout.js?ver=6.2.2:92:51)
at HTMLDivElement.dispatch (jquery.js?ver=6.2.2:5466:27)
at elemData.handle (jquery.js?ver=6.2.2:5270:28)


Nesse print identifico exatamente onde ocorre o erro no JS
O erro é esporádico, ora funciona, ora não funciona, não consigo identificar exatamente quando ocorre o erro.
imagem enviada na mensagem pelo usuario marcosresende_

# módulos-plugins
Avatar discord do usuario hiagosilvas

hiagosilvas

Ver Respostas

@consultoria_efi deixo uma dica para vocês. No plugin do WooCommerce para cartão de crédito vocês poderiam colocar nos input's o inputmode="numeric" assim será exibido apenas o teclado númerico no dispositivo do comprador.