/
Integração via APIs

Integração via APIs

Como iniciar a jornada

Para que uma empresa contratante da solução Open Keys possa acionar a Jornada de Iniciação de Pagamento, é necessário gerar um token no qual deverá ser indicado o client_id e client_secret da operação, indicados no painel do aplicativo, menu de configurações.

 

 

URL de geração do Token - Sandbox

curl --location 'https://keycloak.celcoin.shared.fsapps.io/auth/realms/smart-keys/protocol/openid-connect/token' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'grant_type=client_credentials' \ --data-urlencode 'scopes=openid' \ --data-urlencode 'client_id=${CLIENT_ID} \ --data-urlencode 'client_secret=${CLIENT_SECRET}'

 

URL de geração do Token - Produção

curl --location 'https://keycloak.celcoin.shared.fsapps.io/auth/realms/smart-keys-prd/protocol/openid-connect/token' \ --header 'Content-Type: application/x-www-form-urlencoded' \ --data-urlencode 'grant_type=client_credentials' \ --data-urlencode 'scopes=openid' \ --data-urlencode 'client_id=${CLIENT_ID} \ --data-urlencode 'client_secret=${CLIENT_SECRET}'

 

cURL para geração do Token

curl --location '${TOKEN_URL}' \ --header 'Content-Type: application/json' \ --data '{ "client_id":"...-2567-....-ace9-...", "client_secret": "...8136-....-42ce-..." }'

 

Response

{     "access_token": "...iJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJJUV96OE...",     "expires_in": 3600,     "refresh_expires_in": 0,     "token_type": "Bearer",     "not-before-policy": 0,     "scope": "email profile" }

 

O token retornado no campo “access_token“ tem validade padrão de 1 hora e deve ser utilizado para realizar as chamadas subsequentes. Ele deve ser incluído no parâmetro Authentication do header da requisição, precedido da palavra “Bearer “, conforme exemplo abaixo.

 

'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJJUV96OE...'

 

Opcional: External ID
Quando gerar uma iniciação de pagamentos, é possível adicionar um External ID usando o objeto abaixo, é necessário:

  • O campo ser incluído dentro do objeto “data” no mesmo nível do brandID;

  • O nome do campo precisa ser “externalid".

"metadata":{ "externalId": "000111" },

Resposta:

O campo externalid será apresentado como um novo parâmetro na URL Callback registrada na aplicação.

 

Liste os participantes do Open Finance de pagamento

A seguinte chamada de API traz todas as instituições financeiras que podem ser escolhidas para realizar a aprovação do pagamento/consentimento.

 

Solicitação de lista de participantes

curl --location --request GET 'https://api-openkeys.celcoin.dev.fsapps.io/open-keys-itp/api/participants/v1/brands?type=PAYMENT&count=1&page=1'

 

Resposta da lista de participantes

[ { "AuthorisationServerId": "95dd24d2-902e-49e1-ad0d-e02d938447ba", "AutoRegistrationSupported": false, "AutoRegistrationNotificationWebhook": null, "SupportsCiba": false, "SupportsDCR": false, "SupportsRedirect": false, "ApiResources": [...], "AuthorisationServerCertifications": [], "CustomerFriendlyDescription": "Autorizador ambiente Desenvolvimento Engenharia Finansystech", "CustomerFriendlyLogoUri": "https://finansystech-pub.s3.sa-east-1.amazonaws.com/f_logo.svg", "CustomerFriendlyName": "Finansystech Mock", "DeveloperPortalUri": null, "TermsOfServiceUri": null, "NotificationWebhookAddedDate": null, "OpenIDDiscoveryDocument": "https://openfinance.dev.fbank.opb.obm.engdev.fsapps.io/orgs/finansystech/.well-kno", "Issuer": "https://openfinance.dev.fbank.opb.obm.engdev.fsapps.io/orgs/finansystech", "PayloadSigningCertLocationUri": "https://openfinance.dev.fbank.opb.obm.engdev.fsapps.io/orgs/finansystech/jwk", "CreatedAt": 1666796087, "ParentAuthorisationServerId": null, "DeprecatedDate": null, "RetirementDate": null, "SupersededByAuthorisationServerId": null, "OrganisationId": "248cce08-0abc-4cdb-ba14-02cca03e5c74" }, ... ]

 

