poundpay 0.2.8 → 0.2.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -66,7 +66,11 @@ Poundpay is a payments platform for marketplaces
66
66
  payment_sid: "<%= @payment.sid %>",
67
67
  success: handlePaymentSuccess,
68
68
  error: handlePaymentError,
69
- cardholder_name: "Fred Nietzsche", // Optional
69
+ name: "Fred Nietzsche", // Optional
70
+ address_street: "330 Townsend St", // Optional
71
+ address_city: "San Francisco", // Optional
72
+ address_state: "California", // Optional
73
+ address_zip: "94107", // Optional
70
74
  server: "<%= Poundpay.www_url %>"
71
75
  });
72
76
  </script>
@@ -75,6 +79,7 @@ Poundpay is a payments platform for marketplaces
75
79
  == Payment methods
76
80
 
77
81
  payment = Poundpay::Payment.find(payment_sid)
78
- payment.escrow # AUTHORIZED -> ESCROWED. Credit card is charged
79
- payment.release # ESCROWED -> RELEASED. Recipient receives money
80
- payment.cancel # ESCROWED -> CANCELED. Payer receives refund
82
+ payment.escrow # AUTHORIZED -> ESCROWED. Credit card is charged
83
+ payment.partially_release(amount) # ESCROWED or PARTIALLY_RELEASED -> PARTIALLY_RELEASED or PARTIALLY_RELEASED. Recipieint recieves a portion of funds.
84
+ payment.release # ESCROWED or PARTIALLY_RELEASED -> RELEASED. Recipient receives money
85
+ payment.cancel # ESCROWED or PARTIALLY_RELEASED -> CANCELED. Payer receives refund
@@ -8,6 +8,9 @@ end
8
8
  class PaymentEscrowException < PaymentException
9
9
  end
10
10
 
11
+ class PaymentPartiallyReleaseException < PaymentException
12
+ end
13
+
11
14
  class PaymentReleaseException < PaymentException
12
15
  end
13
16
 
@@ -40,6 +43,9 @@ module Poundpay
40
43
  end
41
44
  end
42
45
 
46
+ class User < Resource
47
+ end
48
+
43
49
  class Payment < Resource
44
50
  def escrow
45
51
  unless status == 'AUTHORIZED'
@@ -49,9 +55,23 @@ module Poundpay
49
55
  save
50
56
  end
51
57
 
58
+ def partially_release(amount_to_release)
59
+ statuses = ['ESCROWED', 'PARTIALLY_RELEASED']
60
+ unless statuses.include?(status)
61
+ raise PaymentPartiallyReleaseException.new "Payment status is #{status}. Only ESCROWED or PARTIALLY_RELEASED payments may be released"
62
+ end
63
+ # Tried setting status with status=, but save still had status == 'ESCROWED'.
64
+ # Setting the status through the attributes, however, does work.
65
+ attributes['status'] = 'PARTIALLY_RELEASED'
66
+ attributes['amount_to_release'] = amount_to_release
67
+ save
68
+ attributes.delete('amount_to_release')
69
+ end
70
+
52
71
  def release
53
- unless status == 'ESCROWED'
54
- raise PaymentReleaseException.new "Payment status is #{status}. Only ESCROWED payments may be released"
72
+ statuses = ['ESCROWED', 'PARTIALLY_RELEASED']
73
+ unless statuses.include?(status)
74
+ raise PaymentReleaseException.new "Payment status is #{status}. Only ESCROWED or PARTIALLY_RELASED payments may be released"
55
75
  end
56
76
  # Tried setting status with status=, but save still had status == 'ESCROWED'.
57
77
  # Setting the status through the attributes, however, does work.
@@ -60,12 +80,13 @@ module Poundpay
60
80
  end
61
81
 
62
82
  def cancel
63
- unless status == 'ESCROWED'
64
- raise PaymentCancelException.new "Payment status is #{status}. Only ESCROWED payments may be canceled"
83
+ statuses = ['ESCROWED', 'PARTIALLY_RELEASED']
84
+ unless statuses.include?(status)
85
+ raise PaymentCancelException.new "Payment status is #{status}. Only ESCROWED or PARTIALLY_RELEASED payments may be canceled"
65
86
  end
66
87
 
67
88
  attributes['status'] = 'CANCELED'
68
89
  save
69
90
  end
70
91
  end
71
- end
92
+ end
@@ -1,3 +1,3 @@
1
1
  module Poundpay
2
- VERSION = "0.2.8"
2
+ VERSION = "0.2.9"
3
3
  end
@@ -14,7 +14,7 @@ Gem::Specification.new do |s|
14
14
 
15
15
  s.rubyforge_project = "poundpay"
16
16
 
17
- s.add_dependency("activeresource", ">= 3.0")
17
+ s.add_dependency("activeresource", "~> 3.0.0")
18
18
 
