Histórico de mensagens sobre Product

EXIBINDO CONVERSAS RECENTES:

Texto: Product
# cartões
Avatar discord do usuario adenilson2703

adenilson2703

let body = {
payment: {
banking_billet: {
expire_at: expireAt,// '2024-09-20',
customer: {
name: name,//'Gorbadoc Oldbuck',
email: email,// '[email protected]',
cpf: cpf,//'94271564656',
birth: birth,// '1977-01-15',
phone_number: phoneNumber,//'5144916523',
},
},
},

items: [
{
name: nameProduct,
value: parseInt(total),
amount: 1,
},
],
shippings: [
{
name: 'Frete grátis',
value: 0,
},
],
}

const result = await efipay.createOneStepCharge([], body);

# cartões
Avatar discord do usuario adenilson2703

adenilson2703

Ver Respostas

const EfiJs = require('payment-token-efi');

try {
EfiJs.CreditCard
.setAccount('Identificador_de_conta_aqui')
.setEnvironment('sandbox') // 'production' or 'sandbox'
.setBrand('visa')
.setTotal(28990)
.getInstallments()
.then(installments => {
console.log('Parcelas', installments);
}).catch(err => {
console.log('Código: ', err.code);
console.log('Nome: ', err.error);
console.log('Mensagem: ', err.error_description);
});
} catch (error) {
console.log('Código: ', error.code);
console.log('Nome: ', error.error);
console.log('Mensagem: ', error.error_description);
}

# cartões
Avatar discord do usuario aguiar.dev

aguiar.dev

Ver Respostas

Bom dia. Estou tendo problema em criar o getPaymentToken

txt
GET https://device.clearsale.com.br/p/fp.js net::ERR_BLOCKED_BY_CLIENT
Error: Falha na execução do FingerPrint
at p.getPaymentToken (payment-token-efi.min.js:1:71428)
js
try {
EfiJs.CreditCard
.setAccount('XXXX')
.setEnvironment('sandbox') // 'production' or 'sandbox'
.setCreditCardData({
brand: 'visa',
number: '4485785674290087',
cvv: '123',
expirationMonth: '05',
expirationYear: '2029',
reuse: false
})


.getPaymentToken()
.then(data => {
const payment_token = data.payment_token;
const card_mask = data.card_mask;

console.log('payment_token', payment_token);
console.log('card_mask', card_mask);
}).catch(err => {
console.log(err)
// console.log('Código: ', err.code);
// console.log('Nome: ', err.error);
// console.log('Mensagem: ', err.error_description);
});
} catch (error) {
console.log('Código CreditCard: ', error.code);
console.log('Nome CreditCard: ', error.error);
console.log('Mensagem CreditCard: ', error.error_description);
}

# devs
Avatar discord do usuario marcelocaser

marcelocaser

Ver Respostas

faça a Importação por CDN

no arquivo public/index.html
E em seguida faça a implementacao do código...
try {
window.EfiJs.CreditCard
.setAccount('Identificador_de_conta_aqui')
.setEnvironment('production') // 'production' or 'sandbox'
.setCreditCardData({
brand: 'visa',
number: '4485785674290087',
cvv: '123',
expirationMonth: '05',
expirationYear: '2029',
reuse: false
})
.getPaymentToken()
.then(data => {
const payment_token = data.payment_token;
const card_mask = data.card_mask;

console.log('payment_token', payment_token);
console.log('card_mask', card_mask);
}).catch(err => {
console.log('Código: ', err.code);
console.log('Nome: ', err.error);
console.log('Mensagem: ', err.error_description);
});
} catch (error) {
console.log('Código: ', error.code);
console.log('Nome: ', error.error);
console.log('Mensagem: ', error.error_description);
}

# cartões
Avatar discord do usuario adenilson2703

adenilson2703

Ver Respostas

