killbill-paypal-express 1.0.6 → 1.0.8

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.
data/.gitignore CHANGED
@@ -34,3 +34,6 @@ paypal_express.yml
34
34
  test.db
35
35
 
36
36
  target
37
+ pom.xml.asc
38
+
39
+ .idea
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.6
1
+ 1.0.8
@@ -22,7 +22,7 @@ Gem::Specification.new do |s|
22
22
 
23
23
  s.rdoc_options << '--exclude' << '.'
24
24
 
25
- s.add_dependency 'killbill', '~> 1.0.16'
25
+ s.add_dependency 'killbill', '~> 1.0.17'
26
26
  s.add_dependency 'activemerchant', '~> 2.0.0'
27
27
  s.add_dependency 'activerecord', '~> 3.2.1'
28
28
  s.add_dependency 'sinatra', '~> 1.3.4'
@@ -16,19 +16,19 @@ module Killbill::PaypalExpress
16
16
  ActiveRecord::Base.connection.close
17
17
  end
18
18
 
19
- def process_payment(kb_account_id, kb_payment_id, kb_payment_method_id, amount_in_cents, currency, options = {})
19
+ def process_payment(kb_account_id, kb_payment_id, kb_payment_method_id, amount_in_cents, currency, call_context, options = {})
20
20
  # If the payment was already made, just return the status
21
- paypal_express_transaction = PaypalExpressTransaction.from_kb_payment_id(kb_payment_id) rescue nil
21
+ paypal_express_transaction = PaypalExpressTransaction.from_kb_payment_id(kb_payment_id.to_s) rescue nil
22
22
  return paypal_express_transaction.paypal_express_response.to_payment_response unless paypal_express_transaction.nil?
23
23
 
24
- options[:currency] ||= currency
24
+ options[:currency] ||= currency.respond_to?(:enum) ? currency.enum : currency.to_s
25
25
  options[:payment_type] ||= 'Any'
26
- options[:invoice_id] ||= kb_payment_id
26
+ options[:invoice_id] ||= kb_payment_id.to_s
27
27
  options[:description] ||= "Kill Bill payment for #{kb_payment_id}"
28
28
  options[:ip] ||= @ip
29
29
 
30
30
  if options[:reference_id].blank?
31
- payment_method = PaypalExpressPaymentMethod.from_kb_payment_method_id(kb_payment_method_id)
31
+ payment_method = PaypalExpressPaymentMethod.from_kb_payment_method_id(kb_payment_method_id.to_s)
32
32
  options[:reference_id] = payment_method.paypal_express_baid
33
33
  end
34
34
 
@@ -39,10 +39,10 @@ module Killbill::PaypalExpress
39
39
  response.to_payment_response
40
40
  end
41
41
 
42
- def process_refund(kb_account_id, kb_payment_id, amount_in_cents, currency, options = {})
43
- paypal_express_transaction = PaypalExpressTransaction.find_candidate_transaction_for_refund(kb_payment_id, amount_in_cents)
42
+ def process_refund(kb_account_id, kb_payment_id, amount_in_cents, currency, call_context, options = {})
43
+ paypal_express_transaction = PaypalExpressTransaction.find_candidate_transaction_for_refund(kb_payment_id.to_s, amount_in_cents)
44
44
 
45
- options[:currency] ||= currency
45
+ options[:currency] ||= currency.respond_to?(:enum) ? currency.enum : currency.to_s
46
46
  options[:refund_type] ||= paypal_express_transaction.amount_in_cents != amount_in_cents ? 'Partial' : 'Full'
47
47
 
48
48
  identification = paypal_express_transaction.paypal_express_txn_id
@@ -54,25 +54,25 @@ module Killbill::PaypalExpress
54
54
  response.to_refund_response
55
55
  end
56
56
 
57
- def get_payment_info(kb_account_id, kb_payment_id, options = {})
58
- paypal_express_transaction = PaypalExpressTransaction.from_kb_payment_id(kb_payment_id)
57
+ def get_payment_info(kb_account_id, kb_payment_id, tenant_context, options = {})
58
+ paypal_express_transaction = PaypalExpressTransaction.from_kb_payment_id(kb_payment_id.to_s)
59
59
 
60
60
  begin
61
61
  transaction_id = paypal_express_transaction.paypal_express_txn_id
62
62
  response = @gateway.transaction_details transaction_id
63
- PaypalExpressResponse.from_response(:transaction_details, kb_payment_id, response).to_payment_response
63
+ PaypalExpressResponse.from_response(:transaction_details, kb_payment_id.to_s, response).to_payment_response
64
64
  rescue => e
