Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

adicionando as validações que o Mário Sério Dias passou

  • Loading branch information...
commit 51fed33a329e1f23677925d0f34157e7cfff4332 1 parent bd78301
Juan Maiz authored
Showing with 53 additions and 15 deletions.
  1. +14 −0 lib/moip.rb
  2. +16 −12 lib/moip/direct_payment.rb
  3. +23 −3 spec/moip_spec.rb
View
14 lib/moip.rb
@@ -4,6 +4,20 @@
require 'active_support/deprecation'
module MoIP
+
+ class ValidationError < StandardError; end
+
+ class MissingPaymentTypeError < ValidationError; end
+ class MissingPayerError < ValidationError; end
+ class MissingBirthdate < ValidationError; end
+
+ class InvalidCellphone < ValidationError; end
+ class InvalidExpiry < ValidationError; end
+ class InvalidInstitution < ValidationError; end
+ class InvalidPhone < ValidationError; end
+ class InvalidReceiving < ValidationError; end
+ class InvalidValue < ValidationError; end
+
autoload :DirectPayment, 'moip/direct_payment'
autoload :Client, 'moip/client'
View
28 lib/moip/direct_payment.rb
@@ -3,19 +3,11 @@
module MoIP
- class ValidationError < StandardError; end
-
- class MissingPaymentTypeError < ValidationError; end
- class MissingPayerError < ValidationError; end
- class InvalidInstitution < ValidationError; end
- class InvalidValue < ValidationError; end
- class InvalidPhone < ValidationError; end
-
# Baseado em http://labs.moip.com.br/pdfs/Integra%C3%A7%C3%A3o%20API%20-%20Autorizar%20e%20Cancelar%20Pagamentos.pdf
CodigoErro = 0..999
CodigoEstado = %w{AC AL AM AP BA CE DF ES GO MA MG MS MT PA PB PE PI PR RJ RN RO RR RS SC SE SP TO}
CodigoMoeda = "BRL"
- CodigoPaís = "BRA"
+ CodigoPais = "BRA"
Destino = %w{Nenhum MesmoCobranca AInformar PreEstabelecido}
InstituicaoPagamento = %w{MoIP Visa AmericanExpress Mastercard Diners BancoDoBrasil Bradesco Itau BancoReal Unibanco Aura Hipercard Paggo Banrisul}
FormaPagamento = %w{CarteiraMoIP CartaoCredito CartaoDebito DebitoBancario FinanciamentoBancario BoletoBancario}
@@ -35,6 +27,9 @@ class InvalidPhone < ValidationError; end
TipoRecebimento = %w{AVista Parcelado}
TipoRestricao = %w{Autorizacao Pagamento}
TipoStatus = %w{Sucesso Falha}
+
+ #
+ TiposComInstituicao = %w{CartaoCredito CartaoCredito DebitoBancario}
class DirectPayment
@@ -46,10 +41,19 @@ def body(attributes = {})
#raise "#{attributes[:valor]}--#{attributes[:valor].to_f}"
raise(MissingPaymentTypeError, "É necessário informar a razão do pagamento") if attributes[:razao].nil?
raise(MissingPayerError, "É obrigatório passar as informarções do pagador") if attributes[:pagador].nil?
+
raise(InvalidValue, "Valor deve ser maior que zero.") if attributes[:valor].to_f <= 0.0
- raise(InvalidPhone, "Telefone deve ter o formato (99) 99999999.") if attributes[:pagador][:tel_fixo] !~ /\(\d{2}\) ?\d{8,9}/
+ raise(InvalidPhone, "Telefone deve ter o formato (99)9999-9999.") if attributes[:pagador][:tel_fixo] !~ /\(\d{2}\)?\d{4}-\d{4}/
+ raise(InvalidCellphone, "Telefone celular deve ter o formato (99)9999-9999.") if attributes[:pagador][:tel_cel] !~ /\(\d{2}\)?\d{4}-\d{4}/
+
+ raise(MissingBirthdate, "É obrigatório passar as informarções do pagador") if TiposComInstituicao.include?(attributes[:forma]) && attributes[:data_nascimento].nil?
+
+ raise(InvalidExpiry, "Data de expiração deve ter o formato 01-00 até 12-99.") if TiposComInstituicao.include?(attributes[:forma]) && attributes[:expiracao] !~ /(1[0-2]|0\d)\/\d{2}/
+
+
+ raise(InvalidReceiving, "Recebimento é inválido. Escolha um destes: #{TipoRecebimento.join(', ')}") if !TipoRecebimento.include?(attributes[:recebimento]) && TiposComInstituicao.include?(attributes[:forma])
- raise(InvalidInstitution, "A instituição #{attributes[:instituicao]} é inválida. Escolha uma destas: #{InstituicaoPagamento.join(', ')}") if ["CartaoCredito", "DebitoBancario"].include?(attributes[:forma]) && !InstituicaoPagamento.include?(attributes[:instituicao])
+ raise(InvalidInstitution, "A instituição #{attributes[:instituicao]} é inválida. Escolha uma destas: #{InstituicaoPagamento.join(', ')}") if TiposComInstituicao.include?(attributes[:forma]) && !InstituicaoPagamento.include?(attributes[:instituicao])
builder = Nokogiri::XML::Builder.new(:encoding => "UTF-8") do |xml|
@@ -131,7 +135,7 @@ def body(attributes = {})
xml.Email { xml.text attributes[:pagador][:email] }
xml.TelefoneCelular { xml.text attributes[:pagador][:tel_cel] }
xml.Apelido { xml.text attributes[:pagador][:apelido] }
- xml.Identidade { xml.text attributes[:pagador][:identidade] }
+ xml.Identidade(:Tipo => "CPF") { xml.text attributes[:pagador][:identidade] }
xml.EnderecoCobranca {
xml.Logradouro { xml.text attributes[:pagador][:logradouro] }
xml.Numero { xml.text attributes[:pagador][:numero] }
View
26 spec/moip_spec.rb
@@ -1,8 +1,10 @@
# encoding: utf-8
require "moip"
-
require "digest/sha1"
+MoIP::Client
+MoIP::DirectPayment
+
describe "Make payments with the MoIP API" do
before :all do
@@ -113,12 +115,30 @@
config.key = 'key'
end
end
+ it "should raise invalid phone" do
+ @data = @credit.merge({:pagador => {:tel_fixo => 'InvalidPhone', :tel_cel => "(61)9999-9999"}})
+ lambda { MoIP::Client.checkout(@data) }.should raise_error(MoIP::InvalidPhone)
+ end
+ it "should raise invalid cellphone" do
+ @data = @credit.merge({:pagador => {:tel_cel => 'InvalidCellphone', :tel_fixo => "(61)9999-9999"}})
+ lambda { MoIP::Client.checkout(@data) }.should raise_error(MoIP::InvalidCellphone)
+ end
+ it "should raise invalid expiry" do
+ @data = @credit.merge({:expiracao => 'InvalidExpiry'})
+ lambda { MoIP::Client.checkout(@data) }.should raise_error(MoIP::InvalidExpiry)
+ end
+ it "should raise missing birthdate" do
+ @data = @credit.merge({:data_nascimento => nil})
+ lambda { MoIP::Client.checkout(@data) }.should raise_error(MoIP::MissingBirthdate)
+ end
it "should raise invalid institution error" do
@data = @credit.merge({:instituicao => 'InvalidInstitution'})
- #raise @credit.inspect
lambda { MoIP::Client.checkout(@data) }.should raise_error(MoIP::InvalidInstitution)
end
-
+ it "should raise invalid receiving error" do
+ @data = @credit.merge({:recebimento => 'InvalidReceiving'})
+ lambda { MoIP::Client.checkout(@data) }.should raise_error(MoIP::InvalidReceiving)
+ end
it "should raise invalid value error if 0" do
@credit[:valor] = 0
lambda { MoIP::Client.checkout(@credit) }.should raise_error(MoIP::InvalidValue)
Please sign in to comment.
Something went wrong with that request. Please try again.