14|CLINIC | Código: undefined
14|CLINIC | Nome: undefined
14|CLINIC | Mensagem: undefined
14|CLINIC | POST /order/paymentToken 200 26.420 ms - 63
14|CLINIC | Debugger: true
14|CLINIC | Lib version: 2.1.0
14|CLINIC | Environment sandbox
14|CLINIC | salt: success
14|CLINIC | Error_getPaymentToken ReferenceError: fetch is not defined
14|CLINIC | at Function.getPublicKey (/home/tecno/clinic_manager/api_server/node_modules/payment-token-efi/distNode/payment-token-efi.js:1:65643)
14|CLINIC | at Function.getPaymentToken (/home/tecno/clinic_manager/api_server/node_modules/payment-token-efi/distNode/payment-token-efi.js:1:70831)
14|CLINIC | at exports.paymentToken (/home/tecno/clinic_manager/api_server/controllers/app-products/order-controller.js:458:17)
14|CLINIC | at Layer.handle [as handle_request] (/home/tecno/clinic_manager/api_server/node_modules/express/lib/router/layer.js:95:5)
14|CLINIC | at next (/home/tecno/clinic_manager/api_server/node_modules/express/lib/router/route.js:149:13)
14|CLINIC | at Route.dispatch (/home/tecno/clinic_manager/api_server/node_modules/express/lib/router/route.js:119:3)
14|CLINIC | at Layer.handle [as handle_request] (/home/tecno/clinic_manager/api_server/node_modules/express/lib/router/layer.js:95:5)
14|CLINIC | at /home/tecno/clinic_manager/api_server/node_modules/express/lib/router/index.js:284:15
14|CLINIC | at Function.process_params (/home/tecno/clinic_manager/api_server/node_modules/express/lib/router/index.js:346:12)
14|CLINIC | at next (/home/tecno/clinic_manager/api_server/node_modules/express/lib/router/index.js:280:10)
14|CLINIC | Código: undefined
14|CLINIC | Nome: undefined
14|CLINIC | Mensagem: undefined

# cartões
Avatar discord do usuario adenilson2703

adenilson2703