65
- @logger.warn("Exception while retrieving Paypal Express transaction detail for payment #{kb_payment_id}, defaulting to cached response: #{e}")
65
+ @logger.warn("Exception while retrieving Paypal Express transaction detail for payment #{kb_payment_id.to_s}, defaulting to cached response: #{e}")
66
66
  paypal_express_transaction.paypal_express_response.to_payment_response
67
67
  end
68
68
  end
69
69
 
70
- def add_payment_method(kb_account_id, kb_payment_method_id, payment_method_props, set_default=false, options = {})
71
- token = payment_method_props.value('token')
70
+ def add_payment_method(kb_account_id, kb_payment_method_id, payment_method_props, set_default, call_context, options = {})
71
+ token = (payment_method_props.properties.find { |kv| kv.key == 'token' }).value
72
72
  return false if token.nil?
73
73
 
74
74
  # The payment method should have been created during the setup step (see private api)
75
- payment_method = PaypalExpressPaymentMethod.from_kb_account_id_and_token(kb_account_id, token)
75
+ payment_method = PaypalExpressPaymentMethod.from_kb_account_id_and_token(kb_account_id.to_s, token)
76
76
 
77
77
  # Go to Paypal to get the Payer id (GetExpressCheckoutDetails call)
78
78
  paypal_express_details_response = @gateway.details_for token
@@ -86,29 +86,29 @@ module Killbill::PaypalExpress
86
86
  response = save_response_and_transaction paypal_express_baid_response, :create_billing_agreement
87
87
  return false unless response.success?
88
88
 
89
- payment_method.kb_payment_method_id = kb_payment_method_id
89
+ payment_method.kb_payment_method_id = kb_payment_method_id.to_s
90
90
  payment_method.paypal_express_payer_id = payer_id
91
91
  payment_method.paypal_express_baid = response.billing_agreement_id
92
92
  payment_method.save!
93
93
 
94
- logger.info "Created BAID #{payment_method.paypal_express_baid} for payment method #{kb_payment_method_id} (account #{kb_account_id})"
94
+ logger.info "Created BAID #{payment_method.paypal_express_baid} for payment method #{kb_payment_method_id.to_s} (account #{kb_account_id.to_s})"
95
95
  true
96
96
  else
97
- logger.warn "Unable to retrieve Payer id details for token #{token} (account #{kb_account_id})"
97
+ logger.warn "Unable to retrieve Payer id details for token #{token} (account #{kb_account_id.to_s})"
98
98
  false
99
99
  end
100
100
  end
101
101
 
102
- def delete_payment_method(kb_account_id, kb_payment_method_id, options = {})
103
- PaypalExpressPaymentMethod.mark_as_deleted! kb_payment_method_id
102
+ def delete_payment_method(kb_account_id, kb_payment_method_id, call_context, options = {})
103
+ PaypalExpressPaymentMethod.mark_as_deleted! kb_payment_method_id.to_s
104
104
  end
105
105
 
106
- def get_payment_method_detail(kb_account_id, kb_payment_method_id, options = {})
107
- PaypalExpressPaymentMethod.from_kb_payment_method_id(kb_payment_method_id).to_payment_method_response
106
+ def get_payment_method_detail(kb_account_id, kb_payment_method_id, tenant_context, options = {})
107
+ PaypalExpressPaymentMethod.from_kb_payment_method_id(kb_payment_method_id.to_s).to_payment_method_response
108
108
  end
109
109
 
110
- def get_payment_methods(kb_account_id, refresh_from_gateway = false, options = {})
111
- PaypalExpressPaymentMethod.from_kb_account_id(kb_account_id).collect { |pm| pm.to_payment_method_response }
110
+ def get_payment_methods(kb_account_id, refresh_from_gateway, call_context, options = {})
111
+ PaypalExpressPaymentMethod.from_kb_account_id(kb_account_id.to_s).collect { |pm| pm.to_payment_method_response }
112
112
  end
113
113
 
114
114
  private
@@ -117,12 +117,12 @@ module Killbill::PaypalExpress
117
117
  @logger.warn "Unsuccessful #{api_call}: #{paypal_express_response.message}" unless paypal_express_response.success?
118
118
 
119
119
  # Save the response to our logs
120
- response = PaypalExpressResponse.from_response(api_call, kb_payment_id, paypal_express_response)
120
+ response = PaypalExpressResponse.from_response(api_call, kb_payment_id.to_s, paypal_express_response)
121
121
  response.save!
122
122
 
123
123
  if response.success and !kb_payment_id.blank? and !response.authorization.blank?
124
124
  # Record the transaction
