samurai 0.2.24 → 0.2.25
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/samurai/processor_response.rb +6 -0
- data/lib/samurai/transaction.rb +6 -8
- data/lib/samurai/version.rb +1 -1
- data/spec/lib/authorization_spec.rb +10 -14
- data/spec/lib/processor_spec.rb +7 -7
- data/spec/lib/purchase_spec.rb +4 -4
- metadata +12 -12
@@ -10,4 +10,10 @@ class Samurai::ProcessorResponse < Samurai::Base
|
|
10
10
|
avs_result_code_message && avs_result_code_message.key
|
11
11
|
end
|
12
12
|
|
13
|
+
# Helper method for accessing the CVV result code from the response messages
|
14
|
+
def cvv_result_code
|
15
|
+
cvv_result_code_message = self.messages.find {|m| m.context=='processor.cvv_result_code' || m.context=='gateway.cvv_result_code' }
|
16
|
+
cvv_result_code_message && cvv_result_code_message.key
|
17
|
+
end
|
18
|
+
|
13
19
|
end
|
data/lib/samurai/transaction.rb
CHANGED
@@ -5,25 +5,25 @@
|
|
5
5
|
# It can be used to query Transactions & capture/void/credit/reverse
|
6
6
|
class Samurai::Transaction < Samurai::Base
|
7
7
|
include Samurai::CacheableByToken
|
8
|
-
|
8
|
+
|
9
9
|
# Alias for `transaction_token`
|
10
10
|
def id
|
11
11
|
transaction_token
|
12
12
|
end
|
13
13
|
alias_method :token, :id
|
14
|
-
|
14
|
+
|
15
15
|
# Captures an authorization. Optionally specify an `amount` to do a partial capture of the initial
|
16
16
|
# authorization. The default is to capture the full amount of the authorization.
|
17
17
|
def capture(amount = nil, options = {})
|
18
18
|
execute(:capture, {:amount => amount || self.amount}.reverse_merge(options))
|
19
19
|
end
|
20
|
-
|
21
|
-
# Void this transaction. If the transaction has not yet been captured and settled it can be voided to
|
20
|
+
|
21
|
+
# Void this transaction. If the transaction has not yet been captured and settled it can be voided to
|
22
22
|
# prevent any funds from transferring.
|
23
23
|
def void(options = {})
|
24
24
|
execute(:void, options)
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
27
|
# Create a credit or refund against the original transaction.
|
28
28
|
# Optionally accepts an `amount` to credit, the default is to credit the full
|
29
29
|
# value of the original amount
|
@@ -34,9 +34,7 @@ class Samurai::Transaction < Samurai::Base
|
|
34
34
|
# Reverse this transaction. First, tries a void.
|
35
35
|
# If a void is unsuccessful, (because the transaction has already settled) perform a credit for the full amount.
|
36
36
|
def reverse(options = {})
|
37
|
-
|
38
|
-
return transaction if transaction.processor_response.success
|
39
|
-
return credit(nil, options)
|
37
|
+
execute(:reverse, {:amount => amount || self.amount}.reverse_merge(options))
|
40
38
|
end
|
41
39
|
|
42
40
|
def success?
|
data/lib/samurai/version.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe "processing authorizations" do
|
4
|
-
|
4
|
+
|
5
5
|
before :each do
|
6
6
|
payment_method_token = create_payment_method(default_payment_method_params)[:payment_method_token]
|
7
7
|
@authorization = Samurai::Processor.authorize(payment_method_token, 1.0, :billing_reference=>rand(1000))
|
8
8
|
end
|
9
|
-
|
9
|
+
|
10
10
|
it "should create a new authorization transaction" do
|
11
11
|
@authorization.processor_response.success.should be_true
|
12
12
|
end
|
@@ -20,7 +20,7 @@ describe "processing authorizations" do
|
|
20
20
|
capture = @authorization.capture(1.0)
|
21
21
|
capture.processor_response.success.should be_true
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
it "should capture an authorization without specifying an amount" do
|
25
25
|
capture = @authorization.capture
|
26
26
|
capture.amount.should == "#{1.0}"
|
@@ -28,8 +28,8 @@ describe "processing authorizations" do
|
|
28
28
|
end
|
29
29
|
|
30
30
|
it "should partially capture an authorization" do
|
31
|
-
capture = @authorization.capture(
|
32
|
-
capture.amount.should == "#{
|
31
|
+
capture = @authorization.capture(BigDecimal('0.5'))
|
32
|
+
capture.amount.should == "#{BigDecimal('0.5')}"
|
33
33
|
capture.processor_response.success.should be_true
|
34
34
|
end
|
35
35
|
|
@@ -40,17 +40,13 @@ describe "processing authorizations" do
|
|
40
40
|
|
41
41
|
it "should credit an authorization for the full amount by default" do
|
42
42
|
credit = @authorization.credit
|
43
|
-
credit.amount.should == "#{
|
44
|
-
|
45
|
-
credit.processor_response.success.should be_true
|
46
|
-
end
|
43
|
+
credit.amount.should == "#{BigDecimal('0.5')}"
|
44
|
+
credit.processor_response.success.should be_true
|
47
45
|
end
|
48
46
|
|
49
47
|
it "should partially credit an authorization" do
|
50
|
-
credit = @authorization.credit(
|
51
|
-
credit.amount.should == "#{
|
52
|
-
|
53
|
-
credit.processor_response.success.should be_true
|
54
|
-
end
|
48
|
+
credit = @authorization.credit(BigDecimal('0.5'))
|
49
|
+
credit.amount.should == "#{BigDecimal('0.5')}"
|
50
|
+
credit.processor_response.success.should be_true
|
55
51
|
end
|
56
52
|
end
|
data/spec/lib/processor_spec.rb
CHANGED
@@ -9,16 +9,16 @@ describe "Processor actions" do
|
|
9
9
|
processor = Samurai::Processor.the_processor
|
10
10
|
processor.should_not be_nil
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
it "should create a new purchase" do
|
14
|
-
purchase = Samurai::Processor.purchase(@payment_method_token,
|
14
|
+
purchase = Samurai::Processor.purchase(@payment_method_token, 1.0, :billing_reference=>rand(1000))
|
15
15
|
purchase.processor_response.success.should be_true
|
16
16
|
# FakeWeb.last_request
|
17
17
|
end
|
18
18
|
|
19
19
|
it "should create a new purchase with tracking data" do
|
20
|
-
purchase = Samurai::Processor.purchase(@payment_method_token,
|
21
|
-
:descriptor => "A test purchase",
|
20
|
+
purchase = Samurai::Processor.purchase(@payment_method_token, 1.0, {
|
21
|
+
:descriptor => "A test purchase",
|
22
22
|
:custom => "some optional custom data",
|
23
23
|
:billing_reference => "ABC123",
|
24
24
|
:customer_reference => "Customer (123)"
|
@@ -26,10 +26,10 @@ describe "Processor actions" do
|
|
26
26
|
purchase.processor_response.success.should be_true
|
27
27
|
# FakeWeb.last_request
|
28
28
|
end
|
29
|
-
|
29
|
+
|
30
30
|
it "should create a non-new authorization" do
|
31
|
-
authorization = Samurai::Processor.authorize(@payment_method_token,
|
31
|
+
authorization = Samurai::Processor.authorize(@payment_method_token, 1.0)
|
32
32
|
authorization.processor_response.success.should be_true
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
end
|
data/spec/lib/purchase_spec.rb
CHANGED
@@ -17,24 +17,24 @@ describe "processing purchases" do
|
|
17
17
|
void.processor_response.success.should be_true
|
18
18
|
end
|
19
19
|
|
20
|
-
it "should
|
20
|
+
it "should be able to credit a recent purchase" do
|
21
21
|
credit = @purchase.credit
|
22
|
-
credit.processor_response.success.should
|
22
|
+
credit.processor_response.success.should be_true
|
23
|
+
credit.transaction_type.should == 'Credit'
|
23
24
|
end
|
24
25
|
|
25
26
|
it "should be able to reverse a recent purchase" do
|
26
27
|
reverse = @purchase.reverse
|
27
28
|
reverse.processor_response.success.should be_true
|
29
|
+
reverse.transaction_type.should == 'Credit'
|
28
30
|
end
|
29
31
|
|
30
32
|
it "should be able to reverse a settled purchase" do
|
31
|
-
pending "currently we cannot force settle a purchase, so can't test this properly"
|
32
33
|
reverse = @purchase.reverse
|
33
34
|
reverse.processor_response.success.should be_true
|
34
35
|
end
|
35
36
|
|
36
37
|
it "should be able to credit a settled purchase" do
|
37
|
-
pending "currently we cannot force settle a purchase, so can't test this properly"
|
38
38
|
credit = @purchase.credit
|
39
39
|
credit.processor_response.success.should be_true
|
40
40
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: samurai
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.25
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2011-11-
|
13
|
+
date: 2011-11-11 00:00:00.000000000Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activeresource
|
17
|
-
requirement: &
|
17
|
+
requirement: &70107049098300 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,10 +22,10 @@ dependencies:
|
|
22
22
|
version: 2.2.2
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *70107049098300
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: bundler
|
28
|
-
requirement: &
|
28
|
+
requirement: &70107049097080 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
31
|
- - ! '>='
|
@@ -33,10 +33,10 @@ dependencies:
|
|
33
33
|
version: 1.0.0
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *70107049097080
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: rspec
|
39
|
-
requirement: &
|
39
|
+
requirement: &70107049095700 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ! '>='
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: 2.6.0
|
45
45
|
type: :development
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *70107049095700
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: fakeweb
|
50
|
-
requirement: &
|
50
|
+
requirement: &70107049094120 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,10 +55,10 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :development
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *70107049094120
|
59
59
|
- !ruby/object:Gem::Dependency
|
60
60
|
name: ruby-debug19
|
61
|
-
requirement: &
|
61
|
+
requirement: &70107049093040 !ruby/object:Gem::Requirement
|
62
62
|
none: false
|
63
63
|
requirements:
|
64
64
|
- - ! '>='
|
@@ -66,7 +66,7 @@ dependencies:
|
|
66
66
|
version: '0'
|
67
67
|
type: :development
|
68
68
|
prerelease: false
|
69
|
-
version_requirements: *
|
69
|
+
version_requirements: *70107049093040
|
70
70
|
description: If you are an online merchant and using samurai.feefighters.com, this
|
71
71
|
gem will make your life easy. Integrate with the samurai.feefighters.com portal
|
72
72
|
and process transaction.
|