Serviço responsável por realizar o processamento de pagamentos por meio de Criptomoedas.

https://api.digpay.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.digpay.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.digpay.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.digpay.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.digpay.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.digpay.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.digpay.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.digpay.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]rn" .
              "Content-type: application/jsonrn",
    'content'=> json_encode($payload)
  )
);

$context = stream_context_create($opts);

$result = file_get_contents('https://api.digpay.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.digpay.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.digpay.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 Criptomoedas. Informar o valor: 3 – Criptomoedas1-1
PaymentObject ObjectDados da Criptomoeda. Opcional: caso não seja enviado, a transação será realizada em BTC.0-1
SymbolStringTipo de Criptomoeda: BTC para BitCoin. BCH para BitCoin Cash. LTC para LiteCoin.
Ex: LTC
1-13
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
1-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
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 Safe2Pay. 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": true,
    "Application": "Aplicação de teste",
    "Vendor": "João da Silva",
    "CallbackUrl": "https://callbacks.exemplo.com.br/api/Notify",
    "PaymentMethod": "3",
    "Reference": "34844115",
    "Customer": {
        "Name": "João da silva",
        "Identity": "18978393080",
        "Phone": "51999999999",
        "Email": "safe2pay@safe2pay.com.br",
        "Address": {
            "ZipCode": "90670090",
            "Street": "Logradouro",
            "Number": "123",
            "Complement": "Complemento",
            "District": "Higienopolis",
            "CityName": "Porto Alegre",
            "StateInitials": "RS",
            "CountryName": "Brasil"
        }
    },
    "Products": [
        {
            "Code": "001",
            "Description": "Teste 1",
            "UnitPrice": 1.99,
            "Quantity": 10
        },
        {
            "Code": "002",
            "Description": "Teste 1",
            "UnitPrice": 1.99,
            "Quantity": 10
        },
        {
            "Code": "002",
            "Description": "Teste 1",
            "UnitPrice": 1.99,
            "Quantity": 10
        }
    ],
    "Splits": [
        {
            "CodeTaxType": 1,
            "CodeReceiverType": 1,
            "Identity": "78310447000154",
            "Name": "EMPRESA DE TESTE",
            "IsPayTax": false,
            "Amount": 5.95
        },
        {
            "CodeTaxType": 1,
            "CodeReceiverType": 1,
            "Identity": "78310447000154",
            "Name": "EMPRESA DE TESTE",
            "IsPayTax": false,
            "Amount": 5.95
        }
    ]
}

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ção
ResponseDetail.IdTransactionStringCódigo identificador da transação.
ResponseDetail.StatusIntCódigo do Status da transação.
ResponseDetail.MessageStringDescrição resumida do Status da transação.
ResponseDetail.DescriptionStringDescrição detalhada do Status da transação.
ResponseDetail.QrCodeStringUrl da imagem do QRCode de pagamento.
ResponseDetail.AmountBTCDecimalValor da transação convertido em criptomoeda.
O BTC será substituído pelo símbolo da criptomoeda utilizada, se for LTC (AmountLTC) ou BCH (AmountBCH).
ResponseDetail.SymbolDecimalIndica a sigla da criptomoeda
ResponseDetail.WalletAddressStringEndereço da Wallet que o valor será depositado.

Conteúdo de resposta

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

Em caso de sucesso:

{
    "ResponseDetail": {
        "IdTransaction": "9_200808221517",
        "Status": "1",
        "Message": "Pagamento Pendente",
        "Description": "Estamos aguardando a transferência do valor em bitcoins. Após a transferência, o pagamento pode levar até 15 minutos para ser compensado.",
        "QrCode": "https://logotipos.blob.core.windows.net/logotipos/e37797e8-39c2-4518-b35e-f7967d5ed413.png",
        "Symbol": "BTC",
        "AmountBTC": 0.00096696,
        "WalletAddress": "1ASZ4KrC1KQynvf6Dcg9FMgMiJsTCkpiw"
    },
    "HasError": false
}

Em caso de erro:

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