killbill-orbital 0.1.7 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6f5bba84dbe74251ec5904356f3d8fa11a6153bd
4
- data.tar.gz: fc986e9dcfc179e1e4691a20e332a924fb52fdda
3
+ metadata.gz: 79c94a1e5cf3ddacf63444b693a0b576353b3c7b
4
+ data.tar.gz: ccf210b4dd5e6e76047552eccfc00898ac27bc82
5
5
  SHA512:
6
- metadata.gz: 0f505cb644e0bd9a2c6ca06b29bdd66b1b427e0ec993cb827e9337904d87827c33ae09450b555c32980ad648b334ccaba548f6b0aba3642ae3fde679e44e93ba
7
- data.tar.gz: d447fec891c98d7c7a10c0b777b0f5f1236083d1685ac69be71d472d66aed9a4997f037fcd58eb0b70aab50d3a79dc818be410600a09e2633ab6df7bb1dfeba0
6
+ metadata.gz: 0bfef0b4ec28065a2b8dba0acd47a8c2e8491cb85b2920dcb602c4c2e3d3356ed64a7f9a964aebeb04277a97569f3950ad6c3904d5ae68fd13c5fea0592dc823
7
+ data.tar.gz: 754d60b264e0d33e0dc58abcc4f76e8c316c3ce43bdcd602e709f1877a034983e12a78876e311e46b624e3f9c2468ce27ccbdab679d3a8b4abd9686d6f328650
data/lib/orbital/api.rb CHANGED
@@ -35,10 +35,16 @@ module Killbill #:nodoc:
35
35
 
36
36
  def capture_payment(kb_account_id, kb_payment_id, kb_payment_transaction_id, kb_payment_method_id, amount, currency, properties, context)
37
37
  # Pass extra parameters for the gateway here
38
- options = {}
39
-
40
- properties = merge_properties(properties, options)
41
- super(kb_account_id, kb_payment_id, kb_payment_transaction_id, kb_payment_method_id, amount, currency, properties, context)
38
+ options = properties_to_hash properties
39
+ if options[:force_capture]
40
+ last_auth_response = @response_model.send('auth_responses_from_kb_payment_id', kb_payment_id, context.tenant_id).last
41
+ raise "Unable to retrieve last authorization for operation=capture, kb_payment_id=#{kb_payment_id}, kb_payment_transaction_id=#{kb_payment_transaction_id}, kb_payment_method_id=#{kb_payment_method_id}" if last_auth_response.nil?
42
+ options[:payment_processor_account_id] = last_auth_response.payment_processor_account_id
43
+ options[:prior_auth_id] = last_auth_response.params_auth_code
44
+ purchase_payment(kb_account_id, kb_payment_id, kb_payment_transaction_id, kb_payment_method_id, amount, currency, hash_to_properties(options), context)
45
+ else
46
+ super(kb_account_id, kb_payment_id, kb_payment_transaction_id, kb_payment_method_id, amount, currency, properties, context)
47
+ end
42
48
  end
43
49
 
44
50
  def purchase_payment(kb_account_id, kb_payment_id, kb_payment_transaction_id, kb_payment_method_id, amount, currency, properties, context)
@@ -86,6 +86,7 @@ module ActiveMerchant
86
86
 
87
87
  yield xml if block_given?
88
88
 
89
+ xml.tag! :PriorAuthID, parameters[:prior_auth_id] if parameters[:prior_auth_id]
89
90
  xml.tag! :OrderID, format_order_id(parameters[:order_id])
90
91
  xml.tag! :Amount, amount(money)
91
92
  xml.tag! :Comments, parameters[:comments] if parameters[:comments]
@@ -113,42 +114,41 @@ module ActiveMerchant
113
114
 
114
115
  # A – Authorization request
115
116
  def authorize(money, creditcard, options = {})
116
- order = build_new_order_xml(AUTH_ONLY, money, options.merge(:creditcard=>creditcard)) do |xml|
117
- add_creditcard(xml, creditcard, options)
118
- add_address(xml, creditcard, options)
119
- if @options[:customer_profiles]
120
- add_customer_data(xml, creditcard, options)
121
- add_managed_billing(xml, options)
122
- end
123
- add_network_tokenization(xml, creditcard)
124
- end
117
+ order = build_new_order_xml_with_cc(AUTH_ONLY, money, creditcard, options)
125
118
  commit(order, :authorize, options[:trace_number])
126
119
  end
127
120
 
128
- # AC – Authorization and Capture
121
+ # AC – Authorization and Capture or Force Capture
129
122
  def purchase(money, creditcard, options = {})
130
- order = build_new_order_xml(AUTH_AND_CAPTURE, money, options.merge(:creditcard=>creditcard)) do |xml|
131
- add_creditcard(xml, creditcard, options)
132
- add_address(xml, creditcard, options)
133
- if @options[:customer_profiles]
134
- add_customer_data(xml, creditcard, options)
135
- add_managed_billing(xml, options)
136
- end
137
- add_network_tokenization(xml, creditcard)
123
+ if options[:force_capture]
124
+ order = build_new_order_xml_with_cc(FORCE_AUTH_AND_CAPTURE, money, creditcard, options)
125
+ commit(order, :purchase, options[:trace_number])
126
+ else
127
+ order = build_new_order_xml_with_cc(AUTH_AND_CAPTURE, money, creditcard, options)
128
+ commit(order, :purchase, options[:trace_number])
138
129
  end
139
- commit(order, :purchase, options[:trace_number])
130
+ end
131
+
132
+ # MFC - Mark For Capture or Force capture
133
+ def capture(money, authorization, options = {})
134
+ commit(build_mark_for_capture_xml(money, authorization, options), :capture)
140
135
  end
141
136
 
142
137
  def credit(money, creditcard, options= {})
143
- order = build_new_order_xml(REFUND, money, options) do |xml|
138
+ order = build_new_order_xml_with_cc(REFUND, money, creditcard, options)
139
+ commit(order, :credit, options[:trace_number])
140
+ end
141
+
142
+ def build_new_order_xml_with_cc(operation, money, creditcard, options)
143
+ build_new_order_xml(operation, money, options.merge(:creditcard=>creditcard)) do |xml|
144
144
  add_creditcard(xml, creditcard, options)
145
145
  add_address(xml, creditcard, options)
146
146
  if @options[:customer_profiles]
147
147
  add_customer_data(xml, creditcard, options)
148
148
  add_managed_billing(xml, options)
149
149
  end
150
+ add_network_tokenization(xml, creditcard)
150
151
  end
151
- commit(order, :credit, options[:trace_number])
152
152
  end
153
153
 
154
154
  def add_creditcard(xml, creditcard, options = {})
@@ -88,6 +88,10 @@ module Killbill #:nodoc:
88
88
  params_order_id
89
89
  end
90
90
 
91
+ def self.auth_responses_from_kb_payment_id(kb_payment_id, kb_tenant_id)
92
+ where(:kb_payment_id => kb_payment_id, :kb_tenant_id => kb_tenant_id, :api_call => 'authorize').order(:created_at)
93
+ end
94
+
91
95
  def gateway_error_code
92
96
  params_resp_code
93
97
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: killbill-orbital
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
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-09-20 00:00:00.000000000 Z
11
+ date: 2017-10-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement