active_merchant-epsilon 0.12.0 → 0.14.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ca6ef67e1e4a642d9396edeb901120bec894ec43254821f6d7a5aa793dc18550
4
- data.tar.gz: 80a96286669e5f389c0806f7f35b3ea72fc37e437116d3a0620ac7e919544bbb
3
+ metadata.gz: 8fe0b19a8605e29e5c3a2a310e3b9684767a21fb2f93957342ffd41b9135657e
4
+ data.tar.gz: b8eb1a2b4d150c0696d26a52e58f5069a60542739bc6461d61f864ad20a470db
5
5
  SHA512:
6
- metadata.gz: cfcca339864f03676b21d1404d3f034c9e374185b7ea63b00ef41cfce0d3a050284eff21d826ac13060d7e190bfa061caf79f37e6b91396e7ec92d35e242ca76
7
- data.tar.gz: 9f34fb7ae71ac00e59840b9c6608a0dd934d46c9c8e771f48a9cdd700ac63cddd4ce901d31f3dd5d107492698d6eea17f757262db01d09512d20a698200e5785
6
+ metadata.gz: 87d7533d96fd6591a2b4ffeb78c7cfe2de4ad987e41c58be72083672f346178be6fa593e3aad6a5f3b66b0dde708e883d6d82a8c864a05006589d33a2978b41c
7
+ data.tar.gz: '0782a6f4c48fcc0e905a7b72205d5511bea0ffa95ca285dceee5058d97ae0d63e25fc2e2b009910b800c398b2cb07451cb525f8d0ee1f58696228c487f2f4106'
@@ -0,0 +1,24 @@
1
+ name: test
2
+ on:
3
+ push:
4
+ branches:
5
+ - master
6
+ pull_request:
7
+ jobs:
8
+ test-all:
9
+ runs-on: ubuntu-latest
10
+
11
+ strategy:
12
+ fail-fast: false
13
+ matrix:
14
+ ruby-version: [2.4, 2.5, 2.6, 2.7, 3.0]
15
+
16
+ steps:
17
+ - uses: actions/checkout@v2
18
+
19
+ - uses: ruby/setup-ruby@v1.63.0
20
+ with:
21
+ ruby-version: ${{ matrix.ruby-version }}
22
+ bundler-cache: true
23
+
24
+ - run: bundle exec rake test:unit test:remote
data/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # CHANGELOG
2
2
 
