Serviço responsável por realizar o processamento de pagamentos por meio de Boleto Bancário.

https://api.maksu.com.br/Payment

Exemplos de código

Confira nos exemplos abaixo como esse serviço deve ser consumido em sua aplicação.

string url = "https://api.maksu.com.br/Payment"

// O exemplo do objeto completo está detalhado abaixo na sessão "Conteúdo de Envio".
string json = "{\n    \"IsSandbox\": true,\n ...}";

var httpWebRequest = (HttpWebRequest)WebRequest.Create(url);
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";
httpWebRequest.Headers.Add("X-API-KEY", "[INFORME_SEU_TOKEN]");

using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
    streamWriter.Write(json);
    streamWriter.Flush();
    streamWriter.Close();
}

using (var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse())
{
    using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
    {
        Console.Write(streamReader.ReadToEnd());
    }
}
var request = require("request");

var options = { method: 'POST',
  url: 'https://api.maksu.com.br/Payment',
  headers: { 'x-api-key': '[INFORME_SEU_TOKEN]', 'content-type': 'application/json' },
  // O exemplo do objeto completo está detalhado abaixo na sessão "Conteúdo de Envio".
  body: "{\n    \"IsSandbox\": true,\n ...}" };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
require 'uri'
require 'net/http'

url = URI("https://api.maksu.com.br/Payment")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE

request = Net::HTTP::Post.new(url)
request["content-type"] = 'application/json'
request["x-api-key"] = '[INFORME_SEU_TOKEN]'
# O exemplo do objeto completo está detalhado abaixo na sessão "Conteúdo de Envio".
request.body = "{\n    \"IsSandbox\": true,\n ...}"

response = http.request(request)
puts response.read_body
// O exemplo do objeto completo está detalhado abaixo na sessão "Conteúdo de Envio".
var data = "{\n    \"IsSandbox\": true,\n ...}";

var xhr = new XMLHttpRequest();

xhr.addEventListener("readystatechange", function () {
  if (this.readyState === this.DONE) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "https://api.maksu.com.br/Payment");
xhr.setRequestHeader("content-type", "application/json");
xhr.setRequestHeader("x-api-key", "[INFORME_SEU_TOKEN]");

xhr.send(data);
import requests

url = "https://api.maksu.com.br/Payment"

# O exemplo do objeto completo está detalhado abaixo na sessão "Conteúdo de Envio".
payload = "{\n    \"IsSandbox\": true,\n ...}"
headers = {
    'content-type': "application/json",
    'x-api-key': "[INFORME_SEU_TOKEN]"
    }

response = requests.request("POST", url, data=payload, headers=headers)

print(response.text)
String url = "https://api.maksu.com.br/Payment";

// O exemplo do objeto completo está detalhado abaixo na sessão "Conteúdo de Envio".
String payload = "{\n    \"IsSandbox\": true,\n ...}";

URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();

con.setRequestMethod("POST");
con.setRequestProperty("Content-Type", "application/json");
con.setRequestProperty("Content-Length", String.valueOf(payload.length()));
con.setRequestProperty("X-API-KEY", "[INFORME_SEU_TOKEN]");

OutputStream os = con.getOutputStream();
os.write(payload.getBytes());
var request = URLRequest(url: 'https://api.maksu.com.br/Payment')
request.setValue("[INFORME_SEU_TOKEN]", forHTTPHeaderField: "X-API-KEY")
request.httpMethod = "POST"

// O exemplo do objeto completo está detalhado abaixo na sessão "Conteúdo de Envio".
let payload: [String: Any] = ["{\n    \"IsSandbox\": true,\n ...}"]
let jsonData = try? JSONSerialization.data(withJSONObject: json)

request.httpBody = jsonData

let task = URLSession.shared.dataTask(with: request) { data, response, error in
    guard let data = data, error == nil else {
        print(error?.localizedDescription ?? "No data")
        return
    }
    let responseJSON = try? JSONSerialization.jsonObject(with: data, options: [])
    if let responseJSON = responseJSON as? [String: Any] {
        print(responseJSON)
    }
}

task.resume()
// O exemplo do objeto completo está detalhado abaixo na sessão "Conteúdo de Envio".
$payload = array(
    'FormaPagamento' => 1,
    ...
);

$opts = array(
  'http'=>array(
    'method'=>"POST",
    'header'=>"X-API-KEY: [INFORME_SEU_TOKEN]\r\n" .
              "Content-type: application/json\r\n",
    'content'=> json_encode($payload)
  )
);

$context = stream_context_create($opts);

$result = file_get_contents('https://api.maksu.com.br/Payment', false, $context);

if ($result === FALSE) { /* Handle error */ }

var_dump($result);
package main

import (
    "fmt"
    "strings"
    "net/http"
    "io/ioutil"
)

func main() {

    url := "https://api.maksu.com.br/Payment"

    payload := strings.NewReader("{\n    \"IsSandbox\": true,\n ...}");

    req, _ := http.NewRequest("POST", url, payload)

    req.Header.Add("Content-Type", "application/json")
    req.Header.Add("x-api-key", "[INFORME_SEU_TOKEN]")
    req.Header.Add("Host", "payment.safe2pay.com.br")
    req.Header.Add("Connection", "keep-alive")

    res, _ := http.DefaultClient.Do(req)

    defer res.Body.Close()
    body, _ := ioutil.ReadAll(res.Body)

    fmt.Println(res)
    fmt.Println(string(body))

}

}
curl --request POST \
  --url https://api.maksu.com.br/Payment \
  --header 'content-type: application/json' \
  --header 'x-api-key: [INFORME_SEU_TOKEN]' \
  # O exemplo do objeto completo está detalhado abaixo na sessão "Conteúdo de Envio".
  --data "{\n    \"IsSandbox\": true,\n ...}"

