Histórico de mensagens sobre js em assinaturas

EXIBINDO CONVERSAS RECENTES:

Texto: js
Canal: assinaturas
Avatar discord do usuario antoniofernandes

antoniofernandes

Ver Respostas

@joaolucas_efi Boa tarde
estou tentando usar no novo skd com typescrit

js
const efiPay = new EfiPay(optionsEfi)

sendo meu optionsEfi:
js
optionsEfi {
sandbox: true,
client_id: 'Client_Id_a344…..’,
client_secret: 'Client_Secret_1a7…….’,
certificate: '0�\n' +
'm\x02\x01\x030�\n' +
'3\x06\t�H��\r\x01\x07\x01��\n' +
'$\x04�\n' +
' 0�\n' +
'\x1C0�\x04�\x06\t
�H��\r\x01\x07\x01��\x04�\x04�\x04�0�\x04�0�\x04�\x06\x0B�H��\r\x01\f\n' +
'\x01\x03��\x04�0�\x04|\x06\n' + …….
,
cert_base64: false
}

porem estou recebando o erro

ERROR TypeError: sdk_node_apis_efi_1.default is not a constructor
781119110310002689/1726676719481message.txt

Avatar discord do usuario antoniofernandes

antoniofernandes

Ver Respostas

Por favor me tire mais uma duvida, usando o sdk do front yarn add payment-token-efi agora essa função

