/mercadopago-sdk-go

SDK para consumir os serviços do MercadoPago em Golang.

Primary LanguageGoMIT LicenseMIT

GoLang MercadoPago

MercadoPago SDK para Go

SDK (não oficial) para consumir os serviços do MercadoPago em Golang.

📲 Instalação

Para baixar o SDK basta utilizar o seguinte comando:

$ go get -u github.com/ggouvea-dev/mercadopago-sdk-go

🛠 Funcionalidades do SDK

Funcionalidades disponíbilizadas no SDK:

  • Criação de um pagamento
  • Atualização de um pagamento
  • Buscar informações de um pagamento
  • Consultar situação de um pagamento
  • Listagem/Busca de pagamento
  • Listagem de tipos de documento de identificação do MercadoPago
  • Listagem de métodos de pagamento e suas confiurações

🌟 Começando

Para começar você deve fazer o import do SDK, para isso basta adicionar a seguinte linha no seu código:

import "github.com/ggouvea-dev/mercadopago-sdk-go"

Feito isso já esta tudo pronto para você começar a utilizaro SDK!

💻 Exemplos de uso

Criando um pagamento:

response, mercadopagoErr, err := mercadopago.CreatePayment(mercadopago.PaymentRequest{
    ExternalReference: "seu-id-interno-0001",
    Items: []mercadopago.Item{
        {
            Title:     "Pagamendo mensalidade PagueTry",
            Quantity:  1,
            UnitPrice: 50,
        },
    },
    Payer: mercadopago.Payer{
        Identification: mercadopago.PayerIdentification{
            Type:   "CPF",
            Number: "12345678909",
        },
        Name:    "Eduardo",
        Surname: "Mior",
        Email:   "eduardo-mior@hotmail.com",
    },
    NotificationURL:   "https://localhost/webhook/mercadopago",
}, "seu-access-token")

if err != nil {
    // Erro inesperado
} else if mercadopagoErr != nil {
    // Erro retornado do MercadoPago
} else {
    // Sucesso!
}

Atualizando um pagamento:

response, mercadopagoErr, err := mercadopago.UpdatePayment("825927174-5423394f-06f1-4d2b-8545-35ebecf70008", mercadopago.PaymentRequest{
    ExternalReference: "seu-id-interno-0001",
    Items: []mercadopago.Item{
        {
            Title:     "Pagamendo semestralidade PagueTry",
            Quantity:  1,
            UnitPrice: 300,
        },
    },
    Payer: mercadopago.Payer{
        Identification: mercadopago.PayerIdentification{
            Type:   "CPF",
            Number: "12345678909",
        },
        Name:    "Eduardo",
        Surname: "De Bastiani Mior",
        Email:   "eduardo-mior@hotmail.com",
    },
}, "seu-access-token")

if err != nil {
    // Erro inesperado
} else if mercadopagoErr != nil {
    // Erro retornado do MercadoPago
} else {
    // Sucesso!
}

Buscando as informações de um pagamento:

response, mercadopagoErr, err := mercadopago.GetPayment("825927174-5423394f-06f1-4d2b-8545-35ebecf70008", "seu-access-token")

if err != nil {
    // Erro inesperado
} else if mercadopagoErr != nil {
    // Erro retornado do MercadoPago
} else {
    // Sucesso!
}

Consultando a situação de um pagamento:

response, mercadopagoErr, err := mercadopago.ConsultPayment(webhookResponse.Data.ID, "seu-access-token")

if err != nil {
    // Erro inesperado
} else if mercadopagoErr != nil {
    // Erro retornado do MercadoPago
} else {
    // Sucesso!
}

Pesquisando um pagamento:

// Na pesquisa de pagamento pode ser aplicado filtro por qualquer campo/propriedade do pagamento.
// No exemplo abaixo a pesquisa é feita pelo campo external_reference que é o nosso ID interno de conrole.
response, mercadopagoErr, err := mercadopago.SearchPayments(mercadopago.PaymentSearchParams{"external_reference": "seu-id-interno-0001"}, "seu-access-token")


if err != nil {
    // Erro inesperado
} else if mercadopagoErr != nil {
    // Erro retornado do MercadoPago
} else {
    // Sucesso!
}

Consultando a lista de tipos de documento e identificação:

identificationTypes, mercadopagoErr, err := mercadopago.GetIdentificationTypes("seu-access-token")

if err != nil {
    // Erro inesperado
} else if mercadopagoErr != nil {
    // Erro retornado do MercadoPago
} else {
    // Sucesso!
}

Consultando a lista de meios e pagamento:

identificationTypes, mercadopagoErr, err := mercadopago.GetPaymentMethods("seu-access-token")

if err != nil {
    // Erro inesperado
} else if mercadopagoErr != nil {
    // Erro retornado do MercadoPago
} else {
    // Sucesso!
}

🙋🏻‍♂️ Ajuda

O SDK atualmente possui suporte as seguintes funções:

  • Criação de um pagamento
  • Atualização de um pagamento
  • Consulta de um pagamento
  • Listagem/Busca de pagamento
  • Listagem de tipos de documento de identificação do MercadoPago
  • Listagem de métodos de pagamento e suas confiurações

De acordo como forem surgindo as necessídades mais funções serão implementadas no SDK. Sinta-se livre para fazer um PullRequest ou uma Issue para novas funcionalidades.

O SDK precisa obrigatóriamente do AccessToken da conta do MercadoPago para funcionar. O AccessToken pode ser passado por parametro em todas as funções, ou pode ser definido na variavel de ambiente MERCADO_PAGO_ACCESS_TOKEN que irá conter o seu Token de integração do MercadoPago. Esse Token pode ser obtido na página "Suas Integrações" na Dashboard do painel de Desenvolvedores do MercadoPago, ou pode também pode ser obtido na página "Credenciais" dentro da página de "Configurações" do "Seu negócio". Para setar a variavel ambiente você pode usar a função os.Setenv("MERCADO_PAGO_ACCESS_TOKEN", "seu-token...") ou você pode usar um arquivo .env e usar um pacote para gerenciar as variaveis de ambiente, como por exemplo o Gotenv.

Todas as funções do SDK podém retornar um error genérico do GO e um ErrorResponse do MercadoPago. O error sempre relacionado a erros do GO, como por exemplo falha ao tentar dar parse em um JSON, já o ErrorResponse que é a Struct de erro retornada do MercadoPago, sempre esta relacionada a erros que foram retornados da API, como por exemplo quando você não envia um campo obrigatório por exemplo.

Após criar um pagamento, o link para efetuar o pagamento esta na posição InitPoint, do model PaymentResponse.

Atenção! Você deve implementar manualmente o Webhook que recebe as atualizações de Status do pagamento usando o seu Framework WEB de prefencia (lembrando que o SDK possui a Struct WebhookResponse que pode ajudar no recebimento dos dados). Após receber uma notificação do Webhook do MercadoPago nós deveremos chamar a função ConsultPayment() passando por parametro o ID foi enviado pelo MercadoPago na struct WebhookPaymentID para consultar a situação do pagamento e saber se ele esta pago ou não.

📚 Documentação oficial

Para mais duvidas consulte a documentação oficial do MercadoPago.