Pular para o conteúdo principal

Wallets

Essa seção descreve todas as etapas necessárias para a integração do fluxo de pagamento com as wallets Apple Pay e o Google Pay.

O Parceiro da Marlim para integração SDK com os devices Android (Google Pay) e iOS (Apple Pay) é a Yuno e será a biblioteca responsável por orquestrar todo o processo de pagamento. Falaremos mais sobre a instalação desse pacote no seu aplicativo, para cada plataforma nas próximas seções.

Uma das mudanças significativas entre pagamentos via wallet e transações tradicionais está no formato do response, que pode ser tanto síncrono quanto assíncrono. No caso das wallets, as transações introduzem um novo status síncrono SENT, enquanto a atualização do status final da transação ocorre de forma assíncrona via webhook, indicando se o pagamento foi concluído com sucesso ou não.

1. Gerando uma sessão

Para se criar uma transação com uma Wallet, será necessário primeiramente criar uma Sessão.

POSTv3/wallet/session

Request Body Params

AtributoTipoDescrição
amountint32Valor final a ser cobrado com as taxas. Deve ser passado em centavos.
item_idstringID da transação na sua plataforma. Esse ID é importante, pois será utilizado tanto na criação da sessão, quanto na etapa de criação da transação.
customerobjectObjeto Cliente.
customer[name]stringNome do cliente.
customer[email]stringE-mail do cliente.
customer[document_number]stringNúmero do documento do cliente.
customer[phone]objectObjeto número do telefone do cliente.
customer[phone][country_code]stringCódigo do país do telefone do cliente (DDI), Ex: +55.
customer[phone][area_code]stringCódigo do estado do telefone do cliente (DDD).
customer[phone][number]stringNúmero do telefone do cliente.
customer[address]objectObjeto endereço do cliente.
customer[address][country]stringNacionalidade do cliente, no formato sigla do país. Só serão aceitos o formato ISO 3166-1 alfa-2 (duas-letras) Ex: BR, US, UY...
Máximo em caracteres: 2
customer[address][state]stringEstado do atual endereço do cliente, no formato Sigla do Estado. Ex: SP, RJ, MG...
Máximo em caracteres: 2
customer[address][city]stringCidade do endereço do cliente.
Máximo em caracteres: 50
customer[address][neighborhood]stringBairro do endereço do cliente.
Máximo em caracteres: 45
customer[address][street]stringRua do endereço do cliente.
Máximo em caracteres: 54
customer[address][number]stringNúmero do endereço do cliente.
Máximo em caracteres: 5
customer[address][complement]stringParâmetro opcional do complemento do endereço do cliente.
Máximo em caracteres: 30
customer[address][zipcode]stringCEP (clientes nacionais) ou ZIP (clientes estrangeiros) do cliente.
Máximo em caracteres: 9
AtributoTipoDescrição
session_idstringID da sessão que será utilizado na etapa do checkout no aplicativo SDK, logo, é importante que você o reserve.
Exemplo de Request Body
{
"amount": 100000,
"item_id": "a4fe84db-bfaf-4fc0-a345-c6bc53cb5d4a",
"customer": {
"name": "Fulano Silva",
"email": "fulano@silva.com.br",
"document_number": "11122233344",
"phone": {
"country_code": "+55",
"area_code": "11",
"number": "998765432"
},
"address": {
"country": "BR",
"state": "SP",
"city": "Sao Paulo",
"neighborhood": "Bairro de La",
"street": "Rua de Ca",
"number": "123",
"complement": "Apto 12",
"zipcode": "01122033"
}
}
}

Response Object

Exemplo de Response
{
"session_id": "886eb109-4149-41c3-8f2f-6c85545bda21"
}

Métodos de Pagamento

Nas próximas seções de integração nos devices, você deverá adicionar o payment_type escolhido pelo usuário. Os valores aceitos no payload são: GOOGLE_PAY ou APPLE_PAY, e devem ser preenchidos exatamente como descritos.

2. Integração com Devices

2.1 Android (Google Pay)

Pré-Requisitos

Para usar o Yuno Android SDK, você precisa atender aos seguintes requisitos de sistema:

  • O Yuno Android SDK precisa que seu minSdkVersion seja 21 ou superior
  • Seu projeto deve ter o Java 8 ativado e usar o AndroidX em vez de bibliotecas de suporte mais antigas
  • A versão android-gradle-plugin deve ser 4.0.0 ou superior
  • A versão do Proguard deve ser 6.2.2 ou superior
  • A versão kotlin-gradle-plugin deve ser 1.4.0 ou superior