19
19
  s.add_development_dependency("rspec", ">= 2.0")
20
20
  s.add_development_dependency("wirble")
@@ -34,6 +34,12 @@ module Poundpay
34
34
  @attributes
35
35
  end
36
36
 
37
+ def partially_released_payment_attributes
38
+ @attributes = staged_payment_attributes
39
+ @attributes["status"] = "PARTIALLY_RELEASED"
40
+ @attributes
41
+ end
42
+
37
43
  def released_payment_attributes
38
44
  @attributes = staged_payment_attributes
39
45
  @attributes["status"] = "RELEASED"
@@ -46,4 +52,4 @@ module Poundpay
46
52
  @attributes
47
53
  end
48
54
  end
49
- end
55
+ end
@@ -94,20 +94,65 @@ describe Payment do
94
94
  @escrowed_payment.release
95
95
  @escrowed_payment.status.should == 'RELEASED'
96
96
  end
97
+
98
+ it "should release a PARTIALLY_RELEASED payment" do
99
+ @escrowed_payment = Payment.new partially_released_payment_attributes
100
+ @escrowed_payment.should_receive(:save).and_return(Payment.new partially_released_payment_attributes)
101
+
102
+ @escrowed_payment.release
103
+ @escrowed_payment.status.should == 'RELEASED'
104
+ end
97
105
  end
98
106
 
107
+ describe "#partially_release" do
108
+ it "should not be able to partially release a STAGED payment" do
109
+ @staged_payment = Payment.new staged_payment_attributes
110
+ expect {@staged_payment.release}.to raise_error(PaymentReleaseException)
111
+ end
112
+
113
+ it "should partially release an ESCROWED payment" do
114
+ @escrowed_payment = Payment.new escrowed_payment_attributes
115
+ @escrowed_payment.should_receive(:save).and_return(Payment.new released_payment_attributes)
116
+
117
+ @escrowed_payment.partially_release(123)
118
+ @escrowed_payment.status.should == 'PARTIALLY_RELEASED'
119
+ end
120
+
121
+ it "should partially release a PARTIALLY_RELEASED payment" do
122
+ @escrowed_payment = Payment.new partially_released_payment_attributes
123
+ @escrowed_payment.should_receive(:save).and_return(Payment.new partially_released_payment_attributes)
124
+
125
+ @escrowed_payment.partially_release(123)
126
+ @escrowed_payment.status.should == 'PARTIALLY_RELEASED'
127
+ end
128
+
129
+ it "should not be able to partially release a RELEASED payment" do
130
+ @staged_payment = Payment.new staged_payment_attributes
131
+ expect {@staged_payment.partially_release(123)}.to raise_error(PaymentPartiallyReleaseException)
132
+ end
133
+ end
134
+
135
+
99
136
  describe "#cancel" do
100
137
  it "should not be able to cancel a STAGED payment" do
101
138
  @staged_payment = Payment.new staged_payment_attributes
102
139
  expect {@staged_payment.cancel}.to raise_error(PaymentCancelException)
103
140
  end
104
141
 
105
- it "should release an ESCROWED payment" do
142
+ it "should cancel an ESCROWED payment" do
106
143
  @escrowed_payment = Payment.new escrowed_payment_attributes
107
144
  @escrowed_payment.should_receive(:save).and_return(Payment.new canceled_payment_attributes)
108
145
 
109
146
  @escrowed_payment.cancel
110
147
  @escrowed_payment.status.should == 'CANCELED'
111
148
  end
149
+
150
+ it "should cancel a PARTIALLY_RELEASED payment" do
151
+ @escrowed_payment = Payment.new partially_released_payment_attributes
152
+ @escrowed_payment.should_receive(:save).and_return(Payment.new partially_released_payment_attributes)
153
+
154
+ @escrowed_payment.cancel
155
+ @escrowed_payment.status.should == 'CANCELED'
156
+ end
112
157
  end
113
- end
158
+ end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 2
8
- - 8
9
- version: 0.2.8
8
+ - 9
9
+ version: 0.2.9
10
10
  platform: ruby
11
11
  authors:
12
12
  - Matin Tamizi
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-04-24 00:00:00 -07:00
17
+ date: 2011-10-12 00:00:00 -07:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -23,12 +23,13 @@ dependencies:
23
23
  requirement: &id001 !ruby/object:Gem::Requirement
24
24
  none: false
25
25
  requirements:
26
- - - ">="
26
+ - - ~>
27
27
  - !ruby/object:Gem::Version
28
28
  segments:
29
29
  - 3
30
30
  - 0
31
- version: "3.0"
31
+ - 0
32
+ version: 3.0.0
32
33
  type: :runtime
33
34
  version_requirements: *id001
34
35
  - !ruby/object:Gem::Dependency