Estrutura do conteúdo de envio

Confira nos exemplos abaixo a estrutura do conteúdo de envio desse serviço que será enviado no body da requisição.

AtributoTipoDescriçãoOcorr.Tam.
IsSandboxBooleanIdentifica se a transação vai ser realizada em ambiente sandbox ou não.
Quando True deve-se obrigatoriamente informar a chave de API de Sandbox
1-1
ApplicationStringUse para identificar suas aplicações nas transações.
Ex: APLICAÇÃO_TESTE_V1
1-1100
VendorStringNome do vendedor que será vinculado a essa transação.
Ex: João da Silva
0-1200
CallbackUrlStringURL de notificações de mudança de status da transação.
Ex: https://callbacks.exemplo.com.br/api/Notify
0-1200
PaymentMethodStringInformar o código da forma de pagamento Boleto Bancário. Informar o valor: 1 – Boleto Bancário1-1
ReferenceStringUse para identificar suas transações.
Ex: REFERENCIA_TESTE_V1
0-160
Customer ObjectDados do comprador.1-1
NameStringNome do comprador.
Ex: João da Silva
1-1200
IdentityStringDocumento do comprador
Ex: 31037942000178
1-114
EmailStringEmail do comprador
Ex: contato@dominio.com.br
0-1150
PhoneStringTelefone do comprador
Ex: 5199999999
0-1150
Address ObjectDados de endereço comprador.1-1
ZipCodeStringCEP do endereço do comprador
Ex: 90670090
1-18
StreetStringLogradouro do endereço do comprador
Ex: Av. Princesa Isabel
1-1150
NumberStringNúmero do endereço do comprador
Ex: 123
1-115
ComplementStringComplemento do endereço do comprador
Ex: Sala 801
0-1150
DistrictStringBairro do endereço do comprador
Ex: Higienopolis
1-160
StateInitialsStringUF do endereço do comprador
Ex: RS
1-12
CityNameStringCidade do endereço do comprador
Ex: Porto Alegre
1-1200
CountryNameStringPais do endereço do comprador
Ex: Brasil
1-1200
Products ArrayLista dos produtos nessa transação.1-999
Products[i].CodeStringCodigo do produto nessa transação.
Ex: 123
1-150
Products[i].DescriptionStringDescrição do produto nessa transação.
Ex: Camisa branca
1-1200
Products[i].UnitPriceDecimalValor unitário do produto nessa transação.
Ex: 25.00
1-118v2
Products[i].QuantityStringQuantidade do produto nessa transação.
Ex: 2.00
1-118v2
PaymentObject ObjectDados do Boleto Bancário.1-1
DueDateStringData de vencimento do Boleto Bancário.
Ex: 30/05/2019
1-110
InstructionStringInstruções que serão impressas no Boleto.
Ex: Instrução de exemplo
1-1200
MessageArrayMensagens que serão impressas no Boleto.
Informar uma lista de até 9 Strings
0-19
PenaltyRateDecimalPercentual da Multa.
Ex: 2.00 – Informar apenas se houver multa.
0-118v2
InterestRateDecimalPercentual da Taxa de Juros ao mês.
Ex: 1.00 – Informar apenas se houver juros.
0-118v2
CancelAfterDueBooleanIndica se o boleto deve ser cancelado após a data de vencimento.0-1
DaysBeforeCancelIntDias para baixa automática do registro do boleto.
Ex: 29 – Informar apenas se CancelAfterDue = false. Limite de 99 dias.
0-1
IsEnablePartialPaymentBooleanIndica se o boleto aceita pagamento diferente do valor de registro.0-1
DiscountAmountDecimalValor do desconto. Informar apenas se houver desconto para o boleto. Valor será adicionado em campo separado no registro0-118v2
DiscountTypeIntIndica o tipo de desconto. 1 = valor fixo até o vencimento. 2 = valor por antecipação em dias corridos. 3 = valor por antecipação em dias úteis..0-1
DiscountDueStringData de limite para o desconto.
Ex: 30/05/2019
1-110
Splits ArrayLista dos splits nessa transação.0-999
Splits[i].CodeTaxTypeIntTipo de repasse, informar 1 para Percentual ou 2 para Valor Ex: 11-1
Splits[i].CodeReceiverTypeStringRecebedor, informar 1 para ‘Empresa’ ou 2 ‘Subconta’ Ex: 21-1
Splits[i].IdReceiverIntCódigo da empresa no Maksu. Se enviar o IdReceiver, não precisa enviar o Identity. Ex: 350-1
Splits[i].IdentityStringDocumento do recebedor.
Ex: 12345678901234
1-114
Splits[i].NameStringNome da empresa recebedora.
Ex: Empresa de teste
1-1100
Splits[i].IsPayTaxBooleanInformar se a taxa de custo será paga pelo recebedor.1-1
Splits[i].AmountDecimalInformar o valor do repasse, em percentual ou valor. Ex: 2.301-118v2