Criar consentimento de pagamento

Agora, usando o token de acesso gerado, vamos chamar o endpoint Consent Creation.

O campo AuthorisationServerId é o Brand ID que usaremos para criar o consentimento de pagamento. Aqui temos que informar um uri de redirecionamento válido do Meu Primeiro App, caso contrário o acesso será negado.

Usaremos o Brand ID do Finansystech Mock (b09ede32-83db-4019-8ca3-a9a6f9376d0b) 3:03

 

URL de criação do Consentimento - Sandbox

CONSENT_URL=https://api-openkeys.celcoin.dev.fsapps.io/open-keys-itp/api/payment-initiation/v1/consents'

 

URL de criação do Consentimento - Produção

CONSENT_URL=https://api-openkeys.celcoin.prd.fsapps.io/open-keys-itp/api/payment-initiation/v1/consents'

 

cURL para criação do consentimento

curl --location --request POST '${CONTENT_URL}/payment-initiation/v1/cons --header 'Authorization: Bearer <PUT_HERE_THE_ACCESS_TOKEN>' \ --header 'Content-Type: application/json' \ --data-raw ' { "data": { "loggedUser": { "document": { "identification": "12345678909", "rel": "CPF" } }, "localInstrument": "DICT", "proxy": "55155114845" }, "type": "PIX" } }, "brandId": "95dd24d2-902e-49e1-ad0d-e02d938447ba" }'

 

Resposta de criação de consentimento

{ "authorizationUrl": "https://openfinance.dev.fbank.opb.obm.engdev.fsapps.io/orgs/finansystech/auth?client_id=4f-BS", "id": "uNmAi0qJbzE2YsNvaLNw1QF6_7jV0b2 v8239wbRgc" }

Será retornado um AuthorizationUrl para que possamos redirecionar o usuário para a página de login do banco. Execute o redirecionamento usando o URL de autorização. A página de login será mostrada. 

 

 

Nesta tela você deve utilizar o seu usuário e senha de teste, cadastrados no painel da sua aplicação.

 

O sistema apresentará a página Aprovação de Consentimento de Pagamento com as informações da transação. Clique no botão “CONFIRMAR PAGAMENTO” para consentir com o pagamento.

 

O sistema redirecionará o usuário de volta para Celcoin , com a mensagem de que a transação está em processamento. A página URI de redirecionamento receberá os seguintes parâmetros de string de consulta:

  • ticket=eyJhbGciO…

  • state=HVLeXYgP6…

 

 

POST Callback

Após a etapa de confirmação do usuário no ambiente da instituição transmissora, é retornado o callback da transação, conforme modelo abaixo.

 

https://api-smartkeys.celcoin.dev.fsapps.io/api/smart-keys/payment-initiation/v1/consents/callback

 

