diff --git a/src/Pix.php b/src/Pix.php index 23c97bc..e508a6d 100644 --- a/src/Pix.php +++ b/src/Pix.php @@ -168,4 +168,49 @@ class Pix extends Kore $payload ); } + + public function pixCobrancaDinamicoImediatoTrocoSemValor($payload) + { + pixCobrancaImediataTrocoSemValorRules($payload); + $korePayload = [ + 'calendario' => [ + 'expiracao' => $payload['expiracao'] ?? 86400, + ], + 'valor' => [ + 'original' => 0, + 'retirada' => [ + 'troco' => [ + 'valor' => $payload['valor'] ?? 0, + 'modalidadeAlteracao' => 1, + '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 + ); + } + } diff --git a/src/rules.php b/src/rules.php index 38e37c3..f8d4051 100644 --- a/src/rules.php +++ b/src/rules.php @@ -88,3 +88,26 @@ function pixCobrancaImediataSaqueComValorRules(array $data) return true; } } + +function pixCobrancaImediataTrocoSemValorRules(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; + } +}