Instalação SDK

Etapa 1: Inclua a biblioteca em seu projeto

Certifique-se de que o arquivo Yuno SDK esteja incluído em seu projeto por meio do Gradle. Em seguida, adicione a fonte do repositório usando a seguinte linha de código:

maven { url "https://yunopayments.jfrog.io/artifactory/snapshots-libs-release" }

Após, inclua o código abaixo no arquivo build.gradle para adicionar a dependência Yuno SDK à aplicação.

dependencies {
implementation 'com.yuno.payments:android-sdk:{last_version}'
}

Permissões

Yuno SDK inclui, por padrão, o INTERNET permissão, que é necessária para fazer solicitações de rede.

<uses-permission android:name="android.permission.INTERNET" />

Imports Necessários

import com.yuno.payments.features.payment.startCheckout;
import com.yuno.payments.features.payment.startPaymentLite;
import com.yuno.payments.features.payment.ui.views.PaymentSelected;
import com.yuno.payments.features.payment.continuePayment;
Etapa 2: Inicializar o SDK com a chave pública

Se você não implementou um aplicativo personalizado, crie um. No onCreate() da sua classe de aplicativo, chame a função de inicialização (Yuno.initialize) conforme mostrado no exemplo abaixo:

class CustomApplication : Application() {
override fun onCreate() {
super.onCreate()
Yuno.initialize(
this,
"public_key",
config: YunoConfig,
)
}
}
Nota

O time de Desenvolvimento ou Atendimento da Marlim irá fornecer 2 chaves (public_key), uma para ambiente de produção e outra para ambiente de homologação.

Use a classe de dados YunoConfig para personalizar o comportamento do SDK. Inclua esta configuração no Yuno.initialize:

data class YunoConfig(
val language: YunoLanguage? = null,
val isDynamicViewEnabled: Boolean = false,
)

Na tabela a seguir você encontra as descrições de cada opção de personalização disponível.

Opção de personalizaçãoDescrição
languageDefina a linguagem usada para apresentar o SDK. Se você não enviar ou fornecer um valor nulo, o Yuno SDK usará o idioma do dispositivo. As opções disponíveis são:INGLÊS, ESPANHOL, PORTUGUÊS, INDONÉSIO e MALAIO.
isDynamicViewEnabledDefine se você deseja utilizar a visualização dinâmica. Caso você não forneça um valor, o Yuno SDK usará o FALSE como opção.
Etapa 3: Inicie o processo de checkout

Para iniciar um novo processo de pagamento com o SDK, você precisa chamar o método startCheckout no onCreate de atividade que chama o SDK, é aqui que você irá utilizar o session_id gerado na etapa anterior.

startCheckout(
checkoutSession: "session_id",
countryCode: "BR",
callbackPaymentState: ((String?) -> Unit)?
)
PropriedadeSignificado
callbackPaymentStateÉ uma função que retorna o processo de pagamento atual. Valores possíveis: SUCCEEDED, FAIL, PROCESSING, REJECT, INTERNAL_ERROR e CANCELED
Etapa 4: Iniciar o processo de pagamento

Para iniciar um processo de pagamento, você deve chamar o método startPaymentLite

startPaymentLite(
paymentSelected: PaymentSelected,
callbackOTT:(String?) -> Unit,
showPaymentStatus: Boolean,
)

PaymentSelected(
type : String "payment_type",
)

Abaixo a descrição dos parâmetros necessários para iniciar o pagamento.

PropriedadeSignificado
paymentSelectedTipo de Pagamento selecionado pelo usuário. Valores possíveis GOOGLE_PAY ou APPLE_PAY.
callbackOTTUma função necessária que retorna o Token Único (OTT) atualizado, necessário para concluir o processo de pagamento, que será utilizado para ser enviado ao endpoint de Transações.
showPaymentStatusUm booleano que especifica se o status do pagamento deve ser exibido na interface.

2.2 iOS (Apple Pay)

Pré-Requisitos

Para usar o Yuno iOS SDK, você precisa atender aos seguintes requisitos de sistema:

  • Adicione CocoaPods ou Swift Package Manager ao seu projeto
  • Use iOS versão 14.0 ou superior
