active_merchant-epsilon 0.9.2 → 0.12.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 +4 -4
- data/.travis.yml +0 -1
- data/CHANGELOG.md +20 -0
- data/README.md +19 -4
- data/lib/active_merchant/billing/gateways/epsilon.rb +13 -0
- data/lib/active_merchant/billing/gateways/epsilon/epsilon_base.rb +2 -1
- data/lib/active_merchant/billing/gateways/epsilon_link_payment.rb +55 -0
- data/lib/active_merchant/billing/gateways/response_parser.rb +6 -7
- data/lib/active_merchant/epsilon.rb +1 -1
- data/lib/active_merchant/epsilon/version.rb +1 -1
- data/test/fixtures/vcr_cassettes/capture_failure.yml +45 -0
- data/test/fixtures/vcr_cassettes/capture_success.yml +45 -0
- data/test/fixtures/vcr_cassettes/capture_success_authorize.yml +49 -0
- data/test/fixtures/vcr_cassettes/epsilon_link_type_not_sending_delivery_information_purchase_successful.yml +44 -0
- data/test/fixtures/vcr_cassettes/epsilon_link_type_purchase_fail.yml +43 -0
- data/test/fixtures/vcr_cassettes/epsilon_link_type_purchase_successful.yml +44 -0
- data/test/fixtures/vcr_cassettes/epsilon_link_type_void_fail.yml +45 -0
- data/test/fixtures/vcr_cassettes/epsilon_link_type_void_successfull.yml +45 -0
- data/test/fixtures/vcr_cassettes/gmo_after_purchase_fail.yml +4 -4
- data/test/fixtures/vcr_cassettes/gmo_after_purchase_successful.yml +4 -4
- data/test/fixtures/vcr_cassettes/purchase_with_capture_false_successful.yml +49 -0
- data/test/fixtures/vcr_cassettes/purchase_with_capture_true_successful.yml +49 -0
- data/test/remote/gateways/remote_epsilon_convenience_store_test.rb +1 -0
- data/test/remote/gateways/remote_epsilon_gmo_after_test.rb +1 -0
- data/test/remote/gateways/remote_epsilon_gmo_id_test.rb +1 -0
- data/test/remote/gateways/remote_epsilon_link_payment_test.rb +55 -0
- data/test/remote/gateways/remote_epsilon_test.rb +44 -0
- data/test/remote/gateways/remote_epsilon_virtual_account_test.rb +2 -1
- data/test/test_helper.rb +68 -5
- metadata +25 -3
- data/lib/active_merchant/billing/gateways/epsilon_gmo_after.rb +0 -38
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ca6ef67e1e4a642d9396edeb901120bec894ec43254821f6d7a5aa793dc18550
|
4
|
+
data.tar.gz: 80a96286669e5f389c0806f7f35b3ea72fc37e437116d3a0620ac7e919544bbb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cfcca339864f03676b21d1404d3f034c9e374185b7ea63b00ef41cfce0d3a050284eff21d826ac13060d7e190bfa061caf79f37e6b91396e7ec92d35e242ca76
|
7
|
+
data.tar.gz: 9f34fb7ae71ac00e59840b9c6608a0dd934d46c9c8e771f48a9cdd700ac63cddd4ce901d31f3dd5d107492698d6eea17f757262db01d09512d20a698200e5785
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,25 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
### 0.12.0
|
4
|
+
|
5
|
+
- [Add Parameter `delivery_info_required` to purchase method for Epsilon Link Payment](https://github.com/pepabo/active_merchant-epsilon/pull/116)
|
6
|
+
|
7
|
+
### 0.11.0
|
8
|
+
|
9
|
+
- [Add void mehotd for Epsilon Link Payment](https://github.com/pepabo/active_merchant-epsilon/pull/114)
|
10
|
+
|
11
|
+
### 0.10.0
|
12
|
+
|
13
|
+
* [Capture authorized payments](https://github.com/pepabo/active_merchant-epsilon/pull/112)
|
14
|
+
|
15
|
+
### 0.9.4
|
16
|
+
|
17
|
+
* [Support Epsilon Link Payment instead of GMO Payment After Delivery](https://github.com/pepabo/active_merchant-epsilon/pull/110)
|
18
|
+
|
19
|
+
### 0.9.3
|
20
|
+
|
21
|
+
* [Fix API version for GMO Payment After Delivery](https://github.com/pepabo/active_merchant-epsilon/pull/108)
|
22
|
+
|
3
23
|
### 0.9.2
|
4
24
|
|
5
25
|
* [Support GMO Payment After Delivery](https://github.com/pepabo/active_merchant-epsilon/pull/106)
|
data/README.md
CHANGED
@@ -302,12 +302,19 @@ else
|
|
302
302
|
end
|
303
303
|
```
|
304
304
|
|
305
|
-
###
|
305
|
+
### Epsilon Link Payment
|
306
|
+
|
307
|
+
EpsilosLinkPaymentGateway is available in all link payments.
|
308
|
+
For example, GMO Payment After Delivery.
|
309
|
+
|
310
|
+
If you don't need to send paramaters of delivery information details(e.g. consignee_postal, consignee_name, orderer_postal, and orderer_name), you set `delivery_info_required` to `false`.
|
311
|
+
|
312
|
+
Default value of `delivery_info_required` is `true`, therefore you must set delivery information details to purchase_detail When you don't set `delivery_info_required`.
|
306
313
|
|
307
314
|
```ruby
|
308
|
-
ActiveMerchant::Billing::
|
315
|
+
ActiveMerchant::Billing::EpsilonLinkPaymentGateway.contract_code = 'YOUR_CONTRACT_CODE'
|
309
316
|
|
310
|
-
gateway = ActiveMerchant::Billing::
|
317
|
+
gateway = ActiveMerchant::Billing::EpsilonLinkPaymentGateway.new
|
311
318
|
|
312
319
|
amount = 10000
|
313
320
|
|
@@ -319,6 +326,7 @@ purchase_detail = {
|
|
319
326
|
item_code: 'ITEM001',
|
320
327
|
item_name: 'Greate Product',
|
321
328
|
order_number: 'UNIQUE ORDER NUMBER',
|
329
|
+
st_code: 'SETTLEMENT_CODE',
|
322
330
|
consignee_postal: '1500002',
|
323
331
|
consignee_name: '山田 太郎',
|
324
332
|
consignee_address: '東京都渋谷区1-1-1',
|
@@ -331,7 +339,9 @@ purchase_detail = {
|
|
331
339
|
memo2: 'memo2',
|
332
340
|
}
|
333
341
|
|
334
|
-
|
342
|
+
delivery_info_required = true
|
343
|
+
|
344
|
+
response = gateway.purchase(amount, purchase_detail, delivery_info_required)
|
335
345
|
|
336
346
|
if response.success?
|
337
347
|
puts "Successfully send order data"
|
@@ -341,6 +351,11 @@ else
|
|
341
351
|
end
|
342
352
|
```
|
343
353
|
|
354
|
+
### Epsilon Link Payment Void Transaction
|
355
|
+
```ruby
|
356
|
+
gateway.void('order_number')
|
357
|
+
```
|
358
|
+
|
344
359
|
### Error handling
|
345
360
|
|
346
361
|
If epsilon server returns status excepted 200, `#purchase` method raise `ActiveMerchant::ResponseError`.
|
@@ -19,6 +19,7 @@ module ActiveMerchant #:nodoc:
|
|
19
19
|
find_user: 'get_user_info.cgi',
|
20
20
|
change_recurring_amount: 'change_amount_payment.cgi',
|
21
21
|
find_order: 'getsales2.cgi',
|
22
|
+
capture: 'sales_payment.cgi',
|
22
23
|
}.freeze
|
23
24
|
|
24
25
|
self.supported_cardtypes = [:visa, :master, :american_express, :discover]
|
@@ -51,6 +52,7 @@ module ActiveMerchant #:nodoc:
|
|
51
52
|
|
52
53
|
params[:memo1] = detail[:memo1] if detail.has_key?(:memo1)
|
53
54
|
params[:memo2] = detail[:memo2] if detail.has_key?(:memo2)
|
55
|
+
params[:kari_flag] = detail[:capture] ? 2 : 1 if detail.has_key?(:capture)
|
54
56
|
|
55
57
|
commit(PATHS[:registered_purchase], params)
|
56
58
|
end
|
@@ -83,6 +85,7 @@ module ActiveMerchant #:nodoc:
|
|
83
85
|
|
84
86
|
params[:memo1] = detail[:memo1] if detail.has_key?(:memo1)
|
85
87
|
params[:memo2] = detail[:memo2] if detail.has_key?(:memo2)
|
88
|
+
params[:kari_flag] = detail[:capture] ? 2 : 1 if detail.has_key?(:capture)
|
86
89
|
|
87
90
|
commit(PATHS[:registered_recurring], params)
|
88
91
|
end
|
@@ -182,6 +185,15 @@ module ActiveMerchant #:nodoc:
|
|
182
185
|
commit(PATHS[:find_order], params, response_keys)
|
183
186
|
end
|
184
187
|
|
188
|
+
def capture(order_number)
|
189
|
+
params = {
|
190
|
+
contract_code: self.contract_code,
|
191
|
+
order_number: order_number,
|
192
|
+
}
|
193
|
+
|
194
|
+
commit(PATHS[:capture], params)
|
195
|
+
end
|
196
|
+
|
185
197
|
private
|
186
198
|
|
187
199
|
def billing_params(amount, payment_method, detail)
|
@@ -208,6 +220,7 @@ module ActiveMerchant #:nodoc:
|
|
208
220
|
|
209
221
|
params[:memo1] = detail[:memo1] if detail.has_key?(:memo1)
|
210
222
|
params[:memo2] = detail[:memo2] if detail.has_key?(:memo2)
|
223
|
+
params[:kari_flag] = detail[:capture] ? 2 : 1 if detail.has_key?(:capture)
|
211
224
|
|
212
225
|
if detail.has_key?(:token)
|
213
226
|
params[:token] = detail[:token]
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module ActiveMerchant #:nodoc:
|
2
|
+
module Billing #:nodoc:
|
3
|
+
class EpsilonLinkPaymentGateway < EpsilonBaseGateway
|
4
|
+
|
5
|
+
RESPONSE_KEYS = DEFAULT_RESPONSE_KEYS + [
|
6
|
+
:redirect,
|
7
|
+
]
|
8
|
+
|
9
|
+
def purchase(amount, detail = {}, delivery_info_required = true)
|
10
|
+
params = {
|
11
|
+
contract_code: self.contract_code,
|
12
|
+
user_id: detail[:user_id],
|
13
|
+
user_name: detail[:user_name],
|
14
|
+
user_mail_add: detail[:user_email],
|
15
|
+
item_code: detail[:item_code],
|
16
|
+
item_name: detail[:item_name],
|
17
|
+
order_number: detail[:order_number],
|
18
|
+
st_code: detail[:st_code],
|
19
|
+
mission_code: EpsilonMissionCode::PURCHASE,
|
20
|
+
item_price: amount,
|
21
|
+
process_code: EpsilonProcessCode::FIRST,
|
22
|
+
xml: 1, # 応答形式。1: xml形式を固定
|
23
|
+
}
|
24
|
+
|
25
|
+
# 注文情報の詳細が必要な場合のみ、セットする
|
26
|
+
if delivery_info_required
|
27
|
+
params[:delivery_code] = 99 # 配送区分。99で固定
|
28
|
+
params[:consignee_postal] = detail[:consignee_postal]
|
29
|
+
params[:consignee_name] = detail[:consignee_name]
|
30
|
+
params[:consignee_address] = detail[:consignee_address]
|
31
|
+
params[:consignee_tel] = detail[:consignee_tel]
|
32
|
+
params[:orderer_postal] = detail[:orderer_postal]
|
33
|
+
params[:orderer_name] = detail[:orderer_name]
|
34
|
+
params[:orderer_address] = detail[:orderer_address]
|
35
|
+
params[:orderer_tel] = detail[:orderer_tel]
|
36
|
+
end
|
37
|
+
|
38
|
+
params[:memo1] = detail[:memo1] if detail.has_key?(:memo1)
|
39
|
+
params[:memo2] = detail[:memo2] if detail.has_key?(:memo2)
|
40
|
+
params[:user_tel] = detail[:user_tel] if detail.has_key?(:user_tel)
|
41
|
+
|
42
|
+
commit('receive_order3.cgi', params, RESPONSE_KEYS)
|
43
|
+
end
|
44
|
+
|
45
|
+
def void(order_number)
|
46
|
+
params = {
|
47
|
+
contract_code: self.contract_code,
|
48
|
+
order_number: order_number
|
49
|
+
}
|
50
|
+
|
51
|
+
commit('cancel_payment.cgi', params)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -123,14 +123,12 @@ module ActiveMerchant #:nodoc:
|
|
123
123
|
uri_decode(@xml.xpath(ResponseXpath::REDIRECT).to_s)
|
124
124
|
end
|
125
125
|
|
126
|
-
def
|
127
|
-
|
128
|
-
|
129
|
-
unless decoded_string.encoding == Encoding::UTF_8
|
130
|
-
decoded_string = decoded_string.encode(Encoding::UTF_8, Encoding::CP932)
|
131
|
-
end
|
126
|
+
def captured
|
127
|
+
@xml.xpath(ResponseXpath::CAPTURED).to_s != '1'
|
128
|
+
end
|
132
129
|
|
133
|
-
|
130
|
+
def uri_decode(string)
|
131
|
+
CGI.unescape(string).encode(Encoding::UTF_8, Encoding::CP932)
|
134
132
|
end
|
135
133
|
|
136
134
|
module ResponseXpath
|
@@ -159,6 +157,7 @@ module ActiveMerchant #:nodoc:
|
|
159
157
|
PAYMENT_CODE = '//Epsilon_result/result[@payment_code]/@payment_code'
|
160
158
|
AMOUNT = '//Epsilon_result/result[@amount]/@amount'
|
161
159
|
REDIRECT = '//Epsilon_result/result[@redirect]/@redirect'
|
160
|
+
CAPTURED = '//Epsilon_result/result[@kari_flag]/@kari_flag'
|
162
161
|
end
|
163
162
|
|
164
163
|
module ResultCode
|
@@ -10,5 +10,5 @@ require_relative 'billing/gateways/epsilon'
|
|
10
10
|
require_relative 'billing/gateways/epsilon_convenience_store'
|
11
11
|
require_relative 'billing/gateways/epsilon_gmo_id'
|
12
12
|
require_relative 'billing/gateways/epsilon_virtual_account'
|
13
|
-
require_relative 'billing/gateways/
|
13
|
+
require_relative 'billing/gateways/epsilon_link_payment'
|
14
14
|
require_relative 'billing/gateways/response_parser'
|
@@ -0,0 +1,45 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://beta.epsilon.jp/cgi-bin/order/sales_payment.cgi
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: contract_code=[CONTRACT_CODE]&order_number=1234567890
|
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
|
+
- Fri, 12 Jun 2020 11:00:12 GMT
|
27
|
+
Server:
|
28
|
+
- Apache
|
29
|
+
Connection:
|
30
|
+
- close
|
31
|
+
Transfer-Encoding:
|
32
|
+
- chunked
|
33
|
+
Content-Type:
|
34
|
+
- text/xml; charset=CP932
|
35
|
+
body:
|
36
|
+
encoding: UTF-8
|
37
|
+
string: |-
|
38
|
+
<?xml version="1.0" encoding="x-sjis-cp932"?>
|
39
|
+
<Epsilon_result>
|
40
|
+
<result err_code="810" />
|
41
|
+
<result err_detail="%91%CE%8F%DB%8E%E6%88%F8%82%CD%82%A0%82%E8%82%DC%82%B9%82%F1" />
|
42
|
+
<result result="9" />
|
43
|
+
</Epsilon_result>
|
44
|
+
recorded_at: Fri, 12 Jun 2020 11:00:14 GMT
|
45
|
+
recorded_with: VCR 6.0.0
|
@@ -0,0 +1,45 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://beta.epsilon.jp/cgi-bin/order/sales_payment.cgi
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: contract_code=[CONTRACT_CODE]&order_number=O14289569
|
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
|
+
- Fri, 12 Jun 2020 11:00:16 GMT
|
27
|
+
Server:
|
28
|
+
- Apache
|
29
|
+
Connection:
|
30
|
+
- close
|
31
|
+
Transfer-Encoding:
|
32
|
+
- chunked
|
33
|
+
Content-Type:
|
34
|
+
- text/xml; charset=CP932
|
35
|
+
body:
|
36
|
+
encoding: UTF-8
|
37
|
+
string: |-
|
38
|
+
<?xml version="1.0" encoding="x-sjis-cp932"?>
|
39
|
+
<Epsilon_result>
|
40
|
+
<result err_code="" />
|
41
|
+
<result err_detail="" />
|
42
|
+
<result result="1" />
|
43
|
+
</Epsilon_result>
|
44
|
+
recorded_at: Fri, 12 Jun 2020 11:00:17 GMT
|
45
|
+
recorded_with: VCR 6.0.0
|
@@ -0,0 +1,49 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://beta.epsilon.jp/cgi-bin/order/direct_card_payment.cgi
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: contract_code=[CONTRACT_CODE]&user_id=U1591959614&user_name=YAMADA+Taro&user_mail_add=yamada-taro%40example.com&item_code=ITEM001&item_name=Greate+Product&order_number=O14289569&st_code=10000-0000-0000&mission_code=1&kari_flag=1&item_price=100&process_code=1&card_number=4242424242424242&expire_y=2021&expire_m=10&card_st_code=&pay_time=&tds_check_code=&user_agent=ActiveMerchant%3A%3AEpsilon-0.9.4&memo1=memo1&memo2=memo2
|
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
|
+
- Fri, 12 Jun 2020 11:00:15 GMT
|
27
|
+
Server:
|
28
|
+
- Apache
|
29
|
+
Connection:
|
30
|
+
- close
|
31
|
+
Transfer-Encoding:
|
32
|
+
- chunked
|
33
|
+
Content-Type:
|
34
|
+
- text/xml; charset=CP932
|
35
|
+
body:
|
36
|
+
encoding: UTF-8
|
37
|
+
string: |-
|
38
|
+
<?xml version="1.0" encoding="x-sjis-cp932"?>
|
39
|
+
<Epsilon_result>
|
40
|
+
<result acsurl="" />
|
41
|
+
<result err_code="" />
|
42
|
+
<result err_detail="" />
|
43
|
+
<result kari_flag="1" />
|
44
|
+
<result pareq="" />
|
45
|
+
<result result="1" />
|
46
|
+
<result trans_code="1362118" />
|
47
|
+
</Epsilon_result>
|
48
|
+
recorded_at: Fri, 12 Jun 2020 11:00:16 GMT
|
49
|
+
recorded_with: VCR 6.0.0
|
@@ -0,0 +1,44 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://beta.epsilon.jp/cgi-bin/order/receive_order3.cgi
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: contract_code=[CONTRACT_CODE]&user_id=U1599198756&user_name=%E5%B1%B1%E7%94%B0+%E5%A4%AA%E9%83%8E&user_mail_add=yamada-taro%40example.com&item_code=ITEM001&item_name=Greate+Product&order_number=O36528472&st_code=00000-0000-01000-00000-00000-00000-00000&mission_code=1&item_price=10000&process_code=1&xml=1&memo1=memo1&memo2=memo2
|
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
|
+
- Fri, 04 Sep 2020 05:52:36 GMT
|
27
|
+
Server:
|
28
|
+
- Apache
|
29
|
+
Connection:
|
30
|
+
- close
|
31
|
+
Transfer-Encoding:
|
32
|
+
- chunked
|
33
|
+
Content-Type:
|
34
|
+
- text/xml
|
35
|
+
body:
|
36
|
+
encoding: UTF-8
|
37
|
+
string: |
|
38
|
+
<?xml version="1.0" encoding="UTF-8" ?>
|
39
|
+
<Epsilon_result>
|
40
|
+
<result result="1" />
|
41
|
+
<result redirect="https%3A%2F%2Fbeta.epsilon.jp%2Fcgi-bin%2Forder%2Fmethod_select3.cgi%3Ftrans_code%3DRewAwZ7Jm3Y91" />
|
42
|
+
</Epsilon_result>
|
43
|
+
recorded_at: Fri, 04 Sep 2020 05:52:37 GMT
|
44
|
+
recorded_with: VCR 6.0.0
|
@@ -0,0 +1,43 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://beta.epsilon.jp/cgi-bin/order/receive_order3.cgi
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: contract_code=[CONTRACT_CODE]&user_id=U1594794779&user_name=%E5%B1%B1%E7%94%B0+%E5%A4%AA%E9%83%8E&user_mail_add=yamada-taro%40example.com&item_code=ITEM001&item_name=Greate+Product&order_number=O59578602&st_code=invalid_id&mission_code=1&item_price=10000&process_code=1&xml=1&delivery_code=99&consignee_postal=1000001&consignee_name=%E3%82%A4%E3%83%97%E3%82%B7%E3%83%AD%E3%83%B3%E3%82%BF%E3%83%AD%E3%82%A6&consignee_address=%E6%9D%B1%E4%BA%AC%E9%83%BD%E5%8D%83%E4%BB%A3%E7%94%B0%E5%8C%BA%E5%8D%83%E4%BB%A3%E7%94%B01%E7%95%AA1%E5%8F%B7&consignee_tel=0312345678&orderer_postal=1000001&orderer_name=YAMADA+Taro&orderer_address=%E6%9D%B1%E4%BA%AC%E9%83%BD%E5%8D%83%E4%BB%A3%E7%94%B0%E5%8C%BA%E5%8D%83%E4%BB%A3%E7%94%B01%E7%95%AA1%E5%8F%B7&orderer_tel=0312345678&memo1=memo1&memo2=memo2
|
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, 15 Jul 2020 06:32:59 GMT
|
27
|
+
Server:
|
28
|
+
- Apache
|
29
|
+
Connection:
|
30
|
+
- close
|
31
|
+
Transfer-Encoding:
|
32
|
+
- chunked
|
33
|
+
Content-Type:
|
34
|
+
- text/xml
|
35
|
+
body:
|
36
|
+
encoding: UTF-8
|
37
|
+
string: "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n <Epsilon_result>\r\n
|
38
|
+
\ <result result=\"0\" />\r\n <result err_code=\"601\" />\r\n <result
|
39
|
+
err_detail=\"%8C%88%8D%CF%83R%81%5B%83h%82%CC%8Ew%92%E8%82%AA%88%D9%8F%ED%82%C5%82%B7\"
|
40
|
+
/>\r\n <result memo1=\"memo1\" />\r\n <result memo2=\"memo2\" />\r\n
|
41
|
+
\ </Epsilon_result>\r\n"
|
42
|
+
recorded_at: Wed, 15 Jul 2020 06:33:00 GMT
|
43
|
+
recorded_with: VCR 6.0.0
|
@@ -0,0 +1,44 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://beta.epsilon.jp/cgi-bin/order/receive_order3.cgi
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: contract_code=[CONTRACT_CODE]&user_id=U1599198757&user_name=%E5%B1%B1%E7%94%B0+%E5%A4%AA%E9%83%8E&user_mail_add=yamada-taro%40example.com&item_code=ITEM001&item_name=Greate+Product&order_number=O37739738&st_code=00000-0000-01000-00000-00000-00000-00000&mission_code=1&item_price=10000&process_code=1&xml=1&delivery_code=99&consignee_postal=1000001&consignee_name=%E3%82%A4%E3%83%97%E3%82%B7%E3%83%AD%E3%83%B3%E3%82%BF%E3%83%AD%E3%82%A6&consignee_address=%E6%9D%B1%E4%BA%AC%E9%83%BD%E5%8D%83%E4%BB%A3%E7%94%B0%E5%8C%BA%E5%8D%83%E4%BB%A3%E7%94%B01%E7%95%AA1%E5%8F%B7&consignee_tel=0312345678&orderer_postal=1000001&orderer_name=YAMADA+Taro&orderer_address=%E6%9D%B1%E4%BA%AC%E9%83%BD%E5%8D%83%E4%BB%A3%E7%94%B0%E5%8C%BA%E5%8D%83%E4%BB%A3%E7%94%B01%E7%95%AA1%E5%8F%B7&orderer_tel=0312345678&memo1=memo1&memo2=memo2
|
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
|
+
- Fri, 04 Sep 2020 05:52:38 GMT
|
27
|
+
Server:
|
28
|
+
- Apache
|
29
|
+
Connection:
|
30
|
+
- close
|
31
|
+
Transfer-Encoding:
|
32
|
+
- chunked
|
33
|
+
Content-Type:
|
34
|
+
- text/xml
|
35
|
+
body:
|
36
|
+
encoding: UTF-8
|
37
|
+
string: |
|
38
|
+
<?xml version="1.0" encoding="UTF-8" ?>
|
39
|
+
<Epsilon_result>
|
40
|
+
<result result="1" />
|
41
|
+
<result redirect="https%3A%2F%2Fbeta.epsilon.jp%2Fcgi-bin%2Forder%2Fmethod_select3.cgi%3Ftrans_code%3DIOnPh3Psm7k86" />
|
42
|
+
</Epsilon_result>
|
43
|
+
recorded_at: Fri, 04 Sep 2020 05:52:38 GMT
|
44
|
+
recorded_with: VCR 6.0.0
|
@@ -0,0 +1,45 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://beta.epsilon.jp/cgi-bin/order/cancel_payment.cgi
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: contract_code=&order_number=invalid_order_number
|
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
|
+
- Mon, 20 Jul 2020 02:48:28 GMT
|
27
|
+
Server:
|
28
|
+
- Apache
|
29
|
+
Connection:
|
30
|
+
- close
|
31
|
+
Transfer-Encoding:
|
32
|
+
- chunked
|
33
|
+
Content-Type:
|
34
|
+
- text/xml; charset=CP932
|
35
|
+
body:
|
36
|
+
encoding: UTF-8
|
37
|
+
string: |-
|
38
|
+
<?xml version="1.0" encoding="x-sjis-cp932"?>
|
39
|
+
<Epsilon_result>
|
40
|
+
<result err_code="607" />
|
41
|
+
<result err_detail="%8C_%96%F1%83R%81%5B%83h%8C%60%8E%AE%83G%83%89%81%5B" />
|
42
|
+
<result result="9" />
|
43
|
+
</Epsilon_result>
|
44
|
+
recorded_at: Mon, 20 Jul 2020 02:48:29 GMT
|
45
|
+
recorded_with: VCR 6.0.0
|
@@ -0,0 +1,45 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://beta.epsilon.jp/cgi-bin/order/cancel_payment.cgi
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: contract_code=[CONTRACT_CODE]&order_number=595213151
|
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
|
+
- Mon, 20 Jul 2020 02:56:42 GMT
|
27
|
+
Server:
|
28
|
+
- Apache
|
29
|
+
Connection:
|
30
|
+
- close
|
31
|
+
Transfer-Encoding:
|
32
|
+
- chunked
|
33
|
+
Content-Type:
|
34
|
+
- text/xml; charset=CP932
|
35
|
+
body:
|
36
|
+
encoding: UTF-8
|
37
|
+
string: |-
|
38
|
+
<?xml version="1.0" encoding="x-sjis-cp932"?>
|
39
|
+
<Epsilon_result>
|
40
|
+
<result err_code="" />
|
41
|
+
<result err_detail="" />
|
42
|
+
<result result="1" />
|
43
|
+
</Epsilon_result>
|
44
|
+
recorded_at: Mon, 20 Jul 2020 02:56:43 GMT
|
45
|
+
recorded_with: VCR 6.0.0
|
@@ -5,7 +5,7 @@ http_interactions:
|
|
5
5
|
uri: https://beta.epsilon.jp/cgi-bin/order/receive_order3.cgi
|
6
6
|
body:
|
7
7
|
encoding: UTF-8
|
8
|
-
string: contract_code=[CONTRACT_CODE]&user_id=&user_name
|
8
|
+
string: contract_code=[CONTRACT_CODE]&user_id=&user_name=%E5%B1%B1%E7%94%B0+%E5%A4%AA%E9%83%8E&user_mail_add=yamada-taro%40example.com&item_code=ITEM001&item_name=Greate+Product&order_number=O666431&st_code=00000-0000-00000-00010-00000-00000-00000&mission_code=1&item_price=10000&process_code=1&xml=1&delivery_code=99&consignee_postal=1000001&consignee_name=%E3%82%A4%E3%83%97%E3%82%B7%E3%83%AD%E3%83%B3%E3%82%BF%E3%83%AD%E3%82%A6&consignee_address=%E6%9D%B1%E4%BA%AC%E9%83%BD%E5%8D%83%E4%BB%A3%E7%94%B0%E5%8C%BA%E5%8D%83%E4%BB%A3%E7%94%B01%E7%95%AA1%E5%8F%B7&consignee_tel=0312345678&orderer_postal=1000001&orderer_name=YAMADA+Taro&orderer_address=%E6%9D%B1%E4%BA%AC%E9%83%BD%E5%8D%83%E4%BB%A3%E7%94%B0%E5%8C%BA%E5%8D%83%E4%BB%A3%E7%94%B01%E7%95%AA1%E5%8F%B7&orderer_tel=0312345678&memo1=memo1&memo2=memo2&user_tel=0312345678
|
9
9
|
headers:
|
10
10
|
Content-Type:
|
11
11
|
- application/x-www-form-urlencoded
|
@@ -23,7 +23,7 @@ http_interactions:
|
|
23
23
|
message: OK
|
24
24
|
headers:
|
25
25
|
Date:
|
26
|
-
-
|
26
|
+
- Wed, 18 Mar 2020 05:58:06 GMT
|
27
27
|
Server:
|
28
28
|
- Apache
|
29
29
|
Connection:
|
@@ -36,9 +36,9 @@ http_interactions:
|
|
36
36
|
encoding: UTF-8
|
37
37
|
string: "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n <Epsilon_result>\r\n
|
38
38
|
\ <result result=\"0\" />\r\n <result err_code=\"601\" />\r\n <result
|
39
|
-
err_detail=\"%
|
39
|
+
err_detail=\"%83%86%81%5B%83U%81%5BID%82%CC%8C%60%8E%AE%82%AA%88%D9%8F%ED%82%C5%82%B7\"
|
40
40
|
/>\r\n <result memo1=\"memo1\" />\r\n <result memo2=\"memo2\" />\r\n
|
41
41
|
\ </Epsilon_result>\r\n"
|
42
42
|
http_version: null
|
43
|
-
recorded_at:
|
43
|
+
recorded_at: Wed, 18 Mar 2020 05:58:07 GMT
|
44
44
|
recorded_with: VCR 5.1.0
|
@@ -5,7 +5,7 @@ http_interactions:
|
|
5
5
|
uri: https://beta.epsilon.jp/cgi-bin/order/receive_order3.cgi
|
6
6
|
body:
|
7
7
|
encoding: UTF-8
|
8
|
-
string: contract_code=[CONTRACT_CODE]&user_id=
|
8
|
+
string: contract_code=[CONTRACT_CODE]&user_id=U1584510803&user_name=%E5%B1%B1%E7%94%B0+%E5%A4%AA%E9%83%8E&user_mail_add=yamada-taro%40example.com&item_code=ITEM001&item_name=Greate+Product&order_number=O23603867&st_code=00000-0000-00000-00010-00000-00000-00000&mission_code=1&item_price=10000&process_code=1&xml=1&delivery_code=99&consignee_postal=1000001&consignee_name=%E3%82%A4%E3%83%97%E3%82%B7%E3%83%AD%E3%83%B3%E3%82%BF%E3%83%AD%E3%82%A6&consignee_address=%E6%9D%B1%E4%BA%AC%E9%83%BD%E5%8D%83%E4%BB%A3%E7%94%B0%E5%8C%BA%E5%8D%83%E4%BB%A3%E7%94%B01%E7%95%AA1%E5%8F%B7&consignee_tel=0312345678&orderer_postal=1000001&orderer_name=YAMADA+Taro&orderer_address=%E6%9D%B1%E4%BA%AC%E9%83%BD%E5%8D%83%E4%BB%A3%E7%94%B0%E5%8C%BA%E5%8D%83%E4%BB%A3%E7%94%B01%E7%95%AA1%E5%8F%B7&orderer_tel=0312345678&memo1=memo1&memo2=memo2&user_tel=0312345678
|
9
9
|
headers:
|
10
10
|
Content-Type:
|
11
11
|
- application/x-www-form-urlencoded
|
@@ -23,7 +23,7 @@ http_interactions:
|
|
23
23
|
message: OK
|
24
24
|
headers:
|
25
25
|
Date:
|
26
|
-
-
|
26
|
+
- Wed, 18 Mar 2020 05:53:23 GMT
|
27
27
|
Server:
|
28
28
|
- Apache
|
29
29
|
Connection:
|
@@ -38,8 +38,8 @@ http_interactions:
|
|
38
38
|
<?xml version="1.0" encoding="UTF-8" ?>
|
39
39
|
<Epsilon_result>
|
40
40
|
<result result="1" />
|
41
|
-
<result redirect="https%3A%2F%2Fbeta.epsilon.jp%2Fcgi-bin%2Forder%2Fmethod_select3.cgi%3Ftrans_code%
|
41
|
+
<result redirect="https%3A%2F%2Fbeta.epsilon.jp%2Fcgi-bin%2Forder%2Fmethod_select3.cgi%3Ftrans_code%3DITL3uKDMlWg41" />
|
42
42
|
</Epsilon_result>
|
43
43
|
http_version: null
|
44
|
-
recorded_at:
|
44
|
+
recorded_at: Wed, 18 Mar 2020 05:53:25 GMT
|
45
45
|
recorded_with: VCR 5.1.0
|
@@ -0,0 +1,49 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://beta.epsilon.jp/cgi-bin/order/direct_card_payment.cgi
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: contract_code=[CONTRACT_CODE]&user_id=U1591960355&user_name=YAMADA+Taro&user_mail_add=yamada-taro%40example.com&item_code=ITEM001&item_name=Greate+Product&order_number=O35284193&st_code=10000-0000-0000&mission_code=1&item_price=1000&process_code=1&card_number=4242424242424242&expire_y=2021&expire_m=10&card_st_code=&pay_time=&tds_check_code=&user_agent=ActiveMerchant%3A%3AEpsilon-0.9.4&memo1=memo1&memo2=memo2&kari_flag=1
|
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
|
+
- Fri, 12 Jun 2020 11:12:35 GMT
|
27
|
+
Server:
|
28
|
+
- Apache
|
29
|
+
Connection:
|
30
|
+
- close
|
31
|
+
Transfer-Encoding:
|
32
|
+
- chunked
|
33
|
+
Content-Type:
|
34
|
+
- text/xml; charset=CP932
|
35
|
+
body:
|
36
|
+
encoding: UTF-8
|
37
|
+
string: |-
|
38
|
+
<?xml version="1.0" encoding="x-sjis-cp932"?>
|
39
|
+
<Epsilon_result>
|
40
|
+
<result acsurl="" />
|
41
|
+
<result err_code="" />
|
42
|
+
<result err_detail="" />
|
43
|
+
<result kari_flag="1" />
|
44
|
+
<result pareq="" />
|
45
|
+
<result result="1" />
|
46
|
+
<result trans_code="1362123" />
|
47
|
+
</Epsilon_result>
|
48
|
+
recorded_at: Fri, 12 Jun 2020 11:12:37 GMT
|
49
|
+
recorded_with: VCR 6.0.0
|
@@ -0,0 +1,49 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: post
|
5
|
+
uri: https://beta.epsilon.jp/cgi-bin/order/direct_card_payment.cgi
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: contract_code=[CONTRACT_CODE]&user_id=U1591960357&user_name=YAMADA+Taro&user_mail_add=yamada-taro%40example.com&item_code=ITEM001&item_name=Greate+Product&order_number=O37368550&st_code=10000-0000-0000&mission_code=1&item_price=1000&process_code=1&card_number=4242424242424242&expire_y=2021&expire_m=10&card_st_code=&pay_time=&tds_check_code=&user_agent=ActiveMerchant%3A%3AEpsilon-0.9.4&memo1=memo1&memo2=memo2&kari_flag=2
|
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
|
+
- Fri, 12 Jun 2020 11:12:37 GMT
|
27
|
+
Server:
|
28
|
+
- Apache
|
29
|
+
Connection:
|
30
|
+
- close
|
31
|
+
Transfer-Encoding:
|
32
|
+
- chunked
|
33
|
+
Content-Type:
|
34
|
+
- text/xml; charset=CP932
|
35
|
+
body:
|
36
|
+
encoding: UTF-8
|
37
|
+
string: |-
|
38
|
+
<?xml version="1.0" encoding="x-sjis-cp932"?>
|
39
|
+
<Epsilon_result>
|
40
|
+
<result acsurl="" />
|
41
|
+
<result err_code="" />
|
42
|
+
<result err_detail="" />
|
43
|
+
<result kari_flag="0" />
|
44
|
+
<result pareq="" />
|
45
|
+
<result result="1" />
|
46
|
+
<result trans_code="1362124" />
|
47
|
+
</Epsilon_result>
|
48
|
+
recorded_at: Fri, 12 Jun 2020 11:12:39 GMT
|
49
|
+
recorded_with: VCR 6.0.0
|
@@ -24,6 +24,7 @@ class RemoteEpsilonConvenienceStoreGatewayTest < MiniTest::Test
|
|
24
24
|
VCR.use_cassette(:convenience_store_purchase_fail) do
|
25
25
|
response = gateway.purchase(10000, invalid_convenience_store, purchase_detail)
|
26
26
|
assert_equal false, response.success?
|
27
|
+
assert_equal true, response.params["error_detail"].valid_encoding?
|
27
28
|
end
|
28
29
|
end
|
29
30
|
end
|
@@ -20,6 +20,7 @@ class RemoteEpsilonGmoIdGatewayTest < MiniTest::Test
|
|
20
20
|
detail = invalid_gmo_id_purchase_detail
|
21
21
|
response = gateway.purchase(200, detail)
|
22
22
|
assert_equal false, response.success?
|
23
|
+
assert_equal true, response.params["error_detail"].valid_encoding?
|
23
24
|
end
|
24
25
|
end
|
25
26
|
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
class RemoteEpsilonLinkPaymentTest < MiniTest::Test
|
3
|
+
include SamplePaymentMethods
|
4
|
+
|
5
|
+
def gateway
|
6
|
+
@gateway ||= ActiveMerchant::Billing::EpsilonLinkPaymentGateway.new
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_epsilon_link_type_purchase_successful
|
10
|
+
VCR.use_cassette(:epsilon_link_type_purchase_successful) do
|
11
|
+
response = gateway.purchase(10000, valid_epsilon_link_type_purchase_detail)
|
12
|
+
|
13
|
+
assert_equal true, response.success?
|
14
|
+
assert_equal true, !response.params['redirect'].empty?
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_epsilon_link_type_not_sending_delivery_information_purchase_successful
|
19
|
+
VCR.use_cassette(:epsilon_link_type_not_sending_delivery_information_purchase_successful) do
|
20
|
+
response = gateway.purchase(10000, valid_epsilon_link_type_not_sending_delivery_information_purchase_detail, false)
|
21
|
+
|
22
|
+
assert_equal true, response.success?
|
23
|
+
assert_equal true, !response.params['redirect'].empty?
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_epsilon_link_type_purchase_fail
|
28
|
+
VCR.use_cassette(:epsilon_link_type_purchase_fail) do
|
29
|
+
response = gateway.purchase(10000, invalid_epsilon_link_type_purchase_detail)
|
30
|
+
|
31
|
+
assert_equal false, response.success?
|
32
|
+
assert_equal true, response.params["error_detail"].valid_encoding?
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_epsilon_link_type_void_successfull
|
37
|
+
VCR.use_cassette(:epsilon_link_type_void_successfull) do
|
38
|
+
# あらかじめ課金済ステータスの受注がイプシロン側にないと取り消しができないため、課金済の受注をイプシロン側で作成しておいた。
|
39
|
+
# ここでは void の引数として作成済の受注のorder_numberを渡している。
|
40
|
+
# VCRのキャッシュを作成し直す場合は変更しないとエラーとなる。
|
41
|
+
response = gateway.void('595213151')
|
42
|
+
|
43
|
+
assert_equal true, response.success?
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_epsilon_link_type_void_fail
|
48
|
+
VCR.use_cassette(:epsilon_link_type_void_fail) do
|
49
|
+
response = gateway.void('invalid_order_number')
|
50
|
+
|
51
|
+
assert_equal false, response.success?
|
52
|
+
assert_equal true, response.params["error_detail"].valid_encoding?
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -72,10 +72,29 @@ class RemoteEpsilonGatewayTest < MiniTest::Test
|
|
72
72
|
end
|
73
73
|
end
|
74
74
|
|
75
|
+
def test_purchase_with_capture_true_successful
|
76
|
+
VCR.use_cassette(:purchase_with_capture_true_successful) do
|
77
|
+
response = gateway.purchase(1000, valid_credit_card, purchase_detail.merge(capture: true))
|
78
|
+
|
79
|
+
assert_equal true, response.success?
|
80
|
+
assert_equal true, response.params['captured']
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def test_purchase_with_capture_false_successful
|
85
|
+
VCR.use_cassette(:purchase_with_capture_false_successful) do
|
86
|
+
response = gateway.purchase(1000, valid_credit_card, purchase_detail.merge(capture: false))
|
87
|
+
|
88
|
+
assert_equal true, response.success?
|
89
|
+
assert_equal false, response.params['captured']
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
75
93
|
def test_purchase_fail
|
76
94
|
VCR.use_cassette(:purchase_fail) do
|
77
95
|
response = gateway.purchase(10000, invalid_credit_card, purchase_detail)
|
78
96
|
assert_equal false, response.success?
|
97
|
+
assert_equal true, response.params["error_detail"].valid_encoding?
|
79
98
|
end
|
80
99
|
end
|
81
100
|
|
@@ -138,6 +157,7 @@ class RemoteEpsilonGatewayTest < MiniTest::Test
|
|
138
157
|
)
|
139
158
|
|
140
159
|
assert_equal false, response.success?
|
160
|
+
assert_equal true, response.params["error_detail"].valid_encoding?
|
141
161
|
end
|
142
162
|
end
|
143
163
|
|
@@ -239,6 +259,7 @@ class RemoteEpsilonGatewayTest < MiniTest::Test
|
|
239
259
|
invalid_purchase_detail[:user_id] = ''
|
240
260
|
response = gateway.registered_purchase(10000, invalid_purchase_detail)
|
241
261
|
assert_equal false, response.success?
|
262
|
+
assert_equal true, response.params["error_detail"].valid_encoding?
|
242
263
|
end
|
243
264
|
end
|
244
265
|
|
@@ -283,4 +304,27 @@ class RemoteEpsilonGatewayTest < MiniTest::Test
|
|
283
304
|
assert_equal false, response.success?
|
284
305
|
end
|
285
306
|
end
|
307
|
+
|
308
|
+
def test_capture_success
|
309
|
+
detail = purchase_detail
|
310
|
+
|
311
|
+
VCR.use_cassette(:capture_success_authorize) do
|
312
|
+
purchase_response = gateway.purchase(100, valid_credit_card, detail.merge(capture: false))
|
313
|
+
|
314
|
+
assert_equal true, purchase_response.success?
|
315
|
+
assert_equal false, purchase_response.params['captured']
|
316
|
+
end
|
317
|
+
|
318
|
+
VCR.use_cassette(:capture_success) do
|
319
|
+
response = gateway.capture(detail[:order_number])
|
320
|
+
assert_equal true, response.success?
|
321
|
+
end
|
322
|
+
end
|
323
|
+
|
324
|
+
def test_capture_failure
|
325
|
+
VCR.use_cassette(:capture_failure) do
|
326
|
+
response = gateway.capture('1234567890')
|
327
|
+
assert_equal false, response.success?
|
328
|
+
end
|
329
|
+
end
|
286
330
|
end
|
@@ -31,6 +31,7 @@ class RemoteEpsilonVirtualAccountGatewayTest < MiniTest::Test
|
|
31
31
|
VCR.use_cassette(:virtual_account_purchase_fail) do
|
32
32
|
response = gateway.purchase(10000, invalid_purchase_detail)
|
33
33
|
assert_equal false, response.success?
|
34
|
+
assert_equal true, response.params["error_detail"].valid_encoding?
|
34
35
|
end
|
35
36
|
end
|
36
|
-
end
|
37
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -210,20 +210,83 @@ module SamplePaymentMethods
|
|
210
210
|
now = Time.now
|
211
211
|
{
|
212
212
|
user_id: "U#{Time.now.to_i}",
|
213
|
-
user_name: '
|
213
|
+
user_name: '山田 太郎',
|
214
214
|
user_email: 'yamada-taro@example.com',
|
215
|
+
user_tel: '0312345678',
|
215
216
|
item_code: 'ITEM001',
|
216
217
|
item_name: 'Greate Product',
|
217
218
|
order_number: "O#{now.sec}#{now.usec}",
|
219
|
+
st_code: '00000-0000-00000-00010-00000-00000-00000',
|
218
220
|
memo1: 'memo1',
|
219
221
|
memo2: 'memo2',
|
220
|
-
consignee_postal: '
|
222
|
+
consignee_postal: '1000001',
|
223
|
+
consignee_name: 'イプシロンタロウ',
|
224
|
+
consignee_address: '東京都千代田区千代田1番1号',
|
225
|
+
consignee_tel: '0312345678',
|
226
|
+
orderer_postal: '1000001',
|
227
|
+
orderer_name: 'YAMADA Taro',
|
228
|
+
orderer_address: '東京都千代田区千代田1番1号',
|
229
|
+
orderer_tel: '0312345678',
|
230
|
+
}
|
231
|
+
end
|
232
|
+
|
233
|
+
def valid_epsilon_link_type_purchase_detail
|
234
|
+
now = Time.now
|
235
|
+
{
|
236
|
+
user_id: "U#{Time.now.to_i}",
|
237
|
+
user_name: '山田 太郎',
|
238
|
+
user_email: 'yamada-taro@example.com',
|
239
|
+
item_code: 'ITEM001',
|
240
|
+
item_name: 'Greate Product',
|
241
|
+
order_number: "O#{now.sec}#{now.usec}",
|
242
|
+
st_code: '00000-0000-01000-00000-00000-00000-00000',
|
243
|
+
memo1: 'memo1',
|
244
|
+
memo2: 'memo2',
|
245
|
+
consignee_postal: '1000001',
|
246
|
+
consignee_name: 'イプシロンタロウ',
|
247
|
+
consignee_address: '東京都千代田区千代田1番1号',
|
248
|
+
consignee_tel: '0312345678',
|
249
|
+
orderer_postal: '1000001',
|
250
|
+
orderer_name: 'YAMADA Taro',
|
251
|
+
orderer_address: '東京都千代田区千代田1番1号',
|
252
|
+
orderer_tel: '0312345678',
|
253
|
+
}
|
254
|
+
end
|
255
|
+
|
256
|
+
def valid_epsilon_link_type_not_sending_delivery_information_purchase_detail
|
257
|
+
now = Time.now
|
258
|
+
{
|
259
|
+
user_id: "U#{Time.now.to_i}",
|
260
|
+
user_name: '山田 太郎',
|
261
|
+
user_email: 'yamada-taro@example.com',
|
262
|
+
item_code: 'ITEM001',
|
263
|
+
item_name: 'Greate Product',
|
264
|
+
order_number: "O#{now.sec}#{now.usec}",
|
265
|
+
st_code: '00000-0000-01000-00000-00000-00000-00000',
|
266
|
+
memo1: 'memo1',
|
267
|
+
memo2: 'memo2',
|
268
|
+
}
|
269
|
+
end
|
270
|
+
|
271
|
+
def invalid_epsilon_link_type_purchase_detail
|
272
|
+
now = Time.now
|
273
|
+
{
|
274
|
+
user_id: "U#{Time.now.to_i}",
|
275
|
+
user_name: '山田 太郎',
|
276
|
+
user_email: 'yamada-taro@example.com',
|
277
|
+
item_code: 'ITEM001',
|
278
|
+
item_name: 'Greate Product',
|
279
|
+
order_number: "O#{now.sec}#{now.usec}",
|
280
|
+
st_code: 'invalid_id',
|
281
|
+
memo1: 'memo1',
|
282
|
+
memo2: 'memo2',
|
283
|
+
consignee_postal: '1000001',
|
221
284
|
consignee_name: 'イプシロンタロウ',
|
222
|
-
consignee_address: '
|
285
|
+
consignee_address: '東京都千代田区千代田1番1号',
|
223
286
|
consignee_tel: '0312345678',
|
224
|
-
orderer_postal: '
|
287
|
+
orderer_postal: '1000001',
|
225
288
|
orderer_name: 'YAMADA Taro',
|
226
|
-
orderer_address: '
|
289
|
+
orderer_address: '東京都千代田区千代田1番1号',
|
227
290
|
orderer_tel: '0312345678',
|
228
291
|
}
|
229
292
|
end
|
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.
|
4
|
+
version: 0.12.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-
|
11
|
+
date: 2020-09-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemerchant
|
@@ -172,8 +172,8 @@ files:
|
|
172
172
|
- lib/active_merchant/billing/gateways/epsilon/epsilon_mission_code.rb
|
173
173
|
- lib/active_merchant/billing/gateways/epsilon/epsilon_process_code.rb
|
174
174
|
- lib/active_merchant/billing/gateways/epsilon_convenience_store.rb
|
175
|
-
- lib/active_merchant/billing/gateways/epsilon_gmo_after.rb
|
176
175
|
- lib/active_merchant/billing/gateways/epsilon_gmo_id.rb
|
176
|
+
- lib/active_merchant/billing/gateways/epsilon_link_payment.rb
|
177
177
|
- lib/active_merchant/billing/gateways/epsilon_virtual_account.rb
|
178
178
|
- lib/active_merchant/billing/gateways/response_parser.rb
|
179
179
|
- lib/active_merchant/epsilon.rb
|
@@ -181,10 +181,18 @@ files:
|
|
181
181
|
- test/fixtures/vcr_cassettes/autheticate_three_d_secure_card_successful.yml
|
182
182
|
- test/fixtures/vcr_cassettes/cancel_recurring_fail.yml
|
183
183
|
- test/fixtures/vcr_cassettes/cancel_recurring_successful.yml
|
184
|
+
- test/fixtures/vcr_cassettes/capture_failure.yml
|
185
|
+
- test/fixtures/vcr_cassettes/capture_success.yml
|
186
|
+
- test/fixtures/vcr_cassettes/capture_success_authorize.yml
|
184
187
|
- test/fixtures/vcr_cassettes/change_recurring_amount_failure.yml
|
185
188
|
- test/fixtures/vcr_cassettes/change_recurring_amount_successful.yml
|
186
189
|
- test/fixtures/vcr_cassettes/convenience_store_purchase_fail.yml
|
187
190
|
- test/fixtures/vcr_cassettes/convenience_store_purchase_successful.yml
|
191
|
+
- test/fixtures/vcr_cassettes/epsilon_link_type_not_sending_delivery_information_purchase_successful.yml
|
192
|
+
- test/fixtures/vcr_cassettes/epsilon_link_type_purchase_fail.yml
|
193
|
+
- test/fixtures/vcr_cassettes/epsilon_link_type_purchase_successful.yml
|
194
|
+
- test/fixtures/vcr_cassettes/epsilon_link_type_void_fail.yml
|
195
|
+
- test/fixtures/vcr_cassettes/epsilon_link_type_void_successfull.yml
|
188
196
|
- test/fixtures/vcr_cassettes/find_order_failure.yml
|
189
197
|
- test/fixtures/vcr_cassettes/find_order_success.yml
|
190
198
|
- test/fixtures/vcr_cassettes/find_user_failure.yml
|
@@ -198,6 +206,8 @@ files:
|
|
198
206
|
- test/fixtures/vcr_cassettes/installment_purchase_successful.yml
|
199
207
|
- test/fixtures/vcr_cassettes/purchase_fail.yml
|
200
208
|
- test/fixtures/vcr_cassettes/purchase_successful.yml
|
209
|
+
- test/fixtures/vcr_cassettes/purchase_with_capture_false_successful.yml
|
210
|
+
- test/fixtures/vcr_cassettes/purchase_with_capture_true_successful.yml
|
201
211
|
- test/fixtures/vcr_cassettes/purchase_with_three_d_secure_card_successful.yml
|
202
212
|
- test/fixtures/vcr_cassettes/purchase_with_verification_value.yml
|
203
213
|
- test/fixtures/vcr_cassettes/recurring_fail.yml
|
@@ -220,6 +230,7 @@ files:
|
|
220
230
|
- test/remote/gateways/remote_epsilon_convenience_store_test.rb
|
221
231
|
- test/remote/gateways/remote_epsilon_gmo_after_test.rb
|
222
232
|
- test/remote/gateways/remote_epsilon_gmo_id_test.rb
|
233
|
+
- test/remote/gateways/remote_epsilon_link_payment_test.rb
|
223
234
|
- test/remote/gateways/remote_epsilon_test.rb
|
224
235
|
- test/remote/gateways/remote_epsilon_virtual_account_test.rb
|
225
236
|
- test/test_helper.rb
|
@@ -252,10 +263,18 @@ test_files:
|
|
252
263
|
- test/fixtures/vcr_cassettes/autheticate_three_d_secure_card_successful.yml
|
253
264
|
- test/fixtures/vcr_cassettes/cancel_recurring_fail.yml
|
254
265
|
- test/fixtures/vcr_cassettes/cancel_recurring_successful.yml
|
266
|
+
- test/fixtures/vcr_cassettes/capture_failure.yml
|
267
|
+
- test/fixtures/vcr_cassettes/capture_success.yml
|
268
|
+
- test/fixtures/vcr_cassettes/capture_success_authorize.yml
|
255
269
|
- test/fixtures/vcr_cassettes/change_recurring_amount_failure.yml
|
256
270
|
- test/fixtures/vcr_cassettes/change_recurring_amount_successful.yml
|
257
271
|
- test/fixtures/vcr_cassettes/convenience_store_purchase_fail.yml
|
258
272
|
- test/fixtures/vcr_cassettes/convenience_store_purchase_successful.yml
|
273
|
+
- test/fixtures/vcr_cassettes/epsilon_link_type_not_sending_delivery_information_purchase_successful.yml
|
274
|
+
- test/fixtures/vcr_cassettes/epsilon_link_type_purchase_fail.yml
|
275
|
+
- test/fixtures/vcr_cassettes/epsilon_link_type_purchase_successful.yml
|
276
|
+
- test/fixtures/vcr_cassettes/epsilon_link_type_void_fail.yml
|
277
|
+
- test/fixtures/vcr_cassettes/epsilon_link_type_void_successfull.yml
|
259
278
|
- test/fixtures/vcr_cassettes/find_order_failure.yml
|
260
279
|
- test/fixtures/vcr_cassettes/find_order_success.yml
|
261
280
|
- test/fixtures/vcr_cassettes/find_user_failure.yml
|
@@ -269,6 +288,8 @@ test_files:
|
|
269
288
|
- test/fixtures/vcr_cassettes/installment_purchase_successful.yml
|
270
289
|
- test/fixtures/vcr_cassettes/purchase_fail.yml
|
271
290
|
- test/fixtures/vcr_cassettes/purchase_successful.yml
|
291
|
+
- test/fixtures/vcr_cassettes/purchase_with_capture_false_successful.yml
|
292
|
+
- test/fixtures/vcr_cassettes/purchase_with_capture_true_successful.yml
|
272
293
|
- test/fixtures/vcr_cassettes/purchase_with_three_d_secure_card_successful.yml
|
273
294
|
- test/fixtures/vcr_cassettes/purchase_with_verification_value.yml
|
274
295
|
- test/fixtures/vcr_cassettes/recurring_fail.yml
|
@@ -291,6 +312,7 @@ test_files:
|
|
291
312
|
- test/remote/gateways/remote_epsilon_convenience_store_test.rb
|
292
313
|
- test/remote/gateways/remote_epsilon_gmo_after_test.rb
|
293
314
|
- test/remote/gateways/remote_epsilon_gmo_id_test.rb
|
315
|
+
- test/remote/gateways/remote_epsilon_link_payment_test.rb
|
294
316
|
- test/remote/gateways/remote_epsilon_test.rb
|
295
317
|
- test/remote/gateways/remote_epsilon_virtual_account_test.rb
|
296
318
|
- test/test_helper.rb
|
@@ -1,38 +0,0 @@
|
|
1
|
-
module ActiveMerchant #:nodoc:
|
2
|
-
module Billing #:nodoc:
|
3
|
-
class EpsilonGmoAfterGateway < EpsilonBaseGateway
|
4
|
-
def purchase(amount, detail = {})
|
5
|
-
params = {
|
6
|
-
contract_code: self.contract_code,
|
7
|
-
user_id: detail[:user_id],
|
8
|
-
user_name: detail[:user_name],
|
9
|
-
user_mail_add: detail[:user_email],
|
10
|
-
item_code: detail[:item_code],
|
11
|
-
item_name: detail[:item_name],
|
12
|
-
order_number: detail[:order_number],
|
13
|
-
st_code: '00000-0000-00000-00010-00000-00000-00000',
|
14
|
-
mission_code: EpsilonMissionCode::PURCHASE,
|
15
|
-
item_price: amount,
|
16
|
-
process_code: EpsilonProcessCode::FIRST,
|
17
|
-
xml: 1, # 応答形式。1: xml形式を固定
|
18
|
-
delivery_code: 99, # 配送区分。99で固定
|
19
|
-
consignee_postal: detail[:consignee_postal],
|
20
|
-
consignee_name: detail[:consignee_name],
|
21
|
-
consignee_address: detail[:consignee_address],
|
22
|
-
consignee_tel: detail[:consignee_tel],
|
23
|
-
orderer_postal: detail[:orderer_postal],
|
24
|
-
orderer_name: detail[:orderer_name],
|
25
|
-
orderer_address: detail[:orderer_address],
|
26
|
-
orderer_tel: detail[:orderer_tel],
|
27
|
-
version: 2, # 推奨文字コードがUTF8の方を指定
|
28
|
-
}
|
29
|
-
|
30
|
-
params[:memo1] = detail[:memo1] if detail.has_key?(:memo1)
|
31
|
-
params[:memo2] = detail[:memo2] if detail.has_key?(:memo2)
|
32
|
-
params[:user_tel] = detail[:user_tel] if detail.has_key?(:user_tel)
|
33
|
-
|
34
|
-
commit('receive_order3.cgi', params, [:redirect])
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|