Conteúdo de envio

Confira nos exemplos abaixo o conteúdo que será enviado no body da requisição.

{
    "IsSandbox": false,
    "Application": "Agencia JS",
    "Vendor": "Agencia JS",
    "CallbackUrl": "https://www.agenciajs.com/sistema/autoretorno.php",
    "PaymentMethod": "1",
    "Reference": "34844115",
    "Customer": {
        "Name": "E-COMMERCE NETWORK COMERCIO VIRTUAL LTDA",
        "Identity": "17812078000103",
        "Phone": "1126260694",
        "Email": "comercial@agenciajs.com",
        "Address": {
            "ZipCode": "81750080",
            "Street": "RUA HENRIQUE MARTINS TORRES",
            "Number": "1610",
            "Complement": "",
            "District": "BOQUEIRÃO",
            "CityName": "CURITIBA",
            "StateInitials": "PR",
            "CountryName": "Brasil"
        }
    },
    "Products": [{
        "Code": "34844115",
        "Description": "Serviço prestado pela Agência JS",
        "UnitPrice": 49.60,
        "Quantity": 2
    }],
    "PaymentObject": {
        "DueDate": "25/10/2020",
        "Instruction": "Pagamento aceito em todos os bancos.",
        "Message": [
               "Fatura da Agência JS de n 34844115",
               "financeiro@agenciajs.com", 
               "www.agenciajs.com"
        ],
        "PenaltyRate": 10.00,
        "InterestRate": 1.00,
        "CancelAfterDue": false,
        "IsEnablePartialPayment": false
    }
}