Importante

São necessárias mais algumas etapas que devem ser concluídas no Painel de Desenvolvedor da Apple na sua conta, descritas abaixo.

Etapa 1: Crie um identificador de comerciante

No painel do desenvolvedor da Apple, registre um identificador de comerciante seguindo as etapas:

  1. Efetue login no desenvolvedor da Apple
  2. Em Certificates, Identifiers e Profiles, selecione Register a new identifier
  3. Selecione Merchant IDs e clique em Continue
  4. Adicione uma Descrição para descrever o comerciante que você está registrando, como Apple Pay Integration. Para o Identifier, digite o prefixo merchant.com.y.uno.seuapp
  5. Clique Continue

Etapa 2: Crie um certificado de processamento de pagamento

Para começar, crie um novo diretório (por exemplo, Downloads/ApplePayFiles) para armazenar os arquivos necessários para gerar certificados. Você deve salvar certificados e outros arquivos do Apple Pay durante o processo.

Para criar um PaymentProcessingCertificate no seu MacOS, siga os passos apresentados abaixo:

  1. Abra o Keychain Access no seu MacOS
  2. No aplicativo Keychain Access, Keychain Access > Certificate Assistant > Request a Certificate from a Certificate Authority
  3. Preencha as informações do certificado de acordo com as seguintes instruções:
    • Email Address: Insira seu endereço de e-mail
    • Nome: Insira um nome para a chave privada (por exemplo, ProcessingCertificate)
    • CA Email Address: Deixe este campo em branco
    • Selecione Saved to disk
    • Selecione Let me specify key pair information
  4. Clique Continue
  5. Para o par de chaves, use as seguintes configurações:
    • Key Size: 256 bits
    • Algorithm: ECC
  6. Salve o CSR com o nome CertificateSigningRequestPaymentProcessingCertificate.certSigningRequest no diretório criado anteriormente
  7. Clique em Continue para finalizar a criação do CSR

Etapa 3: Obtenha o certificado de processamento de pagamento

Após criar o CSR, você precisa obter e converter o certificado. Siga os passos:

  1. Acesse o portal do desenvolvedor da Apple
  2. Selecione seu ID de comerciante e clique em Create Certificate em Apple Pay Payment Processing Certificate
  3. Para Will payments associated with this Merchant ID be processed exclusively in China mainland?, selecione No
  4. Clique Upload a Certificate Signing Request, e selecione o CSR criado anteriormente denominado CertificateSigningRequestPaymentProcessingCertificate.certSigningRequest, e clique Continue
  5. Baixe o certificado assinado (apple_pay.cer) da Apple e salve-o no diretório criado anteriormente (Downloads/ApplePayFiles)
  6. Converta o certificado usando o seguinte comando:
openssl x509 -inform DER -in apple_pay.cer -out apple_pay.pem

Etapa 4: Exportar as informações da chave privada

  1. Acesse o Keychain Access no seu computador
  2. Localize a entrada criada anteriormente na Etapa 2 (por exemplo, ProcessingCertificate)
  3. Clique com o botão direito e exporte a chave privada no formato .p12 (exemplo, ProcessingCertificate.p12)
  4. Defina uma senha (por exemplo, ApplePayWallet) e salve-a no diretório criado anteriormente. Você terá que fornecer a senha do seu computador para exportar o .p12
  5. Após exportar, precisamos converter a chave privada. Acesse o diretório onde você salvou a chave privada, abra o terminal e execute o seguinte comando:
openssl pkcs12 -in ProcessingCertificate.p12 -nocerts -nodes | sed -ne '/-BEGIN PRIVATE KEY-/,/-END PRIVATE KEY-/p' > ProcessingCertificatePrivateKey.pem

O conteúdo da chave privada estará disponível no arquivo ProcessingCertificatePrivateKey.pem.

Etapa 5: Crie um certificado de identidade de comerciante

