curl --request GET \
--url https://api.usevext.com/v1/client_config \
--header 'X-Vext-Publishable-Key: <api-key>'<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.usevext.com/v1/client_config",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Vext-Publishable-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}const options = {method: 'GET', headers: {'X-Vext-Publishable-Key': '<api-key>'}};
fetch('https://api.usevext.com/v1/client_config', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.usevext.com/v1/client_config"
headers = {"X-Vext-Publishable-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text){
"object": "client_config",
"available": true,
"tokenization": {
"endpoint": "<string>",
"public_key": "<string>"
},
"three_d_secure": {
"supported": true
},
"brands": [
"visa"
],
"max_installments": 6,
"min_amount": 123
}Configuração para o navegador
O que o vext.js pergunta antes de tokenizar. Você normalmente não chama esta rota.
curl --request GET \
--url https://api.usevext.com/v1/client_config \
--header 'X-Vext-Publishable-Key: <api-key>'<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.usevext.com/v1/client_config",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Vext-Publishable-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}const options = {method: 'GET', headers: {'X-Vext-Publishable-Key': '<api-key>'}};
fetch('https://api.usevext.com/v1/client_config', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.usevext.com/v1/client_config"
headers = {"X-Vext-Publishable-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text){
"object": "client_config",
"available": true,
"tokenization": {
"endpoint": "<string>",
"public_key": "<string>"
},
"three_d_secure": {
"supported": true
},
"brands": [
"visa"
],
"max_installments": 6,
"min_amount": 123
}vext.js o faz por
você, uma vez por página.Ela está documentada porque é exatamente o que a sua chave pk_ alcança — e saber o que uma chave
pública consegue fazer não deveria exigir ler o nosso código.GET /v1/installments, atrás da chave secreta — em
unavailable_reason.GET /v1/installments, atrás da chave secreta. Entregá-la ao
navegador deixaria qualquer um ler a taxa contratada de uma loja a partir do HTML dela.Authorizations
Chave publicável, criada no painel em Desenvolvedores →
Navegador. É a única credencial que pode ir para o navegador do
comprador, e a única que o vext.js usa.
Ela não carrega escopos: o que ela alcança é decidido pela rota, e
hoje é uma só - GET /v1/client_config. Não cria cobrança, não lê
venda, não move dinheiro.
Sendo pública por natureza - ela fica no código-fonte de uma página que qualquer um abre -, a proteção dela não é o segredo: é a allowlist de domínios. Cadastre os domínios das suas páginas de pagamento, e uma chamada de qualquer outra origem é recusada. Sem isso, copiar a chave do seu HTML bastaria para tokenizar cartão em nome da sua loja de outro site.
Na prática você quase nunca a manda à mão: Vext('pk_live_...')
cuida disso.
Response
A configuração. Com available: false, nenhuma credencial vem
preenchida.
O que o vext.js recebe. Todo campo está sempre presente, e os
anuláveis vêm null quando o cartão está indisponível - nenhuma
credencial é entregue nesse caso.
Note o que não está aqui, e não vai estar: o motivo da indisponibilidade e a grade de parcelas com preço. Esta resposta é lida por um navegador qualquer, e os dois seriam informação da loja vazando para quem abre a página dela.
"client_config"Show child attributes
Show child attributes
Show child attributes
Show child attributes
visa, mastercard, elo, hipercard, amex, diners, discover, aura 1 <= x <= 12Valor monetário em centavos inteiros de real. R$ 10,00 = 1000.
Nunca decimal, nunca string.