Skip to content

Commit c60fd75

Browse files
committed
Merge pull request #33 from pagseguro/2.0.7-dev
2.0.7 dev
2 parents cce2ac6 + fa9d093 commit c60fd75

File tree

7 files changed

+56
-2
lines changed

7 files changed

+56
-2
lines changed

README.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,13 @@ class CheckoutController < ApplicationController
7676
}
7777
end
7878

79+
# Caso você precise passar parâmetros para a api que ainda não foram
80+
# mapeados na gem, você pode fazer de maneira dinâmica utilizando um
81+
# simples hash.
82+
payment.extra_params << { paramName: 'paramValue' }
83+
payment.extra_params << { senderBirthDate: '07/05/1981' }
84+
payment.extra_params << { extraAmount: '-15.00' }
85+
7986
response = payment.register
8087

8188
# Caso o processo de checkout tenha dado errado, lança uma exceção.

examples/payment_request.rb

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# -*- encoding : utf-8 -*-
1+
# -*- encoding : utf-8 -*-
22
require_relative "boot"
33

44
payment = PagSeguro::PaymentRequest.new
@@ -36,6 +36,11 @@
3636
}
3737
}
3838

39+
# Add extras params to request
40+
# payment.extra_params << { paramName: 'paramValue' }
41+
# payment.extra_params << { senderBirthDate: '07/05/1981' }
42+
# payment.extra_params << { extraAmount: '-15.00' }
43+
3944
puts "=> REQUEST"
4045
puts PagSeguro::PaymentRequest::Serializer.new(payment).to_params
4146

lib/pagseguro/payment_request.rb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ class PaymentRequest
5757
# The token that identifies the request. Defaults to PagSeguro.token
5858
attr_accessor :token
5959

60+
# The extra parameters for payment request
61+
attr_accessor :extra_params
6062

6163
# Products/items in this payment request.
6264
def items
@@ -84,6 +86,7 @@ def register
8486

8587
private
8688
def before_initialize
89+
self.extra_params = []
8790
self.currency = "BRL"
8891
self.email = PagSeguro.email
8992
self.token = PagSeguro.token

lib/pagseguro/payment_request/serializer.rb

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ def to_params
2424

2525
serialize_sender(payment_request.sender)
2626
serialize_shipping(payment_request.shipping)
27+
serialize_extra_params(payment_request.extra_params)
2728

2829
params.delete_if {|key, value| value.nil? }
2930

@@ -83,6 +84,14 @@ def serialize_address(address)
8384
params[:shippingAddressComplement] = address.complement
8485
end
8586

87+
def serialize_extra_params(extra_params)
88+
return unless extra_params
89+
90+
extra_params.each do |extra_param|
91+
params[extra_param.keys.first] = extra_param.values.first
92+
end
93+
end
94+
8695
def to_amount(amount)
8796
"%.2f" % BigDecimal(amount.to_s).round(2).to_s("F") if amount
8897
end

lib/pagseguro/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
module PagSeguro
2-
VERSION = "2.0.6"
2+
VERSION = "2.0.7"
33
end

spec/pagseguro/payment_request/serializer_spec.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,4 +139,18 @@ def build_item(index)
139139
it_behaves_like "item serialization", 1
140140
it_behaves_like "item serialization", 2
141141
end
142+
143+
context "extra params serialization" do
144+
before do
145+
payment_request.stub({
146+
extra_params: [
147+
{ extraParam: 'param_value' },
148+
{ newExtraParam: 'extra_param_value' }
149+
]
150+
})
151+
end
152+
153+
it { expect(params).to include(extraParam: 'param_value') }
154+
it { expect(params).to include(newExtraParam: 'extra_param_value') }
155+
end
142156
end

spec/pagseguro/payment_request_spec.rb

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,4 +104,20 @@
104104
expect(payment.register).to eql(response)
105105
end
106106
end
107+
108+
describe "#extra_params" do
109+
it "is empty before initialization" do
110+
expect(subject.extra_params).to eql([])
111+
end
112+
113+
it "allows extra parameter addition" do
114+
subject.extra_params << { extraParam: 'value' }
115+
subject.extra_params << { itemParam1: 'value1' }
116+
117+
expect(subject.extra_params).to eql([
118+
{ extraParam: 'value' },
119+
{ itemParam1: 'value1' }
120+
])
121+
end
122+
end
107123
end

0 commit comments

Comments
 (0)