3
+ ### 0.14.0
4
+
5
+ - [Support 3D Secure 2.0 for credit card payments](https://github.com/pepabo/active_merchant-epsilon/pull/121)
6
+
7
+ ### 0.13.0
8
+
9
+ - [Add `last-update` to OrderResponse](https://github.com/pepabo/active_merchant-epsilon/pull/118)
10
+
3
11
  ### 0.12.0
4
12
 
5
13
  - [Add Parameter `delivery_info_required` to purchase method for Epsilon Link Payment](https://github.com/pepabo/active_merchant-epsilon/pull/116)
data/README.md CHANGED
@@ -159,6 +159,57 @@ purchase_detail = {
159
159
  # (snip)
160
160
  ```
161
161
 
162
+ ### CreditCard Payment with 3D secure 2.0(with token)
163
+
164
+ ```ruby
165
+ # 3D secure 2.0 does not have a test environment for epsilon
166
+ ActiveMerchant::Billing::Base.mode = :production
167
+
168
+ amount = 1000
169
+ purchase_detail = {
170
+ user_id: 'YOUR_APP_USER_IDENTIFIER',
171
+ user_name: '山田 太郎',
172
+ user_email: 'yamada-taro@example.com',
173
+ item_code: 'ITEM001',
174
+ item_name: 'Greate Product',
175
+ order_number: 'UNIQUE ORDER NUMBER',
176
+ three_d_secure_check_code: 1,
177
+ token: 'CREDIT CARD TOKEN'
178
+ tds_flag: 21 # 21 or 22
179
+ # optional:
180
+ # add params for risk-based certification(billAddrCity etc...)
181
+ }
182
+
183
+ response = gateway.purchase(amount, ActiveMerchant::Billing::CreditCard.new, purchase_detail)
184
+
185
+ if response.success?
186
+ if response.params['three_d_secure']
187
+ puts response.params['tds2_url']
188
+ puts response.params['pa_req']
189
+ else
190
+ # NOT 3D SECURE
191
+ puts "Successfully charged #{amount} yen as credit card payment(not 3D secure)"
192
+ end
193
+ else
194
+ raise StandardError, response.message
195
+ end
196
+
197
+ # (The card holder identifies himself on credit card's page and comes back here)
198
+
199
+ # AND SECOND REQUEST
200
+
201
+ response = gateway.authenticate(
202
+ order_number: 'ORDER NUMBER',
203
+ three_d_secure_pares: 'PAYMENT AUTHENTICATION RESPONSE',
204
+ )
205
+
206
+ if response.success?
207
+ puts 'Successfully charged as credit card payment(3D secure 2.0)'
208
+ else
209
+ raise StandardError, response.message
210
+ end
211
+ ```
212
+
162
213
  ### CreditCard Revolving Payment
163
214
 
164
215
  ```ruby
@@ -48,6 +48,7 @@ module ActiveMerchant #:nodoc:
48
48
  :three_d_secure,
49
49
  :acs_url,
50
50
  :pa_req,
51
+ :tds2_url,
51
52
  :receipt_number,
52
53
  :receipt_date,
53
54
  :captured,
@@ -22,6 +22,20 @@ module ActiveMerchant #:nodoc:
22
22
  capture: 'sales_payment.cgi',
23
23
  }.freeze
24
24
 
25
+ RISK_BASE_AUTH_PARAMS_KEYS = %i[
26
+ tds_flag billAddrCity billAddrCountry billAddrLine1 billAddrLine2 billAddrLine3
27
+ billAddrPostCode billAddrState shipAddrCity shipAddrCountry shipAddrLine1 shipAddrLine2
28
+ shipAddrLine3 shipAddrPostCode shipAddrState chAccAgeInd chAccChange
29
+ chAccChangeIndchAccDate chAccPwdChange chAccPwChangeInd nbPurchaseAccount paymentAccAge
30
+ paymentAccInd provisionAttemptsDay shipAddressUsage shipAddressUsageInd shipNameIndicator
31
+ suspiciousAccActivity txnActivityDay txnActivityYear threeDSReqAuthData threeDSReqAuthMethod
32
+ threeDSReqAuthTimestamp addrMatch cardholderName homePhone mobilePhone
33
+ workPhone challengeInd deliveryEmailAddress deliveryTimeframe giftCardAmount
34
+ giftCardCount preOrderDate preOrderPurchaseInd reorderItemsInd shipIndicator
35
+ ].freeze
36
+
37
+ THREE_D_SECURE_2_INDICATORS = [21, 22].freeze
38
+
25
39
  self.supported_cardtypes = [:visa, :master, :american_express, :discover]
26
40
 
27
41
  def purchase(amount, credit_card, detail = {})
@@ -29,6 +43,10 @@ module ActiveMerchant #:nodoc:
29
43
 
30
44
  params = billing_params(amount, credit_card, detail)
31
45
 
46
+ if three_d_secure_2?(detail)
47
+ params.merge!(detail.slice(*RISK_BASE_AUTH_PARAMS_KEYS).compact)
48
+ end
49
+
32
50
  commit(PATHS[:purchase], params)
33
51
  end
34
52
 
@@ -54,6 +72,10 @@ module ActiveMerchant #:nodoc:
54
72
  params[:memo2] = detail[:memo2] if detail.has_key?(:memo2)
55
73
  params[:kari_flag] = detail[:capture] ? 2 : 1 if detail.has_key?(:capture)
56
74
 
75
+ if three_d_secure_2?(detail)
76
+ params.merge!(detail.slice(*RISK_BASE_AUTH_PARAMS_KEYS).compact)
77
+ end
78
+
57
79
  commit(PATHS[:registered_purchase], params)
58
80
  end
59
81
 
@@ -177,6 +199,7 @@ module ActiveMerchant #:nodoc:
177
199
  response_keys = [
178
200
  :transaction_code,
179
201
  :state,
202
+ :last_update,
180
203
  :payment_code,
181
204
  :item_price,
182
205
  :amount,
@@ -238,6 +261,10 @@ module ActiveMerchant #:nodoc:
238
261
 
239
262
  params
240
263
  end
264
+
265
+ def three_d_secure_2?(detail)
266
+ THREE_D_SECURE_2_INDICATORS.include?(detail[:tds_flag])
267
+ end
241
268
  end
242
269
  end
243
270
  end
@@ -10,7 +10,7 @@ module ActiveMerchant #:nodoc:
10
10
  @result = @xml.xpath(ResponseXpath::RESULT).to_s
11
11
 
12
12
  response = {
13
- success: [ResultCode::SUCCESS, ResultCode::THREE_D_SECURE].include?(@result) || !state.empty?,
13
+ success: [ResultCode::SUCCESS, ResultCode::THREE_D_SECURE_1, ResultCode::THREE_D_SECURE_2].include?(@result) || !state.empty?,
14
14
  message: "#{error_code}: #{error_detail}"
15
15
  }
16
16
 
@@ -48,7 +48,7 @@ module ActiveMerchant #:nodoc:
48
48
  end
49
49
 
50
50
  def three_d_secure
51
- @result == ResultCode::THREE_D_SECURE
51
+ [ResultCode::THREE_D_SECURE_1, ResultCode::THREE_D_SECURE_2].include?(@result)
52
52
  end
53
53
 
54
54
  def acs_url
@@ -59,6 +59,10 @@ module ActiveMerchant #:nodoc:
59
59
  uri_decode(@xml.xpath(ResponseXpath::PA_REQ).to_s)
60
60
  end
61
61
 
62
+ def tds2_url
63
+ uri_decode(@xml.xpath(ResponseXpath::TDS2_URL).to_s)
64
+ end
65
+
62
66
  def receipt_number
63
67
  @xml.xpath(ResponseXpath::RECEIPT_NUMBER).to_s
64
68
  end
@@ -107,6 +111,10 @@ module ActiveMerchant #:nodoc:
107
111
  @xml.xpath(ResponseXpath::STATE).to_s
108
112
  end
109
113
 
114
+ def last_update
115
+ @xml.xpath(ResponseXpath::LAST_UPDATE).to_s
116
+ end
117
+
110
118
  def payment_code
111
119
  @xml.xpath(ResponseXpath::PAYMENT_CODE).to_s
112
120
  end
@@ -141,6 +149,7 @@ module ActiveMerchant #:nodoc:
141
149
  CARD_EXPIRE = '//Epsilon_result/result[@card_expire]/@card_expire'
142
150
  ACS_URL = '//Epsilon_result/result[@acsurl]/@acsurl' # ACS (Access Control Server)
143
151
  PA_REQ = '//Epsilon_result/result[@pareq]/@pareq' # PAReq (payer authentication request)
152
+ TDS2_URL = '//Epsilon_result/result[@tds2_url]/@tds2_url'
144
153
  RECEIPT_NUMBER = '//Epsilon_result/result[@receipt_no][1]/@receipt_no'
145
154
  RECEIPT_DATE = '//Epsilon_result/result[@receipt_date][1]/@receipt_date'
146
155
  CONVENIENCE_STORE_LIMIT_DATE = '//Epsilon_result/result[@conveni_limit][1]/@conveni_limit'
@@ -153,6 +162,7 @@ module ActiveMerchant #:nodoc:
153
162
  BRANCH_CODE = '//Epsilon_result/result[@branch_code][1]/@branch_code'
154
163
  BRANCH_NAME = '//Epsilon_result/result[@branch_name][1]/@branch_name'
155
164
  STATE = '//Epsilon_result/result[@state]/@state'
165
+ LAST_UPDATE = '//Epsilon_result/result[@last_update]/@last_update'
156
166
  ITEM_PRICE = '//Epsilon_result/result[@item_price]/@item_price'
157
167
  PAYMENT_CODE = '//Epsilon_result/result[@payment_code]/@payment_code'
158
168
  AMOUNT = '//Epsilon_result/result[@amount]/@amount'
@@ -161,10 +171,11 @@ module ActiveMerchant #:nodoc:
161
171
  end
162
172
 
163
173
  module ResultCode
164
- FAILURE = '0'
165
- SUCCESS = '1'
166
- THREE_D_SECURE = '5'
167
- SYSTEM_ERROR = '9'
174
+ FAILURE = '0'
175
+ SUCCESS = '1'
176
+ THREE_D_SECURE_1 = '5'
177
+ THREE_D_SECURE_2 = '6'
178
+ SYSTEM_ERROR = '9'
168
179
  end
169
180
  end
170
181
  end
@@ -1,5 +1,5 @@
1
1
  module ActiveMerchant
2
2
  module Epsilon
3
- VERSION = "0.12.0"
3
+ VERSION = "0.14.0"
4
4
  end
5
5
  end
@@ -0,0 +1,51 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://secure.epsilon.jp/cgi-bin/order/direct_card_payment.cgi
6
+ body:
7
+ encoding: UTF-8
8
+ string: contract_code=[CONTRACT_CODE]&order_number=O30189731&tds_check_code=2&tds_pares=dummy+pa_res
9
+ headers:
10
+ Content-Type:
11
+ - application/x-www-form-urlencoded
12
+ Connection:
13
+ - close
14
+ Accept-Encoding:
15
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
16
+ Accept:
17
+ - "*/*"
18
+ User-Agent:
19
+ - Ruby
20
+ response:
21
+ status:
22
+ code: 200
23
+ message: OK
24
+ headers:
25
+ Date:
26
+ - Thu, 15 Sep 2022 08:09:38 GMT
27
+ Server:
28
+ - Apache
29
+ Vary:
30
+ - Accept-Encoding
31
+ Content-Length:
32
+ - '161'
33
+ Connection:
34
+ - close
35
+ Content-Type:
36
+ - text/xml; charset=CP932
37
+ body:
38
+ encoding: ASCII-8BIT
39
+ string: |-
40
+ <?xml version="1.0" encoding="x-sjis-cp932"?>
41
+ <Epsilon_result>
42
+ <result acsurl="" />
43
+ <result err_code="" />
44
+ <result err_detail="" />
45
+ <result kari_flag="0" />
46
+ <result pareq="" />
47
+ <result result="1" />
48
+ <result trans_code="257072796" />
49
+ </Epsilon_result>
50
+ recorded_at: Thu, 15 Sep 2022 08:09:38 GMT
51
+ recorded_with: VCR 6.1.0
@@ -0,0 +1,51 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://secure.epsilon.jp/cgi-bin/order/direct_card_payment.cgi
6
+ body:
7
+ encoding: UTF-8
8
+ string: contract_code=[CONTRACT_CODE]&user_id=124014051&user_name=YAMADA+TARO&user_mail_add=yamada-taro%40example.com&item_code=ITEM001&item_name=Greate+Product&order_number=O1663728963&st_code=10000-0000-0000&mission_code=1&item_price=1000&process_code=2&card_st_code=&pay_time=&xml=1&tds_flag=21
9
+ headers:
10
+ Content-Type:
11
+ - application/x-www-form-urlencoded
12
+ Connection:
13
+ - close
14
+ Accept-Encoding:
15
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
16
+ Accept:
17
+ - "*/*"
18
+ User-Agent:
19
+ - Ruby
20
+ response:
21
+ status:
22
+ code: 200
23
+ message: OK
24
+ headers:
25
+ Date:
26
+ - Wed, 21 Sep 2022 02:56:03 GMT
27
+ Server:
28
+ - Apache
29
+ Vary:
30
+ - Accept-Encoding
31
+ Content-Length:
32
+ - '234'
33
+ Connection:
34
+ - close
35
+ Content-Type:
36
+ - text/xml; charset=CP932
37
+ body:
38
+ encoding: ASCII-8BIT
39
+ string: |-
40
+ <?xml version="1.0" encoding="x-sjis-cp932"?>
41
+ <Epsilon_result>
42
+ <result acsurl="" />
43
+ <result err_code="" />
44
+ <result err_detail="" />
45
+ <result pareq="sOuxTX%252BZHCDBJKRdKkN2Iw53" />
46
+ <result result="6" />
47
+ <result tds2_url="https%3A%2F%2Fsecure.epsilon.jp%2Fcgi-bin%2Forder%2Ftds2.cgi" />
48
+ <result trans_code="257810878" />
49
+ </Epsilon_result>
50
+ recorded_at: Wed, 21 Sep 2022 02:56:04 GMT
51
+ recorded_with: VCR 6.1.0
@@ -12,11 +12,11 @@ class RemoteEpsilonConvenienceStoreGatewayTest < MiniTest::Test
12
12
  response = gateway.purchase(10000, valid_convenience_store, purchase_detail)
13
13
 
14
14
  assert_equal true, response.success?
15
- assert_match /\d{7}/, response.params['receipt_number']
16
- assert_match /\d{4}\-\d{2}\-\d{2} \d{2}:\d{2}:\d{2}/, response.params['receipt_date']
17
- assert_match /\d{4}\-\d{2}\-\d{2}/, response.params['convenience_store_limit_date']
18
- assert_match %r!\Ahttp://.+!, response.params['convenience_store_payment_slip_url']
19
- assert_match /\d{5}/, response.params['company_code']
15
+ assert_match(/\d{7}/, response.params['receipt_number'])
16
+ assert_match(/\d{4}\-\d{2}\-\d{2} \d{2}:\d{2}:\d{2}/, response.params['receipt_date'])
17
+ assert_match(/\d{4}\-\d{2}\-\d{2}/, response.params['convenience_store_limit_date'])
18
+ assert_match(%r!\Ahttp://.+!, response.params['convenience_store_payment_slip_url'])
19
+ assert_match(/\d{5}/, response.params['company_code'])
20
20
  end
21
21
  end
22
22
 
@@ -62,16 +62,47 @@ class RemoteEpsilonGatewayTest < MiniTest::Test
62
62
 
63
63
  assert_equal true, response.success?
64
64
  assert_equal true, response.params['three_d_secure']
65
- assert_match /\Ahttps?/, response.params['acs_url']
65
+ assert_match(/\Ahttps?/, response.params['acs_url'])
66
66
  refute_empty response.params['pa_req']
67
67
  end
68
68
 
69
69
  VCR.use_cassette(:autheticate_three_d_secure_card_successful) do
70
- response = gateway.authenticate(valid_three_d_secure_pa_res)
70
+ response = gateway.authenticate(
71
+ order_number: purchase_detail[:order_number],
72
+ three_d_secure_pa_res: valid_three_d_secure_pa_res
73
+ )
71
74
  assert_equal true, response.success?
72
75
  end
73
76
  end
74
77
 
78
+ def test_purchase_with_three_d_secure_2_successful
79
+ # 3DS2.0はテスト環境がないので mode を :production にする
80
+ ActiveMerchant::Billing::Base.stub(:mode, :production) do
81
+ VCR.use_cassette(:purchase_with_three_d_secure_2_successful) do
82
+ response = gateway.purchase(
83
+ 1000,
84
+ ActiveMerchant::Billing::CreditCard.new,
85
+ purchase_detail_for_three_d_secure_2
86
+ )
87
+
88
+ assert_equal true, response.success?
89
+ assert_equal true, response.params['three_d_secure']
90
+ assert_equal true, response.params['tds2_url'].present?
91
+ assert_equal true, response.params['pa_req'].present?
92
+ assert_empty response.params['acs_url']
93
+ end
94
+
95
+ VCR.use_cassette(:authenticate_with_three_d_secure_2_successful) do
96
+ response = gateway.authenticate(
97
+ order_number: purchase_detail_for_three_d_secure_2[:order_number],
98
+ three_d_secure_pa_res: 'dummy pa_res'
99
+ )
100
+
101
+ assert_equal true, response.success?
102
+ end
103
+ end
104
+ end
105
+
75
106
  def test_purchase_with_capture_true_successful
76
107
  VCR.use_cassette(:purchase_with_capture_true_successful) do
77
108
  response = gateway.purchase(1000, valid_credit_card, purchase_detail.merge(capture: true))
@@ -253,6 +284,30 @@ class RemoteEpsilonGatewayTest < MiniTest::Test
253
284
  end
254
285
  end
255
286
 
287
+ def test_registered_purchase_with_three_d_secure_2_successful
288
+ # 3DS2.0はテスト環境がないので mode を :production にする
289
+ ActiveMerchant::Billing::Base.stub(:mode, :production) do
290
+ VCR.use_cassette(:purchase_with_three_d_secure_2_successful) do
291
+ response = gateway.registered_purchase(1000, purchase_detail_for_registered_and_three_d_secure_2)
292
+
293
+ assert_equal true, response.success?
294
+ assert_equal true, response.params['three_d_secure']
295
+ assert_equal true, response.params['tds2_url'].present?
296
+ assert_equal true, response.params['pa_req'].present?
297
+ assert_empty response.params['acs_url']
298
+ end
299
+
300
+ VCR.use_cassette(:authenticate_with_three_d_secure_2_successful) do
301
+ response = gateway.authenticate(
302
+ order_number: purchase_detail_for_three_d_secure_2[:order_number],
303
+ three_d_secure_pa_res: 'dummy pa_res'
304
+ )
305
+
306
+ assert_equal true, response.success?
307
+ end
308
+ end
309
+ end
310
+
256
311
  def test_registered_purchase_fail
257
312
  VCR.use_cassette(:registered_purchase_fail) do
258
313
  invalid_purchase_detail = purchase_detail_for_registered
@@ -293,6 +348,7 @@ class RemoteEpsilonGatewayTest < MiniTest::Test
293
348
  assert_equal true, response.success?
294
349
 
295
350
  assert_equal true, !response.params['state'].empty?
351
+ assert_equal true, !response.params['last_update'].empty?
296
352
  assert_equal true, !response.params['payment_code'].empty?
297
353
  assert_equal true, !response.params['item_price'].empty?
298
354
  end
data/test/test_helper.rb CHANGED
@@ -156,6 +156,33 @@ module SamplePaymentMethods
156
156
  }
157
157
  end
158
158
 
159
+ def purchase_detail_for_three_d_secure_2
160
+ now = Time.now
161
+ {
162
+ user_id: "U#{now.to_i}",
163
+ user_name: 'YAMADA Taro',
164
+ user_email: 'yamada-taro@example.com',
165
+ item_code: 'ITEM001',
166
+ item_name: 'Greate Product',
167
+ order_number: "O#{now.sec}#{now.usec}",
168
+ token: '03d4a2ce2f747c9223a4ead24888d0293ad26c06273e296f9faa0675f99a1ff7',
169
+ three_d_secure_check_code: 1,
170
+ tds_flag: 21,
171
+ }
172
+ end
173
+
174
+ def purchase_detail_for_registered_and_three_d_secure_2
175
+ {
176
+ user_id: '124014051',
177
+ user_email: 'yamada-taro@example.com',
178
+ user_name: 'YAMADA TARO',
179
+ item_code: 'ITEM001',
180
+ item_name: 'Greate Product',
181
+ order_number: "O#{Time.now.to_i}",
182
+ tds_flag: 21,
183
+ }
184
+ end
185
+
159
186
  def valid_three_d_secure_pa_res
160
187
  now = Time.now
161
188
  {
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_merchant-epsilon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.0
4
+ version: 0.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kenichi TAKAHASHI
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-07 00:00:00.000000000 Z
11
+ date: 2022-09-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemerchant
@@ -158,8 +158,8 @@ extensions: []
158
158
  extra_rdoc_files: []
159
159
  files:
160
160
  - ".env.sample"
161
+ - ".github/workflows/test.yml"
161
162
  - ".gitignore"
162
- - ".travis.yml"
163
163
  - CHANGELOG.md
164
164
  - Gemfile
165
165
  - LICENSE.txt
@@ -178,6 +178,7 @@ files:
178
178
  - lib/active_merchant/billing/gateways/response_parser.rb
179
179
  - lib/active_merchant/epsilon.rb
180
180
  - lib/active_merchant/epsilon/version.rb
181
+ - test/fixtures/vcr_cassettes/authenticate_with_three_d_secure_2_successful.yml
181
182
  - test/fixtures/vcr_cassettes/autheticate_three_d_secure_card_successful.yml
182
183
  - test/fixtures/vcr_cassettes/cancel_recurring_fail.yml
183
184
  - test/fixtures/vcr_cassettes/cancel_recurring_successful.yml
@@ -208,6 +209,7 @@ files:
208
209
  - test/fixtures/vcr_cassettes/purchase_successful.yml
209
210
  - test/fixtures/vcr_cassettes/purchase_with_capture_false_successful.yml
210
211
  - test/fixtures/vcr_cassettes/purchase_with_capture_true_successful.yml
212
+ - test/fixtures/vcr_cassettes/purchase_with_three_d_secure_2_successful.yml
211
213
  - test/fixtures/vcr_cassettes/purchase_with_three_d_secure_card_successful.yml
212
214
  - test/fixtures/vcr_cassettes/purchase_with_verification_value.yml
213
215
  - test/fixtures/vcr_cassettes/recurring_fail.yml
@@ -228,7 +230,6 @@ files:
228
230
  - test/fixtures/vcr_cassettes/void_fail.yml
229
231
  - test/fixtures/vcr_cassettes/void_successful.yml
230
232
  - test/remote/gateways/remote_epsilon_convenience_store_test.rb
231
- - test/remote/gateways/remote_epsilon_gmo_after_test.rb
232
233
  - test/remote/gateways/remote_epsilon_gmo_id_test.rb
233
234
  - test/remote/gateways/remote_epsilon_link_payment_test.rb
234
235
  - test/remote/gateways/remote_epsilon_test.rb
@@ -260,6 +261,7 @@ signing_key:
260
261
  specification_version: 4
261
262
  summary: Epsilon integration for ActiveMerchant.
262
263
  test_files:
264
+ - test/fixtures/vcr_cassettes/authenticate_with_three_d_secure_2_successful.yml
263
265
  - test/fixtures/vcr_cassettes/autheticate_three_d_secure_card_successful.yml
264
266
  - test/fixtures/vcr_cassettes/cancel_recurring_fail.yml
265
267
  - test/fixtures/vcr_cassettes/cancel_recurring_successful.yml
@@ -290,6 +292,7 @@ test_files:
290
292
  - test/fixtures/vcr_cassettes/purchase_successful.yml
291
293
  - test/fixtures/vcr_cassettes/purchase_with_capture_false_successful.yml
292
294
  - test/fixtures/vcr_cassettes/purchase_with_capture_true_successful.yml
295
+ - test/fixtures/vcr_cassettes/purchase_with_three_d_secure_2_successful.yml
293
296
  - test/fixtures/vcr_cassettes/purchase_with_three_d_secure_card_successful.yml
294
297
  - test/fixtures/vcr_cassettes/purchase_with_verification_value.yml
295
298
  - test/fixtures/vcr_cassettes/recurring_fail.yml
@@ -310,7 +313,6 @@ test_files:
310
313
  - test/fixtures/vcr_cassettes/void_fail.yml
311
314
  - test/fixtures/vcr_cassettes/void_successful.yml
312
315
  - test/remote/gateways/remote_epsilon_convenience_store_test.rb
313
- - test/remote/gateways/remote_epsilon_gmo_after_test.rb
314
316
  - test/remote/gateways/remote_epsilon_gmo_id_test.rb
315
317
  - test/remote/gateways/remote_epsilon_link_payment_test.rb
316
318
  - test/remote/gateways/remote_epsilon_test.rb
data/.travis.yml DELETED
@@ -1,12 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.4.5
4
- - 2.5.3
5
-
6
- script: bundle exec rake test:remote
7
- script: bundle exec rake test:unit
8
-
9
- notifications:
10
- slack:
11
- rooms:
12
- secure: rYtA4FBXqKHYv+v7xA6FfkcsDXRexWyMj9WMG2YK7bgZoNG2N7q461Dr/lCU0JTuRGsxDIs5jHK+QFFZNW/h+SbhQfiew++W8FgoIbP/z7HuEW50SXLcigGb02YmQm+ybbh5Dw1QGmcTOVItXJfuFmrDm1fq0qO0HC0543Yn4BzrSdWnEWQSaK7JMBRc9aYVPc0VlWG8pGRLtW0PDb6D32MvEI4jPrnh2NPDomPT9YutmMC+jNBPKr72m68g3v2GogbX4irZ6Kp5UUUZtaDbt9yLRfNL/3bsVGVrS1S2qCO4If5xTtE7lvV807a8QuQIj4Y9YqRO7K+/wUrz4Yb2ycF7agAkjN+w2WNEjgsKeFk50R4BWKpSy6y2N2RIl7rdHVEnU1T9I6LH0do5hMGqhgDYgppb2F7YFL9buUqag6gKAX3BHIV16ADJOFBT2Hh2m6x9f5TRb5ZR4LDJBQaflMhj0pwmIcC5Bhr3yi45r/4xiJ1IQaspXCzvfUMXARgWqqSxxveVQ07obiFeFCZ2YJEyv9fYLxT39+9koP48iKHTzbtFi4ay37PfMaztiXM0dqTwdjbJ95krc8AoNuTDphgwLLW2Zxxz2+tFQiLcj1tebUZa1hBsil1EVI7P/8PjAjGowckCnEAnFBZS5oFrgE2qzuwIGbLRYeeoRev0tks=
@@ -1,30 +0,0 @@
1
- require 'test_helper'
2
-
3
- class RemoteEpsilonGmoAfterGatewayTest < MiniTest::Test
4
- include SamplePaymentMethods
5
-
6
- def gateway
7
- @gateway ||= ActiveMerchant::Billing::EpsilonGmoAfterGateway.new
8
- end
9
-
10
- def test_gmo_after_purchase_successfull
11
- VCR.use_cassette(:gmo_after_purchase_successful) do
12
- response = gateway.purchase(10000, gmo_after_purchase_detail)
13
-
14
- assert_equal true, response.success?
15
- assert_equal true, !response.params['redirect'].empty?
16
- end
17
- end
18
-
19
- def test_gmo_after_purchase_fail
20
- invalid_purchase_detail = gmo_after_purchase_detail
21
- invalid_purchase_detail[:user_id] = ''
22
-
23
- VCR.use_cassette(:gmo_after_purchase_fail) do
24
- response = gateway.purchase(10000, invalid_purchase_detail)
25
-
26
- assert_equal false, response.success?
27
- assert_equal true, response.params["error_detail"].valid_encoding?
28
- end
29
- end
30
- end