Para criar um MerchantIdentityCertificate no seu MacOS, siga os passos apresentados abaixo:

  1. Abra a Keychain Access no seu MacOS
  2. No aplicativo Keychain Access, Keychain Access > Certificate Assistant > Request a Certificate from a Certificate Authority
  3. Preencha as informações do certificado de acordo com as seguintes instruções:
    • Email Address: Insira seu endereço de e-mail
    • Name: Insira um nome para a chave privada (por exemplo, MerchantIdentityCertificate)
    • CA Email Address: Deixe este campo em branco
    • Selecione Saved to disk
    • Selecione Let me specify key pair information
  4. Clique Continue
  5. Para o par de chaves, use as seguintes configurações:
    • Key Size: 2048 bits
    • Algorithm: RSA
  6. Salve o CSR com o nome CertificateSigningRequestMerchantIdentityCertificate.certSigningRequest no diretório criado anteriormente (Downloads/ApplePayFiles)
  7. Clique em Continue para finalizar a criação do CSR

Etapa 6: Obtenha o certificado de identidade do comerciante

Após criar o CSR, você precisa obter e converter o certificado. Siga os passos:

  1. Acesse o portal do desenvolvedor da Apple em Identifiers
  2. Selecione seu ID de comerciante
  3. Em Apple Pay Merchant Identity Certificate clique em Create Certificate
  4. Clique Upload a Certificate Signing Request e selecione o certificado criado na Etapa 5 (CertificateSigningRequestMerchantIdentityCertificate.certSigningRequest)
  5. Clique Continue
  6. Baixe o certificado assinado (merchant_id.cer) da Apple e salve-o no diretório criado (Downloads/ApplePayFiles)
  7. Acesse o diretório onde você salvou o certificado, abra o terminal e execute o seguinte comando para convertê-lo para o formato necessário:
openssl x509 -inform DER -in merchant_id.cer -out merchant_id.pem

Etapa 7: Exportar a chave privada do comerciante

  1. Acesse o Keychain Access no seu computador
  2. Localize a entrada criada anteriormente na Etapa 5 (por exemplo, MerchantIdentityCertificate)
  3. Clique com o botão direito e exporte a chave privada no formato .p12 (exemplo, MerchantIdentityCertificate.p12)
  4. Defina uma senha (por exemplo, ApplePayWallet) e salve-a no diretório criado anteriormente (Downloads/ApplePayFiles). Você terá que fornecer a senha do seu computador para exportar o .p12
  5. Após exportar, precisamos converter a chave privada. Acesse o diretório onde você salvou a chave privada, abra o terminal e execute o seguinte comando:
openssl pkcs12 -in MerchantIdentityCertificate.p12 -nocerts -nodes | sed -ne '/-BEGIN PRIVATE KEY-/,/-END PRIVATE KEY-/p' > MerchantIdentityCertificatePrivateKey.pem

O conteúdo da chave privada estará disponível no arquivo MerchantIdentityCertificatePrivateKey.pem.

Etapa 8: Registrar domínios de comerciantes

Como último passo, você precisa registrar os domínios do comerciante no Dashboard da Apple. Siga os passos abaixo para concluir o processo:

  1. Acesse o portal do desenvolvedor da Apple em Identifiers
  2. Selecione seu Merchant ID e clique em Add Domain em Merchant Domains
  3. Insira o domínio (por exemplo, seuapp.com) e clique Save
Importante

Após concluir todas as etapas descritas acima, deverá ser enviado para a Marlim a pasta ApplePayFiles.zip com todos os arquivos gerados nos passos anteriores.

A Marlim irá configurar os acessos necessários junto com a Adquirente/Apple e liberar a integração com o SDK iOS para o seu time.

Instalação SDK

Etapa 1: Inclua a biblioteca em seu projeto

Você pode adicionar a biblioteca usando CocoaPods ou Swift Package Manager.

CocoaPods

Para adicionar o Yuno SDK ao seu projeto iOS, você precisa instalar o Yuno SDK. Se você não tiver um Podfile, siga o guia CocoaPods para criar um. Depois de criar o Podfile, você integrará o Yuno SDK ao Cocoapods adicionando a linha abaixo ao seu Podfile.

pod 'YunoSDK', '~> 1.1.22'

Depois, você precisa executar a instalação:

pod install
Gerenciador de Pacotes Swift

Para adicionar o Yuno SDK ao seu projeto iOS, você precisa instalar o Swift Package Manager. Com o pacote Swift configurado, adicione Yuno SDK como uma dependência, conforme apresentado no seguinte bloco de código:

dependencies: [
.package(url: "https://github.com/yuno-payments/yuno-sdk-ios.git", .upToNextMajor(from: "1.1.17"))
]