js
async function generatePaymentToken() {
try {
const result = await EfiPay.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();

const payment_token = result.payment_token;
const card_mask = result.card_mask;

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

substitui esse abaixo:
js

$gn.ready(function (checkout) {

checkout.getPaymentToken(
{
brand: 'visa', // bandeira do cartão
number: '4012001038443335', // número do cartão
cvv: '123', // código de segurança
expiration_month: '05', // mês de vencimento
expiration_year: '2021', // ano de vencimento
reuse: false // tokenização/reutilização do payment_token
},
function (error, response) {
if (error) {
// Trata o erro ocorrido
console.error(error);
} else {
// Trata a resposta
console.log(response);
}
}
);



????

Avatar discord do usuario antoniofernandes

antoniofernandes

Ver Respostas

vou verificar, mas caso nao queira atualizar agora para no novo sdk visto que ja tenho tudo implementado, esse abaixo ainda estão funcionais?

js
import as Gerencianet from 'gn-api-sdk-typescript';
import GnSdk from 'gn-api-sdk-typescript/dist/src/gn-sdk';

Avatar discord do usuario antoniofernandes

antoniofernandes

Ver Respostas

Até onde testastamos funcionou a criação do plano, a criação da assinatura, mas no método abaixo:

js
this.gerencianet.paySubscription(params, body)


recebemos o erro:

js
{
"code": 3500010,
"error": "property_does_not_exists",
"error_description": {
"property": "payment_token",
"message": "A propriedade [payment_token] informada não existe."
}
}
sendo que estou enviando os dados:

js
bodyPayment {
payment: {
credit_card: {
payment_token: 'aqui_meu_payment_token',
billing_address: [Object],
customer: [Object]
}
}
}

Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

Bom dia, @antoniofernandes. Tudo bem?
Sugerimos que altere para o novo pacote sdk-node-apis-efi, ele já é compatível com TS.

Avatar discord do usuario antoniofernandes

antoniofernandes

Ver Respostas

Já há algum tempo atrás venho construindo uma aplicação onde havia integrado o gerencianet como meio de pagamento, onde integrei o sistema de assinatura, onde tinha testado em homologação e estava tudo funcinando. Agora começamos a subir a aplicação e logo no primeiro teste pra valer encontramos problemas.

Minha primeira pergunta é se as bibliotecas abaixo ainda estão funcionando e se ponde ser usadas:

js

import as Gerencianet from 'gn-api-sdk-typescript';
import GnSdk from 'gn-api-sdk-typescript/dist/src/gn-sdk';

Avatar discord do usuario jwesleylima

jwesleylima

Ver Respostas

Bom dia, pessoal. Beleza? Tenho duas dúvidas. Está grande, mas tentei exemplificar para ficar mais claro

Contexto da minha integração: Uso Assinaturas por link, apenas "credit_card", em NodeJS.

-> DÚVIDA 1:

é possível eliminar a necessidade do meu cliente preencher o "Endereço de Cobrança"?

Já crio a subscription com "request_delivery_address" como false, mas esse é o de entrega apenas. Há um parecido para endereço de cobrança?

Isso otimizaria a quantidade de campos para o cliente preencher. Além disso, como esse endereço geralmente não é exigido na maioria dos formulários de assinatura de outras plataformas de pagamento, alguns clientes podem se perguntar por que algum "endereço" é necessário para um produto digital como o meu. O "porque" não fica exatamente claro para o cliente na página de checkout.

---

-> DÚVIDA 2

É possível gerar um link de assinatura que "lembra" dos dados do cliente?

Exemplo: inicialmente um cliente escolhe o plano mensal. Porém, 3 meses depois, ele decide mudar para o plano anual para economizar.

Talvez não seja possível fazer uma mudança dinâmica de planos. Nesse caso, seria necessário cancelar a assinatura atual e iniciar uma nova?

A questão é:

Como fazer uma mudança de planos suave para o cliente? Há uma forma de criar essa nova assinatura/link de assinatura, agora com o plano "anual", sem que o cliente precisa preencher todos os campos novamente?

Agradeço desde já 🤔🤝

Avatar discord do usuario jwesleylima

jwesleylima

Ver Respostas

Boa tarde, tudo bem?

Estou integrando as Assinaturas OneStep no meu sistema com NodeJS. Estou no modo de homologação (teste) e está tudo funcionando como esperado.

Agora, quando entrei no url de pagamento, me perguntei se haviam cartões de teste e coisas do tipo. Pelas mensagens aqui, vi que ainda não tem suporte a teste de assinaturas em homologação.

Dúvida: Como posso testar então? É complicado ir pra produção sem certificar o funcionamento das notificações e tudo mais, não?

Avatar discord do usuario rodrigoaes

rodrigoaes

Tenho uma dúvida, o webhook da API-Cobranças é capaz de disparar para um servidor Ngrok?

https://4346-2804-14d-32d1-906c-e585-f08b-484e-8730.ngrok-free.app

At´pe agora ele não disparou aqui, fiz um teste no postman e e apareceu no console do meu servidor Node.JS que eu disparei uma requisição pra la, mas o da Efí não chegouy aqui

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas
Avatar discord do usuario lirousme

lirousme

Ver Respostas

'https://efipay.github.io/js-payment-token-efi/' Estava configurando o layout desse exemplo, para usar ele para gerar payment token, e então usar esse paymente token para executar esse arquivo 'sdk-php-apis-efi/examples/charges/subscription/createOneStepCardSubscription.php', entretando se o usuário preencher esse formulário e depois o programa chamar 'OneStepCardSubscription.php', me parece que vão haver duas cobranças no cartão do cliente, pois os dois arquivo solicitam um valor, alguém pode me ajudar a resolver isso? Obs: Ao envia esse formulário 'https://efipay.github.io/js-payment-token-efi/' vai haver uma cobranaça não relacionada com a assinatura, mas eu preciso apenas do paymente token, pois esse arquivo aqui exige o paymente token 'OneStepCardSubscription.php', que de fato é o arquivo que vai fazer uma cobrança e a assinatura do cliente no plano.

Avatar discord do usuario igor_efi

igor_efi

Ver Respostas

Boa tarde, @leandrosouza_54322! Tudo bem?
Geralmente esta falha é retornada quando o json enviado esta errado.
Vou criar um atendimento para verificar melhor

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Olá, @vitorsenna. Bom dia! Tudo bem e com você?
Os possíveis retornos do método que identifica a bandeira, são: "undefined", "unsupported", "visa", "mastercard", "amex", "elo", "hipercard".
Estes e outros detalhes você encontra no repositório GitHub da biblioteca.
https://github.com/efipay/js-payment-token-efi?tab=readme-ov-file#identificar-a-bandeira

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

As assinaturas vão ter os status da tanto da assinatura quanto os status das transações. Segue um exemplo de notificação de assinatura:

json
{
"code": 200,
"data": [
{
"id": 1,
"type": "subscription",
"custom_id": null,
"status": {
"current": "new",
"previous": null
},
"identifiers": {
"subscription_id": 11976
},
"created_at": "2021-07-20 00:20:16"
},
{
"id": 2,
"type": "subscription_charge",
"custom_id": null,
"status": {
"current": "new",
"previous": null
},
"identifiers": {
"subscription_id": 11976,
"charge_id": 2396478
},
"created_at": "2021-07-20 00:20:16"
},
{
"id": 3,
"type": "subscription_charge",
"custom_id": null,
"status": {
"current": "waiting",
"previous": "new"
},
"identifiers": {
"subscription_id": 11976,
"charge_id": 2396478
},
"created_at": "2021-07-20 00:20:27"
},
{
"id": 4,
"type": "subscription",
"custom_id": null,
"status": {
"current": "active",
"previous": "new"
},
"identifiers": {
"subscription_id": 11976
},
"created_at": "2021-07-20 00:20:28"
},
{
"id": 5,
"type": "subscription_charge",
"custom_id": null,
"status": {
"current": "paid",
"previous": "waiting"
},
"identifiers": {
"subscription_id": 11976,
"charge_id": 2396478
},
"created_at": "2021-07-22 03:19:17",
"value": 12390,
"received_by_bank_at": "2022-03-28" // data do pagamento da cobrança
},
{
"id": 6,
"type": "subscription_charge",
"custom_id": null,
"status": {
"current": "new",
"previous": null
},
"identifiers": {
"subscription_id": 11976,
"charge_id": 2688053
},
"created_at": "2021-08-20 00:30:09"
},
{
"id": 7,
"type": "subscription_charge",
"custom_id": null,
"status": {
"current": "waiting",
"previous": "new"
},
"identifiers": {
"subscription_id": 11976,
"charge_id": 2688053
},
"created_at": "2021-08-20 00:30:09"
},
{
"id": 8,
"type": "subscription_charge",
"custom_id": null,
"status": {
"current": "unpaid",
"previous": "waiting"
},
"identifiers": {
"subscription_id": 11976,
"charge_id": 2688053
},
"created_at": "2021-08-25 01:32:38"
},
{
"id": 9,
"type": "subscription",
"custom_id": null,
"status": {
"current": "canceled",
"previous": "active"
},
"identifiers": {
"subscription_id": 11976
},
"created_at": "2021-08-28 23:26:58"
}
]
}
Você vai sempre verificar o "type": "subscription", e o status da assinatura.
E quando for "type": "subscription_charge", você verá o status de uma transação

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

@gabrielcarvalho_27631, na criação do plano você irá definir o nome do plano, intervalo e quantidade de repetições. O valor é definido na criação da assinatura.
Então para criar um plano com a regra mencionada, você irá definir interval=12 e repeats a quantidade de vezes que deseja cobrar essa anuidade, se deixar repeats=null as cobranças serão geradas por tempo indeterminado ou até que a assinatura seja cancelada.

Exemplo:

json
{
"name": "Plano de Internet - Velocidade 10 Mb",
"interval": 12, // uma cobrança a cada 12 meses
"repeats": null // quantidade de repetições indeterminada
}

Documentação completa para criação do plano: https://dev.efipay.com.br/docs/api-cobrancas/assinatura#crie-o-plano-de-assinatura

Avatar discord do usuario fabio_p_almeida

fabio_p_almeida

na minha maquina onde trabalho é linux Debian e funciona perfeitamente, porem em maquinas windows tenho o seguinte retorno:

Objeto JSON no terminal:
{"metadata":{"notification_url":"https://www.velejarsoftware.com.br"},"payment":{"banking_billet":{"configurations":{"fine":200,"interest":33},"expire_at":"2024-02-06","message":"Pague pelo código de barras ou pelo QR Code","customer":{"address":{"zipcode":"46300000","number":"192","city":"Caculé","street":"AV ANTONIO MUNIZ","neighborhood":"CENTRO","state":"BA","complement":""},"juridical_person":{"corporate_name":"JOSE LUIS FROTA AGUIAR","cnpj":"20790401000108"},"phone_number":"7734551000","email":"[email protected]"}}},"items":[{"amount":1,"name":"MUST F R G 20KG","value":1000}]}
ERRO 4: Authorization Error: Client_id or Client_secret are wrong
ERRO 5: br.com.efi.efisdk.exceptions.AuthorizationException: Authorization Error: Client_id or Client_secret are wrong

Avatar discord do usuario antoniofernandes

antoniofernandes

Ver Respostas

Considerando que essa é a funcao que gera o payment

js

window.getPaymentToken(
{
brand: data.brand,
number: data.cardNumber,
cvv: data.cvv,
expiration_month: data.month,
expiration_year: data.year,
},
checkPayment,
);


onde seria setado reuse = true?

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Olá, @pedrotti5377. Como vai?
Você está falando do json que recebemos quando consultamos o token de notificação?
Se for isso, cada notificação que mandarmos é para informar seu sistema de uma mudança de status. Então para verificar o que está mudando, sua aplicação só precisa acessar o último registro do json.

Avatar discord do usuario pedrotti5377

pedrotti5377

Ver Respostas

Olá, o retorno do JSON da assinatura retorna apenas 6 registros. Como sei qual mes esta sendo pago? E os demais meses? Alguem ja implementou isso?<#🔄assinaturas>

Avatar discord do usuario antoniofernandes

antoniofernandes

Ver Respostas

O payment_token está sendo gerado via frontend via javascript conforme a documentacao

js
window.getPaymentToken(
{
brand: data.brand,
number: data.cardNumber,
cvv: data.cvv,
expiration_month: data.month,
expiration_year: data.year,
},
checkPayment,
);
Vale ressaltar que o mesmo está retornando certinho.

conforme ja informei, o erro informa que
js
{
"code": 3500010,
"error": "property_does_not_exists",
"error_description": {
"property": "payment_token",
"message": "A propriedade [payment_token] informada não existe."
}
}
ou seja como se a propriedade payment_token nao fizesse parte do objeto de configuração....