Pix Cobrança Dinâmico Imediata Troco Com Valor

This commit is contained in:
Eduardo Bacarin 2025-07-04 17:28:56 -03:00
parent d26f5850f9
commit 5da8edc426
2 changed files with 65 additions and 0 deletions

View file

@ -212,5 +212,47 @@ class Pix extends Kore
$payload $payload
); );
} }
public function pixCobrancaDinamicoImediatoTrocoComValor($payload)
{
pixCobrancaImediataTrocoComValorRules($payload);
$korePayload = [
'calendario' => [
'expiracao' => $payload['expiracao'] ?? 86400,
],
'valor' => [
'original' => 0,
'retirada' => [
'troco' => [
'valor' => $payload['valor'],
'modalidadeAlteracao' => 0,
'prestadorDoServicoDeSaque' => $payload['ispb'],
'modalidadeAgente' => $payload['modalidadeAgente']
]
]
],
'chave' => $payload['chave'],
'txid' => $payload['txid'],
'solicitacaoPagador' => $payload['solicitacaoPagador'] ?? null
];
if (isset($payload['devedor'])) {
if (strlen($payload['devedor']['documento']) > 11) {
$korePayload['devedor']['cnpj'] = $payload['devedor']['documento'];
} else {
$korePayload['devedor']['cpf'] = $payload['devedor']['documento'];
}
$korePayload['devedor']['nome'] = $payload['devedor'];
}
return curlRequest(
$this->url . '/post',
'POST',
[],
[
'x-kore-drone-uid: drone:' . $this->drone,
'x-kore-drone-sign: ' . $this->signBody($korePayload)
],
$payload
);
}
} }

View file

@ -111,3 +111,26 @@ function pixCobrancaImediataTrocoSemValorRules(array $data)
return true; return true;
} }
} }
function pixCobrancaImediataTrocoComValorRules(array $data)
{
$rules = [
'expiracao' => 'sometimes|integer',
'devedor' => 'sometimes|array',
'devedor.documento' => 'sometimes|string|min:11|max:18',
'devedor.nome' => 'sometimes|required_with:devedor.documento|string|max:100',
'valor' => 'sometimes|integer',
'chave' => 'required|string',
'txid' => 'required|string|max:100',
'solicitacaoPagador' => 'string|max:140',
'ispb' => 'required|string',
'modalidadeAgente' => 'required|string|in:agtec,agtot'
];
$validate = validate($data, $rules);
if (!$validate['valid']) {
throw new Exception(json_encode(array_slice($validate['errors'], 0, 1)), 500);
} else {
return true;
}
}