killbill-orbital 0.1.2 → 0.1.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/orbital/ext/active_merchant/active_merchant.rb +61 -0
- data/pom.xml +1 -1
- data/spec/orbital/avs_response_spec.rb +54 -0
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5fdf4dd372bc62747159a023b57278bf8a3360c4
|
|
4
|
+
data.tar.gz: 09e7bb10d1658c5051c0bd7024eefa65b6e6fa4c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 855adf13295a186d53847336e8cb1f6a3ed5c52994386151d6bbf1b69817a856f887d96fe8e5bf29550cd61312d412665c824050f3a40bb030131aeae20726bb
|
|
7
|
+
data.tar.gz: 6078161015ec05e872faf8e8960fc075e6adc9c8f73affc08a76087d1914a7201c29ad4a046c49452ec0e43d231150e20feff215c6e9b51e16c151fa932400ad
|
data/Gemfile.lock
CHANGED
data/NEWS
CHANGED
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.1.
|
|
1
|
+
0.1.3
|
|
@@ -211,6 +211,67 @@ module ActiveMerchant
|
|
|
211
211
|
end
|
|
212
212
|
end
|
|
213
213
|
|
|
214
|
+
class AVSResult
|
|
215
|
+
|
|
216
|
+
# Convert the Orbital's AVS code (See https://github.com/activemerchant/active_merchant/blob/0f6fb4fcb442c310fa21307d9f233fbb56f5c0ad/lib/active_merchant/billing/gateways/orbital.rb#L744)
|
|
217
|
+
# to
|
|
218
|
+
# the 'standard' one (https://www.wellsfargo.com/downloads/pdf/biz/merchant/visa_avs.pdf
|
|
219
|
+
# http://en.wikipedia.org/wiki/Address_Verification_System)
|
|
220
|
+
# Note that 2, 8, D, E, UK are not converted because no suitable target codes in the standard codes are found
|
|
221
|
+
CONVERT_MAP = {
|
|
222
|
+
'1' => 'U', # 'No address supplied' => 'Address information unavailable.' => 'Address information unavailable.'
|
|
223
|
+
'2' => '2', # Unchanged: 'Bill-to address did not pass Auth Host edit checks'
|
|
224
|
+
'3' => 'I', # 'AVS not performed' => 'Address not verified.'=> 'Address not verified.'
|
|
225
|
+
'4' => 'S', # 'Issuer does not participate in AVS', => 'U.S.-issuing bank does not support AVS.'
|
|
226
|
+
'5' => 'E', # 'Edit-error - AVS data is invalid', => 'AVS data is invalid or AVS is not allowed for this card type.'
|
|
227
|
+
'6' => 'R', # 'System unavailable or time-out', => 'System unavailable.'
|
|
228
|
+
'7' => 'U', # 'Address information unavailable', => 'Address information unavailable.'
|
|
229
|
+
'8' => '8', # Unchanged: 'Transaction Ineligible for AVS'
|
|
230
|
+
'9' => 'X', # 'Zip Match/Zip 4 Match/Locale match', => 'Street address and 9-digit postal code match.'
|
|
231
|
+
'A' => 'W', # 'Zip Match/Zip 4 Match/Locale no match', => 'Street address does not match, but 9-digit postal code matches.'
|
|
232
|
+
'B' => 'Y', # 'Zip Match/Zip 4 no Match/Locale match', => 'Street address and 5-digit postal code match.'
|
|
233
|
+
'C' => 'Z', # 'Zip Match/Zip 4 no Match/Locale no match', => 'Street address does not match, but 5-digit postal code matches.'
|
|
234
|
+
'D' => 'D', # Unchanged: 'Zip No Match/Zip 4 Match/Locale match'
|
|
235
|
+
'E' => 'E', # Unchanged: 'Zip No Match/Zip 4 Match/Locale no match',
|
|
236
|
+
'F' => 'A', # 'Zip No Match/Zip 4 No Match/Locale match', => 'Street address matches, but 5-digit and 9-digit postal code do not match.'
|
|
237
|
+
'G' => 'C', # 'No match at all', => 'Street address and postal code do not match.'
|
|
238
|
+
'H' => 'Y', # 'Zip Match/Locale match', => 'Street address and 5-digit postal code match.'
|
|
239
|
+
'J' => 'G', # 'Issuer does not participate in Global AVS', => 'Non-U.S. issuing bank does not support AVS.'
|
|
240
|
+
'JA' => 'D', # 'International street address and postal match', => 'Street address and postal code match'
|
|
241
|
+
'JB' => 'B', # 'International street address match. Postal code not verified', => 'Street address matches, but postal code not verified.'
|
|
242
|
+
'JC' => 'I', # 'International street address and postal code not verified', => 'Address not verified.'
|
|
243
|
+
'JD' => 'P', # 'International postal code match. Street address not verified', => 'Postal code matches, but street address not verified.'
|
|
244
|
+
'M1' => 'K', # 'Cardholder name matches', => 'Card member's name matches but billing address and billing postal code do not match.'
|
|
245
|
+
'M2' => 'V', # 'Cardholder name, billing address, and postal code matches', => 'Card member's name, billing address, and billing postal code match.'
|
|
246
|
+
'M3' => 'L', # 'Cardholder name and billing code matches', => 'Card member's name and billing postal code match, but billing address does not match.'
|
|
247
|
+
'M4' => 'O', # 'Cardholder name and billing address match', => 'Card member's name and billing address match, but billing postal code does not match. '
|
|
248
|
+
'M5' => 'H', # 'Cardholder name incorrect, billing address and postal code match', => 'Card member's name does not match. Street address and postal code match. '
|
|
249
|
+
'M6' => 'F', # 'Cardholder name incorrect, billing postal code matches', => 'Card member's name does not match, but billing postal code matches. '
|
|
250
|
+
'M7' => 'T', # 'Cardholder name incorrect, billing address matches', => 'Card member's name does not match, but street address matches. '
|
|
251
|
+
'M8' => 'C', # 'Cardholder name, billing address and postal code are all incorrect', => 'Street address and postal code do not match. '
|
|
252
|
+
'N3' => 'B', # 'Address matches, ZIP not verified', => 'Street address matches, but postal code not verified. '
|
|
253
|
+
'N4' => 'I', # 'Address and ZIP code not verified due to incompatible formats', => 'Address not verified. '
|
|
254
|
+
'N5' => 'D', # 'Address and ZIP code match (International only)', => 'Street address and postal code match. '
|
|
255
|
+
'N6' => 'I', # 'Address not verified (International only)', => 'Address not verified.'
|
|
256
|
+
'N7' => 'P', # 'ZIP matches, address not verified', => 'Postal code matches, but street address not verified. '
|
|
257
|
+
'N8' => 'D', # 'Address and ZIP code match (International only)', => 'Street address and postal code match.'
|
|
258
|
+
'N9' => 'D', # 'Address and ZIP code match (UK only)', => 'Street address and postal code match.'
|
|
259
|
+
'R' => 'S', # 'Issuer does not participate in AVS', => 'U.S. Bank does not support AVS. '
|
|
260
|
+
'UK' => 'UK',# Unchanged: UNKNOWN
|
|
261
|
+
'X' => 'X', # 'Zip Match/Zip 4 Match/Address Match', => 'Street address and 9-digit postal code match. '
|
|
262
|
+
'Z' => 'Z' # 'Zip Match/Locale no match', => 'Street address does not match, but 5-digit postal code matches. '
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
def initialize(code)
|
|
266
|
+
@code = code.blank? ? nil : code.to_s.strip.upcase
|
|
267
|
+
if @code
|
|
268
|
+
@message = CODES[@code]
|
|
269
|
+
@postal_match = ORBITAL_POSTAL_MATCH_CODE[@code]
|
|
270
|
+
@street_match = ORBITAL_STREET_MATCH_CODE[@code]
|
|
271
|
+
@code = CONVERT_MAP[@code] unless CONVERT_MAP[@code].nil?
|
|
272
|
+
end
|
|
273
|
+
end
|
|
274
|
+
end
|
|
214
275
|
end
|
|
215
276
|
end
|
|
216
277
|
end
|
data/pom.xml
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
<groupId>org.kill-bill.billing.plugin.ruby</groupId>
|
|
26
26
|
<artifactId>orbital-plugin</artifactId>
|
|
27
27
|
<packaging>pom</packaging>
|
|
28
|
-
<version>0.1.
|
|
28
|
+
<version>0.1.3</version>
|
|
29
29
|
<name>orbital-plugin</name>
|
|
30
30
|
<url>http://github.com/killbill/killbill-orbital-plugin</url>
|
|
31
31
|
<description>Plugin for accessing Orbital as a payment gateway</description>
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
include ::Killbill::Plugin::ActiveMerchant::RSpec
|
|
4
|
+
|
|
5
|
+
ActiveMerchant::Billing::Base.mode = :test
|
|
6
|
+
|
|
7
|
+
shared_examples "avs_response_code_specs" do |raw_code, expected_code|
|
|
8
|
+
it 'should translate to correct AVS codes from Orbital AVS codes' do
|
|
9
|
+
::ActiveMerchant::Billing::OrbitalGateway.any_instance.stub(:ssl_post) do
|
|
10
|
+
mock_authorize_response(raw_code)
|
|
11
|
+
end
|
|
12
|
+
validate_avs_response expected_code
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def mock_authorize_response(code)
|
|
16
|
+
<<-XML
|
|
17
|
+
<?xml version=\"1.0\" encoding=\"UTF-8\"?><Response><NewOrderResp><IndustryType></IndustryType><MessageType>A</MessageType><MerchantID>1111111</MerchantID><TerminalID>001</TerminalID><CardBrand>CC</CardBrand><AccountNum>XXXXXXXXXXXX5454</AccountNum><OrderID>5b257b31-1f84-44bc-b32</OrderID><TxRefNum>5834AA75E4466AEA59512165057C37DD810053C2</TxRefNum><TxRefIdx>0</TxRefIdx><ProcStatus>0</ProcStatus><ApprovalStatus>1</ApprovalStatus><RespCode>00</RespCode><AVSRespCode>#{code}</AVSRespCode><CVV2RespCode> </CVV2RespCode><AuthCode>tst424</AuthCode><RecurringAdviceCd></RecurringAdviceCd><CAVVRespCode></CAVVRespCode><StatusMsg>Approved</StatusMsg><RespMsg></RespMsg><HostRespCode>100</HostRespCode><HostAVSRespCode>I3</HostAVSRespCode><HostCVV2RespCode> </HostCVV2RespCode><CustomerRefNum></CustomerRefNum><CustomerName></CustomerName><ProfileProcStatus></ProfileProcStatus><CustomerProfileMessage></CustomerProfileMessage><RespTime>152837</RespTime><PartialAuthOccurred></PartialAuthOccurred><RequestedAmount></RequestedAmount><RedeemedAmount></RedeemedAmount><RemainingBalance></RemainingBalance><CountryFraudFilterStatus></CountryFraudFilterStatus><IsoCountryCode></IsoCountryCode></NewOrderResp></Response>
|
|
18
|
+
XML
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def validate_avs_response(expected_code)
|
|
22
|
+
kb_payment_id, kb_transaction_id = create_payment
|
|
23
|
+
payment_response = @plugin.authorize_payment(SecureRandom.uuid, kb_payment_id, kb_transaction_id, SecureRandom.uuid, @amount, @currency, @properties, @call_context)
|
|
24
|
+
find_value_from_properties(payment_response.properties, 'avsResultCode').should == expected_code
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
describe 'Should present correct AVS codes' do
|
|
29
|
+
|
|
30
|
+
before(:each) do
|
|
31
|
+
# Start the plugin early to configure ActiveRecord
|
|
32
|
+
@plugin = build_plugin(::Killbill::Orbital::PaymentPlugin, 'orbital')
|
|
33
|
+
@plugin.start_plugin
|
|
34
|
+
::Killbill::Orbital::OrbitalPaymentMethod.delete_all
|
|
35
|
+
::Killbill::Orbital::OrbitalResponse.delete_all
|
|
36
|
+
::Killbill::Orbital::OrbitalTransaction.delete_all
|
|
37
|
+
@call_context = build_call_context
|
|
38
|
+
@properties = build_pm_properties(nil,
|
|
39
|
+
{
|
|
40
|
+
:cc_number => 4111111111111111,
|
|
41
|
+
:cc_type => 'visa'
|
|
42
|
+
})
|
|
43
|
+
@amount = BigDecimal.new('100')
|
|
44
|
+
@currency = 'USD'
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
after(:each) do
|
|
48
|
+
@plugin.stop_plugin
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
::ActiveMerchant::Billing::OrbitalGateway::AVSResult::CONVERT_MAP.each do |raw_code, expected_code|
|
|
52
|
+
include_examples "avs_response_code_specs", raw_code, expected_code
|
|
53
|
+
end
|
|
54
|
+
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.
|
|
4
|
+
version: 0.1.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-02-
|
|
11
|
+
date: 2017-02-14 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -316,6 +316,7 @@ files:
|
|
|
316
316
|
- orbital.yml
|
|
317
317
|
- pom.xml
|
|
318
318
|
- release.sh
|
|
319
|
+
- spec/orbital/avs_response_spec.rb
|
|
319
320
|
- spec/orbital/base_plugin_spec.rb
|
|
320
321
|
- spec/orbital/cvv_indicator_spec.rb
|
|
321
322
|
- spec/orbital/remote/integration_spec.rb
|