3. Inicie uma Transação

Depois de concluir as etapas descritas anteriormente, você terá novos campos que devem ser enviados para o endpoint dedicado para transações do tipo wallet: wallet/transaction

POSTv3/wallet/transaction

Request Body Params

AtributoTipoDescrição
net_valueint32Valor líquido a ser recebido pela transação. Deve ser passado em centavos.
amountint32Valor final a ser cobrado do cliente pagador. Deve ser passado em centavos.
installmentsstringNúmero de parcelas da transação, sendo mínimo: 1 e máximo: 12.
currency_abbreviationstringSigla da moeda da operação no formato ISO 4217 com 3 letras maiúsculas. Ex: EUR, USD, BRL.
item_idstringID da transação na sua plataforma.
dfp_idstringParâmetro opcional do ID da URL que compõe o session_id criado na integração com o Antifraude da Marlim.
customerobjectObjeto Cliente.
customer[name]stringNome do cliente.
customer[email]stringE-mail do cliente.
customer[document_number]stringNúmero do documento do cliente.
customer[phone]objectObjeto número do telefone do cliente.
customer[phone][country_code]stringCódigo do país do telefone do cliente (DDI), Ex: +55.
customer[phone][area_code]stringCódigo do estado do telefone do cliente (DDD).
customer[phone][number]stringNúmero do telefone do cliente.
customer[address]objectObjeto endereço do cliente.
customer[address][country]stringNacionalidade do cliente, no formato sigla do país. Só serão aceitos o formato ISO 3166-1 alfa-2 (duas-letras) Ex: BR, US, UY...
Máximo em caracteres: 2
customer[address][state]stringUF do endereço do cliente, no formato sigla do estado. Ex: SP, RJ, MG...
Máximo em caracteres: 2
customer[address][city]stringCidade do endereço do cliente.
Máximo em caracteres: 50
customer[address][neighborhood]stringBairro do endereço do cliente.
Máximo em caracteres: 45
customer[address][street]stringRua do endereço do cliente.
Máximo em caracteres: 54
customer[address][number]stringNúmero do endereço do cliente.
Máximo em caracteres: 5
customer[address][complement]stringParâmetro opcional do complemento do endereço do cliente.
Máximo em caracteres: 30
customer[address][zipcode]stringCEP (clientes nacionais) ou ZIP (clientes estrangeiros) do cliente.
Máximo em caracteres: 9
soft_descriptorstringDescrição que aparecerá na fatura do seu cliente. Máximo de 13 caracteres, sendo alfanuméricos e espaços.
walletobjectObjeto com os dados da wallet selecionada.
wallet[payment_type]stringTipo de Pagamento selecionado pelo usuário. Valores aceitos: GOOGLE_PAY ou APPLE_PAY.
wallet[ott]stringOne Time Token (OTT) gerado pelo SDK da Yuno e recebido no callbackOTT.
wallet[session_id]stringID da sessão gerado na etapa de criação da sessão.
webhook_urlstringEndpoint do seu sistema que receberá informações a cada atualização da transação.
webhook_auth_tokenstringParâmetro opcional para autenticar as notificações enviadas para o webhook_url. Caso o parâmetro não seja informado, as notificações serão enviadas sem autenticação.
chargeback_ownerstringParâmetro opcional que define quem será responsável pelo chargeback da transação. Valores aceitos: acquirer ou seller
Default: acquirer
Exemplo de Request Body
{
"net_value": 1095,
"amount": 1099,
"installments": "1",
"currency_abbreviation": "BRL",
"item_id": "a4fe84db-bfaf-4fc0-a345-c6bc53cb5d4a",
"customer": {
"name": "Fulano Silva",
"email": "fulano@silva.com.br",
"document_number": "11122233344",
"phone": {
"country_code": "+55",
"area_code": "11",
"number": "998765432"
},
"address": {
"country": "BR",
"state": "SP",
"city": "Sao Paulo",
"neighborhood": "Bairro de La",
"street": "Rua de Ca",
"number": "123",
"complement": "Apto 12",
"zipcode": "01122033"
}
},
"soft_descriptor": "Marlim Store",
"webhook_url": "https://webhook.site/123-456-789",
"webhook_auth_token": "seu_token_secreto",
"wallet": {
"payment_type": "GOOGLE_PAY",
"ott": "81817dc7-1061-4282-8743-b239c8c5a93e",
"session_id": "886eb109-4149-41c3-8f2f-6c85545bda21"
}
}