exports.paymentToken = async (req, res, next) => {
EfiJs.CreditCard.debugger(true);
try {
const result = await EfiJs.CreditCard
.setAccount('')
.setEnvironment('sandbox') // 'production' or 'sandbox'
.setCreditCardData({
brand: 'visa',
number: '4485785674290087',
cvv: '123',
expirationMonth: '05',
expirationYear: '2029',
reuse: false
}) .getPaymentToken();
console.log('result', result);
const payment_token = result.payment_token;
const card_mask = result.card_mask;
console.log('payment_token', payment_token);
console.log('card_mask', card_mask);
return res.send({
request: true,
success: true,
message: 'Pagamento cartão!',
payment_token:payment_token,
card_mask:card_mask
});

} catch (error) {
console.log('Código: ', error.code);
console.log('Nome: ', error.error);
console.log('Mensagem: ', error.error_description);
return res.send({
request: true,
success: false,
message: 'Pagamento cartão!',

});
}

# pagamento-contas
Avatar discord do usuario adenilson2703

adenilson2703

Ver Respostas

exports.paymentToken = async (req, res, next) => {
EfiJs.CreditCard.debugger(true);
try {
const result = await EfiJs.CreditCard
.setAccount('')
.setEnvironment('sandbox') // 'production' or 'sandbox'
.setCreditCardData({
brand: 'visa',
number: '4485785674290087',
cvv: '123',
expirationMonth: '05',
expirationYear: '2029',
reuse: false
}) .getPaymentToken();
console.log('result', result);
const payment_token = result.payment_token;
const card_mask = result.card_mask;
console.log('payment_token', payment_token);
console.log('card_mask', card_mask);
return res.send({
request: true,
success: true,
message: 'Pagamento cartão!',
payment_token:payment_token,
card_mask:card_mask
});

} catch (error) {
console.log('Código: ', error.code);
console.log('Nome: ', error.error);
console.log('Mensagem: ', error.error_description);
return res.send({
request: true,
success: false,
message: 'Pagamento cartão!',

});
}
1

# pagamento-contas
Avatar discord do usuario adenilson2703

adenilson2703

boa tarde! estou recebebdo erro no getPaymentToken node.js 14|CLINIC | Debugger: true
14|CLINIC | Lib version: 2.1.0
14|CLINIC | Environment production
14|CLINIC | Error_getPaymentToken ReferenceError: fetch is not defined
14|CLINIC | at Function.getSalt (/home/tecno/clinic_manager/api_server/node_modules/payment-token-efi/distNode/payment-token-efi.js:1:64474)
14|CLINIC | at Function.getPaymentToken (/home/tecno/clinic_manager/api_server/node_modules/payment-token-efi/distNode/payment-token-efi.js:1:70685)
14|CLINIC | at exports.paymentToken (/home/tecno/clinic_manager/api_server/controllers/app-products/order-controller.js:459:14)
14|CLINIC | at Layer.handle [as handle_request] (/home/tecno/clinic_manager/api_server/node_modules/express/lib/router/layer.js:95:5)
14|CLINIC | at next (/home/tecno/clinic_manager/api_server/node_modules/express/lib/router/route.js:149:13)
14|CLINIC | at Route.dispatch (/home/tecno/clinic_manager/api_server/node_modules/express/lib/router/route.js:119:3)
14|CLINIC | at Layer.handle [as handle_request] (/home/tecno/clinic_manager/api_server/node_modules/express/lib/router/layer.js:95:5)
14|CLINIC | at /home/tecno/clinic_manager/api_server/node_modules/express/lib/router/index.js:284:15
14|CLINIC | at Function.process_params (/home/tecno/clinic_manager/api_server/node_modules/express/lib/router/index.js:346:12)
14|CLINIC | at next (/home/tecno/clinic_manager/api_server/node_modules/express/lib/router/index.js:280:10)
14|CLINIC | Código: undefined
14|CLINIC | Nome: undefined
14|CLINIC | Mensagem: undefined

# pix
Avatar discord do usuario andersonhsilva

andersonhsilva

Efi\EfiPay {#348 ▼ // routes/web.php:39
-requester: null
-endpoints: array:5 [▼
"CHARGES" => array:2 [▶]
"PIX" => array:2 [▼
"URL" => array:2 [▼
"production" => "https://pix.api.efipay.com.br"
"sandbox" => "https://pix-h.api.efipay.com.br"
]
"ENDPOINTS" => array:48 [▶]
]
"OPEN-FINANCE" => array:2 [▶]
"PAYMENTS" => array:2 [▶]
"OPENING-ACCOUNTS" => array:2 [▶]
]
-methods: null
-options: array:12 [▼
"sandbox" => true
"debug" => false
"cache" => true
"timeout" => 60
"clientId" => "xxxxxxxxx"
"clientSecret" => "xxxxxxxx"
"partnerToken" => null
"headers" => null
"baseUri" => null
"api" => null
"certificate" => false
"pwdCertificate" => ""
]
}

este é o retorno que estou tendo quando instacio a class EfiPay, acredito que deu certo, mas vou fazer mais testes

# pix
Avatar discord do usuario matheuzin6375

matheuzin6375

então, eu ja baixei o arquivo até no diretorio e passei o caminho relativo: show\producao-550582-AC7PRODUCTION_cert.pem, mas também deu o mesmo erro

# assinaturas
Avatar discord do usuario vitorsenna

vitorsenna

A partir desse método, que recebe como body:
{
"plan_id": 3,
"customer": {
"email": "[email protected]",
"phone_number": "31123456789"
},
"items": [{
"name": "Product 1",
"value": 1000,
"amount": 1
}],
"shippings": [{
"name": "frete",
"value": 1800
}]
}

# bolix
Avatar discord do usuario rafael_13315

rafael_13315

Ver Respostas

Boa tarde, estou tentando gerar um boleto em homologaçao

POST
Endereço: https://cobrancas-h.api.efipay.com.br/v1/charge/one-step

no campo body -> raw informo ex:

{
"items": [
{
"name": "Product 1",
"value": 1000,
"amount": 1
}
],
"payment": {
"banking_billet": {
"expire_at": "2019-10-16",
"customer": {
"name": "Gorbadoc Oldbuck",
"email": "[email protected]",
"cpf": "14014603059",
"birth": "1977-01-15",
"phone_number": "62986070247"
}
}
}
}

no header informo

Authorization: "meu token gerado"
Content-Type: application/json

ao executar, recebo o erro "Bad Request 400"

alguem consegue me informar o que poderia estar errado ?

# cartões
Avatar discord do usuario allisson4027

allisson4027

Ver Respostas

Bom dia pessoal, estou fazendo a integração da api de cobrança do cartão e usei o SDK pois o procedimento de geração do payment_token no back-end foi descontinuado.

Estou realizando o procedimento correto de todas as etapas para obter o payment_token, porém não estou conseguindo ver o pagamento realizado depois de obter o payment_token,

algumas duvidas:

1 - Depois gerar o payment_token preciso utiliza-lo em algum lugar?
2 - Onde passo o installments para número da parcela no SDK?

EfiJs.CreditCard
.setAccount('Identificador_de_conta_aqui')
.setEnvironment('production') // 'production' or 'sandbox'
.setCreditCardData({
brand: 'visa',
number: '4485785674290087',
cvv: '123',
expirationMonth: '05',
expirationYear: '2029',
reuse: false
})
.getPaymentToken()


Ainda estou com debbuger ligado:

Environment production
salt: success
publicKey: success
creditCardData success
cardDataEncripted: success
Application_type: Node
getFingerPrint: success
paymentTokenData: success

# bolix
Avatar discord do usuario rafaelogliari

rafaelogliari

Ver Respostas

Bom dia!

Estou com dificuldades de gerar boleto com PHP Curl. Sempre retorna: Unauthorized.
Utilizei credencias de Homologação.

Estou utilizando esse modelo:
$config = [
"client_id" => "Client_Id_....",
"client_secret" => "Client_Secret_...."
];
$autorizacao = base64_encode($config["client_id"] . ":" . $config["client_secret"]);

$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => 'https://cobrancas-h.api.efipay.com.br/v1/charge/one-step',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"items": [{
"name": "Product 1",
"value": 500,
"amount": 1
}],
"shippings": [{
"name": "Default Shipping Cost",
"value": 100
}],
"payment": {
"banking_billet": {
"expire_at": "2024-04-16",
"customer": {
"name": "Gorbadoc Oldbuck",
"email": "[email protected]",
"cpf": "10617184682",
"birth": "1977-01-15",
"phone_number": "62986070247"

}
}
}
}',
CURLOPT_HTTPHEADER => array(
"Authorization: Basic $autorizacao",
"Content-Type: application/json"
),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

# pix
Avatar discord do usuario lidiamariano

lidiamariano

Ver Respostas

essas são todas as variáveis de ambiente que uso. elas estão preenchidas mas mandem vazias por questão de segurançaEFI_CLIENT_ID =""
EFI_CLIENT_SECRET =""
EFI_ENDPOINT = "https://pix.api.efipay.com.br"
NODE_ENV = "production"
EFI_CERT = ""

# cartões
Avatar discord do usuario rodolphot

rodolphot

Ver Respostas

TL;DR: Webhook sendo bloqueada pelo Bot Fight Mode do Cloudflare
----
Boa tarde, pessoal. Desculpe se esse não é o melhor local para enviar minha mensagem mas não encontrei um que tratasse apenas de webhooks.

Vamos lá: Quando faço uma chamada na API da Efí solicitando o pagamento tudo funciona corretamente, o problema não está aí. Acontece que estou informando uma 'notification_url' que usa o Cloudflare (tanto o WAF como o 'Bot Fight Mode' do Cloudflare).

No WAF tenho regras para liberar qualquer requisição no caminho que informei lá na 'notification_url', digamos, "dominio.com.br/webhooks/efi". A regra do WAF funciona (Recebo outros webhooks similares sem problema)... porém as requisições vindas da Efí são sempre identificadas/filtradas no "Bot Fight Mode", o que ocorre antes de sequer chegarem aos meus filtros do WAF... e, sendo assim, as requisições estão sendo sempre descartadas.

Note que não uso o "Super Bot Fight Mode" que, nesse caso, seria sim possível criar uma regra no WAF que pule o "Super Bot Fight Mode", mas não do "Bot Fight Mode". (Há, inclusive, um aviso em destaque no local onde você habilita o Bot Fight Mode: "Note: Other security products cannot be used to skip Bot Fight Mode.") (Pelo que li isso pode mudar no futuro.... mas infelizmente tenho esse problema hoje).

Uma "solução" que encontrei (mas sequer testei pois não é possível pra mim) é desabilitar o Bot Fight Mode.... infelizmente isso não é uma solução.

Parece existir meios de mitigar isso, inclusive a Efí cadastrando o bot com a Cloudflare deve ser o bastante (https://radar.cloudflare.com/traffic/verified-bots). Vocês podem pensar nisso?

Eu que estou fazendo algo errado? Não devo ser o único passando por isso mas não encontrei nada a respeito..

# pix
Avatar discord do usuario _josemax

_josemax

Ver Respostas

if(EFI_API_MOD =='sanbox'){
$sandbox = true; // false = Production | true = Homologation
}elseif(EFI_API_MOD =='production'){
$sandbox = false; // false = Production | true = Homologation
}

# pix
Avatar discord do usuario disneyjj

disneyjj

Ver Respostas

Boa tarde pessoal, estou usando o método CreateOneStepLink na SDK .net core.

Estou recebendo esse seguinte erro:{"code":3500034,"error":"validation_error","error_description":"A propriedade [request_delivery_address] é obrigatória."}

Estou enviando o body disponibilizado na SDK.

var body = new
{
items = new[] {
new {
name = "Product 1",
value = 590,
amount = 2
}
},
settings = new
{
payment_method = "all",
expire_at = "2022-12-15",
request_delivery_address = false
}
};

# pix
Avatar discord do usuario peterfritz

peterfritz

Algo assim funcionaria:

js
import axios from "axios";
import https from "https";

const subdomain = process.env.NODE_ENV === "production" ? "pix" : "pix-h";

const clientCreds = clientId + ":" + clientSecret;
const authorization = Basic ${Buffer.from(clientCreds).toString("base64")};

const certificate = Buffer.from(certificateBase64Encoded, "base64");

const httpsAgent = new https.Agent({
pfx: certificate,
passphrase: "",
});

const oAuthResponse = await axios.post(
https://${subdomain}.api.efipay.com.br/oauth/token,
{
grant_type: "client_credentials",
},
{
headers: {
Authorization: authorization,
"Content-Type": "application/json",
},
httpsAgent,
}
);

const token = oAuthResponse.data.access_token;

const efiApi = axios.create({
baseURL: https://${subdomain}.api.efipay.com.br,
headers: {
Authorization: Bearer ${token},
"Content-Type": "application/json",
},
httpsAgent,
});

await efiApi.put(
/v2/webhook/${process.env.PIX_KEY},
{
webhookUrl:
${process.env.WEBHOOK_BASE_URL}/api/webhook/efi?secret=${process.env.WEBHOOK_SECRET}&ignore=.replace(
"//api",
"/api"
),
},
{
headers: {
"x-skip-mtls-checking": "true",
},
}
);