SDK (não oficial) para consumir os serviços do MercadoPago em Golang.
Para baixar o SDK basta utilizar o seguinte comando:
$ go get -u github.com/ggouvea-dev/mercadopago-sdk-go
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
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!
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!
}
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.
Para mais duvidas consulte a documentação oficial do MercadoPago.