Response Object

Exemplo de Response
{
"status": "sent",
"transaction_id": "008ktCGUnBauanAt7sW",
"date_created": "2026-03-24T17:50:36.481Z",
"date_updated": "2026-03-24T17:50:36.481Z",
"net_value": 1000000,
"amount": 1039501,
"paid_amount": 0,
"installments": "1"
}

A confirmação do pagamento será feita via webhook, após o usuário completar o processo de pagamento no device com a wallet selecionada.

Se for passado algum valor no parâmetro webhook_auth_token a Marlim vai enviar o token para a sua aplicação usando o padrão Authorization: Bearer no Header da requisição:

Authorization: Bearer {webhook_auth_token}

4. ContinuePayment

Após o envio para iniciar uma transação, no callback da sua request, deverá ser chamado o método continuePayment() do SDK da Yuno. É esse método que irá exigir alguma ação, abrindo os modais nativos das wallets para o usuário finalizar o pagamento - adicionar dados do cartão ou selecionar um cartão previamente cadastrado.

Android

continuePayment(
showPaymentStatus: Boolean, // Opcional - Default true
callbackPaymentState: ((String?) -> Unit)?, // Opcional - Default null
)
Importante

Para o usuário concluir totalmente o processo de pagamento em SANDBOX, é necessário que ele tenha um cartão de crédito previamente cadastrado na sua conta (carteira) do Google (Google Pay) e que ele seja um cartão válido e emitido por um Banco Emissor, não deve ser usado cartões de teste.

Caso o usuário não tenha um cartão cadastrado, ele será instruído a adicionar um, antes de continuar com a transação, porém o SDK pode retornar um erro por conta da validação do Google Pay. Em testes na Marlim esse fluxo falhou no ambiente de sandbox.

Esse processo não ocorre em PRODUÇÃO, pois o Google Pay consegue validar um cartão adicionado no momento da compra.

iOS

Yuno.continuePayment(showPaymentStatus: Bool)

Para mostrar as suas telas de status de pagamento, você deve enviar FALSE no showPaymentStatus. Em seguida, obtenha o estado do pagamento por callback de chamada.

5. Webhooks

Após o usuário finalizar o pagamento no device, a Wallet emite uma atualização para o nosso Adquirente, informando se a transação foi bem sucedida ou não. A Marlim, por sua vez, emite o Webhook com os dados transacionais para os seus servidores.

Se for passado algum valor no parâmetro webhook_auth_token a Marlim vai enviar o token para a sua aplicação usando o padrão Authorization: Bearer no Header da requisição:

Authorization: Bearer {webhook_auth_token}

Abaixo, a tabela com os valores possíveis de current_status recebidos no webhook_url.

StatusSignificado
paidTransação paga e capturada com sucesso.
reviewTransação está em processo de revisão manual pelos nossos especialistas.
O valor foi autorizado e reservado no cartão, mas ainda não foi capturado.
refusedTransação recusada pelo banco emissor.
failedTransação com falha no processo de captura na Adquirente.
refundedTransação estornada.
chargebackTransação sofreu chargeback.
Request
curl -X POST "https://seuapp.com/pedido/7ea1a5d4-fd74-41ae-b150-07fa36c260fa/callback" \
-H "Content-Type: application/json" \
-H "User-Agent: Marlim/1.0.0" \
-H "Marlim-Api-Signature: Star98765Wars43210ANewHope1977" \
-d '{
"event": "transaction_status_changed",
"transaction_id": "r9U3U1T0ZtBp3EceRfup",
"current_status": "paid",
"nsu": "587386",
"authorization_code": "891482",
"date_created": "2026-03-26T16:26:58.240Z",
"date_updated": "2026-03-26T16:26:58.240Z",
"amount": 10.99,
"authorized_amount": 1099,
"paid_amount": 1099,
"refunded_amount": 0,
"installments": "4",
"item_id": "7ea1a5d4-fd74-41ae-b150-07fa36c260fa",
"payment_method": "credit_card",
"card_holder_name": null,
"card_brand": null,
"card_first_digits": null,
"card_last_digits": null,
"acquirer_status_code": "0000"
}'