Criar Novo Pedido de Conta de Pagamento
Realiza o cadastro de conta de pagamento para pessoa física ou pessoa jurídica.
O cadastro é feito de forma assíncrona de forma a permitir:
- Uma maior velocidade de resposta;
- Resiliência a falhas a partir de retentativas. Com isso conseguimos evitar que erros ocasionais como falhas de infraestrutura afete a nossa retenção de clientes no cadastro.
POST https://sandbox-api.openbank.stone.com.br/api/v1/applications/{global_id}/signups
Request Parameters
PATH PARAMETER
global_id* string
Identifica o tipo e o identificador de um recurso.
Para aplicações o global_id corresponde a “application:CLIENT_ID”, onde CLIENT_ID é o id da aplicação.
{
"global_id": "application:7fc3a55f-b6a3-4b92-a07a-4166bg392341"
}
HEADERS
x-stone-idempotency-key string
authorization string
Para gerar o token acesse aqui.
{
"x-stone-idempotency-key": "25478963571458",
"authorization": "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiJhY2NvdW50cy1odWJpZEBvcGVuYmFuay5zdG9uZS5jb20uYnIiLCJuYmYiOjE2MTU0NzI9GjAsInNlc3Npb25fbWV0YWRhdGEiOnsiZW1wcmVzYVpXIjoxLCJjaGF2ZVpXIjoienciLCJwcm9kdWNhbyI6ZmFsc2V9LCJpc3MiOiJkODAzMDQ4ZC03MzA2LTQxNTYtYjNlMS1hNjlkMWNiZjQ3ODEiLCJyZWRpcmVjdF91cmkiOiJodHRwOi8vbG9jYWxob3N0Ojg1ODUvc3RvbmViYW5rL2NvbnNlbnRyZWRpcmVjdCIsInR5cGUiOiJjb25zZW50IiwiZXhwIjoxNjE1NDc5OTI5LCJpYWJ3OjE2MTU0NzI3MTksImp0aSI6Ijk0NTlmMjhhLTQ5NDEtNDA2Zi05YjExLWFmMjdhMWQ2MzEyMCJ9.SptDNxVKp5W_9B"
}
REQUEST BODY
Consiste no envio dos dados do usuário e opcionalmente da organização que iremos solicitar o pedido de criação de conta de pagamento.
Como esse endpoint trafega dados sensíveis, é necessário criptografar a requisição enviando um JWE (JSON Web Encryption), este corresponde a um JWT criptografado.
O corpo da requisição terá o formato:
{
"jwe": "jwe_body"
}
Como gerar o JWE:
1- Requisite as chaves de criptografia:
GET https://sandbox-api.openbank.stone.com.br/api/v1/discovery/keys
2- Extraia da resposta a chave que tenha como chave valor “use: enc”, essa corresponde a chave para criptografar (enc/encrypt).
3- Usar uma biblioteca de criptografia passando o payload (dados do usuário, veja abaixo no Schema ), a chave pública encontrada no item 2.
Segue um exemplo de como gerar um JWE em Python:
Python
import requests
import json
from jwcrypto import jwe, jwk
from jwcrypto.common import json_encode
import sys
def generate_jwe(payload):
key = get_public_key()
public_key = jwk.JWK()
public_key = public_key.from_json(json.dumps(key))
encrypted = jwe.JWE(payload.encode("utf-8"), recipient=public_key, protected={
"alg": "RSA-OAEP-256",
"enc": "A256GCM",
"kid": key["kid"],
})
return encrypted.serialize(compact=True)
def get_public_key():
response = requests.get(
"https://sandbox-api.openbank.stone.com.br/api/v1/discovery/keys")
for key in response.json()["keys"]:
if key["use"] == "enc":
return key
payload = json_encode({
'user': {
'document': '44946137033',
'document_type': 'cpf',
'full_name': 'José da Silva',
'email': 'gabriela.andrade+30@stone.com.br'
}
})
jwe = generate_jwe(payload)
print(jwe)
Exemplo de preenchimento do payload com envio dos dados da organização:
{
"user": {
"document": "52762077044",
"document_type": "cpf",
"full_name": "Fulano da Silva",
"email": "any_valid_non_burner_email1231@gmail.com"
},
"organization": {
"document": "67946893000133",
"document_type": "cnpj"
}
}
Schema
object:
-
user*
object
-
document*
string
-
document_type*
string
-
full_name*
string
-
email*
string
-
-
organization:*
string
orObject
-
document*
string
-
document_type*
string
-
full_name
string
-
email
string
-
metadata
object
-
Responses
202 Accepted
Observação
Por ser uma chamada assíncrona temos como resposta o código de status 202 e o id do pedido de requisição. Esse pode ser utilizado pela API de consulta do pedido de requisição para verificar os metadados e o estado atual do cadastro do cliente.
Example
{
"id": "9c6197d8-4b76-422c-ba81-11fb1ca97313"
}