killbill-paypal-express 1.0.8 → 1.0.9

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.8
1
+ 1.0.9
@@ -39,6 +39,19 @@ module Killbill::PaypalExpress
39
39
  response.to_payment_response
40
40
  end
41
41
 
42
+ def get_payment_info(kb_account_id, kb_payment_id, tenant_context, options = {})
43
+ paypal_express_transaction = PaypalExpressTransaction.from_kb_payment_id(kb_payment_id.to_s)
44
+
45
+ begin
46
+ transaction_id = paypal_express_transaction.paypal_express_txn_id
47
+ response = @gateway.transaction_details transaction_id
48
+ PaypalExpressResponse.from_response(:transaction_details, kb_payment_id.to_s, response).to_payment_response
49
+ rescue => e
50
+ @logger.warn("Exception while retrieving Paypal Express transaction detail for payment #{kb_payment_id.to_s}, defaulting to cached response: #{e}")
51
+ paypal_express_transaction.paypal_express_response.to_payment_response
52
+ end
53
+ end
54
+
42
55
  def process_refund(kb_account_id, kb_payment_id, amount_in_cents, currency, call_context, options = {})
43
56
  paypal_express_transaction = PaypalExpressTransaction.find_candidate_transaction_for_refund(kb_payment_id.to_s, amount_in_cents)
44
57
 
@@ -54,16 +67,16 @@ module Killbill::PaypalExpress
54
67
  response.to_refund_response
55
68
  end
56
69
 
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)
70
+ def get_refund_info(kb_account_id, kb_payment_id, tenant_context, options = {})
71
+ paypal_express_transaction = PaypalExpressTransaction.refund_from_kb_payment_id(kb_payment_id.to_s)
59
72
 
60
73
  begin
61
74
  transaction_id = paypal_express_transaction.paypal_express_txn_id
62
75
  response = @gateway.transaction_details transaction_id
63
- PaypalExpressResponse.from_response(:transaction_details, kb_payment_id.to_s, response).to_payment_response
76
+ PaypalExpressResponse.from_response(:transaction_details, kb_payment_id.to_s, response).to_refund_response
64
77
  rescue => e
65
78
  @logger.warn("Exception while retrieving Paypal Express transaction detail for payment #{kb_payment_id.to_s}, defaulting to cached response: #{e}")
66
- paypal_express_transaction.paypal_express_response.to_payment_response
79
+ paypal_express_transaction.paypal_express_response.to_refund_response
67
80
  end
68
81
  end
69
82
 
@@ -107,10 +120,18 @@ module Killbill::PaypalExpress
107
120
  PaypalExpressPaymentMethod.from_kb_payment_method_id(kb_payment_method_id.to_s).to_payment_method_response
108
121
  end
109
122
 
123
+ def set_default_payment_method(kb_account_id, kb_payment_method_id, call_context, options = {})
124
+ # No-op
125
+ end
126
+
110
127
  def get_payment_methods(kb_account_id, refresh_from_gateway, call_context, options = {})
111
128
  PaypalExpressPaymentMethod.from_kb_account_id(kb_account_id.to_s).collect { |pm| pm.to_payment_method_response }
112
129
  end
113
130
 
131
+ def reset_payment_methods(kb_account_id, payment_methods)
132
+ # No-op
133
+ end
134
+
114
135
  private
115
136
 
116
137
  def save_response_and_transaction(paypal_express_response, api_call, kb_payment_id=nil, amount_in_cents=0)
@@ -7,7 +7,15 @@ module Killbill::PaypalExpress
7
7
  :paypal_express_txn_id
8
8
 
9
9
  def self.from_kb_payment_id(kb_payment_id)
10
- paypal_express_transactions = find_all_by_api_call_and_kb_payment_id(:charge, kb_payment_id)
10
+ single_transaction_from_kb_payment_id :charge, kb_payment_id
11
+ end
12
+
13
+ def self.refund_from_kb_payment_id(kb_payment_id)
14
+ single_transaction_from_kb_payment_id :refund, kb_payment_id
15
+ end
16
+
17
+ def self.single_transaction_from_kb_payment_id(api_call, kb_payment_id)
18
+ paypal_express_transactions = find_all_by_api_call_and_kb_payment_id(api_call, kb_payment_id)
11
19
  raise "Unable to find Paypal Express transaction id for payment #{kb_payment_id}" if paypal_express_transactions.empty?
12
20
  raise "Killbill payment mapping to multiple Paypal Express transactions for payment #{kb_payment_id}" if paypal_express_transactions.size > 1
13
21
  paypal_express_transactions[0]
@@ -30,4 +38,4 @@ module Killbill::PaypalExpress
30
38
  paypal_express_transactions.first
31
39
  end
32
40
  end
33
- end
41
+ end
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.8</version>
28
+ <version>1.0.9</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>
@@ -62,6 +62,11 @@ describe Killbill::PaypalExpress::PaymentPlugin do
62
62
  response.test.should be_true
63
63
  response.success.should be_true
64
64
 
65
+ # Check we can retrieve the refund
66
+ refund_response = @plugin.get_refund_info @pm.kb_account_id, kb_payment_id, @call_context
67
+ refund_response.amount.should == (-1 * amount_in_cents)
68
+ refund_response.status.should == Killbill::Plugin::Model::PaymentPluginStatus.new(:PROCESSED)
69
+
65
70
  # Try another payment to verify the BAID
66
71
  second_amount_in_cents = 9423
67
72
  second_kb_payment_id = SecureRandom.uuid
metadata CHANGED
@@ -1,7 +1,7 @@
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
+ version: 1.0.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: