killbill-cybersource 5.2.2 → 5.2.3
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4a0f66b1be2e4f95e93428e32d1a61b6ca8207f0
|
4
|
+
data.tar.gz: 888dcf081e39d5e6d13e0044b78ea9afc0f870a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 372d6cc47136c1a1247b4d39d9beef29a6890d8d8e6c44f5cd4bf46f406bee3b9a6122790908bd9fb7eec0fa7253c35d36aff24a199564a4833c545ea36f762b
|
7
|
+
data.tar.gz: 1dd86f782606fa561fb0f0a9eca82ae34d31507aefd1d8b5002b5502c71c1145975c7d2a69185b3bd1ca55377fcf841a6df0b1bc5f660dd97ec29cad60cc11e4
|
data/lib/cybersource/api.rb
CHANGED
@@ -32,6 +32,7 @@ module Killbill #:nodoc:
|
|
32
32
|
|
33
33
|
add_required_options(kb_account_id, properties, options, context)
|
34
34
|
add_merchant_descriptor(:AUTHORIZE, properties, options)
|
35
|
+
add_reconciliation_id(properties, options)
|
35
36
|
|
36
37
|
properties = merge_properties(properties, options)
|
37
38
|
auth_response = super(kb_account_id, kb_payment_id, kb_payment_transaction_id, kb_payment_method_id, amount, currency, properties, context)
|
@@ -54,6 +55,7 @@ module Killbill #:nodoc:
|
|
54
55
|
|
55
56
|
add_required_options(kb_account_id, properties, options, context)
|
56
57
|
add_merchant_descriptor(:CAPTURE, properties, options)
|
58
|
+
add_reconciliation_id(properties, options)
|
57
59
|
|
58
60
|
properties = merge_properties(properties, options)
|
59
61
|
super(kb_account_id, kb_payment_id, kb_payment_transaction_id, kb_payment_method_id, amount, currency, properties, context)
|
@@ -84,6 +86,7 @@ module Killbill #:nodoc:
|
|
84
86
|
options = {}
|
85
87
|
|
86
88
|
add_required_options(kb_account_id, properties, options, context)
|
89
|
+
add_reconciliation_id(properties, options)
|
87
90
|
|
88
91
|
properties = merge_properties(properties, options)
|
89
92
|
super(kb_account_id, kb_payment_id, kb_payment_transaction_id, kb_payment_method_id, amount, currency, properties, context)
|
@@ -389,6 +392,11 @@ module Killbill #:nodoc:
|
|
389
392
|
options[:merchant_descriptor] = merchant_descriptor_hash
|
390
393
|
end
|
391
394
|
|
395
|
+
def add_reconciliation_id(properties, options)
|
396
|
+
reconciliation_id = find_value_from_properties(properties, 'reconciliation_id')
|
397
|
+
options[:reconciliation_id] = reconciliation_id if reconciliation_id.present?
|
398
|
+
end
|
399
|
+
|
392
400
|
def get_report_api(options, context)
|
393
401
|
return nil if options[:skip_gw] || options[:bypass_duplicate_check]
|
394
402
|
cybersource_config = config(context.tenant_id)[:cybersource]
|
@@ -4,6 +4,7 @@ module ActiveMerchant
|
|
4
4
|
KB_PLUGIN_VERSION = Gem.loaded_specs['killbill-cybersource'].version.version rescue nil
|
5
5
|
|
6
6
|
class CyberSourceGateway
|
7
|
+
# The payload definitions: https://ics2wstest.ic3.com/commerce/1.x/transactionProcessor/CyberSourceTransaction_1.109.xsd
|
7
8
|
|
8
9
|
def self.x_request_id
|
9
10
|
# See KillbillMDCInsertingServletFilter
|
@@ -38,6 +39,7 @@ module ActiveMerchant
|
|
38
39
|
xml.tag! 'ccAuthService', {'run' => 'true'} do
|
39
40
|
# Let CyberSource figure it out otherwise (internet is the default unless tokens are used)
|
40
41
|
xml.tag!("commerceIndicator", options[:commerce_indicator]) unless options[:commerce_indicator].blank?
|
42
|
+
add_reconciliation_id(xml, options)
|
41
43
|
end
|
42
44
|
end
|
43
45
|
end
|
@@ -55,6 +57,7 @@ module ActiveMerchant
|
|
55
57
|
xml.tag!("cavv", payment_method.payment_cryptogram)
|
56
58
|
xml.tag!("commerceIndicator", options[:commerce_indicator] || (is_android_pay(payment_method, options) ? 'internet' : 'vbv'))
|
57
59
|
xml.tag!("xid", payment_method.payment_cryptogram)
|
60
|
+
add_reconciliation_id(xml, options)
|
58
61
|
end
|
59
62
|
when :master
|
60
63
|
xml.tag! 'ucaf' do
|
@@ -63,6 +66,7 @@ module ActiveMerchant
|
|
63
66
|
end
|
64
67
|
xml.tag! 'ccAuthService', {'run' => 'true'} do
|
65
68
|
xml.tag!("commerceIndicator", options[:commerce_indicator] || "spa")
|
69
|
+
add_reconciliation_id(xml, options)
|
66
70
|
end
|
67
71
|
when :american_express
|
68
72
|
cryptogram = Base64.decode64(payment_method.payment_cryptogram)
|
@@ -72,10 +76,49 @@ module ActiveMerchant
|
|
72
76
|
if cryptogram.size == 40
|
73
77
|
xml.tag!("xid", Base64.encode64(cryptogram[20...40]))
|
74
78
|
end
|
79
|
+
add_reconciliation_id(xml, options)
|
75
80
|
end
|
76
81
|
end
|
77
82
|
end
|
78
83
|
|
84
|
+
def build_capture_request(money, authorization, options)
|
85
|
+
order_id, request_id, request_token = authorization.split(";")
|
86
|
+
options[:order_id] = order_id
|
87
|
+
|
88
|
+
xml = Builder::XmlMarkup.new :indent => 2
|
89
|
+
add_purchase_data(xml, money, true, options)
|
90
|
+
add_capture_service(xml, request_id, request_token, options)
|
91
|
+
add_business_rules_data(xml, authorization, options)
|
92
|
+
xml.target!
|
93
|
+
end
|
94
|
+
|
95
|
+
def add_capture_service(xml, request_id, request_token, options = {})
|
96
|
+
xml.tag! 'ccCaptureService', {'run' => 'true'} do
|
97
|
+
xml.tag! 'authRequestID', request_id
|
98
|
+
add_reconciliation_id(xml, options) # the order is important
|
99
|
+
xml.tag! 'authRequestToken', request_token
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
def build_refund_request(money, identification, options)
|
104
|
+
order_id, request_id, request_token = identification.split(";")
|
105
|
+
options[:order_id] = order_id
|
106
|
+
|
107
|
+
xml = Builder::XmlMarkup.new :indent => 2
|
108
|
+
add_purchase_data(xml, money, true, options)
|
109
|
+
add_credit_service(xml, request_id, request_token, options)
|
110
|
+
|
111
|
+
xml.target!
|
112
|
+
end
|
113
|
+
|
114
|
+
def add_credit_service(xml, request_id = nil, request_token = nil, options = {})
|
115
|
+
xml.tag! 'ccCreditService', {'run' => 'true'} do
|
116
|
+
xml.tag! 'captureRequestID', request_id if request_id
|
117
|
+
add_reconciliation_id(xml, options)
|
118
|
+
xml.tag! 'captureRequestToken', request_token if request_token
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
79
122
|
# Changes:
|
80
123
|
# * http://apps.cybersource.com/library/documentation/dev_guides/Android_Pay_SO_API/html/wwhelp/wwhimpl/js/html/wwhelp.htm#href=ch_soAPI.html
|
81
124
|
# * add paymentSolution tag to support Android Pay
|
@@ -132,6 +175,7 @@ module ActiveMerchant
|
|
132
175
|
response.delete(k)
|
133
176
|
end
|
134
177
|
end
|
178
|
+
response[:reconciliation_id] = options[:reconciliation_id] if options[:reconciliation_id].present?
|
135
179
|
|
136
180
|
success = response[:decision] == 'ACCEPT'
|
137
181
|
authorization = success ? [options[:order_id], response[:requestID], response[:requestToken]].compact.join(';') : nil
|
@@ -203,6 +247,11 @@ module ActiveMerchant
|
|
203
247
|
end
|
204
248
|
end
|
205
249
|
|
250
|
+
def add_reconciliation_id(xml, options)
|
251
|
+
return unless options[:reconciliation_id].present?
|
252
|
+
xml.tag! 'reconciliationID', options[:reconciliation_id]
|
253
|
+
end
|
254
|
+
|
206
255
|
def parse_element(reply, node)
|
207
256
|
if node.has_elements?
|
208
257
|
node.elements.each { |e| parse_element(reply, e) }
|
@@ -37,7 +37,7 @@ module Killbill #:nodoc:
|
|
37
37
|
:params_cv_code => extract(response, 'cvCode'),
|
38
38
|
:params_authorized_date_time => extract(response, 'authorizedDateTime'),
|
39
39
|
:params_processor_response => extract(response, 'processorResponse'),
|
40
|
-
:params_reconciliation_id => extract(response, 'reconciliationID'),
|
40
|
+
:params_reconciliation_id => extract(response, 'reconciliationID') || extract(response, 'reconciliation_id'), # when failure, use passed-in reconciliation id
|
41
41
|
:params_subscription_id => extract(response, 'subscriptionID'),
|
42
42
|
}
|
43
43
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: killbill-cybersource
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.2.
|
4
|
+
version: 5.2.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-
|
11
|
+
date: 2017-08-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|