Estrutura do conteúdo de resposta

Confira nos exemplos abaixo a estrutura do conteúdo de resposta desse serviço.

AtributoTipoDescrição
HasErrorBooleanIndica se ocorreu erro na operação.
ErrorStringEm caso de erro, esse atributo detalhará o problema.
ResponseDetail ObjectObjeto de retorno da requisiçãoTodos
ResponseDetail.IdTransactionIntCódigo identificador da transação.
ResponseDetail.StatusIntCódigo do Status da transação. Para mais informações sobre os Status de uma transação, clique aqui.
ResponseDetail.MessageStringDescrição resumida do Status da transação.
ResponseDetail.DescriptionStringDescrição detalhada do Status da transação.
ResponseDetail.BankSlipNumberStringNúmero do boleto gerado.
ResponseDetail.DueDateDateData de vencimento do boleto bancário.
ResponseDetail.DigitableLineDateLinha digitável do boleto bancário.
ResponseDetail.BarcodeDateCódigo de barras do boleto bancário.
ResponseDetail.BankSlipUrlStringLink para o PDF do boleto bancário.
ResponseDetail.OperationDateStringData da operação
ResponseDetail.BankNameStringNome do banco pelo qual foi registrado o boleto.
ResponseDetail.CodeBankStringCódigo do banco pelo qual foi processado o boleto.
ResponseDetail.WalletStringCódigo da carteira do banco
ResponseDetail.WalletDescriptionStringDescrição da carteira do banco
ResponseDetail.AgencyStringCódigo da agência
ResponseDetail.AccountStringNúmero da conta
ResponseDetail.CodeAssignorStringCódigo do banco do gateway
ResponseDetail.AgencyDVStringDígito verificador da agência
ResponseDetail.AccountDVStringDígito verificador da conta
ResponseDetail.DocTypeStringTipo de documento
ResponseDetail.AcceptStringBoleto sem protesto
ResponseDetail.CurrencyStringTipo de moeda
ResponseDetail.GuarantorNameStringNome do intermediador
ResponseDetail.GuarantorIdentityStringDocumento do intermediador

Conteúdo de resposta

Confira nos exemplos abaixo o conteúdo de resposta desse serviço.

Em caso de sucesso:

{
    "ResponseDetail": {
        "IdTransaction": "9_200808201512",
        "Status": "1",
        "Message": "Pendente",
        "Description": "Estamos aguardando o pagamento do boleto bancário. Após o pagamento, o boleto poderá levar até 2 dias úteis para ser compensado.",
        "BankSlipNumber": "0000030952743",
        "SeedNumber": "3095274",
        "DueDate": "25/10/2020",
        "DigitableLine": "03399065964100000030195274301019184190000009920",
        "Barcode": "03391841900000099209065941000000309527430101",
        "BankSlipUrl": "https://api.maksu.com.br/boleto/?transaction=9_200808201512",
        "OperationDate": "08/08/2020",
        "BankName": "SANTANDER",
        "CodeBank": "033",
        "DigitBank": "7",
        "CodeBeneficiary": "0659410",
        "Wallet": "ECR",
        "WalletDescription": "COB. SIMPLES ECR",
        "Agency": "2088",
        "Account": "13002203",
        "CodeAssignor": "0659410",
        "AgencyDV": "5",
        "AccountDV": "1",
        "DocType": "DS",
        "Accept": "N",
        "Currency": "R$"
    },
    "HasError": false
}

Em caso de erro:

{
    "HasError": true,
    "ErrorCode": "123",
    "Error": "O valor mínimo de uma transação é de R$ 5,00."
}