curl --location 'https://api-smartkeys.celcoin.dev.fsapps.io/api/smart-keys/payment-initiation/v1/consents/callback' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJSY0hYOGxFRl93QmxFNUF3eXY2TV9JQUFEUm1pSzV5SWlnWDhDeXpzNzdvIn0.eyJleHAiOjE2ODkxOTEyODQsImlhdCI6MTY4OTE4NzY4NCwianRpIjoiYTYwZmUyNDUtNmY2ZC00NzBlLTljY2ItM2ZkYmIzZWQ5YzEzIiwiaXNzIjoiaHR0cHM6Ly9rZXljbG9hay5jZWxjb2luLnNoYXJlZC5mc2FwcHMuaW8vYXV0aC9yZWFsbXMvc21hcnQta2V5cyIsImF1ZCI6ImFjY291bnQiLCJzdWIiOiI2ZmJjN2YyOC0yNDNkLTQ3MDMtOGE2MC0xYTEyOWUwNGFjOTMiLCJ0eXAiOiJCZWFyZXIiLCJhenAiOiIwMzNmNzgxNi02ZDNlLTRkYzYtODgzMi1mNzZlNDdhMzE2M2YiLCJhY3IiOiIxIiwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwiZGVmYXVsdC1yb2xlcy1zbWFydC1rZXlzIiwidW1hX2F1dGhvcml6YXRpb24iXX0sInJlc291cmNlX2FjY2VzcyI6eyIwMzNmNzgxNi02ZDNlLTRkYzYtODgzMi1mNzZlNDdhMzE2M2YiOnsicm9sZXMiOlsidW1hX3Byb3RlY3Rpb24iXX0sImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoiZW1haWwgcHJvZmlsZSIsImNsaWVudElkIjoiMDMzZjc4MTYtNmQzZS00ZGM2LTg4MzItZjc2ZTQ3YTMxNjNmIiwiZW1haWxfdmVyaWZpZWQiOmZhbHNlLCJjbGllbnRIb3N0IjoiMjAuOTkuMjEwLjIzNSIsInByZWZlcnJlZF91c2VybmFtZSI6InNlcnZpY2UtYWNjb3VudC0wMzNmNzgxNi02ZDNlLTRkYzYtODgzMi1mNzZlNDdhMzE2M2YiLCJjbGllbnRBZGRyZXNzIjoiMjAuOTkuMjEwLjIzNSJ9.FrIov1Lfl4IzB90nnu4QfXxoZVlOBjBIvk7L1EtKe9G_DyeRC2kbxRFpI1ig6FIiD2lIU4Ff5VKWMw7AWVOuddREeKeyVaUz8hdQHxO5MtpAIomZ_268GD_Vd9nBUKPP3x79lCswgFe3VHKj0UnxTRx5BmceFEhBGqFBZa0knKgMAQANsWgyMApPzMch7uOers_bQHxPVMZ44MFySB3U10MsYqIOefUzYilj0bbPrCzlAPWF8fvu3lzOFfm5sHTnyU5Swj1HeQbvCNsSY5Vg0K5UXenAoj63vQI5zKoXqhH7rZp7pZGZIWVnqP15nvy9KtOUfkjbQnwqjwW_MTJ7tQ' \ --data '{ "code": "", "id_token": "", "state": "" }'

Resposta padrão

{ "url": "https://smartkeys-ui.engdev.fsapps.io/callback?ticket=eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICIwMTQ4ZjkxZS01NjA1LTRlYzktYWY3My0wM2UzOGNiNmIwNGUifQ.eyJleHAiOjE2ODA2MjU0MjUsIm5iZiI6MCwiaWF0IjoxNjgwNjIxODI1LCJwZXJtaXNzaW9ucyI6W3sicnNpZCI6IjNlN2Q4NTMxLWQ4MjMtNDg1Ny04NjZiLTZmMTg2OTMyNWY4NiJ9XSwianRpIjoiZjQzYTgzZWYtMGE0MC00ZTgyLThiOWMtZjhiZGFiNjM2ZWZiLTE2ODA2MjE4NTAwODMiLCJhdWQiOiJodHRwczovL2tleWNsb2FrLmZ1bGwtZGV2LmZpbmFuc3lzdGVjaC5jb20uYnIvYXV0aC9yZWFsbXMvc21hcnQta2V5cyIsInN1YiI6ImM4OTJkYjViLTUyMDktNDBhOS1iNGQwLTdjMmM4MzViYWM0OCIsImF6cCI6ImNlbGNvaW4ifQ.nhW9PVOlHE2sgzy4iU2MeqOi_QDAjI0rAf2isytNmXw&state=lPOOqD1D-Fjndvnt63moETZVIiTqpFRf4EVOFtATXuE" }

Resposta com external id

