Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Integração Ruby/Rails com a API do Maxipago, realiza todos os tipos de pagamentos e consultas

branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

README.rdoc

Adicionar a GEM na sua aplicação Rails 3

Adicione ao Gemfile da sua aplicação a seguinte linha:

gem "maxipago", :git => "git://github.com/bonera/maxipago.git"

Instalar inicializador da GEM

rails generate maxipago:install

Maxipago

Usamos o maxipago.net (Maxipago) para relizar transações financeiras dentro do aplicativo da Liga das Torcidas.

A construção da biblioteca foi realizada em cima do manual da *API V1.3* e da API de transação V3.1.1.15. O histórico das revisões pode ser visto no manual.

Para baixar o manual: www.maxipago.com/docs/maxiPago_API_Ultima.pdf

Para o ambiente de testes usamos as URLs fornecidas pelo Maxipago:

Cartões de teste:

  • American Express 378282246310005

  • American Express 371449635398431

  • MasterCard 5555555555554444

  • MasterCard 5105105105105100

  • Visa 4111111111111111

  • Visa 4012888888881881

  • No ambiente de testes nenhuma transação será de fato realizada.

O campo CVV pode ser preenchido com qualquer número entre *“3”* e *“4”* dígitos e a data de vencimento precisa ser válida. No futuro. Um cartão de teste já está adicionado ao arquivo de configuração da biblioteca. Veja mais detalhes sobre o uso nas seções posteriores.

Credenciamento dos Estabelecimentos

Para realizar uma acão usando a bibioteca maxipago é preciso incluir as credenciais do estabelecimento. Qualquer requisição a API do Maxipago precisa ser autenticada.

O local para incluir essas credenciais bem como dados de teste ficam localizado em:

config/initializers/maxipago_config.rb

Aqui segue um exemplo do seu conteudo:

# API Request Config
MP_APIKEY=""
MP_ID=""
MP_URL_TRANSACTION = "https://api.maxipago.net/UniversalAPI/postXML"
MP_URL_API = "https://api.maxipago.net/UniversalAPI/postAPI"
MP_URL_RAPI =  "https://api.maxipago.net/ReportsAPI/servlet/ReportsAPI"
MP_APIVERSION="3.1.1.15"

# Test Card Example
VISA_CARD = "4111111111111111"
EXP_YEAR = "2020"
CVV = "999"
ECOMMIND = "eci"

# Test Urls
URL_TEST_TRANSACTION = "https//testapi.maxipago.net/UniversalAPI/postXML"
URL_TEST_API = "https://testapi.maxipago.net/UniversalAPI/postAPI"
URL_TEST_RAPI = "https://testapi.maxipago.net/ReportsAPI/servlet/ReportsAPI"

Uma outra maneira de passar essas credenciais é no próprio objeto Maxipago.

mp = Maxipago::Client.new(MP_ID, MP_APIKEY, MP_APIVERSION)
=> #<Maxipago::Client:0x007fc5a4ebf340 @maxid="12345", @apikey="xxxxxxxxxxxxxxxxxx", @apiversion="3.1.1.15">

Dentro do Rails a biblioteca busca pelos valores setados no arquivo de configuração, caso não exista você ainda sim poderá passar na inicialização do objeto.

A forma como é passada as credenciais no xml:

<verification>
  <merchantId>#{MP_ID}</merchantId>
  <merchantKey>#{MP_APIKEY}</merchantKey>
</verification>

Qualquer xml segue esse padrão de post. Sem esse padrão não existe autenticação.

Sobre a arquitetura da biblioteca

A biblioteca está divida em 3 classes principais dentro do módulo Maxipago:

  • client

  • request

  • builder

Client é a classe principal, todos os comandos são executados no objeto do tipo client.

Client -> Request -> Builder
Client <- Request <- Builder

O Builder monta o xml necessário para o post que será enviado para a api. O request é montado pela classe Request que é chamada pela classe Client. Basta usar o Client para enviar comandos e obter a resposta do post.

Client

O client executa comandos na api do Maxipago. Para isso é necessário escolher antes a api que será usada. Existem 3 tipos:

  • Transações (transaction)

  • Cadastro (api)

  • Consulta ou Relatórios (rapi)

Primeiro fornecemos id, key e versão da api:

mp = Maxipago::Client.new(MP_ID, MP_APIKEY, MP_APIVERSION)

Depois escolhemos o tipo de api que queremos usar:

mp.use("api")

Em seguida enviamos o comando a ser executado e os parâmetros aceitos pelo comando:

mp.command(command: "",  params)

Por último pegamos a resposta do request:

mp.response

Esse é o workflow básico para se executar um comando nas apis do Maxipago.

Comandos (Transações)

*Autorização*

A Autorização verifica se o cartão de crédito usado é válido (número, CVV e data de vali dade), se o Portador possui limite suficiente para a compra e se a transação passou n a verificação de fraude do Banco e da Adquirente. Esta é a fase mais importante da transação, pois a autorização bloqueia o valo r do pedido no cartão do cliente e garante o pagamento para o Estabelecimento, “reservando” aquele valor. Contudo, a autorização sozinha não efetiva a transaçã o – ela depois precisa ser capturada.

mp.user("transaction")
mp.command( command: "authorization", processor_id: "1", reference_num: "123456", number: "4111111111111111", exp_month: "12", exp_year: "2020", cvv_number: "999", charge_total: "100.00", number_of_installments: "2", charge_interest: "N" )

Padrão da resposta:

mp.response[:body]
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<transaction-response>\n<authCode>123456</authCode>\n<orderID>0AF9063D:013656424703:F6B0:01DDA560</orderID>\n<referenceNum>123456789</referenceNum>\n<transactionID>6060940</transactionID>\n<transactionTimestamp>1332887045</transactionTimestamp>\n<responseCode>0</responseCode>\n<responseMessage>AUTHORIZED</responseMessage>\n<avsResponseCode>YYY</avsResponseCode>\n<cvvResponseCode>M</cvvResponseCode>\n<processorCode>A</processorCode>\n<processorMessage>APPROVED</processorMessage>\n<errorMessage/>\n</transaction-response>\n"

Licença de uso

Copyright 2012 Bonera Software e Participações S/A.

Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Something went wrong with that request. Please try again.