125
- transaction = response.create_paypal_express_transaction!(:amount_in_cents => amount_in_cents, :api_call => api_call, :kb_payment_id => kb_payment_id, :paypal_express_txn_id => response.authorization)
125
+ transaction = response.create_paypal_express_transaction!(:amount_in_cents => amount_in_cents, :api_call => api_call, :kb_payment_id => kb_payment_id.to_s, :paypal_express_txn_id => response.authorization)
126
126
  @logger.debug "Recorded transaction: #{transaction.inspect}"
127
127
  end
128
128
  response
data/pom.xml CHANGED
@@ -25,7 +25,7 @@
25
25
  <groupId>com.ning.killbill.ruby</groupId>
26
26
  <artifactId>paypal-express-plugin</artifactId>
27
27
  <packaging>pom</packaging>
28
- <version>1.0.6</version>
28
+ <version>1.0.8</version>
29
29
  <name>paypal-express-plugin</name>
30
30
  <url>http://github.com/killbill/killbill-paypal-express-plugin</url>
31
31
  <description>Plugin for accessing paypal as a payment gateway</description>
@@ -15,6 +15,15 @@ describe Killbill::PaypalExpress::PaymentPlugin do
15
15
  @plugin.start_plugin
16
16
 
17
17
  @pm = create_payment_method
18
+ @call_context = Killbill::Plugin::Model::CallContext.new(SecureRandom.uuid,
19
+ 'token',
20
+ 'rspec tester',
21
+ 'TEST',
22
+ 'user',
23
+ 'testing',
24
+ 'this is from a test',
25
+ Time.now,
26
+ Time.now)
18
27
  end
19
28
 
20
29
  after(:each) do
@@ -26,9 +35,9 @@ describe Killbill::PaypalExpress::PaymentPlugin do
26
35
  currency = 'USD'
27
36
  kb_payment_id = SecureRandom.uuid
28
37
 
29
- payment_response = @plugin.process_payment @pm.kb_account_id, kb_payment_id, @pm.kb_payment_method_id, amount_in_cents, currency
30
- payment_response.amount_in_cents.should == amount_in_cents
31
- payment_response.status.should == "Success"
38
+ payment_response = @plugin.process_payment @pm.kb_account_id, kb_payment_id, @pm.kb_payment_method_id, amount_in_cents, currency, @call_context
39
+ payment_response.amount.should == amount_in_cents
40
+ payment_response.status.should == Killbill::Plugin::Model::PaymentPluginStatus.new(:PROCESSED)
32
41
 
33
42
  # Verify our table directly
34
43
  response = Killbill::PaypalExpress::PaypalExpressResponse.find_by_api_call_and_kb_payment_id :charge, kb_payment_id
@@ -37,16 +46,16 @@ describe Killbill::PaypalExpress::PaymentPlugin do
37
46
  response.message.should == "Success"
38
47
 
39
48
  # Check we can retrieve the payment
40
- payment_response = @plugin.get_payment_info @pm.kb_account_id, kb_payment_id
41
- payment_response.amount_in_cents.should == amount_in_cents
42
- payment_response.status.should == "Success"
49
+ payment_response = @plugin.get_payment_info @pm.kb_account_id, kb_payment_id, @call_context
50
+ payment_response.amount.should == amount_in_cents
51
+ payment_response.status.should == Killbill::Plugin::Model::PaymentPluginStatus.new(:PROCESSED)
43
52
 
44
53
  # Check we cannot refund an amount greater than the original charge
45
- lambda { @plugin.process_refund @pm.kb_account_id, kb_payment_id, amount_in_cents + 1, currency }.should raise_error RuntimeError
54
+ lambda { @plugin.process_refund @pm.kb_account_id, kb_payment_id, amount_in_cents + 1, currency, @call_context }.should raise_error RuntimeError
46
55
 
47
- refund_response = @plugin.process_refund @pm.kb_account_id, kb_payment_id, amount_in_cents, currency
48
- refund_response.amount_in_cents.should == amount_in_cents
49
- refund_response.status.should == "Success"
56
+ refund_response = @plugin.process_refund @pm.kb_account_id, kb_payment_id, amount_in_cents, currency, @call_context
57
+ refund_response.amount.should == amount_in_cents
58
+ refund_response.status.should == Killbill::Plugin::Model::PaymentPluginStatus.new(:PROCESSED)
50
59
 
51
60
  # Verify our table directly
52
61
  response = Killbill::PaypalExpress::PaypalExpressResponse.find_by_api_call_and_kb_payment_id :refund, kb_payment_id
@@ -56,29 +65,29 @@ describe Killbill::PaypalExpress::PaymentPlugin do
56
65
  # Try another payment to verify the BAID
57
66
  second_amount_in_cents = 9423
58
67
  second_kb_payment_id = SecureRandom.uuid
