Tokenizar cartao
curl --request POST \
--url https://api-payment.safefypay.com.br/v1/card-tokenize \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"cardNumber": "4111111111111111",
"cardHolderName": "JOAO SILVA",
"cardExpirationMonth": "12",
"cardExpirationYear": "2028",
"cardCvv": "123"
}
'import requests
url = "https://api-payment.safefypay.com.br/v1/card-tokenize"
payload = {
"cardNumber": "4111111111111111",
"cardHolderName": "JOAO SILVA",
"cardExpirationMonth": "12",
"cardExpirationYear": "2028",
"cardCvv": "123"
}
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({
cardNumber: '4111111111111111',
cardHolderName: 'JOAO SILVA',
cardExpirationMonth: '12',
cardExpirationYear: '2028',
cardCvv: '123'
})
};
fetch('https://api-payment.safefypay.com.br/v1/card-tokenize', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-payment.safefypay.com.br/v1/card-tokenize"
payload := strings.NewReader("{\n \"cardNumber\": \"4111111111111111\",\n \"cardHolderName\": \"JOAO SILVA\",\n \"cardExpirationMonth\": \"12\",\n \"cardExpirationYear\": \"2028\",\n \"cardCvv\": \"123\"\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-payment.safefypay.com.br/v1/card-tokenize")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"cardNumber\": \"4111111111111111\",\n \"cardHolderName\": \"JOAO SILVA\",\n \"cardExpirationMonth\": \"12\",\n \"cardExpirationYear\": \"2028\",\n \"cardCvv\": \"123\"\n}")
.asString();{
"data": {
"cardToken": "ct_abc123def456",
"last4": "1111",
"brand": "visa"
},
"message": "<string>",
"error": {
"message": "Token invalido ou expirado.",
"code": "unauthorized"
}
}{
"data": {
"cardToken": "ct_abc123def456",
"last4": "1111",
"brand": "visa"
},
"message": "<string>",
"error": {
"message": "Token invalido ou expirado.",
"code": "unauthorized"
}
}{
"data": {
"cardToken": "ct_abc123def456",
"last4": "1111",
"brand": "visa"
},
"message": "<string>",
"error": {
"message": "Token invalido ou expirado.",
"code": "unauthorized"
}
}{
"data": {
"cardToken": "ct_abc123def456",
"last4": "1111",
"brand": "visa"
},
"message": "<string>",
"error": {
"message": "Token invalido ou expirado.",
"code": "unauthorized"
}
}Transações
Tokenizar cartão
Tokenize um cartão de crédito com segurança
POST
/
v1
/
card-tokenize
Tokenizar cartao
curl --request POST \
--url https://api-payment.safefypay.com.br/v1/card-tokenize \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"cardNumber": "4111111111111111",
"cardHolderName": "JOAO SILVA",
"cardExpirationMonth": "12",
"cardExpirationYear": "2028",
"cardCvv": "123"
}
'import requests
url = "https://api-payment.safefypay.com.br/v1/card-tokenize"
payload = {
"cardNumber": "4111111111111111",
"cardHolderName": "JOAO SILVA",
"cardExpirationMonth": "12",
"cardExpirationYear": "2028",
"cardCvv": "123"
}
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({
cardNumber: '4111111111111111',
cardHolderName: 'JOAO SILVA',
cardExpirationMonth: '12',
cardExpirationYear: '2028',
cardCvv: '123'
})
};
fetch('https://api-payment.safefypay.com.br/v1/card-tokenize', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-payment.safefypay.com.br/v1/card-tokenize"
payload := strings.NewReader("{\n \"cardNumber\": \"4111111111111111\",\n \"cardHolderName\": \"JOAO SILVA\",\n \"cardExpirationMonth\": \"12\",\n \"cardExpirationYear\": \"2028\",\n \"cardCvv\": \"123\"\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-payment.safefypay.com.br/v1/card-tokenize")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"cardNumber\": \"4111111111111111\",\n \"cardHolderName\": \"JOAO SILVA\",\n \"cardExpirationMonth\": \"12\",\n \"cardExpirationYear\": \"2028\",\n \"cardCvv\": \"123\"\n}")
.asString();{
"data": {
"cardToken": "ct_abc123def456",
"last4": "1111",
"brand": "visa"
},
"message": "<string>",
"error": {
"message": "Token invalido ou expirado.",
"code": "unauthorized"
}
}{
"data": {
"cardToken": "ct_abc123def456",
"last4": "1111",
"brand": "visa"
},
"message": "<string>",
"error": {
"message": "Token invalido ou expirado.",
"code": "unauthorized"
}
}{
"data": {
"cardToken": "ct_abc123def456",
"last4": "1111",
"brand": "visa"
},
"message": "<string>",
"error": {
"message": "Token invalido ou expirado.",
"code": "unauthorized"
}
}{
"data": {
"cardToken": "ct_abc123def456",
"last4": "1111",
"brand": "visa"
},
"message": "<string>",
"error": {
"message": "Token invalido ou expirado.",
"code": "unauthorized"
}
}Tokeniza um cartão de crédito com o adquirente ativo do estabelecimento, sem armazenar PAN/CVV no banco de dados da Safefy. O token retornado pode ser usado em
POST /v1/transactions no campo cardToken.
Requisição
POST /v1/card-tokenize
{
"cardNumber": "4111111111111111",
"cardHolderName": "João Silva",
"cardExpirationMonth": 12,
"cardExpirationYear": 2028,
"cardCvv": "123"
}
Parâmetros
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
cardNumber | string | sim | Número do cartão (13-19 dígitos) |
cardHolderName | string | sim | Nome impresso no cartão |
cardExpirationMonth | int | sim | Mês de expiração (1-12) |
cardExpirationYear | int | sim | Ano de expiração (ex: 2028) |
cardCvv | string | sim | Código de segurança (3-4 dígitos) |
Respostas
200 — Sucesso
{
"data": {
"cardToken": "ct_abc123def456",
"last4": "1111",
"brand": "visa"
}
}
| Campo | Tipo | Descrição |
|---|---|---|
cardToken | string | Token do cartão (prefixo ct_). Válido por tempo limitado. |
last4 | string | Últimos 4 dígitos do cartão |
brand | string | Bandeira do cartão (ex: visa, mastercard) |
400 — Dados inválidos
{
"error": {
"message": "Dados do cartão inválidos.",
"code": "invalid_card_data"
}
}
401 — Token JWT inválido
{
"error": {
"message": "Token inválido.",
"code": "invalid_token"
}
}
422 — Adquirente não suporta tokenização
{
"error": {
"message": "Adquirente configurado não suporta tokenização nativamente.",
"code": "tokenization_not_supported"
}
}
Autorizações
Token JWT obtido via /v1/auth/token
Corpo
application/json
Numero do cartao (13-19 digitos)
Exemplo:
"4111111111111111"
Nome impresso no cartao
Exemplo:
"JOAO SILVA"
Mes de expiracao (1-12)
Exemplo:
"12"
Ano de expiracao (4 digitos)
Exemplo:
"2028"
Codigo de seguranca (3-4 digitos)
Exemplo:
"123"