killbill-paypal-express 5.0.2 → 5.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/NEWS +3 -0
- data/VERSION +1 -1
- data/lib/paypal_express/api.rb +10 -2
- data/lib/paypal_express/models/response.rb +7 -0
- data/pom.xml +1 -1
- data/spec/paypal_express/remote/baid_spec.rb +82 -138
- data/spec/paypal_express/remote/hpp_spec.rb +5 -5
- data/spec/paypal_express/remote/hpp_spec_helpers.rb +67 -232
- data/spec/spec_helper.rb +10 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 588915d1b5f301d56b925a8c75f5f643c2725562
|
4
|
+
data.tar.gz: c0025ed6f693a9f726645ca22f368d396457ef07
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9717c0e506aa81b724132330923b2c4778335482ecce4a7f3c1f3f05387598401ba8ad63a196408a1a393fa7e5a2cf8e6861f0090bdc7f4dfc6255f621871fd3
|
7
|
+
data.tar.gz: 2428403edb96d25c5e373f762e2dd013eb464bd0f6765df1e89b2952984bed239ce3c5062888636fc19fc1a3f6ec6d4e2653964d8d4ac0d9d2045952fb46ee4e
|
data/Gemfile.lock
CHANGED
data/NEWS
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
5.0.
|
1
|
+
5.0.3
|
data/lib/paypal_express/api.rb
CHANGED
@@ -84,7 +84,14 @@ module Killbill #:nodoc:
|
|
84
84
|
end
|
85
85
|
|
86
86
|
def get_payment_info(kb_account_id, kb_payment_id, properties, context)
|
87
|
-
|
87
|
+
ignored_api_calls = [:details_for]
|
88
|
+
responses = @response_model.from_kb_payment_id(@transaction_model, kb_payment_id, context.tenant_id)
|
89
|
+
responses = responses.reject do |response|
|
90
|
+
ignored_api_calls.include?(response.api_call.to_sym)
|
91
|
+
end
|
92
|
+
t_info_plugins = responses.collect do |response|
|
93
|
+
response.to_transaction_info_plugin(response.send("#{@identifier}_transaction"))
|
94
|
+
end
|
88
95
|
# Should never happen...
|
89
96
|
return [] if t_info_plugins.nil?
|
90
97
|
|
@@ -288,7 +295,8 @@ module Killbill #:nodoc:
|
|
288
295
|
payment_processor_account_id = payment_processor_account_id || :default
|
289
296
|
gateway = lookup_gateway(payment_processor_account_id, kb_tenant_id)
|
290
297
|
gw_response = gateway.details_for(token)
|
291
|
-
|
298
|
+
|
299
|
+
response = @response_model.create_response(:details_for, kb_account_id, kb_payment_id, kb_payment_transaction_id, transaction_type, payment_processor_account_id, kb_tenant_id, gw_response)
|
292
300
|
|
293
301
|
raise response.message unless response.success?
|
294
302
|
raise "Could not retrieve the payer info for token #{token}" if response.payer_id.blank?
|
@@ -63,6 +63,13 @@ module Killbill #:nodoc:
|
|
63
63
|
model)
|
64
64
|
end
|
65
65
|
|
66
|
+
def self.create_response(api_call, kb_account_id, kb_payment_id, kb_payment_transaction_id, transaction_type, payment_processor_account_id, kb_tenant_id, gw_response, extra_params = {}, model = ::Killbill::PaypalExpress::PaypalExpressResponse)
|
67
|
+
response = model.from_response(api_call, kb_account_id, kb_payment_id, kb_payment_transaction_id, transaction_type, payment_processor_account_id, kb_tenant_id, gw_response, extra_params, model)
|
68
|
+
response.save!(shared_activerecord_options)
|
69
|
+
response
|
70
|
+
end
|
71
|
+
|
72
|
+
|
66
73
|
def self.last_token(kb_account_id, kb_tenant_id)
|
67
74
|
response = where(:api_call => 'initiate_express_checkout',
|
68
75
|
:success => true,
|
data/pom.xml
CHANGED
@@ -26,7 +26,7 @@
|
|
26
26
|
<groupId>org.kill-bill.billing.plugin.ruby</groupId>
|
27
27
|
<artifactId>paypal-express-plugin</artifactId>
|
28
28
|
<packaging>pom</packaging>
|
29
|
-
<version>5.0.
|
29
|
+
<version>5.0.3</version>
|
30
30
|
<name>paypal-express-plugin</name>
|
31
31
|
<url>http://github.com/killbill/killbill-paypal-express-plugin</url>
|
32
32
|
<description>Plugin for accessing Paypal Express Checkout as a payment gateway</description>
|
@@ -21,27 +21,18 @@ shared_examples 'baid_spec_common' do
|
|
21
21
|
payer_id = find_value_from_properties(payment_response.properties, 'payerId')
|
22
22
|
payer_id.should_not be_nil
|
23
23
|
|
24
|
+
validate_details_for(@kb_payment.id, :PURCHASE, payer_id)
|
24
25
|
# Verify GET API
|
25
26
|
payment_infos = @plugin.get_payment_info(@pm.kb_account_id, @kb_payment.id, [], @call_context)
|
26
|
-
payment_infos.size.should ==
|
27
|
-
#
|
27
|
+
payment_infos.size.should == 1
|
28
|
+
# purchase
|
28
29
|
payment_infos[0].kb_payment_id.should == @kb_payment.id
|
29
30
|
payment_infos[0].transaction_type.should == :PURCHASE
|
30
|
-
payment_infos[0].amount.should
|
31
|
-
payment_infos[0].currency.should
|
31
|
+
payment_infos[0].amount.should == @amount
|
32
|
+
payment_infos[0].currency.should == @currency
|
32
33
|
payment_infos[0].status.should == :PROCESSED
|
33
34
|
payment_infos[0].gateway_error.should == 'Success'
|
34
35
|
payment_infos[0].gateway_error_code.should be_nil
|
35
|
-
find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
|
36
|
-
find_value_from_properties(payment_infos[0].properties, 'payerName').should_not be_nil
|
37
|
-
# purchase
|
38
|
-
payment_infos[1].kb_payment_id.should == @kb_payment.id
|
39
|
-
payment_infos[1].transaction_type.should == :PURCHASE
|
40
|
-
payment_infos[1].amount.should == @amount
|
41
|
-
payment_infos[1].currency.should == @currency
|
42
|
-
payment_infos[1].status.should == :PROCESSED
|
43
|
-
payment_infos[1].gateway_error.should == 'Success'
|
44
|
-
payment_infos[1].gateway_error_code.should be_nil
|
45
36
|
find_value_from_properties(payment_infos[0].properties, 'payment_processor_account_id').should == @payment_processor_account_id
|
46
37
|
find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
|
47
38
|
|
@@ -53,34 +44,24 @@ shared_examples 'baid_spec_common' do
|
|
53
44
|
|
54
45
|
# Verify GET API
|
55
46
|
payment_infos = @plugin.get_payment_info(@pm.kb_account_id, @kb_payment.id, [], @call_context)
|
56
|
-
payment_infos.size.should ==
|
57
|
-
#
|
47
|
+
payment_infos.size.should == 2
|
48
|
+
# purchase
|
58
49
|
payment_infos[0].kb_payment_id.should == @kb_payment.id
|
59
50
|
payment_infos[0].transaction_type.should == :PURCHASE
|
60
|
-
payment_infos[0].amount.should
|
61
|
-
payment_infos[0].currency.should
|
51
|
+
payment_infos[0].amount.should == @amount
|
52
|
+
payment_infos[0].currency.should == @currency
|
62
53
|
payment_infos[0].status.should == :PROCESSED
|
63
54
|
payment_infos[0].gateway_error.should == 'Success'
|
64
55
|
payment_infos[0].gateway_error_code.should be_nil
|
65
|
-
find_value_from_properties(payment_infos[0].properties, '
|
66
|
-
|
67
|
-
# purchase
|
56
|
+
find_value_from_properties(payment_infos[0].properties, 'payment_processor_account_id').should == @payment_processor_account_id
|
57
|
+
# refund
|
68
58
|
payment_infos[1].kb_payment_id.should == @kb_payment.id
|
69
|
-
payment_infos[1].transaction_type.should == :
|
59
|
+
payment_infos[1].transaction_type.should == :REFUND
|
70
60
|
payment_infos[1].amount.should == @amount
|
71
61
|
payment_infos[1].currency.should == @currency
|
72
62
|
payment_infos[1].status.should == :PROCESSED
|
73
63
|
payment_infos[1].gateway_error.should == 'Success'
|
74
64
|
payment_infos[1].gateway_error_code.should be_nil
|
75
|
-
find_value_from_properties(payment_infos[0].properties, 'payment_processor_account_id').should == @payment_processor_account_id
|
76
|
-
# refund
|
77
|
-
payment_infos[2].kb_payment_id.should == @kb_payment.id
|
78
|
-
payment_infos[2].transaction_type.should == :REFUND
|
79
|
-
payment_infos[2].amount.should == @amount
|
80
|
-
payment_infos[2].currency.should == @currency
|
81
|
-
payment_infos[2].status.should == :PROCESSED
|
82
|
-
payment_infos[2].gateway_error.should == 'Success'
|
83
|
-
payment_infos[2].gateway_error_code.should be_nil
|
84
65
|
find_value_from_properties(payment_infos[1].properties, 'payment_processor_account_id').should == @payment_processor_account_id
|
85
66
|
end
|
86
67
|
|
@@ -92,27 +73,18 @@ shared_examples 'baid_spec_common' do
|
|
92
73
|
payer_id = find_value_from_properties(payment_response.properties, 'payerId')
|
93
74
|
payer_id.should_not be_nil
|
94
75
|
|
76
|
+
validate_details_for(@kb_payment.id, :AUTHORIZE, payer_id)
|
95
77
|
# Verify GET API
|
96
78
|
payment_infos = @plugin.get_payment_info(@pm.kb_account_id, @kb_payment.id, [], @call_context)
|
97
|
-
payment_infos.size.should ==
|
98
|
-
#
|
79
|
+
payment_infos.size.should == 1
|
80
|
+
# purchase
|
99
81
|
payment_infos[0].kb_payment_id.should == @kb_payment.id
|
100
82
|
payment_infos[0].transaction_type.should == :AUTHORIZE
|
101
|
-
payment_infos[0].amount.should
|
102
|
-
payment_infos[0].currency.should
|
83
|
+
payment_infos[0].amount.should == @amount
|
84
|
+
payment_infos[0].currency.should == @currency
|
103
85
|
payment_infos[0].status.should == :PROCESSED
|
104
86
|
payment_infos[0].gateway_error.should == 'Success'
|
105
87
|
payment_infos[0].gateway_error_code.should be_nil
|
106
|
-
find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
|
107
|
-
find_value_from_properties(payment_infos[0].properties, 'payerName').should_not be_nil
|
108
|
-
# purchase
|
109
|
-
payment_infos[1].kb_payment_id.should == @kb_payment.id
|
110
|
-
payment_infos[1].transaction_type.should == :AUTHORIZE
|
111
|
-
payment_infos[1].amount.should == @amount
|
112
|
-
payment_infos[1].currency.should == @currency
|
113
|
-
payment_infos[1].status.should == :PROCESSED
|
114
|
-
payment_infos[1].gateway_error.should == 'Success'
|
115
|
-
payment_infos[1].gateway_error_code.should be_nil
|
116
88
|
find_value_from_properties(payment_infos[0].properties, 'payment_processor_account_id').should == @payment_processor_account_id
|
117
89
|
find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
|
118
90
|
|
@@ -126,15 +98,15 @@ shared_examples 'baid_spec_common' do
|
|
126
98
|
|
127
99
|
# Verify GET API
|
128
100
|
payment_infos = @plugin.get_payment_info(@pm.kb_account_id, @kb_payment.id, [], @call_context)
|
129
|
-
payment_infos.size.should ==
|
130
|
-
payment_infos[i
|
131
|
-
payment_infos[i
|
132
|
-
payment_infos[i
|
133
|
-
payment_infos[i
|
134
|
-
payment_infos[i
|
135
|
-
payment_infos[i
|
136
|
-
payment_infos[i
|
137
|
-
find_value_from_properties(payment_infos[i
|
101
|
+
payment_infos.size.should == i + 1
|
102
|
+
payment_infos[i].kb_payment_id.should == @kb_payment.id
|
103
|
+
payment_infos[i].transaction_type.should == :CAPTURE
|
104
|
+
payment_infos[i].amount.should == partial_capture_amount
|
105
|
+
payment_infos[i].currency.should == @currency
|
106
|
+
payment_infos[i].status.should == :PROCESSED
|
107
|
+
payment_infos[i].gateway_error.should == 'Success'
|
108
|
+
payment_infos[i].gateway_error_code.should be_nil
|
109
|
+
find_value_from_properties(payment_infos[i].properties, 'payment_processor_account_id').should == @payment_processor_account_id
|
138
110
|
end
|
139
111
|
|
140
112
|
# Try a partial refund
|
@@ -145,15 +117,15 @@ shared_examples 'baid_spec_common' do
|
|
145
117
|
|
146
118
|
# Verify GET API
|
147
119
|
payment_infos = @plugin.get_payment_info(@pm.kb_account_id, @kb_payment.id, [], @call_context)
|
148
|
-
payment_infos.size.should ==
|
149
|
-
payment_infos[
|
150
|
-
payment_infos[
|
151
|
-
payment_infos[
|
152
|
-
payment_infos[
|
153
|
-
payment_infos[
|
154
|
-
payment_infos[
|
155
|
-
payment_infos[
|
156
|
-
find_value_from_properties(payment_infos[
|
120
|
+
payment_infos.size.should == 5
|
121
|
+
payment_infos[4].kb_payment_id.should == @kb_payment.id
|
122
|
+
payment_infos[4].transaction_type.should == :REFUND
|
123
|
+
payment_infos[4].amount.should == partial_capture_amount
|
124
|
+
payment_infos[4].currency.should == @currency
|
125
|
+
payment_infos[4].status.should == :PROCESSED
|
126
|
+
payment_infos[4].gateway_error.should == 'Success'
|
127
|
+
payment_infos[4].gateway_error_code.should be_nil
|
128
|
+
find_value_from_properties(payment_infos[4].properties, 'payment_processor_account_id').should == @payment_processor_account_id
|
157
129
|
|
158
130
|
# Try to capture again
|
159
131
|
payment_response = @plugin.capture_payment(@pm.kb_account_id, @kb_payment.id, @kb_payment.transactions[5].id, @pm.kb_payment_method_id, partial_capture_amount, @currency, @properties, @call_context)
|
@@ -163,15 +135,15 @@ shared_examples 'baid_spec_common' do
|
|
163
135
|
|
164
136
|
# Verify GET API
|
165
137
|
payment_infos = @plugin.get_payment_info(@pm.kb_account_id, @kb_payment.id, [], @call_context)
|
166
|
-
payment_infos.size.should ==
|
167
|
-
payment_infos[
|
168
|
-
payment_infos[
|
169
|
-
payment_infos[
|
170
|
-
payment_infos[
|
171
|
-
payment_infos[
|
172
|
-
payment_infos[
|
173
|
-
payment_infos[
|
174
|
-
find_value_from_properties(payment_infos[
|
138
|
+
payment_infos.size.should == 6
|
139
|
+
payment_infos[5].kb_payment_id.should == @kb_payment.id
|
140
|
+
payment_infos[5].transaction_type.should == :CAPTURE
|
141
|
+
payment_infos[5].amount.should == partial_capture_amount
|
142
|
+
payment_infos[5].currency.should == @currency
|
143
|
+
payment_infos[5].status.should == :PROCESSED
|
144
|
+
payment_infos[5].gateway_error.should == 'Success'
|
145
|
+
payment_infos[5].gateway_error_code.should be_nil
|
146
|
+
find_value_from_properties(payment_infos[5].properties, 'payment_processor_account_id').should == @payment_processor_account_id
|
175
147
|
end
|
176
148
|
|
177
149
|
it 'should be able to auth and void' do
|
@@ -182,28 +154,19 @@ shared_examples 'baid_spec_common' do
|
|
182
154
|
payer_id = find_value_from_properties(payment_response.properties, 'payerId')
|
183
155
|
payer_id.should_not be_nil
|
184
156
|
|
157
|
+
validate_details_for(@kb_payment.id, :AUTHORIZE, payer_id)
|
185
158
|
# Verify GET API
|
186
159
|
payment_infos = @plugin.get_payment_info(@pm.kb_account_id, @kb_payment.id, [], @call_context)
|
187
|
-
payment_infos.size.should ==
|
188
|
-
#
|
160
|
+
payment_infos.size.should == 1
|
161
|
+
# authorize
|
189
162
|
payment_infos[0].kb_payment_id.should == @kb_payment.id
|
190
163
|
payment_infos[0].transaction_type.should == :AUTHORIZE
|
191
|
-
payment_infos[0].amount.should
|
192
|
-
payment_infos[0].currency.should
|
164
|
+
payment_infos[0].amount.should == @amount
|
165
|
+
payment_infos[0].currency.should == @currency
|
193
166
|
payment_infos[0].status.should == :PROCESSED
|
194
167
|
payment_infos[0].gateway_error.should == 'Success'
|
195
168
|
payment_infos[0].gateway_error_code.should be_nil
|
196
|
-
find_value_from_properties(payment_infos[0].properties, '
|
197
|
-
find_value_from_properties(payment_infos[0].properties, 'payerName').should_not be_nil
|
198
|
-
# authorize
|
199
|
-
payment_infos[1].kb_payment_id.should == @kb_payment.id
|
200
|
-
payment_infos[1].transaction_type.should == :AUTHORIZE
|
201
|
-
payment_infos[1].amount.should == @amount
|
202
|
-
payment_infos[1].currency.should == @currency
|
203
|
-
payment_infos[1].status.should == :PROCESSED
|
204
|
-
payment_infos[1].gateway_error.should == 'Success'
|
205
|
-
payment_infos[1].gateway_error_code.should be_nil
|
206
|
-
find_value_from_properties(payment_infos[1].properties, 'payment_processor_account_id').should == @payment_processor_account_id
|
169
|
+
find_value_from_properties(payment_infos[0].properties, 'payment_processor_account_id').should == @payment_processor_account_id
|
207
170
|
|
208
171
|
payment_response = @plugin.void_payment(@pm.kb_account_id, @kb_payment.id, @kb_payment.transactions[1].id, @pm.kb_payment_method_id, @properties, @call_context)
|
209
172
|
payment_response.status.should eq(:PROCESSED), payment_response.gateway_error
|
@@ -211,35 +174,25 @@ shared_examples 'baid_spec_common' do
|
|
211
174
|
|
212
175
|
# Verify GET API
|
213
176
|
payment_infos = @plugin.get_payment_info(@pm.kb_account_id, @kb_payment.id, [], @call_context)
|
214
|
-
payment_infos.size.should ==
|
215
|
-
#
|
177
|
+
payment_infos.size.should == 2
|
178
|
+
# authorize
|
216
179
|
payment_infos[0].kb_payment_id.should == @kb_payment.id
|
217
180
|
payment_infos[0].transaction_type.should == :AUTHORIZE
|
218
|
-
payment_infos[0].amount.should
|
219
|
-
payment_infos[0].currency.should
|
181
|
+
payment_infos[0].amount.should == @amount
|
182
|
+
payment_infos[0].currency.should == @currency
|
220
183
|
payment_infos[0].status.should == :PROCESSED
|
221
184
|
payment_infos[0].gateway_error.should == 'Success'
|
222
185
|
payment_infos[0].gateway_error_code.should be_nil
|
223
|
-
find_value_from_properties(payment_infos[0].properties, '
|
224
|
-
|
225
|
-
# authorize
|
186
|
+
find_value_from_properties(payment_infos[0].properties, 'payment_processor_account_id').should == @payment_processor_account_id
|
187
|
+
# void
|
226
188
|
payment_infos[1].kb_payment_id.should == @kb_payment.id
|
227
|
-
payment_infos[1].transaction_type.should == :
|
228
|
-
payment_infos[1].amount.should
|
229
|
-
payment_infos[1].currency.should
|
189
|
+
payment_infos[1].transaction_type.should == :VOID
|
190
|
+
payment_infos[1].amount.should be_nil
|
191
|
+
payment_infos[1].currency.should be_nil
|
230
192
|
payment_infos[1].status.should == :PROCESSED
|
231
193
|
payment_infos[1].gateway_error.should == 'Success'
|
232
194
|
payment_infos[1].gateway_error_code.should be_nil
|
233
195
|
find_value_from_properties(payment_infos[1].properties, 'payment_processor_account_id').should == @payment_processor_account_id
|
234
|
-
# void
|
235
|
-
payment_infos[2].kb_payment_id.should == @kb_payment.id
|
236
|
-
payment_infos[2].transaction_type.should == :VOID
|
237
|
-
payment_infos[2].amount.should be_nil
|
238
|
-
payment_infos[2].currency.should be_nil
|
239
|
-
payment_infos[2].status.should == :PROCESSED
|
240
|
-
payment_infos[2].gateway_error.should == 'Success'
|
241
|
-
payment_infos[2].gateway_error_code.should be_nil
|
242
|
-
find_value_from_properties(payment_infos[2].properties, 'payment_processor_account_id').should == @payment_processor_account_id
|
243
196
|
end
|
244
197
|
|
245
198
|
it 'should be able to auth, partial capture and void' do
|
@@ -250,27 +203,18 @@ shared_examples 'baid_spec_common' do
|
|
250
203
|
payer_id = find_value_from_properties(payment_response.properties, 'payerId')
|
251
204
|
payer_id.should_not be_nil
|
252
205
|
|
206
|
+
validate_details_for(@kb_payment.id, :AUTHORIZE, payer_id)
|
253
207
|
# Verify GET API
|
254
208
|
payment_infos = @plugin.get_payment_info(@pm.kb_account_id, @kb_payment.id, [], @call_context)
|
255
|
-
payment_infos.size.should ==
|
256
|
-
#
|
209
|
+
payment_infos.size.should == 1
|
210
|
+
# authorize
|
257
211
|
payment_infos[0].kb_payment_id.should == @kb_payment.id
|
258
212
|
payment_infos[0].transaction_type.should == :AUTHORIZE
|
259
|
-
payment_infos[0].amount.should
|
260
|
-
payment_infos[0].currency.should
|
213
|
+
payment_infos[0].amount.should == @amount
|
214
|
+
payment_infos[0].currency.should == @currency
|
261
215
|
payment_infos[0].status.should == :PROCESSED
|
262
216
|
payment_infos[0].gateway_error.should == 'Success'
|
263
217
|
payment_infos[0].gateway_error_code.should be_nil
|
264
|
-
find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
|
265
|
-
find_value_from_properties(payment_infos[0].properties, 'payerName').should_not be_nil
|
266
|
-
# authorize
|
267
|
-
payment_infos[1].kb_payment_id.should == @kb_payment.id
|
268
|
-
payment_infos[1].transaction_type.should == :AUTHORIZE
|
269
|
-
payment_infos[1].amount.should == @amount
|
270
|
-
payment_infos[1].currency.should == @currency
|
271
|
-
payment_infos[1].status.should == :PROCESSED
|
272
|
-
payment_infos[1].gateway_error.should == 'Success'
|
273
|
-
payment_infos[1].gateway_error_code.should be_nil
|
274
218
|
find_value_from_properties(payment_infos[0].properties, 'payment_processor_account_id').should == @payment_processor_account_id
|
275
219
|
|
276
220
|
partial_capture_amount = BigDecimal.new('10')
|
@@ -281,15 +225,15 @@ shared_examples 'baid_spec_common' do
|
|
281
225
|
|
282
226
|
# Verify GET API
|
283
227
|
payment_infos = @plugin.get_payment_info(@pm.kb_account_id, @kb_payment.id, [], @call_context)
|
284
|
-
payment_infos.size.should ==
|
285
|
-
payment_infos[
|
286
|
-
payment_infos[
|
287
|
-
payment_infos[
|
288
|
-
payment_infos[
|
289
|
-
payment_infos[
|
290
|
-
payment_infos[
|
291
|
-
payment_infos[
|
292
|
-
find_value_from_properties(payment_infos[
|
228
|
+
payment_infos.size.should == 2
|
229
|
+
payment_infos[1].kb_payment_id.should == @kb_payment.id
|
230
|
+
payment_infos[1].transaction_type.should == :CAPTURE
|
231
|
+
payment_infos[1].amount.should == partial_capture_amount
|
232
|
+
payment_infos[1].currency.should == @currency
|
233
|
+
payment_infos[1].status.should == :PROCESSED
|
234
|
+
payment_infos[1].gateway_error.should == 'Success'
|
235
|
+
payment_infos[1].gateway_error_code.should be_nil
|
236
|
+
find_value_from_properties(payment_infos[1].properties, 'payment_processor_account_id').should == @payment_processor_account_id
|
293
237
|
|
294
238
|
payment_response = @plugin.void_payment(@pm.kb_account_id, @kb_payment.id, @kb_payment.transactions[2].id, @pm.kb_payment_method_id, @properties, @call_context)
|
295
239
|
payment_response.status.should eq(:PROCESSED), payment_response.gateway_error
|
@@ -297,15 +241,15 @@ shared_examples 'baid_spec_common' do
|
|
297
241
|
|
298
242
|
# Verify GET API
|
299
243
|
payment_infos = @plugin.get_payment_info(@pm.kb_account_id, @kb_payment.id, [], @call_context)
|
300
|
-
payment_infos.size.should ==
|
301
|
-
payment_infos[
|
302
|
-
payment_infos[
|
303
|
-
payment_infos[
|
304
|
-
payment_infos[
|
305
|
-
payment_infos[
|
306
|
-
payment_infos[
|
307
|
-
payment_infos[
|
308
|
-
find_value_from_properties(payment_infos[
|
244
|
+
payment_infos.size.should == 3
|
245
|
+
payment_infos[2].kb_payment_id.should == @kb_payment.id
|
246
|
+
payment_infos[2].transaction_type.should == :VOID
|
247
|
+
payment_infos[2].amount.should be_nil
|
248
|
+
payment_infos[2].currency.should be_nil
|
249
|
+
payment_infos[2].status.should == :PROCESSED
|
250
|
+
payment_infos[2].gateway_error.should == 'Success'
|
251
|
+
payment_infos[2].gateway_error_code.should be_nil
|
252
|
+
find_value_from_properties(payment_infos[2].properties, 'payment_processor_account_id').should == @payment_processor_account_id
|
309
253
|
end
|
310
254
|
|
311
255
|
it 'should generate forms correctly' do
|
@@ -53,7 +53,7 @@ shared_examples 'hpp_spec_common' do
|
|
53
53
|
end
|
54
54
|
|
55
55
|
# Each loop triggers one successful purchase and one successful refund
|
56
|
-
::Killbill::PaypalExpress::PaypalExpressTransaction.count.should ==
|
56
|
+
::Killbill::PaypalExpress::PaypalExpressTransaction.count.should == 2 * n
|
57
57
|
::Killbill::PaypalExpress::PaypalExpressResponse.count.should == 1 + 8 * n
|
58
58
|
end
|
59
59
|
|
@@ -116,7 +116,7 @@ shared_examples 'hpp_spec_common' do
|
|
116
116
|
end
|
117
117
|
|
118
118
|
# Each loop triggers one successful purchase and one successful refund
|
119
|
-
::Killbill::PaypalExpress::PaypalExpressTransaction.count.should ==
|
119
|
+
::Killbill::PaypalExpress::PaypalExpressTransaction.count.should == 2 * n
|
120
120
|
::Killbill::PaypalExpress::PaypalExpressResponse.count.should == 1 + 9 * n
|
121
121
|
end
|
122
122
|
|
@@ -184,7 +184,7 @@ shared_examples 'hpp_spec_common' do
|
|
184
184
|
end
|
185
185
|
|
186
186
|
# Each loop triggers one successful auth, one successful capture and one successful refund
|
187
|
-
::Killbill::PaypalExpress::PaypalExpressTransaction.count.should ==
|
187
|
+
::Killbill::PaypalExpress::PaypalExpressTransaction.count.should == 3 * n
|
188
188
|
::Killbill::PaypalExpress::PaypalExpressResponse.count.should == 1 + 15 * n / 2 + 7 * n % 2
|
189
189
|
end
|
190
190
|
|
@@ -224,8 +224,8 @@ shared_examples 'hpp_spec_common' do
|
|
224
224
|
@plugin.kb_apis.proxied_services[:payment_api].payments.size.should == i / 2
|
225
225
|
end
|
226
226
|
|
227
|
-
# Each loop triggers one successful
|
228
|
-
::Killbill::PaypalExpress::PaypalExpressTransaction.count.should ==
|
227
|
+
# Each loop triggers one successful authorize and void
|
228
|
+
::Killbill::PaypalExpress::PaypalExpressTransaction.count.should == 2 * n
|
229
229
|
::Killbill::PaypalExpress::PaypalExpressResponse.count.should == 9 * n / 2 + 5 * n % 2
|
230
230
|
end
|
231
231
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'spec_helper'
|
1
2
|
require_relative 'browser_helpers'
|
2
3
|
|
3
4
|
module Killbill
|
@@ -53,28 +54,19 @@ module Killbill
|
|
53
54
|
payer_id = find_value_from_properties(payment_response.properties, 'payerId')
|
54
55
|
payer_id.should_not be_nil
|
55
56
|
|
57
|
+
validate_details_for(kb_payment_id, :PURCHASE, payer_id)
|
56
58
|
# Verify GET API
|
57
59
|
payment_infos = @plugin.get_payment_info(@pm.kb_account_id, kb_payment_id, [], @call_context)
|
58
|
-
payment_infos.size.should ==
|
59
|
-
#
|
60
|
+
payment_infos.size.should == 1
|
61
|
+
# purchase
|
60
62
|
payment_infos[0].kb_payment_id.should == kb_payment_id
|
61
63
|
payment_infos[0].transaction_type.should == :PURCHASE
|
62
|
-
payment_infos[0].amount.should
|
63
|
-
payment_infos[0].currency.should
|
64
|
+
payment_infos[0].amount.should == @amount
|
65
|
+
payment_infos[0].currency.should == @currency
|
64
66
|
payment_infos[0].status.should == :PROCESSED
|
65
67
|
payment_infos[0].gateway_error.should == 'Success'
|
66
68
|
payment_infos[0].gateway_error_code.should be_nil
|
67
69
|
find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
|
68
|
-
find_value_from_properties(payment_infos[0].properties, 'payerName').should_not be_nil
|
69
|
-
# purchase
|
70
|
-
payment_infos[1].kb_payment_id.should == kb_payment_id
|
71
|
-
payment_infos[1].transaction_type.should == :PURCHASE
|
72
|
-
payment_infos[1].amount.should == @amount
|
73
|
-
payment_infos[1].currency.should == @currency
|
74
|
-
payment_infos[1].status.should == :PROCESSED
|
75
|
-
payment_infos[1].gateway_error.should == 'Success'
|
76
|
-
payment_infos[1].gateway_error_code.should be_nil
|
77
|
-
find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
|
78
70
|
|
79
71
|
# Try a full refund
|
80
72
|
refund_response = @plugin.refund_payment(@pm.kb_account_id, kb_payment_id, SecureRandom.uuid, @pm.kb_payment_method_id, @amount, @currency, [], @call_context)
|
@@ -84,33 +76,15 @@ module Killbill
|
|
84
76
|
|
85
77
|
# Verify GET API
|
86
78
|
payment_infos = @plugin.get_payment_info(@pm.kb_account_id, kb_payment_id, [], @call_context)
|
87
|
-
payment_infos.size.should ==
|
88
|
-
#
|
89
|
-
payment_infos[
|
90
|
-
payment_infos[
|
91
|
-
payment_infos[0].amount.should be_nil
|
92
|
-
payment_infos[0].currency.should be_nil
|
93
|
-
payment_infos[0].status.should == :PROCESSED
|
94
|
-
payment_infos[0].gateway_error.should == 'Success'
|
95
|
-
payment_infos[0].gateway_error_code.should be_nil
|
96
|
-
find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
|
97
|
-
find_value_from_properties(payment_infos[0].properties, 'payerName').should_not be_nil
|
98
|
-
# purchase
|
99
|
-
payment_infos[1].kb_payment_id.should == kb_payment_id
|
100
|
-
payment_infos[1].transaction_type.should == :PURCHASE
|
79
|
+
payment_infos.size.should == 2
|
80
|
+
# refund
|
81
|
+
payment_infos[1].kb_payment_id.should.should == kb_payment_id
|
82
|
+
payment_infos[1].transaction_type.should == :REFUND
|
101
83
|
payment_infos[1].amount.should == @amount
|
102
84
|
payment_infos[1].currency.should == @currency
|
103
85
|
payment_infos[1].status.should == :PROCESSED
|
104
86
|
payment_infos[1].gateway_error.should == 'Success'
|
105
87
|
payment_infos[1].gateway_error_code.should be_nil
|
106
|
-
# refund
|
107
|
-
payment_infos[2].kb_payment_id.should.should == kb_payment_id
|
108
|
-
payment_infos[2].transaction_type.should == :REFUND
|
109
|
-
payment_infos[2].amount.should == @amount
|
110
|
-
payment_infos[2].currency.should == @currency
|
111
|
-
payment_infos[2].status.should == :PROCESSED
|
112
|
-
payment_infos[2].gateway_error.should == 'Success'
|
113
|
-
payment_infos[2].gateway_error_code.should be_nil
|
114
88
|
end
|
115
89
|
|
116
90
|
def authorize_capture_and_refund(kb_payment_id, payment_external_key, properties, payment_processor_account_id)
|
@@ -122,31 +96,22 @@ module Killbill
|
|
122
96
|
payer_id = find_value_from_properties(payment_response.properties, 'payerId')
|
123
97
|
payer_id.should_not be_nil
|
124
98
|
|
99
|
+
validate_details_for(kb_payment_id, :AUTHORIZE, payer_id)
|
125
100
|
# Verify GET AUTHORIZED PAYMENT
|
126
101
|
payment_infos = @plugin.get_payment_info(@pm.kb_account_id, kb_payment_id, properties, @call_context)
|
127
|
-
payment_infos.size.should ==
|
128
|
-
#
|
102
|
+
payment_infos.size.should == 1
|
103
|
+
# authorize
|
129
104
|
payment_infos[0].kb_payment_id.should == kb_payment_id
|
130
105
|
payment_infos[0].transaction_type.should == :AUTHORIZE
|
131
|
-
payment_infos[0].amount.should
|
132
|
-
payment_infos[0].currency.should
|
106
|
+
payment_infos[0].amount.should == @amount
|
107
|
+
payment_infos[0].currency.should == @currency
|
133
108
|
payment_infos[0].status.should == :PROCESSED
|
134
109
|
payment_infos[0].gateway_error.should == 'Success'
|
135
110
|
payment_infos[0].gateway_error_code.should be_nil
|
136
111
|
find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
|
137
|
-
find_value_from_properties(payment_infos[0].properties, '
|
138
|
-
|
139
|
-
payment_infos[
|
140
|
-
payment_infos[1].transaction_type.should == :AUTHORIZE
|
141
|
-
payment_infos[1].amount.should == @amount
|
142
|
-
payment_infos[1].currency.should == @currency
|
143
|
-
payment_infos[1].status.should == :PROCESSED
|
144
|
-
payment_infos[1].gateway_error.should == 'Success'
|
145
|
-
payment_infos[1].gateway_error_code.should be_nil
|
146
|
-
find_value_from_properties(payment_infos[1].properties, 'payerId').should == payer_id
|
147
|
-
find_value_from_properties(payment_infos[1].properties, 'paymentInfoPaymentStatus').should == 'Pending'
|
148
|
-
find_value_from_properties(payment_infos[1].properties, 'paymentInfoPendingReason').should == 'authorization'
|
149
|
-
find_value_from_properties(payment_infos[1].properties, 'payment_processor_account_id').should == payment_processor_account_id
|
112
|
+
find_value_from_properties(payment_infos[0].properties, 'paymentInfoPaymentStatus').should == 'Pending'
|
113
|
+
find_value_from_properties(payment_infos[0].properties, 'paymentInfoPendingReason').should == 'authorization'
|
114
|
+
find_value_from_properties(payment_infos[0].properties, 'payment_processor_account_id').should == payment_processor_account_id
|
150
115
|
|
151
116
|
# Trigger the capture
|
152
117
|
payment_response = @plugin.capture_payment(@pm.kb_account_id, kb_payment_id, payment_external_key, @pm.kb_payment_method_id, @amount, @currency, properties, @call_context)
|
@@ -157,36 +122,17 @@ module Killbill
|
|
157
122
|
# Verify GET CAPTURED PAYMENT
|
158
123
|
payment_infos = @plugin.get_payment_info(@pm.kb_account_id, kb_payment_id, properties, @call_context)
|
159
124
|
# Two expected transactions: one auth and one capture
|
160
|
-
payment_infos.size.should ==
|
161
|
-
#
|
162
|
-
payment_infos[0].kb_payment_id.should == kb_payment_id
|
163
|
-
payment_infos[0].transaction_type.should == :AUTHORIZE
|
164
|
-
payment_infos[0].amount.should be_nil
|
165
|
-
payment_infos[0].currency.should be_nil
|
166
|
-
payment_infos[0].status.should == :PROCESSED
|
167
|
-
payment_infos[0].gateway_error.should == 'Success'
|
168
|
-
payment_infos[0].gateway_error_code.should be_nil
|
169
|
-
find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
|
170
|
-
find_value_from_properties(payment_infos[0].properties, 'payerName').should_not be_nil
|
171
|
-
# authorize
|
125
|
+
payment_infos.size.should == 2
|
126
|
+
# capture
|
172
127
|
payment_infos[1].kb_payment_id.should == kb_payment_id
|
173
|
-
payment_infos[1].transaction_type.should == :
|
128
|
+
payment_infos[1].transaction_type.should == :CAPTURE
|
174
129
|
payment_infos[1].amount.should == @amount
|
175
130
|
payment_infos[1].currency.should == @currency
|
176
131
|
payment_infos[1].status.should == :PROCESSED
|
177
132
|
payment_infos[1].gateway_error.should == 'Success'
|
178
133
|
payment_infos[1].gateway_error_code.should be_nil
|
134
|
+
find_value_from_properties(payment_infos[1].properties, 'paymentInfoPaymentStatus').should == 'Completed'
|
179
135
|
find_value_from_properties(payment_infos[1].properties, 'payment_processor_account_id').should == payment_processor_account_id
|
180
|
-
#capture
|
181
|
-
payment_infos[2].kb_payment_id.should == kb_payment_id
|
182
|
-
payment_infos[2].transaction_type.should == :CAPTURE
|
183
|
-
payment_infos[2].amount.should == @amount
|
184
|
-
payment_infos[2].currency.should == @currency
|
185
|
-
payment_infos[2].status.should == :PROCESSED
|
186
|
-
payment_infos[2].gateway_error.should == 'Success'
|
187
|
-
payment_infos[2].gateway_error_code.should be_nil
|
188
|
-
find_value_from_properties(payment_infos[2].properties, 'paymentInfoPaymentStatus').should == 'Completed'
|
189
|
-
find_value_from_properties(payment_infos[2].properties, 'payment_processor_account_id').should == payment_processor_account_id
|
190
136
|
|
191
137
|
# Try a full refund
|
192
138
|
refund_response = @plugin.refund_payment(@pm.kb_account_id, kb_payment_id, SecureRandom.uuid, @pm.kb_payment_method_id, @amount, @currency, [], @call_context)
|
@@ -196,44 +142,16 @@ module Killbill
|
|
196
142
|
|
197
143
|
# Verify GET API
|
198
144
|
payment_infos = @plugin.get_payment_info(@pm.kb_account_id, kb_payment_id, properties, @call_context)
|
199
|
-
payment_infos.size.should ==
|
200
|
-
#
|
201
|
-
payment_infos[
|
202
|
-
payment_infos[
|
203
|
-
payment_infos[0].amount.should be_nil
|
204
|
-
payment_infos[0].currency.should be_nil
|
205
|
-
payment_infos[0].status.should == :PROCESSED
|
206
|
-
payment_infos[0].gateway_error.should == 'Success'
|
207
|
-
payment_infos[0].gateway_error_code.should be_nil
|
208
|
-
find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
|
209
|
-
find_value_from_properties(payment_infos[0].properties, 'payerName').should_not be_nil
|
210
|
-
# authorize
|
211
|
-
payment_infos[1].kb_payment_id.should == kb_payment_id
|
212
|
-
payment_infos[1].transaction_type.should == :AUTHORIZE
|
213
|
-
payment_infos[1].amount.should == @amount
|
214
|
-
payment_infos[1].currency.should == @currency
|
215
|
-
payment_infos[1].status.should == :PROCESSED
|
216
|
-
payment_infos[1].gateway_error.should == 'Success'
|
217
|
-
payment_infos[1].gateway_error_code.should be_nil
|
218
|
-
find_value_from_properties(payment_infos[1].properties, 'payment_processor_account_id').should == payment_processor_account_id
|
219
|
-
# capture
|
220
|
-
payment_infos[2].kb_payment_id.should == kb_payment_id
|
221
|
-
payment_infos[2].transaction_type.should == :CAPTURE
|
145
|
+
payment_infos.size.should == 3
|
146
|
+
# refund
|
147
|
+
payment_infos[2].kb_payment_id.should.should == kb_payment_id
|
148
|
+
payment_infos[2].transaction_type.should == :REFUND
|
222
149
|
payment_infos[2].amount.should == @amount
|
223
150
|
payment_infos[2].currency.should == @currency
|
224
151
|
payment_infos[2].status.should == :PROCESSED
|
225
152
|
payment_infos[2].gateway_error.should == 'Success'
|
226
153
|
payment_infos[2].gateway_error_code.should be_nil
|
227
154
|
find_value_from_properties(payment_infos[2].properties, 'payment_processor_account_id').should == payment_processor_account_id
|
228
|
-
# refund
|
229
|
-
payment_infos[3].kb_payment_id.should.should == kb_payment_id
|
230
|
-
payment_infos[3].transaction_type.should == :REFUND
|
231
|
-
payment_infos[3].amount.should == @amount
|
232
|
-
payment_infos[3].currency.should == @currency
|
233
|
-
payment_infos[3].status.should == :PROCESSED
|
234
|
-
payment_infos[3].gateway_error.should == 'Success'
|
235
|
-
payment_infos[3].gateway_error_code.should be_nil
|
236
|
-
find_value_from_properties(payment_infos[3].properties, 'payment_processor_account_id').should == payment_processor_account_id
|
237
155
|
end
|
238
156
|
|
239
157
|
def authorize_and_double_capture(kb_payment_id, payment_external_key, properties)
|
@@ -245,26 +163,17 @@ module Killbill
|
|
245
163
|
payer_id = find_value_from_properties(payment_response.properties, 'payerId')
|
246
164
|
payer_id.should_not be_nil
|
247
165
|
|
166
|
+
validate_details_for(kb_payment_id, :AUTHORIZE, payer_id)
|
248
167
|
payment_infos = @plugin.get_payment_info(@pm.kb_account_id, kb_payment_id, properties, @call_context)
|
249
|
-
payment_infos.size.should ==
|
250
|
-
#
|
168
|
+
payment_infos.size.should == 1
|
169
|
+
# autorize
|
251
170
|
payment_infos[0].kb_payment_id.should == kb_payment_id
|
252
171
|
payment_infos[0].transaction_type.should == :AUTHORIZE
|
253
|
-
payment_infos[0].amount.should
|
254
|
-
payment_infos[0].currency.should
|
172
|
+
payment_infos[0].amount.should == @amount
|
173
|
+
payment_infos[0].currency.should == @currency
|
255
174
|
payment_infos[0].status.should == :PROCESSED
|
256
175
|
payment_infos[0].gateway_error.should == 'Success'
|
257
176
|
payment_infos[0].gateway_error_code.should be_nil
|
258
|
-
find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
|
259
|
-
find_value_from_properties(payment_infos[0].properties, 'payerName').should_not be_nil
|
260
|
-
# autorize
|
261
|
-
payment_infos[1].kb_payment_id.should == kb_payment_id
|
262
|
-
payment_infos[1].transaction_type.should == :AUTHORIZE
|
263
|
-
payment_infos[1].amount.should == @amount
|
264
|
-
payment_infos[1].currency.should == @currency
|
265
|
-
payment_infos[1].status.should == :PROCESSED
|
266
|
-
payment_infos[1].gateway_error.should == 'Success'
|
267
|
-
payment_infos[1].gateway_error_code.should be_nil
|
268
177
|
|
269
178
|
# Trigger the capture
|
270
179
|
payment_response = @plugin.capture_payment(@pm.kb_account_id, kb_payment_id, payment_external_key, @pm.kb_payment_method_id, @amount, @currency, properties, @call_context)
|
@@ -273,33 +182,15 @@ module Killbill
|
|
273
182
|
payment_response.transaction_type.should == :CAPTURE
|
274
183
|
|
275
184
|
payment_infos = @plugin.get_payment_info(@pm.kb_account_id, kb_payment_id, properties, @call_context)
|
276
|
-
payment_infos.size.should ==
|
277
|
-
#
|
278
|
-
payment_infos[0].kb_payment_id.should == kb_payment_id
|
279
|
-
payment_infos[0].transaction_type.should == :AUTHORIZE
|
280
|
-
payment_infos[0].amount.should be_nil
|
281
|
-
payment_infos[0].currency.should be_nil
|
282
|
-
payment_infos[0].status.should == :PROCESSED
|
283
|
-
payment_infos[0].gateway_error.should == 'Success'
|
284
|
-
payment_infos[0].gateway_error_code.should be_nil
|
285
|
-
find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
|
286
|
-
find_value_from_properties(payment_infos[0].properties, 'payerName').should_not be_nil
|
287
|
-
# autorize
|
185
|
+
payment_infos.size.should == 2
|
186
|
+
# capture
|
288
187
|
payment_infos[1].kb_payment_id.should == kb_payment_id
|
289
|
-
payment_infos[1].transaction_type.should == :
|
188
|
+
payment_infos[1].transaction_type.should == :CAPTURE
|
290
189
|
payment_infos[1].amount.should == @amount
|
291
190
|
payment_infos[1].currency.should == @currency
|
292
191
|
payment_infos[1].status.should == :PROCESSED
|
293
192
|
payment_infos[1].gateway_error.should == 'Success'
|
294
193
|
payment_infos[1].gateway_error_code.should be_nil
|
295
|
-
# capture
|
296
|
-
payment_infos[2].kb_payment_id.should == kb_payment_id
|
297
|
-
payment_infos[2].transaction_type.should == :CAPTURE
|
298
|
-
payment_infos[2].amount.should == @amount
|
299
|
-
payment_infos[2].currency.should == @currency
|
300
|
-
payment_infos[2].status.should == :PROCESSED
|
301
|
-
payment_infos[2].gateway_error.should == 'Success'
|
302
|
-
payment_infos[2].gateway_error_code.should be_nil
|
303
194
|
|
304
195
|
# Trigger a capture again with full amount
|
305
196
|
payment_response = @plugin.capture_payment(@pm.kb_account_id, kb_payment_id, payment_external_key, @pm.kb_payment_method_id, @amount, @currency, properties, @call_context)
|
@@ -308,41 +199,15 @@ module Killbill
|
|
308
199
|
payment_response.transaction_type.should == :CAPTURE
|
309
200
|
|
310
201
|
payment_infos = @plugin.get_payment_info(@pm.kb_account_id, kb_payment_id, properties, @call_context)
|
311
|
-
payment_infos.size.should ==
|
312
|
-
# details_for
|
313
|
-
payment_infos[0].kb_payment_id.should == kb_payment_id
|
314
|
-
payment_infos[0].transaction_type.should == :AUTHORIZE
|
315
|
-
payment_infos[0].amount.should be_nil
|
316
|
-
payment_infos[0].currency.should be_nil
|
317
|
-
payment_infos[0].status.should == :PROCESSED
|
318
|
-
payment_infos[0].gateway_error.should == 'Success'
|
319
|
-
payment_infos[0].gateway_error_code.should be_nil
|
320
|
-
find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
|
321
|
-
find_value_from_properties(payment_infos[0].properties, 'payerName').should_not be_nil
|
322
|
-
# authorize
|
323
|
-
payment_infos[1].kb_payment_id.should == kb_payment_id
|
324
|
-
payment_infos[1].transaction_type.should == :AUTHORIZE
|
325
|
-
payment_infos[1].amount.should == @amount
|
326
|
-
payment_infos[1].currency.should == @currency
|
327
|
-
payment_infos[1].status.should == :PROCESSED
|
328
|
-
payment_infos[1].gateway_error.should == 'Success'
|
329
|
-
payment_infos[1].gateway_error_code.should be_nil
|
330
|
-
# capture
|
331
|
-
payment_infos[2].kb_payment_id.should == kb_payment_id
|
332
|
-
payment_infos[2].transaction_type.should == :CAPTURE
|
333
|
-
payment_infos[2].amount.should == @amount
|
334
|
-
payment_infos[2].currency.should == @currency
|
335
|
-
payment_infos[2].status.should == :PROCESSED
|
336
|
-
payment_infos[2].gateway_error.should == 'Success'
|
337
|
-
payment_infos[2].gateway_error_code.should be_nil
|
202
|
+
payment_infos.size.should == 3
|
338
203
|
# capture again
|
339
|
-
payment_infos[
|
340
|
-
payment_infos[
|
341
|
-
payment_infos[
|
342
|
-
payment_infos[
|
343
|
-
payment_infos[
|
344
|
-
payment_infos[
|
345
|
-
payment_infos[
|
204
|
+
payment_infos[2].kb_payment_id.should.should == kb_payment_id
|
205
|
+
payment_infos[2].transaction_type.should == :CAPTURE
|
206
|
+
payment_infos[2].amount.should be_nil
|
207
|
+
payment_infos[2].currency.should be_nil
|
208
|
+
payment_infos[2].status.should == :ERROR
|
209
|
+
payment_infos[2].gateway_error.should == 'Authorization has already been completed.'
|
210
|
+
payment_infos[2].gateway_error_code.should == "10602"
|
346
211
|
end
|
347
212
|
|
348
213
|
def authorize_and_void(kb_payment_id, payment_external_key, properties, payment_processor_account_id)
|
@@ -354,28 +219,19 @@ module Killbill
|
|
354
219
|
payer_id = find_value_from_properties(payment_response.properties, 'payerId')
|
355
220
|
payer_id.should_not be_nil
|
356
221
|
|
222
|
+
validate_details_for(kb_payment_id, :AUTHORIZE, payer_id)
|
357
223
|
# Verify get_payment_info
|
358
224
|
payment_infos = @plugin.get_payment_info(@pm.kb_account_id, kb_payment_id, properties, @call_context)
|
359
|
-
payment_infos.size.should ==
|
360
|
-
#
|
225
|
+
payment_infos.size.should == 1
|
226
|
+
# authorize
|
361
227
|
payment_infos[0].kb_payment_id.should == kb_payment_id
|
362
228
|
payment_infos[0].transaction_type.should == :AUTHORIZE
|
363
|
-
payment_infos[0].amount.should
|
364
|
-
payment_infos[0].currency.should
|
229
|
+
payment_infos[0].amount.should == @amount
|
230
|
+
payment_infos[0].currency.should == @currency
|
365
231
|
payment_infos[0].status.should == :PROCESSED
|
366
232
|
payment_infos[0].gateway_error.should == 'Success'
|
367
233
|
payment_infos[0].gateway_error_code.should be_nil
|
368
|
-
find_value_from_properties(payment_infos[0].properties, '
|
369
|
-
find_value_from_properties(payment_infos[0].properties, 'payerName').should_not be_nil
|
370
|
-
# authorize
|
371
|
-
payment_infos[1].kb_payment_id.should == kb_payment_id
|
372
|
-
payment_infos[1].transaction_type.should == :AUTHORIZE
|
373
|
-
payment_infos[1].amount.should == @amount
|
374
|
-
payment_infos[1].currency.should == @currency
|
375
|
-
payment_infos[1].status.should == :PROCESSED
|
376
|
-
payment_infos[1].gateway_error.should == 'Success'
|
377
|
-
payment_infos[1].gateway_error_code.should be_nil
|
378
|
-
find_value_from_properties(payment_infos[1].properties, 'payment_processor_account_id').should == payment_processor_account_id
|
234
|
+
find_value_from_properties(payment_infos[0].properties, 'payment_processor_account_id').should == payment_processor_account_id
|
379
235
|
|
380
236
|
# Trigger the void
|
381
237
|
payment_response = @plugin.void_payment(@pm.kb_account_id, kb_payment_id, payment_external_key, @pm.kb_payment_method_id, properties, @call_context)
|
@@ -385,33 +241,14 @@ module Killbill
|
|
385
241
|
# Verify get_payment_info
|
386
242
|
payment_infos = @plugin.get_payment_info(@pm.kb_account_id, kb_payment_id, properties, @call_context)
|
387
243
|
# Two expected transactions: one auth and one capture, plus the details call
|
388
|
-
payment_infos.size.should ==
|
389
|
-
#
|
390
|
-
payment_infos[0].kb_payment_id.should == kb_payment_id
|
391
|
-
payment_infos[0].transaction_type.should == :AUTHORIZE
|
392
|
-
payment_infos[0].amount.should be_nil
|
393
|
-
payment_infos[0].currency.should be_nil
|
394
|
-
payment_infos[0].status.should == :PROCESSED
|
395
|
-
payment_infos[0].gateway_error.should == 'Success'
|
396
|
-
payment_infos[0].gateway_error_code.should be_nil
|
397
|
-
find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
|
398
|
-
find_value_from_properties(payment_infos[0].properties, 'payerName').should_not be_nil
|
399
|
-
# authorize
|
244
|
+
payment_infos.size.should == 2
|
245
|
+
# void
|
400
246
|
payment_infos[1].kb_payment_id.should == kb_payment_id
|
401
|
-
payment_infos[1].transaction_type.should == :
|
402
|
-
payment_infos[1].amount.should == @amount
|
403
|
-
payment_infos[1].currency.should == @currency
|
247
|
+
payment_infos[1].transaction_type.should == :VOID
|
404
248
|
payment_infos[1].status.should == :PROCESSED
|
405
249
|
payment_infos[1].gateway_error.should == 'Success'
|
406
250
|
payment_infos[1].gateway_error_code.should be_nil
|
407
251
|
find_value_from_properties(payment_infos[1].properties, 'payment_processor_account_id').should == payment_processor_account_id
|
408
|
-
# void
|
409
|
-
payment_infos[2].kb_payment_id.should == kb_payment_id
|
410
|
-
payment_infos[2].transaction_type.should == :VOID
|
411
|
-
payment_infos[2].status.should == :PROCESSED
|
412
|
-
payment_infos[2].gateway_error.should == 'Success'
|
413
|
-
payment_infos[2].gateway_error_code.should be_nil
|
414
|
-
find_value_from_properties(payment_infos[2].properties, 'payment_processor_account_id').should == payment_processor_account_id
|
415
252
|
end
|
416
253
|
|
417
254
|
def purchase_with_missing_token
|
@@ -444,15 +281,14 @@ module Killbill
|
|
444
281
|
|
445
282
|
# Verify GET API
|
446
283
|
payment_infos = @plugin.get_payment_info(@pm.kb_account_id, kb_payment_id, [], @call_context)
|
447
|
-
|
448
|
-
payment_infos.
|
449
|
-
payment_infos[
|
450
|
-
payment_infos[
|
451
|
-
payment_infos[
|
452
|
-
payment_infos[
|
453
|
-
payment_infos[
|
454
|
-
payment_infos[
|
455
|
-
payment_infos[-1].gateway_error_code.should == gateway_error_code
|
284
|
+
payment_infos.size.should == 1
|
285
|
+
payment_infos[0].kb_payment_id.should == kb_payment_id
|
286
|
+
payment_infos[0].transaction_type.should == :AUTHORIZE
|
287
|
+
payment_infos[0].amount.should be_nil
|
288
|
+
payment_infos[0].currency.should be_nil
|
289
|
+
payment_infos[0].status.should == status
|
290
|
+
payment_infos[0].gateway_error.should == msg
|
291
|
+
payment_infos[0].gateway_error_code.should == gateway_error_code
|
456
292
|
end
|
457
293
|
|
458
294
|
def failed_purchase(purchase_properties, status, msg, gateway_error_code=nil)
|
@@ -466,15 +302,14 @@ module Killbill
|
|
466
302
|
# Verify GET API
|
467
303
|
payment_infos = @plugin.get_payment_info(@pm.kb_account_id, kb_payment_id, [], @call_context)
|
468
304
|
token = find_value_from_properties(purchase_properties, 'token')
|
469
|
-
|
470
|
-
payment_infos.
|
471
|
-
payment_infos[
|
472
|
-
payment_infos[
|
473
|
-
payment_infos[
|
474
|
-
payment_infos[
|
475
|
-
payment_infos[
|
476
|
-
payment_infos[
|
477
|
-
payment_infos[-1].gateway_error_code.should == gateway_error_code
|
305
|
+
payment_infos.size.should == 1
|
306
|
+
payment_infos[0].kb_payment_id.should == kb_payment_id
|
307
|
+
payment_infos[0].transaction_type.should == :PURCHASE
|
308
|
+
payment_infos[0].amount.should be_nil
|
309
|
+
payment_infos[0].currency.should be_nil
|
310
|
+
payment_infos[0].status.should == status
|
311
|
+
payment_infos[0].gateway_error.should == msg
|
312
|
+
payment_infos[0].gateway_error_code.should == gateway_error_code
|
478
313
|
end
|
479
314
|
|
480
315
|
private
|
data/spec/spec_helper.rb
CHANGED
@@ -22,6 +22,16 @@ ActiveRecord::Base.establish_connection(
|
|
22
22
|
# Create the schema
|
23
23
|
require File.expand_path(File.dirname(__FILE__) + '../../db/schema.rb')
|
24
24
|
|
25
|
+
|
26
|
+
def validate_details_for(kb_payment_id, transaction_type, payer_id)
|
27
|
+
details_for = ::Killbill::PaypalExpress::PaypalExpressResponse.where(:kb_payment_id => kb_payment_id).where(:api_call => :details_for).last
|
28
|
+
details_for.message.should == "Success"
|
29
|
+
details_for.transaction_type.to_sym.should == transaction_type.to_sym
|
30
|
+
details_for.payer_id.should == payer_id
|
31
|
+
details_for.payer_name.should_not be_nil
|
32
|
+
end
|
33
|
+
|
34
|
+
|
25
35
|
class PaypalExpressJavaPaymentApi < ::Killbill::Plugin::ActiveMerchant::RSpec::FakeJavaPaymentApi
|
26
36
|
|
27
37
|
def initialize(plugin)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: killbill-paypal-express
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.0.
|
4
|
+
version: 5.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kill Bill core team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-03-
|
11
|
+
date: 2017-03-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|