Histórico de mensagens sobre Product

EXIBINDO CONVERSAS RECENTES:

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

wevertondumont

Ver Respostas

Interessante, descobri que não é possível Processar uma notificação de cobrança(Cartão ou boleto) utilizando um Queued Job do Laravel(Versão 10x + Fila Redis + horizon).
Ele dá o seguinte erro: production.info: undefined array key "REMOTE_ADDR", omesmo código fora de um Job, por exemplo uam Action ou Controller simples, funciona perfeitamente. Estou utilizando a SDK Php nova da Efi.

# cartões
Avatar discord do usuario joaolucas_efi

joaolucas_efi

Bom dia @jamersonbernardo, tudo bem?

Você pode utilizar o seguinte exemplo para gerar o payment token com React.

Exemplo alternativo para gerar payment_token react:

js
"use client"
import { useEffect, useState } from 'react';

const App = () => {
const [message, setMessage] = useState('Hello React!');

useEffect(() => {
const script = document.createElement('script');
script.type = 'module';
script.src = 'https://cdn.jsdelivr.net/gh/efipay/js-payment-token-efi/dist/payment-token-efi.min.js';
script.onload = runEfiJsCode;
document.head.appendChild(script);
}, []);

const runEfiJsCode = async () => {
try {
EfiJs.CreditCard
.debugger(false)
.setAccount('')
.setEnvironment('') // 'production' or 'sandbox'
.setCreditCardData({
brand: '',
number: '',
cvv: '',
expirationMonth: '05',
expirationYear: '2029',
reuse: false
})
.getPaymentToken()
.then(data => {
const payment_token = data.payment_token;
const card_mask = data.card_mask;

setMessage(Payment_token: ${payment_token} | Card_mask: ${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);
}
};

return (

{message}

);
};

export default function Home() {
return (



);
}

# assinaturas
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Isso, nesse script que gera o payment_token no frontend tem a definição do ambiente 'production' ou 'sandbox'. O ambiente deve ser o mesmo que o do backend.

# cartões
Avatar discord do usuario vts3632

vts3632

para criar o combo uso a extensão do woocommerce woo-product-bundle

# dúvidas
Avatar discord do usuario rodrigogaraujo

rodrigogaraujo

Ver Respostas

olá, boa tarde:
try {
EfiJs.CreditCard
.setAccount('Identificador_de_conta_aqui')
.setEnvironment('production') // '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);
}

aqui nesse ex, onde envio a quantidade de parcelas?

# cartões
Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

Bom dia @biruleibe6646 o webhook das cobranças de cartão de crédito funciona da mesma forma que das cobranças de boleto e carnês.
Ao criar a cobrança você define uma URL de notificação.
Segue um exemplo:

{
"items":[
{
"name":"Product 1",
"amount":1,
"value":1
}
],
"metadata":{
"notification_url":"https://sua-url.com.br"
},
"payment": {
"credit_card": {
"installments": 1,
"payment_token": "",
"billing_address": {
"street": "Street 3",
"number": 10,
"neighborhood": "Bauxita",
"zipcode": "35400000",
"city": "Ouro Preto",
"state": "MG"
},
"customer" : {
"name" : "Gorbadock Oldbuck",
"email" : "[email protected]",
"cpf": "94271564656",
"birth": "1977-01-15",
"phone_number": "5144916523"
}
}
}
}

# bolix
Avatar discord do usuario _alexandrehenrique

_alexandrehenrique

Ver Respostas

outra coisa ve se entendi corretamente

/ eslint-disable import/extensions /
import EfiPay from 'gn-api-sdk-typescript';
import options from '../../credentials';

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

items: [
{
name: 'Product 1',
value: 500,
amount: 1,
},
],
notification_url: 'http://your_domain.com/notification',
};

const efipay = new EfiPay(options);

efipay
.createOneStepCharge([], body)
.then((resposta: Promise) => {
console.log(resposta);
})
.catch((error: Promise) => {
console.log(error);
});
posso fazer dessa forma?

# devs
Avatar discord do usuario sammy.kunimatsu

sammy.kunimatsu

Ver Respostas

boa noite, estou usando Efí pela primeira vez, estou usando no node.js, queria saber por que está me retornando Unauthorized, meu código de teste:

js
require("dotenv").config()

const moment = require("moment")
const Gerencianet = require('gn-api-sdk-node');

let options = {
client_id: process.env.clientId,
client_secret: process.env.secretId,
sandbox: false,
}

let planBody = {
name: 'Assinatura de Sammy',
repeats: 24,
interval: 2,
}

let subscriptionBody = {
items: [
{
name: 'Product 1',
value: 100,
amount: 2,
},
],
}

const gerencianet = new Gerencianet(options)

function createSubscription(response) {
let params = {
id: response.data.plan_id,
}

return gerencianet.createSubscription(params, subscriptionBody)
}

gerencianet.createPlan({}, planBody)
.then(createSubscription)
.then((resposta) => {
console.log(resposta)
})
.catch((error) => {
console.log(error)
})

# pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

@conexao_cefet, agora está incluindo outros parâmetros. A variável options deve conter os seguintes parâmetros, e depois é acrescentado o headers com o parâmetro x-skip-mtls-checking.
$options = [
"client_id" => "Client_Id",
"client_secret" => "Client_Secret",
"certificate" => realpath(__DIR__ . "/productionCertificate.p12"), // Absolute path to the certificate in .pem or .p12 format
"sandbox" => false,
"debug" => false,
"timeout" => 30
];
https://github.com/gerencianet/gn-api-sdk-php/blob/master/examples/credentials/options.php

# pix
Avatar discord do usuario ysabella3926

ysabella3926

const urlApiProduction = 'https://api-pix.gerencianet.com.br'
const urlApiStaging = 'https://api-pix-h.gerencianet.com.br'

const https = require('https') //conexão segura para enviar dados
const axios = require('axios')
const fs = require('fs')//ler arquivos no disco
const baseURL = process.env.GN_ENV === 'production' ? urlApiProduction : urlApiStaging

# pix
Avatar discord do usuario ysabella3926

ysabella3926

require('dotenv').config({path: '../.env_homologation'})


console.log(process.env.GN_CLIENT_KEY_PROD)


const urlApiProduction = 'https://api-pix.gerencianet.com.br'
const urlApiStaging = 'https://api-pix-h.gerencianet.com.br'

const https = require('https') //conexão segura para enviar dados
const axios = require('axios')
const fs = require('fs')//ler arquivos no disco
const baseURL = process.env.GN_ENV === 'production' ? urlApiProduction : urlApiStaging

const getToken = async() =>{
//console.log('getToken', process.env.GN_CLIENT_KEY_PROD)
const certificate = fs.readFileSync('../' + process.env.GN_CERTIFICATE)
const credentials ={
client_id: process.env.GN_CLIENT_KEY_PROD,
client_secret: process.env.GN_CLIENT_SECRET_PROD
}
const data = JSON.stringify({grant_type: 'client_credentials'})//o que será retornado da api
const dataCredentials = credentials.client_id + ':' + credentials.client_secret
const auth = Buffer.from(dataCredentials).toString('base64')


const agent = new https.Agent({
pfx: certificate,
passphrase: '',
})

const config ={
method: 'POST',
url: baseURL + '/oauth/token',
headers: {
Authorization: 'Basic' + auth,
'Content-Type': 'application/json'
},
httpsAgent: agent,
data: data,
}
const result = await axios(config)
console.log(result.data)

}

getToken()

# devs
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, @hipopotato. Tudo bem?
De fato, iremos providenciar a correção do exemplo.
Para lhe adiantar, você pode enviar o body da seguinte maneira:

dynamic body = {
"items": [
{"name": "Product 1", "value": 1000, "amount": 2}
],
"shippings": [
{"name": "Default Shipping Cost", "value": 100}
],
"payment": {
"banking_billet": {
"expire_at": "2024-12-12",
"customer": {
"name": "Gorbadoc Oldbuck",
"email": "[email protected]",
"cpf": "94271564656",
"phone_number": "5144916523"
}
}
}
};

# bolix
Avatar discord do usuario miauzinho013

miauzinho013

Bom dia!, aqui está o código:


const credentials = require('../config/gerencianet')
const Gerencianet = require('gn-api-sdk-node');

const options = {
client_id: credentials.client_id,
client_secret: credentials.client_secret,
sandbox: true,
pix_cert: credentials.pix_cert,
};
console.log(options)
const gerencianet = new Gerencianet(options);

var body = {

payment: {
banking_billet: {
expire_at: '2020-06-12',
customer: {
name: 'Gorbadoc Oldbuck',
email: '[email protected]',
cpf: '04267484171',
birth: '2020-06-10',
phone_number: '5144916523' ,
juridical_person: {
corporate_name: 'Empresa Gorbadoc',
cnpj:'92247037000137'
}
}
}
},

items: [{
name: 'Product 1',
value: 1000,
amount: 2
}],
shippings: [{
name: 'Default Shipping Cost',
value: 100
}]
}

gerencianet
.createCharge({}, body)
.then(console.log)
.catch(console.log)

# cartões
Avatar discord do usuario You should motivate Urself. NOW!

You should motivate Urself. NOW!

Ver Respostas

Boa noite pessoal !
Estou tentando fazer a integração de pagamento com cartão de credito, porém recebo esse erro
Estou usando ambiente de homologação
Estou usando o metodo -> createOneStepCharge do sdk para Node

{
"code": 3500072,
"error": "request_not_allowed",
"error_description": "Não foi possível finalizar sua solicitação. Por favor, entre em contato com o suporte Gerencianet."
}

payload enviado
{
"payment": {
"credit_card": {
"installments": 1,
"payment_token": "e39d08751b5ee5c53645c874de29164c8d38fba5",
"billing_address": {
"street": "Maria Tereza",
"number": 10,
"neighborhood": "Centro",
"zipcode": "18209390",
"city": "Itapetininga",
"state": "SP"
},
"customer": {
"name": "Rafael Siqueira",
"email": "[email protected]",
"cpf": "36568749805",
"birth": "1987-09-25",
"phone_number": "15988342010"
}
}
},
"items": [{
"name": "Product 1",
"value": 1000,
"amount": 1
}]
}

# pix
Avatar discord do usuario lordvitao

lordvitao

digo, sem ser no production

# pix
Avatar discord do usuario lordvitao

lordvitao

Ver Respostas

quero testar no production

# assinaturas
Avatar discord do usuario carvalhocarneiro

carvalhocarneiro

Eu chamei outro método do SDK

def gerar_cobranca(self):
body = {
'items': [{
'name': "Product 1",
'value': 501,
'amount': 1
}],
}

print(self.gn.create_charge(body=body))

# pix
Avatar discord do usuario palloma_efi

palloma_efi

Ver Respostas

Seu certificado não está sendo encontrado. O nome dele é "productionCertificate" mesmo? Está com permissão para leitura?

# pix
Avatar discord do usuario allanmr7

allanmr7

Ver Respostas

alterei o caminho mas deu no mesmo
PHP Fatal error: Uncaught Error: SSL certificate not found: ./gn-api-sdk-php-psf/examples/pix/certs/productionCertificate.pem

# pix
Avatar discord do usuario allanmr7

allanmr7

"pix_cert": "./gn-api-sdk-php/productionCertificate.pem",