59
- payment_response = @plugin.process_payment @pm.kb_account_id, second_kb_payment_id, @pm.kb_payment_method_id, second_amount_in_cents, currency
60
- payment_response.amount_in_cents.should == second_amount_in_cents
61
- payment_response.status.should == "Success"
68
+ payment_response = @plugin.process_payment @pm.kb_account_id, second_kb_payment_id, @pm.kb_payment_method_id, second_amount_in_cents, currency, @call_context
69
+ payment_response.amount.should == second_amount_in_cents
70
+ payment_response.status.should == Killbill::Plugin::Model::PaymentPluginStatus.new(:PROCESSED)
62
71
 
63
72
  # Check we can refund it as well
64
- refund_response = @plugin.process_refund @pm.kb_account_id, second_kb_payment_id, second_amount_in_cents, currency
65
- refund_response.amount_in_cents.should == second_amount_in_cents
66
- refund_response.status.should == "Success"
73
+ refund_response = @plugin.process_refund @pm.kb_account_id, second_kb_payment_id, second_amount_in_cents, currency, @call_context
74
+ refund_response.amount.should == second_amount_in_cents
75
+ refund_response.status.should == Killbill::Plugin::Model::PaymentPluginStatus.new(:PROCESSED)
67
76
 
68
77
  # it "should be able to create and retrieve payment methods"
69
78
  # This should be in a separate scenario but since it's so hard to create a payment method (need manual intervention),
70
79
  # we can't easily delete it
71
- pms = @plugin.get_payment_methods @pm.kb_account_id
80
+ pms = @plugin.get_payment_methods @pm.kb_account_id, false, @call_context
72
81
  pms.size.should == 1
73
82
  pms[0].external_payment_method_id.should == @pm.paypal_express_baid
74
83
 
75
- pm_details = @plugin.get_payment_method_detail(@pm.kb_account_id, @pm.kb_payment_method_id)
84
+ pm_details = @plugin.get_payment_method_detail(@pm.kb_account_id, @pm.kb_payment_method_id, @call_context)
76
85
  pm_details.external_payment_method_id.should == @pm.paypal_express_baid
77
86
 
78
- @plugin.delete_payment_method @pm.kb_account_id, @pm.kb_payment_method_id
87
+ @plugin.delete_payment_method @pm.kb_account_id, @pm.kb_payment_method_id, @call_context
79
88
 
80
- @plugin.get_payment_methods(@pm.kb_account_id).size.should == 0
81
- lambda { @plugin.get_payment_method_detail(@pm.kb_account_id, @pm.kb_payment_method_id) }.should raise_error RuntimeError
89
+ @plugin.get_payment_methods(@pm.kb_account_id, false, @call_context).size.should == 0
90
+ lambda { @plugin.get_payment_method_detail(@pm.kb_account_id, @pm.kb_payment_method_id, @call_context) }.should raise_error RuntimeError
82
91
  end
83
92
 
84
93
  private
@@ -98,8 +107,8 @@ Note: you need to log-in with a paypal sandbox account (create one here: https:/
98
107
 
99
108
  # Complete the setup process
100
109
  kb_payment_method_id = SecureRandom.uuid
101
- info = Killbill::Plugin::PaymentMethodResponse.new nil, nil, [Killbill::Plugin::PaymentMethodProperty.new("token", token, false)]
102
- response = @plugin.add_payment_method kb_account_id, kb_payment_method_id, info
110
+ info = Killbill::Plugin::Model::PaymentMethodPlugin.new nil, nil, [Killbill::Plugin::Model::PaymentMethodKVInfo.new(false, "token", token)], nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil
111
+ response = @plugin.add_payment_method kb_account_id, kb_payment_method_id, info, true, @call_context
103
112
  response.should be_true
104
113
 
105
114
  # Verify our table directly
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: killbill-paypal-express
3
3
  version: !ruby/object:Gem::Version
4
+ version: 1.0.8
4
5
  prerelease:
5
- version: 1.0.6
6
6
  platform: ruby
7
7
  authors:
8
8
  - Killbill core team
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-22 00:00:00.000000000 Z
12
+ date: 2013-05-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: killbill
@@ -17,13 +17,13 @@ dependencies:
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: 1.0.16
20
+ version: 1.0.17
21
21
  none: false
22
22
  requirement: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.0.16
26
+ version: 1.0.17
27
27
  none: false
28
28
  prerelease: false
29
29
  type: :runtime
@@ -210,9 +210,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
210
210
  - !ruby/object:Gem::Version
211
211
  segments:
212
212
  - 0
213
- hash: 2
214
213
  version: !binary |-
215
214
  MA==
215
+ hash: 2
216
216
  none: false
217
217
  requirements: []
218
218
  rubyforge_project: