Nova venda CPFL
Essa aba contem informações especificas para novas vendas feitas para a CPFL
Especificações
Antes dos detalhes da requisição de uma nova venda, é importante se atentar às seguintes regras da CPFL:
Novas Vendas
1 - O envio de novas vendas para a CPFL é feito diariamente (somente 1x), somente em dia útil.
2 - Vendas requisitadas ao Motor RCE antes das 15h (3PM), serão enviadas para a CPFL no mesmo dia, se for dia útil
3 - Vendas requisitadas ao Motor RCE após às 15h (3PM) serão enviadas para a CPFL no próximo dia útil
Retornos
A CPFL tem um fluxo de retornos assíncrono diário, normalmente feito pela parte da manhã, retornando resultados referentes a vendas feitas em D-1. Por exemplo, uma venda feita no dia 13/05/2024, provavelmente terá a sua aprovação ou rejeição informada pela CPFL no dia 14/05/2024.
Uma venda feita em uma sexta-feira terá o seu a sua aprovação ou rejeição na próxima segunda-feira.
A CPFL nos notifica diariamente, 4 tipos de retornos referentes a venda: aprovação, rejeição, faturamento, pagamento e estornos (ocorrem quando o cliente solicita o cancalamento/estorno da cobrança diretamente com a concessionária).
Existem detalhes especificos referentes aos retornos dos tipos rejeições e pagamento.
Rejeições
Existem 3 contextos de rejeições dentro da CPFL, que são: rejeição crítica, rejeição não crítica e rejeição devido a instalação já faturada no mês.
1 - Rejeição Não Crítica
Ocorre quando a CPFL retorna que a cobrança foi rejeitada devido a uma das rejeições não críticas. Nesse caso é importante entender que a cobrança ainda vai ser tentada mais 3x, antes de ser cancelada. Quando recebemos uma rejeição desse tipo, nós geramos uma notificação do tipo Cobrança Rejeitada. Para mais detalhes, siga a documentação disponível aqui.
2 - Rejeição Crítica
Ocorre quando a CPFL retorna que a cobrança foi rejeitada devido a uma das rejeições críticas. Isso pode ocorrer tanto na primeira cobrança, quando nas seguintes cobranças de recorrencias. Nesse caso todas as cobranças futuras da venda são canceladas, mas ainda teremos retornos referentes a cobranças anteriores. Nesse caso nós geramos uma notificação do tipo Venda Cancelada. Para mais detalhes, siga a documentação disponível aqui.
3 - Rejeição devido a instalação já faturada no mês
Ocorre quando a CPFL retorna que a cobrança foi rejeitada devido a conta de energia do cliente já ter sido faturada no mês atual. Isso ocorre pois dentro da CPFL existem janelas de faturamento, e isso infelizmente não está sobre o controle do Motor de Recorrencia. Nesses casos, a cobrança vai ser re-agendada para o primeiro dia últil do próximo mês. Por exemplo, se uma venda feita no dia 12/06/2024 receber um retorno referente a esse tipo, vamos tentar enviar a cobrança novamente no dia 01/07/2024.
Pagamentos
No caso da CPFL, existe a possibilidade do cliente parcelar uma cobrança. Então é possivel que existam 2 pagamentos para o mesmo mês de referência. Por exemplo, se uma cobrança de R$ 50 for cobrada no mês de Março, e o cliente solicitar o parcelamento em 2x, é possível que no mês de Abril existam 2 retornos de pagamento, um referente ao parcelamento, e outro referente a cobrança da recorrência.
Especificações objeto address
O objeto endereço se refere as informações da UC em que será feita a inclusão de uma nova venda
Campo | Descrição | Tipo | Validação | Obrigatório |
---|---|---|---|---|
neighborhood | Bairro | string | Min. 3 | SIM |
installationNumber | Numera impressa na conta | string | Min. 7 / Máx 11 | SIM |
address | Endereço (Rua, Av) | string | Valida presença do campo | SIM |
addressNumber | Número da residencia | string | Valida presença do campo | SIM |
city | Cidade | string | Valida presença do campo | SIM |
zipCode | CEP | string | CEP Válido | SIM |
Especificações objeto client
O objeto client
se refere ao titular da conta energia, quando não houver um responsável finaceiro. Caso contrário,
se refere ao responsável pela aquisição da venda/serviço, e então deve existir o objeto financialResponsible
na requisição.
Campo | Descrição | Tipo | Validação | Obrigatório |
---|---|---|---|---|
firstName | Nome | string | Valida presença do campo | SIM |
lastName | Sobrenome | string | Valida presença do campo | SIM |
cpf | CPF | string | CPF Válido | SIM |
numberOnDealership | PN do Cliente | string | 10 Dígitos | SIM |
birthdate | Data de nascimento | string | Data válida, formato YYYY-MM-DD | SIM |
rg | RG | string | RG Válido | SIM |
phoneNumber | Telefone | string | 11 Digitos - DD + Número | SIM |
isFinancialResponsible | Se é resp. financeiro | boolean | Valida presença do campo | SIM |
Validações adicionais:
- 1 - Os campos
numberOnDealership
,cpf
,rg
ephoneNumber
não são obrigatórios no objetoclient
, se, e SOMENTE SE, o cliente não for o resp. financeiro, isso é, o campoisFinancialResponsible
tiver valorfalse
. - 2 - Se o campo
isFinancialResponsible
tiver valorfalse
, a requisição deve conter o objetofinancialResponsible
, especificado mais abaixo. - 3 - Se o campo
isFinancialResponsible
tiver valortrue
, a requisição não pode conter o o objeto `financialResponsible.
Especificações objeto sale
O objeto sale
se refere aos dados da venda que será enviada para a concessionária.
Campo | Descrição | Tipo | Validação | Obrigatório |
---|---|---|---|---|
productId | Id do produto | number | Valida tipo, e se está registrado no Motor RCE | SIM |
dealershipId | Id da concessionária | number | Valida tipo, e se é código válido | SIM |
shouldChargeFee | Se possui cobrança de adesão | boolean | Valida tipo e presença | SIM |
externalId | Id de controle externo | string | Valida apenas tipo | NÃO |
startChargingAt | Data para início da cobrança | string | Data válida, formato YYYY-MM-DD | NÃO |
Validações adicionais:
- 1 - Um
cpf
(de cliente ou resp. financeiro) não pode possuir mais de 1 venda referente a um mesmo produto que não esteja em análise, processando ou venda ativa - 2 - O campo
shouldChargeFee
só deve ser informado comotrue
se o produto tiver o valor de sua taxa de adesão configurado no Motor RCE, caso contrário a requisição será recusada
Especificações objeto financialResponsible
O objeto financialResponsible
se refere ao titular da conta energia, quando quem está solicitando uma nova cobrança não for o titular da conta de energia da
instalação.
Campo | Descrição | Tipo | Validação | Obrigatório |
---|---|---|---|---|
firstName | Nome | string | Valida presença do campo | SIM |
lastName | Sobrenome | string | Valida presença do campo | SIM |
cpf | CPF | string | CPF Válido | SIM |
numberOnDealership | PN do Cliente | string | 10 Dígitos | SIM |
birthdate | Data de nascimento | string | Data válida, formato YYYY-MM-DD | SIM |
rg | RG | string | RG Válido | SIM |
phoneNumber | Telefone | string | 11 Digitos - DD + Número | SIM |
Validações adicionais:
- 1 - O
financialResponsible
só deve estar presente na requisição, se, e SOMENTE SE, o cliente não for o resp. financeiro, isso é, o campoisFinancialResponsible
do objetoclient
tiver valorfalse
. Caso contrário, a requisição será recusada
Exemplo de Requisição
{
"address": {
"neighborhood": "Cool Neighborhood",
"installationNumber": "32785909",
"address": "3rd Avenue",
"addressNumber": "1234",
"city": "Springfield",
"zipCode": "66542439"
},
"client": {
"firstName": "John",
"lastName": "Doe",
"cpf": "84403202055",
"numberOnDealership": "1234567890",
"birthdate": "1992-04-12",
"rg": "9839233",
"phoneNumber": "11987653287",
"isFinancialResponsible": true
},
"sale": {
"productId": 1,
"dealershipId": 3,
"externalId": "123-456-789",
"shouldChargeFee": true,
"startChargingAt": "2024-07-10"
}
}
Schema de Responses
HTTP Code - 200
Venda feita com sucesso
{
"message": "Sale created with success!",
"saleId": "3020cce6-6e5e-4587-ae98-89b8e38b3a64"
}
HTTP Code - 422
- Venda ativa já existente para o
cpf
solicitado
{
"message": "Invalid input error",
"reason": "Active sale for cpf and same product already exists",
"code": 422
}
- Cobrança de adesão solicitada para produto que não possui o valor da taxa configurada no Motor RCE
{
"message": "Invalid input error",
"reason": "No fee value for this product, make the request again with shouldChargeFee = false",
"code": 422
}
HTTP Code - 400
- Venda solicitada com campo
isFinancialResponsible
com valor false, mas o objetofinancialResponsible
não está presente no corpo da requisição
{
"message": "Request body for new sale on CPFL is invalid",
"code": 400,
"invalidFieldsErrors": [
{
"field": "body",
"message": "financialResponsible object is required when isFinancialResponsible is false on client object, and cannot be present when isFinancialResponsible is true on client object"
}
]
}
HTTP Code - 401
- Requisição não autorizada
{
"message": "Unauthorized"
}