{ "url": "https://smartkeys-ui.engdev.fsapps.io/callback?ticket=eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICIwMTQ4ZjkxZS01NjA1LTRlYzktYWY3My0wM2UzOGNiNmIwNGUifQ.eyJleHAiOjE2ODA2MjU0MjUsIm5iZiI6MCwiaWF0IjoxNjgwNjIxODI1LCJwZXJtaXNzaW9ucyI6W3sicnNpZCI6IjNlN2Q4NTMxLWQ4MjMtNDg1Ny04NjZiLTZmMTg2OTMyNWY4NiJ9XSwianRpIjoiZjQzYTgzZWYtMGE0MC00ZTgyLThiOWMtZjhiZGFiNjM2ZWZiLTE2ODA2MjE4NTAwODMiLCJhdWQiOiJodHRwczovL2tleWNsb2FrLmZ1bGwtZGV2LmZpbmFuc3lzdGVjaC5jb20uYnIvYXV0aC9yZWFsbXMvc21hcnQta2V5cyIsInN1YiI6ImM4OTJkYjViLTUyMDktNDBhOS1iNGQwLTdjMmM4MzViYWM0OCIsImF6cCI6ImNlbGNvaW4ifQ.nhW9PVOlHE2sgzy4iU2MeqOi_QDAjI0rAf2isytNmXw&state=lPOOqD1D-Fjndvnt63moETZVIiTqpFRf4EVOFtATXuE&externalId=000111" }

 

 


Confira como criar a sua página de Efetivação da jornada para o seu cliente, com o extrato da operação, clicando no link abaixo:

Configure o Callback de Dadosarchived

 


 Acompanhe o status da jornada

 

 

Acompanhe o status do pagamento  

 

Para confirmar se o pagamento foi processado com sucesso e o status correspondente, você pode acompanhar via Webhook na Iniciação do Pagamento ou consultando o status do pagamento.

 

Consulta e registro da operação

 

Após receber um retorno de um token dentro da tag “ticket”, você deve inseri-lo na próxima chamada de consulta ao recibo do PIX. Para isso, você pode utilizar o ID do Consentimento, o ID da Jornada ou o ID do Pagamento.

 

URL Get Payment para consulta via ID do pagamento - Sandbox

PAYMENT_URL=https://api-openkeys.celcoin.dev.fsapps.io/open-keys-itp/api

 

URL Get Payment para consulta via ID do pagamento - Produção

PAYMENT_URL=https://api-openkeys.celcoin.prd.fsapps.io/open-keys-itp/api

   

 

Exemplo de Request para API de Get Payment a fim de verificar status do pagamento pelo ID do Pagamento

curl --location '${PAYMENT_URL}/payment-consumer/v1/pix/payments/0d42f0c8-f5ff-493f-a350-19d5b8b76618' --header 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJJUV96OE...' \

 

Response da chamada

{ "paymentId": "30ddc97c-90d0-4ba6-b681-...", "status": "ACCEPTED" }

 

O parâmetro status pode receber os valores: "ACCEPTED", "AWAITING_APPROVAL" e "REJECTED"

 

URL Get Consent para consulta via ID do consentimento - Sandbox

CONSENT_URL=https://api-openkeys.celcoin.dev.fsapps.io/open-keys-itp/api

 

URL Get Consent para consulta via ID do consentimento - Produção

CONSENT_URL=https://api-openkeys.celcoin.prd.fsapps.io/open-keys-itp/api

   

Exemplo de Request para API de Get Consent a fim de verificar status do pagamento pelo ID do Consentimento

curl --location '${CONSENT_URL}/payment-initiation/v1/consents/SIizFZDGOdzW6JNxTa-r9hZ6sWVmbtX5PHmKhEvG36c' --header 'Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJJUV96OE...' \

 

Response da chamada

{ "paymentId": "30ddc97c-90d0-4ba6-b681-...", "status": "ACCEPTED" }

 

O parâmetro status pode receber os valores: "ACCEPTED", "AWAITING_APPROVAL" e "REJECTED"


Continue sua jornada

Configurar aplicação

Integração via White Label

 

Voltar ao menu

Related content