Criar sessão de checkout
Cria uma sessão de checkout hospedado. Redirecione o comprador para a checkoutUrl retornada — a Bob cuida da tela de pagamento, dos métodos disponíveis e da confirmação. Requer API key (Bearer).
curl --request POST \
--url https://api.payments.bob.company/api/v1/checkout-sessions/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"amountCents": 25000000,
"currency": "BRL",
"customer": {
"name": "<string>",
"email": "[email protected]",
"document": "<string>",
"phone": "<string>"
},
"items": [
{
"name": "<string>",
"quantity": 2,
"unitAmountCents": 1
}
],
"paymentMethods": [],
"metadata": {},
"successUrl": "<string>",
"cancelUrl": "<string>",
"webhookUrl": "<string>",
"webhookVersion": "v1",
"expiresAt": "2023-11-07T05:31:56Z"
}
'import requests
url = "https://api.payments.bob.company/api/v1/checkout-sessions/"
payload = {
"amountCents": 25000000,
"currency": "BRL",
"customer": {
"name": "<string>",
"email": "[email protected]",
"document": "<string>",
"phone": "<string>"
},
"items": [
{
"name": "<string>",
"quantity": 2,
"unitAmountCents": 1
}
],
"paymentMethods": [],
"metadata": {},
"successUrl": "<string>",
"cancelUrl": "<string>",
"webhookUrl": "<string>",
"webhookVersion": "v1",
"expiresAt": "2023-11-07T05:31:56Z"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
amountCents: 25000000,
currency: 'BRL',
customer: {
name: '<string>',
email: '[email protected]',
document: '<string>',
phone: '<string>'
},
items: [{name: '<string>', quantity: 2, unitAmountCents: 1}],
paymentMethods: [],
metadata: {},
successUrl: '<string>',
cancelUrl: '<string>',
webhookUrl: '<string>',
webhookVersion: 'v1',
expiresAt: '2023-11-07T05:31:56Z'
})
};
fetch('https://api.payments.bob.company/api/v1/checkout-sessions/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.payments.bob.company/api/v1/checkout-sessions/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'amountCents' => 25000000,
'currency' => 'BRL',
'customer' => [
'name' => '<string>',
'email' => '[email protected]',
'document' => '<string>',
'phone' => '<string>'
],
'items' => [
[
'name' => '<string>',
'quantity' => 2,
'unitAmountCents' => 1
]
],
'paymentMethods' => [
],
'metadata' => [
],
'successUrl' => '<string>',
'cancelUrl' => '<string>',
'webhookUrl' => '<string>',
'webhookVersion' => 'v1',
'expiresAt' => '2023-11-07T05:31:56Z'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.payments.bob.company/api/v1/checkout-sessions/"
payload := strings.NewReader("{\n \"amountCents\": 25000000,\n \"currency\": \"BRL\",\n \"customer\": {\n \"name\": \"<string>\",\n \"email\": \"[email protected]\",\n \"document\": \"<string>\",\n \"phone\": \"<string>\"\n },\n \"items\": [\n {\n \"name\": \"<string>\",\n \"quantity\": 2,\n \"unitAmountCents\": 1\n }\n ],\n \"paymentMethods\": [],\n \"metadata\": {},\n \"successUrl\": \"<string>\",\n \"cancelUrl\": \"<string>\",\n \"webhookUrl\": \"<string>\",\n \"webhookVersion\": \"v1\",\n \"expiresAt\": \"2023-11-07T05:31:56Z\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.payments.bob.company/api/v1/checkout-sessions/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"amountCents\": 25000000,\n \"currency\": \"BRL\",\n \"customer\": {\n \"name\": \"<string>\",\n \"email\": \"[email protected]\",\n \"document\": \"<string>\",\n \"phone\": \"<string>\"\n },\n \"items\": [\n {\n \"name\": \"<string>\",\n \"quantity\": 2,\n \"unitAmountCents\": 1\n }\n ],\n \"paymentMethods\": [],\n \"metadata\": {},\n \"successUrl\": \"<string>\",\n \"cancelUrl\": \"<string>\",\n \"webhookUrl\": \"<string>\",\n \"webhookVersion\": \"v1\",\n \"expiresAt\": \"2023-11-07T05:31:56Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.payments.bob.company/api/v1/checkout-sessions/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amountCents\": 25000000,\n \"currency\": \"BRL\",\n \"customer\": {\n \"name\": \"<string>\",\n \"email\": \"[email protected]\",\n \"document\": \"<string>\",\n \"phone\": \"<string>\"\n },\n \"items\": [\n {\n \"name\": \"<string>\",\n \"quantity\": 2,\n \"unitAmountCents\": 1\n }\n ],\n \"paymentMethods\": [],\n \"metadata\": {},\n \"successUrl\": \"<string>\",\n \"cancelUrl\": \"<string>\",\n \"webhookUrl\": \"<string>\",\n \"webhookVersion\": \"v1\",\n \"expiresAt\": \"2023-11-07T05:31:56Z\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "<string>",
"data": {
"sessionId": "<string>",
"checkoutToken": "<string>",
"checkoutUrl": "<string>",
"expiresAt": "<string>",
"webhookSecret": "<string>"
}
}checkoutUrl retornado. Em paymentMethods, use ['pix'] (o padrão) ou ['crypto'] para pagamento em criptomoeda. O suporte a credit_card entra quando o cartão for lançado.
sk_test_ ou sk_live_. O endpoint exige uma chave secreta e deve ser chamado pelo seu servidor.Autorizações
Token JWT para endpoints autenticados do dashboard
Corpo
Valor total em centavos (ex. 10000 = R$ 100,00)
1 <= x <= 50000000BRL Dados do comprador para pré-preencher o checkout (opcional)
Show child attributes
Show child attributes
Itens exibidos no resumo do pedido (metadado de exibição — o catálogo é seu)
Show child attributes
Show child attributes
Métodos aceitos no checkout. Default [pix]. Use credit_card para oferecer cartão de crédito quando houver rota publicada.
1pix, credit_card, boleto URL que recebe os webhooks desta sessão. Quando presente, a resposta traz o webhookSecret de assinatura.
Versão do payload/assinatura do webhook. Recomendado v2 (valores em centavos + assinatura anti-replay). O SDK oficial envia v2 por padrão.
v1, v2 Expiração do LINK de checkout (default 24h). Para PIX, não confundir com a expiração da cobrança gerada dentro dele.
Esta página foi útil?
curl --request POST \
--url https://api.payments.bob.company/api/v1/checkout-sessions/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"amountCents": 25000000,
"currency": "BRL",
"customer": {
"name": "<string>",
"email": "[email protected]",
"document": "<string>",
"phone": "<string>"
},
"items": [
{
"name": "<string>",
"quantity": 2,
"unitAmountCents": 1
}
],
"paymentMethods": [],
"metadata": {},
"successUrl": "<string>",
"cancelUrl": "<string>",
"webhookUrl": "<string>",
"webhookVersion": "v1",
"expiresAt": "2023-11-07T05:31:56Z"
}
'import requests
url = "https://api.payments.bob.company/api/v1/checkout-sessions/"
payload = {
"amountCents": 25000000,
"currency": "BRL",
"customer": {
"name": "<string>",
"email": "[email protected]",
"document": "<string>",
"phone": "<string>"
},
"items": [
{
"name": "<string>",
"quantity": 2,
"unitAmountCents": 1
}
],
"paymentMethods": [],
"metadata": {},
"successUrl": "<string>",
"cancelUrl": "<string>",
"webhookUrl": "<string>",
"webhookVersion": "v1",
"expiresAt": "2023-11-07T05:31:56Z"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
amountCents: 25000000,
currency: 'BRL',
customer: {
name: '<string>',
email: '[email protected]',
document: '<string>',
phone: '<string>'
},
items: [{name: '<string>', quantity: 2, unitAmountCents: 1}],
paymentMethods: [],
metadata: {},
successUrl: '<string>',
cancelUrl: '<string>',
webhookUrl: '<string>',
webhookVersion: 'v1',
expiresAt: '2023-11-07T05:31:56Z'
})
};
fetch('https://api.payments.bob.company/api/v1/checkout-sessions/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.payments.bob.company/api/v1/checkout-sessions/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'amountCents' => 25000000,
'currency' => 'BRL',
'customer' => [
'name' => '<string>',
'email' => '[email protected]',
'document' => '<string>',
'phone' => '<string>'
],
'items' => [
[
'name' => '<string>',
'quantity' => 2,
'unitAmountCents' => 1
]
],
'paymentMethods' => [
],
'metadata' => [
],
'successUrl' => '<string>',
'cancelUrl' => '<string>',
'webhookUrl' => '<string>',
'webhookVersion' => 'v1',
'expiresAt' => '2023-11-07T05:31:56Z'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.payments.bob.company/api/v1/checkout-sessions/"
payload := strings.NewReader("{\n \"amountCents\": 25000000,\n \"currency\": \"BRL\",\n \"customer\": {\n \"name\": \"<string>\",\n \"email\": \"[email protected]\",\n \"document\": \"<string>\",\n \"phone\": \"<string>\"\n },\n \"items\": [\n {\n \"name\": \"<string>\",\n \"quantity\": 2,\n \"unitAmountCents\": 1\n }\n ],\n \"paymentMethods\": [],\n \"metadata\": {},\n \"successUrl\": \"<string>\",\n \"cancelUrl\": \"<string>\",\n \"webhookUrl\": \"<string>\",\n \"webhookVersion\": \"v1\",\n \"expiresAt\": \"2023-11-07T05:31:56Z\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.payments.bob.company/api/v1/checkout-sessions/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"amountCents\": 25000000,\n \"currency\": \"BRL\",\n \"customer\": {\n \"name\": \"<string>\",\n \"email\": \"[email protected]\",\n \"document\": \"<string>\",\n \"phone\": \"<string>\"\n },\n \"items\": [\n {\n \"name\": \"<string>\",\n \"quantity\": 2,\n \"unitAmountCents\": 1\n }\n ],\n \"paymentMethods\": [],\n \"metadata\": {},\n \"successUrl\": \"<string>\",\n \"cancelUrl\": \"<string>\",\n \"webhookUrl\": \"<string>\",\n \"webhookVersion\": \"v1\",\n \"expiresAt\": \"2023-11-07T05:31:56Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.payments.bob.company/api/v1/checkout-sessions/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"amountCents\": 25000000,\n \"currency\": \"BRL\",\n \"customer\": {\n \"name\": \"<string>\",\n \"email\": \"[email protected]\",\n \"document\": \"<string>\",\n \"phone\": \"<string>\"\n },\n \"items\": [\n {\n \"name\": \"<string>\",\n \"quantity\": 2,\n \"unitAmountCents\": 1\n }\n ],\n \"paymentMethods\": [],\n \"metadata\": {},\n \"successUrl\": \"<string>\",\n \"cancelUrl\": \"<string>\",\n \"webhookUrl\": \"<string>\",\n \"webhookVersion\": \"v1\",\n \"expiresAt\": \"2023-11-07T05:31:56Z\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "<string>",
"data": {
"sessionId": "<string>",
"checkoutToken": "<string>",
"checkoutUrl": "<string>",
"expiresAt": "<string>",
"webhookSecret": "<string>"
}
}