gmo 0.2.6 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.gitignore +1 -0
- data/.travis.yml +5 -5
- data/CHANGELOG.md +43 -1
- data/fixtures/vcr_cassettes/GMO_Payment_RemittanceAPI/_cancel_deposit_gets_data_about_a_deposit.yml +38 -0
- data/fixtures/vcr_cassettes/GMO_Payment_RemittanceAPI/_cancel_mail_deposit_gets_data_about_a_mail_deposit.yml +38 -0
- data/fixtures/vcr_cassettes/GMO_Payment_RemittanceAPI/_create_account_gets_data_about_an_account.yml +38 -0
- data/fixtures/vcr_cassettes/GMO_Payment_RemittanceAPI/_create_deposit_gets_data_about_a_deposit.yml +38 -0
- data/fixtures/vcr_cassettes/GMO_Payment_RemittanceAPI/_create_mail_deposit_gets_data_about_a_mail_deposit.yml +38 -0
- data/fixtures/vcr_cassettes/GMO_Payment_RemittanceAPI/_delete_account_gets_data_about_an_account.yml +38 -0
- data/fixtures/vcr_cassettes/GMO_Payment_RemittanceAPI/_search_account_gets_data_about_an_account.yml +38 -0
- data/fixtures/vcr_cassettes/GMO_Payment_RemittanceAPI/_search_balance_gets_data_about_balance.yml +38 -0
- data/fixtures/vcr_cassettes/GMO_Payment_RemittanceAPI/_search_deposit_gets_data_about_a_deposit.yml +38 -0
- data/fixtures/vcr_cassettes/GMO_Payment_RemittanceAPI/_search_mail_deposit_gets_data_about_a_mail_deposit.yml +38 -0
- data/fixtures/vcr_cassettes/GMO_Payment_RemittanceAPI/_update_account_gets_data_about_an_account.yml +38 -0
- data/fixtures/vcr_cassettes/GMO_Payment_ShopAPI/_change_tran_brandtoken_gets_data_about_order.yml +108 -0
- data/fixtures/vcr_cassettes/GMO_Payment_ShopAPI/_cvs_cancel_gets_data_about_a_transaction.yml +63 -0
- data/fixtures/vcr_cassettes/GMO_Payment_ShopAPI/_entry_tran_brandtoken_gets_data_about_a_transaction.yml +38 -0
- data/fixtures/vcr_cassettes/GMO_Payment_ShopAPI/_entry_tran_docomo_gets_data_about_a_transaction.yml +35 -0
- data/fixtures/vcr_cassettes/GMO_Payment_ShopAPI/_entry_tran_linepay_gets_data_about_a_transaction.yml +36 -0
- data/fixtures/vcr_cassettes/GMO_Payment_ShopAPI/_entry_tran_rakuten_id_gets_data_about_a_transaction.yml +35 -0
- data/fixtures/vcr_cassettes/GMO_Payment_ShopAPI/_exec_tran_brandtoken_gets_data_about_a_transaction.yml +73 -0
- data/fixtures/vcr_cassettes/GMO_Payment_ShopAPI/_exec_tran_brandtoken_parameter_contains_Japanese_characters_should_correctly_handle_Japanese.yml +73 -0
- data/fixtures/vcr_cassettes/GMO_Payment_ShopAPI/_exec_tran_docomo_gets_data_about_a_transaction.yml +67 -0
- data/fixtures/vcr_cassettes/GMO_Payment_ShopAPI/_exec_tran_doesn_t_require_card_info_if_token_is_present.yml +69 -0
- data/fixtures/vcr_cassettes/GMO_Payment_ShopAPI/_exec_tran_linepay_gets_data_about_a_transaction.yml +69 -0
- data/fixtures/vcr_cassettes/GMO_Payment_ShopAPI/_exec_tran_rakuten_id_gets_data_about_a_transaction.yml +67 -0
- data/fixtures/vcr_cassettes/GMO_Payment_ShopAPI/_refund_tran_brandtoken_gets_data_about_a_transaction.yml +108 -0
- data/fixtures/vcr_cassettes/GMO_Payment_ShopAPI/_sales_tran_brandtoken_gets_data_about_a_transaction.yml +143 -0
- data/fixtures/vcr_cassettes/GMO_Payment_ShopAPI/_void_tran_brandtoken_gets_data_about_order.yml +108 -0
- data/fixtures/vcr_cassettes/GMO_Payment_ShopAndSiteAPI/_exec_tran_brandtoken_got_data.yml +73 -0
- data/fixtures/vcr_cassettes/GMO_Payment_ShopAndSiteAPI/_trade_brandtoken_got_data.yml +108 -0
- data/fixtures/vcr_cassettes/GMO_Payment_SiteAPI/_delete_brandtoken_gets_data_about_a_brandtoken.yml +73 -0
- data/fixtures/vcr_cassettes/GMO_Payment_SiteAPI/_save_card_doesn_t_require_card_info_if_token_is_present.yml +36 -0
- data/fixtures/vcr_cassettes/GMO_Payment_SiteAPI/_search_brandtoken_gets_data_about_a_brandtoken.yml +74 -0
- data/fixtures/vcr_cassettes/GMO_Payment_SiteAPI/_search_card_detail_by_member_id_gets_data_about_card_detail.yml +36 -0
- data/gmo.gemspec +1 -1
- data/lib/gmo.rb +6 -1
- data/lib/gmo/const.rb +2509 -3
- data/lib/gmo/errors.rb +22 -4
- data/lib/gmo/remittance_api.rb +331 -0
- data/lib/gmo/shop_and_site_api.rb +77 -2
- data/lib/gmo/shop_api.rb +329 -8
- data/lib/gmo/site_api.rb +75 -4
- data/lib/gmo/version.rb +2 -2
- data/spec/gmo/{error_spec.rb → errors_spec.rb} +11 -2
- data/spec/gmo/remittance_api_spec.rb +506 -0
- data/spec/gmo/shop_and_site_api_spec.rb +87 -7
- data/spec/gmo/shop_api_spec.rb +566 -109
- data/spec/gmo/site_api_spec.rb +120 -23
- data/spec/support/config.example.yml +8 -1
- data/spec/support/config.yml +8 -1
- data/spec/support/config_loader.rb +1 -1
- data/spec/support/vcr.rb +12 -3
- metadata +44 -11
data/lib/gmo/shop_api.rb
CHANGED
@@ -6,7 +6,9 @@
|
|
6
6
|
# gmo = GMO::Payment::ShopAPI.new({
|
7
7
|
# shop_id: "foo",
|
8
8
|
# shop_pass: "bar",
|
9
|
-
# host:
|
9
|
+
# host: "mul-pay.com",
|
10
|
+
# locale: "ja"
|
11
|
+
|
10
12
|
# })
|
11
13
|
# result = gmo.post_request("EntryTran.idPass", options)
|
12
14
|
module GMO
|
@@ -18,11 +20,12 @@ module GMO
|
|
18
20
|
@shop_id = options[:shop_id]
|
19
21
|
@shop_pass = options[:shop_pass]
|
20
22
|
@host = options[:host]
|
23
|
+
@locale = options.fetch(:locale, GMO::Const::DEFAULT_LOCALE)
|
21
24
|
unless @shop_id && @shop_pass && @host
|
22
25
|
raise ArgumentError, "Initialize must receive a hash with :shop_id, :shop_pass and either :host! (received #{options.inspect})"
|
23
26
|
end
|
24
27
|
end
|
25
|
-
attr_reader :shop_id, :shop_pass, :host
|
28
|
+
attr_reader :shop_id, :shop_pass, :host, :locale
|
26
29
|
|
27
30
|
## 2.1.2.1.取引登録
|
28
31
|
# これ以降の決済取引で必要となる取引 ID と取引パスワードの発行を行い、取引を開始します。
|
@@ -50,7 +53,6 @@ module GMO
|
|
50
53
|
post_request name, options
|
51
54
|
end
|
52
55
|
|
53
|
-
|
54
56
|
# 【コンビニ払い】
|
55
57
|
# 2.1.2.1. 取引登録
|
56
58
|
# これ以降の決済取引で必要となる取引IDと取引パスワードの発行を行い、取引を開始します。
|
@@ -71,6 +73,91 @@ module GMO
|
|
71
73
|
post_request name, options
|
72
74
|
end
|
73
75
|
|
76
|
+
# 【LINE Pay決済】
|
77
|
+
# 20.1.2.1. 取引登録
|
78
|
+
# これ以降の決済取引で必要となる取引IDと取引パスワードの発行を行い、取引を開始します。
|
79
|
+
def entry_tran_linepay(options = {})
|
80
|
+
name = "EntryTranLinepay.idPass"
|
81
|
+
required = [:order_id, :job_cd, :amount]
|
82
|
+
assert_required_options(required, options)
|
83
|
+
post_request name, options
|
84
|
+
end
|
85
|
+
|
86
|
+
### @params ###
|
87
|
+
# OrderID
|
88
|
+
# JobCd
|
89
|
+
# Amount
|
90
|
+
# ItemCode
|
91
|
+
# Tax
|
92
|
+
### @return ###
|
93
|
+
# AccessID
|
94
|
+
# AccessPass
|
95
|
+
### example ###
|
96
|
+
# gmo.entry_tran_brandtoken({
|
97
|
+
# order_id: "ord12345",
|
98
|
+
# job_cd: "AUTH",
|
99
|
+
# item_code: "1000001",
|
100
|
+
# tax: "0001001",
|
101
|
+
# amount: 100
|
102
|
+
# })
|
103
|
+
# => {"AccessID"=>"139f8ec33a07c55f406937c52ce4473d", "AccessPass"=>"2689b204d2c17192fa35f9269fa7e744"}
|
104
|
+
def entry_tran_brandtoken(options = {})
|
105
|
+
name = "EntryTranBrandtoken.idPass"
|
106
|
+
required = [:order_id, :job_cd, :amount]
|
107
|
+
assert_required_options(required, options)
|
108
|
+
post_request name, options
|
109
|
+
end
|
110
|
+
|
111
|
+
### @params ###
|
112
|
+
# OrderID
|
113
|
+
# JobCd
|
114
|
+
# Amount
|
115
|
+
# ItemCode
|
116
|
+
# Tax
|
117
|
+
### @return ###
|
118
|
+
# AccessID
|
119
|
+
# AccessPass
|
120
|
+
### example ###
|
121
|
+
# gmo.entry_tran_rakuten_id({
|
122
|
+
# order_id: "ord12345",
|
123
|
+
# job_cd: "AUTH",
|
124
|
+
# item_code: "1000001",
|
125
|
+
# tax: "0001001",
|
126
|
+
# amount: 100
|
127
|
+
# })
|
128
|
+
# => {"AccessID"=>"139f8ec33a07c55f406937c52ce4473d", "AccessPass"=>"2689b204d2c17192fa35f9269fa7e744"}
|
129
|
+
def entry_tran_rakuten_id(options = {})
|
130
|
+
name = "EntryTranRakutenId.idPass"
|
131
|
+
required = [:order_id, :job_cd, :amount]
|
132
|
+
assert_required_options(required, options)
|
133
|
+
post_request name, options
|
134
|
+
end
|
135
|
+
|
136
|
+
### @params ###
|
137
|
+
# OrderID
|
138
|
+
# JobCd
|
139
|
+
# Amount
|
140
|
+
# ItemCode
|
141
|
+
# Tax
|
142
|
+
### @return ###
|
143
|
+
# AccessID
|
144
|
+
# AccessPass
|
145
|
+
### example ###
|
146
|
+
# gmo.entry_tran_docomo({
|
147
|
+
# order_id: "ord12345",
|
148
|
+
# job_cd: "AUTH",
|
149
|
+
# item_code: "1000001",
|
150
|
+
# tax: "0001001",
|
151
|
+
# amount: 100
|
152
|
+
# })
|
153
|
+
# => {"AccessID"=>"139f8ec33a07c55f406937c52ce4473d", "AccessPass"=>"2689b204d2c17192fa35f9269fa7e744"}
|
154
|
+
def entry_tran_docomo(options = {})
|
155
|
+
name = "EntryTranDocomo.idPass"
|
156
|
+
required = [:order_id, :job_cd, :amount]
|
157
|
+
assert_required_options(required, options)
|
158
|
+
post_request name, options
|
159
|
+
end
|
160
|
+
|
74
161
|
## 2.2.2.2.決済実行
|
75
162
|
# 指定されたサイトに会員を登録します。
|
76
163
|
# return
|
@@ -135,7 +222,11 @@ module GMO
|
|
135
222
|
# "ClientField3" => options[:client_field_3],
|
136
223
|
# "ClientFieldFlag" => client_field_flg
|
137
224
|
# }
|
138
|
-
|
225
|
+
if options[:token].nil?
|
226
|
+
required = [:access_id, :access_pass, :order_id, :card_no, :expire]
|
227
|
+
else
|
228
|
+
required = [:access_id, :access_pass, :token]
|
229
|
+
end
|
139
230
|
assert_required_options(required, options)
|
140
231
|
post_request name, options
|
141
232
|
end
|
@@ -145,7 +236,7 @@ module GMO
|
|
145
236
|
# お客様が入力した情報で後続の決済センターと通信を行い決済を実施し、結果を返します。
|
146
237
|
def exec_tran_cvs(options = {})
|
147
238
|
name = "ExecTranCvs.idPass"
|
148
|
-
required = [:access_id, :access_pass, :order_id, :convenience, :customer_name, :tel_no, :receipts_disp_11, :receipts_disp_12, :receipts_disp_13]
|
239
|
+
required = [:access_id, :access_pass, :order_id, :convenience, :customer_name, :customer_kana, :tel_no, :receipts_disp_11, :receipts_disp_12, :receipts_disp_13]
|
149
240
|
assert_required_options(required, options)
|
150
241
|
post_request name, options
|
151
242
|
end
|
@@ -160,6 +251,77 @@ module GMO
|
|
160
251
|
post_request name, options
|
161
252
|
end
|
162
253
|
|
254
|
+
# 【LINE Pay決済】
|
255
|
+
# 20.1.2.2. 決済実行
|
256
|
+
def exec_tran_linepay(options = {})
|
257
|
+
name = "ExecTranLinepay.idPass"
|
258
|
+
required = [:access_id, :access_pass, :order_id, :ret_url, :error_rcv_url, :product_name]
|
259
|
+
assert_required_options(required, options)
|
260
|
+
post_request name, options
|
261
|
+
end
|
262
|
+
|
263
|
+
# 【楽天ペイ決済】
|
264
|
+
# 18.1.2.2. 決済実行
|
265
|
+
def exec_tran_rakuten_id(options = {})
|
266
|
+
name = "ExecTranRakutenId.idPass"
|
267
|
+
required = [:access_id, :access_pass, :order_id]
|
268
|
+
assert_required_options(required, options)
|
269
|
+
post_request name, options
|
270
|
+
end
|
271
|
+
|
272
|
+
# 【ドコモ払い決済】
|
273
|
+
# 18.1.2.2. 決済実行
|
274
|
+
def exec_tran_docomo(options = {})
|
275
|
+
name = "ExecTranDocomo.idPass"
|
276
|
+
required = [:access_id, :access_pass, :order_id]
|
277
|
+
assert_required_options(required, options)
|
278
|
+
post_request name, options
|
279
|
+
end
|
280
|
+
|
281
|
+
### @params ###
|
282
|
+
# AccessID
|
283
|
+
# AccessPass
|
284
|
+
# OrderID
|
285
|
+
# TokenType
|
286
|
+
# Token
|
287
|
+
# MemberID
|
288
|
+
# SeqMode
|
289
|
+
# TokenSeq
|
290
|
+
# ClientField1
|
291
|
+
# ClientField2
|
292
|
+
# ClientField3
|
293
|
+
### @return ###
|
294
|
+
# Status
|
295
|
+
# OrderID
|
296
|
+
# Forward
|
297
|
+
# Approve
|
298
|
+
# TranID
|
299
|
+
# TranDate
|
300
|
+
# ClientField1
|
301
|
+
# ClientField2
|
302
|
+
# ClientField3
|
303
|
+
### example ###
|
304
|
+
# gmo.exec_tran_brandtoken({
|
305
|
+
# order_id: "597ae8c36120b23a3c00014e",
|
306
|
+
# access_id: "139f8ec33a07c55f406937c52ce4473d",
|
307
|
+
# access_pass: "2689b204d2c17192fa35f9269fa7e744",
|
308
|
+
# token_type: :apple_pay,
|
309
|
+
# token: <Base64 encoded payment data>,
|
310
|
+
# seq_mode: "1",
|
311
|
+
# token_seq: 1001,
|
312
|
+
# client_field_1: "Custom field value 1",
|
313
|
+
# client_field_2: "Custom field value 2",
|
314
|
+
# client_field_3: "Custom field value 3"
|
315
|
+
# })
|
316
|
+
# => {"Status"=>"CAPTURE", "OrderID"=>"597ae8c36120b23a3c00014e", "Forward"=>"2a99663", "Approve"=>"5487394", "TranID"=>"1707281634111111111111771216", "TranDate"=>"20170728163453", "ClientField1"=>"Custom field value 1", "ClientField2"=>"Custom field value 2", "ClientField3"=>"Custom field value 3"}
|
317
|
+
def exec_tran_brandtoken(options = {})
|
318
|
+
name = "ExecTranBrandtoken.idPass"
|
319
|
+
options[:token_type] = GMO::Const::TOKEN_TYPES_MAP[options[:token_type]]
|
320
|
+
required = [:access_id, :access_pass, :order_id]
|
321
|
+
assert_required_options(required, options)
|
322
|
+
post_request name, options
|
323
|
+
end
|
324
|
+
|
163
325
|
## 2.14.2.1.決済変更
|
164
326
|
# 仮売上の決済に対して実売上を行います。尚、実行時に仮売上時との金額チェックを行います。
|
165
327
|
# /payment/AlterTran.idPass
|
@@ -204,8 +366,8 @@ module GMO
|
|
204
366
|
# gmo.change_tran({
|
205
367
|
# access_id: "a41d83f1f4c908baeda04e6dc03e300c",
|
206
368
|
# access_pass: "d72eca02e28c88f98b9341a33ba46d5d",
|
207
|
-
#
|
208
|
-
#
|
369
|
+
# job_cd: "CAPTURE",
|
370
|
+
# amount: 100
|
209
371
|
# })
|
210
372
|
def change_tran(options = {})
|
211
373
|
name = "ChangeTran.idPass"
|
@@ -214,6 +376,133 @@ module GMO
|
|
214
376
|
post_request name, options
|
215
377
|
end
|
216
378
|
|
379
|
+
### @params ###
|
380
|
+
# AccessID
|
381
|
+
# AccessPass
|
382
|
+
# OrderID
|
383
|
+
# JobCd
|
384
|
+
# Amount
|
385
|
+
# Tax
|
386
|
+
### @return ###
|
387
|
+
# AccessID
|
388
|
+
# AccessPass
|
389
|
+
# Status
|
390
|
+
# Forward
|
391
|
+
# Approve
|
392
|
+
# TranID
|
393
|
+
# TranDate
|
394
|
+
### example ###
|
395
|
+
# gmo.change_tran_brandtoken({
|
396
|
+
# access_id: "21170701482c86c3b88ff72b83bfd363",
|
397
|
+
# access_pass: "51f36feba120de1e6e29532e5a3a5e3e",
|
398
|
+
# order_id: "ord10001",
|
399
|
+
# job_cd: "CAPTURE",
|
400
|
+
# amount: 2000
|
401
|
+
# })
|
402
|
+
# => {"AccessID"=>"21170701482c86c3b88ff72b83bfd363", "AccessPass"=>"51f36feba120de1e6e29532e5a3a5e3e", "Status"=>"CAPTURE", "Forward"=>"2a99663", "Approve"=>"5538477", "TranID"=>"1707311633111111111111771224", "TranDate"=>"20170731163343"}
|
403
|
+
def change_tran_brandtoken(options = {})
|
404
|
+
name = "ChangeTranBrandtoken.idPass"
|
405
|
+
required = [:access_id, :access_pass, :order_id, :job_cd, :amount]
|
406
|
+
assert_required_options(required, options)
|
407
|
+
post_request name, options
|
408
|
+
end
|
409
|
+
|
410
|
+
### @params ###
|
411
|
+
# AccessID
|
412
|
+
# AccessPass
|
413
|
+
# OrderID
|
414
|
+
### @return ###
|
415
|
+
# AccessID
|
416
|
+
# AccessPass
|
417
|
+
# Status
|
418
|
+
# Forward
|
419
|
+
# Approve
|
420
|
+
# TranID
|
421
|
+
# TranDate
|
422
|
+
### example ###
|
423
|
+
# gmo.void_tran_brandtoken({
|
424
|
+
# access_id: "139f8ec33a07c55f406937c52ce4473d",
|
425
|
+
# access_pass: "2689b204d2c17192fa35f9269fa7e744",
|
426
|
+
# order_id: "597ae8c36120b23a3c00014e"
|
427
|
+
# })
|
428
|
+
# => {"AccessID"=>"139f8ec33a07c55f406937c52ce4473d", "AccessPass"=>"2689b204d2c17192fa35f9269fa7e744", "Status"=>"VOID", "Forward"=>"2a99663", "Approve"=>"5537590", "TranID"=>"1707311610111111111111771219", "TranDate"=>"20170731161007"}
|
429
|
+
def void_tran_brandtoken(options = {})
|
430
|
+
name = "VoidTranBrandtoken.idPass"
|
431
|
+
required = [:access_id, :access_pass, :order_id]
|
432
|
+
assert_required_options(required, options)
|
433
|
+
post_request name, options
|
434
|
+
end
|
435
|
+
|
436
|
+
### @params ###
|
437
|
+
# AccessID
|
438
|
+
# AccessPass
|
439
|
+
# OrderID
|
440
|
+
# Amount
|
441
|
+
# Tax
|
442
|
+
### @return ###
|
443
|
+
# AccessID
|
444
|
+
# AccessPass
|
445
|
+
# Status
|
446
|
+
# Forward
|
447
|
+
# Approve
|
448
|
+
# TranID
|
449
|
+
# TranDate
|
450
|
+
### example ###
|
451
|
+
# gmo.sales_tran_brandtoken({
|
452
|
+
# access_id: "139f8ec33a07c55f406937c52ce4473d",
|
453
|
+
# access_pass: "2689b204d2c17192fa35f9269fa7e744",
|
454
|
+
# order_id: "597ae8c36120b23a3c00014e",
|
455
|
+
# amount: 1000,
|
456
|
+
# tax: "0001001"
|
457
|
+
# })
|
458
|
+
# => {"AccessID"=>"139f8ec33a07c55f406937c52ce4473d", "AccessPass"=>"2689b204d2c17192fa35f9269fa7e744", "Status"=>"SALES", "Forward"=>"2a99663", "Approve"=>"5537883", "TranID"=>"1707311620111111111111771220", "TranDate"=>"20170731162256"}
|
459
|
+
def sales_tran_brandtoken(options = {})
|
460
|
+
name = "SalesTranBrandtoken.idPass"
|
461
|
+
required = [:access_id, :access_pass, :order_id, :amount]
|
462
|
+
assert_required_options(required, options)
|
463
|
+
post_request name, options
|
464
|
+
end
|
465
|
+
|
466
|
+
### @params ###
|
467
|
+
# AccessID
|
468
|
+
# AccessPass
|
469
|
+
# OrderID
|
470
|
+
# Amount
|
471
|
+
# Tax
|
472
|
+
### @return ###
|
473
|
+
# AccessID
|
474
|
+
# AccessPass
|
475
|
+
# Status
|
476
|
+
# Forward
|
477
|
+
# Approve
|
478
|
+
# TranID
|
479
|
+
# TranDate
|
480
|
+
### example ###
|
481
|
+
# gmo.refund_tran_brandtoken({
|
482
|
+
# access_id: "139f8ec33a07c55f406937c52ce4473d",
|
483
|
+
# access_pass: "2689b204d2c17192fa35f9269fa7e744",
|
484
|
+
# order_id: "597ae8c36120b23a3c00014e",
|
485
|
+
# amount: 1000,
|
486
|
+
# tax: "0001001"
|
487
|
+
# })
|
488
|
+
# => {"AccessID"=>"139f8ec33a07c55f406937c52ce4473d", "AccessPass"=>"2689b204d2c17192fa35f9269fa7e744", "Status"=>"RETURN", "Forward"=>"2a99663", "Approve"=>"5537883", "TranID"=>"1707311620111111111111771220", "TranDate"=>"20170731162256"}
|
489
|
+
def refund_tran_brandtoken(options = {})
|
490
|
+
name = "RefundTranBrandtoken.idPass"
|
491
|
+
required = [:access_id, :access_pass, :order_id, :amount]
|
492
|
+
assert_required_options(required, options)
|
493
|
+
post_request name, options
|
494
|
+
end
|
495
|
+
|
496
|
+
# 【コンビニ払い】
|
497
|
+
## 2.2.2.1. 支払停止
|
498
|
+
# コンビニ決済センターとの通信を行い取引の支払停止処理を行います。
|
499
|
+
def cvs_cancel(options = {})
|
500
|
+
name = "CvsCancel.idPass"
|
501
|
+
required = [:access_id, :access_pass, :order_id]
|
502
|
+
assert_required_options(required, options)
|
503
|
+
post_request name, options
|
504
|
+
end
|
505
|
+
|
217
506
|
## 2.16.2.1.取引状態参照
|
218
507
|
# 指定したオーダーID の取引情報を取得します。
|
219
508
|
def search_trade(options = {})
|
@@ -225,6 +514,38 @@ module GMO
|
|
225
514
|
|
226
515
|
# 13.1.2.1.取引状態参照
|
227
516
|
# 指定したオーダーIDの取引情報を取得します。
|
517
|
+
### @params ###
|
518
|
+
# OrderID
|
519
|
+
# PayType
|
520
|
+
### @return ###
|
521
|
+
# OrderID
|
522
|
+
# Status
|
523
|
+
# ProcessDate
|
524
|
+
# JobCd
|
525
|
+
# AccessID
|
526
|
+
# AccessPass
|
527
|
+
# ItemCode
|
528
|
+
# Amount
|
529
|
+
# Tax
|
530
|
+
# SiteID
|
531
|
+
# MemberID
|
532
|
+
# CardNoToken
|
533
|
+
# Expire
|
534
|
+
# Method
|
535
|
+
# PayTimes
|
536
|
+
# Forward
|
537
|
+
# TranID
|
538
|
+
# Approve
|
539
|
+
# ClientField1
|
540
|
+
# ClientField2
|
541
|
+
# ClientField3
|
542
|
+
# PayType
|
543
|
+
### example ###
|
544
|
+
# gmo.search_trade_multi({
|
545
|
+
# order_id: '598066176120b2235300020b',
|
546
|
+
# pay_type: 27
|
547
|
+
# })
|
548
|
+
# => {"OrderID"=>"598066176120b2235300020b", "Status"=>"CAPTURE", "ProcessDate"=>"20170801202929", "JobCd"=>"CAPTURE", "AccessID"=>"228fc5bc02da46943300c12706d325a2", "AccessPass"=>"090a50ec2f77d92184a18018f07906e5", "ItemCode"=>"0000990", "Amount"=>"557", "Tax"=>"0", "SiteID"=>"", "MemberID"=>"", "CardNoToken"=>"************1111", "Expire"=>"2212", "Method"=>"1", "PayTimes"=>"", "Forward"=>"2a99663", "TranID"=>"1708012029111111111111771228", "Approve"=>"5689128", "ClientField1"=>"", "ClientField2"=>"", "ClientField3"=>"", "PayType"=>"27"}
|
228
549
|
def search_trade_multi(options = {})
|
229
550
|
name = "SearchTradeMulti.idPass"
|
230
551
|
required = [:order_id, :pay_type]
|
@@ -238,7 +559,7 @@ module GMO
|
|
238
559
|
args.merge!({ "ShopID" => @shop_id, "ShopPass" => @shop_pass })
|
239
560
|
api(name, args, verb, options) do |response|
|
240
561
|
if response.is_a?(Hash) && !response["ErrInfo"].nil?
|
241
|
-
raise APIError.new(response)
|
562
|
+
raise APIError.new(response, locale)
|
242
563
|
end
|
243
564
|
end
|
244
565
|
end
|
data/lib/gmo/site_api.rb
CHANGED
@@ -6,7 +6,9 @@
|
|
6
6
|
# gmo = GMO::Payment::SiteAPI.new({
|
7
7
|
# site_id: "foo",
|
8
8
|
# site_pass: "bar",
|
9
|
-
# host:
|
9
|
+
# host: "mul-pay.com",
|
10
|
+
# locale: "ja"
|
11
|
+
|
10
12
|
# })
|
11
13
|
# result = gmo.post_request("EntryTran.idPass", options)
|
12
14
|
module GMO
|
@@ -18,14 +20,24 @@ module GMO
|
|
18
20
|
@site_id = options[:site_id]
|
19
21
|
@site_pass = options[:site_pass]
|
20
22
|
@host = options[:host]
|
23
|
+
@locale = options.fetch(:locale, GMO::Const::DEFAULT_LOCALE)
|
21
24
|
unless @site_id && @site_pass && @host
|
22
25
|
raise ArgumentError, "Initialize must receive a hash with :site_id, :site_pass and either :host! (received #{options.inspect})"
|
23
26
|
end
|
24
27
|
end
|
25
|
-
attr_reader :site_id, :site_pass, :host
|
28
|
+
attr_reader :site_id, :site_pass, :host, :locale
|
26
29
|
|
27
30
|
## 2.3.2.1.会員登録
|
28
31
|
# 指定されたサイトに会員を登録します。
|
32
|
+
### @params ###
|
33
|
+
# MemberID
|
34
|
+
### @return ###
|
35
|
+
# MemberID
|
36
|
+
### example ###
|
37
|
+
# gmo.save_member({
|
38
|
+
# member_id: 'mem10001'
|
39
|
+
# })
|
40
|
+
# => {"MemberID"=>"mem10001"}
|
29
41
|
def save_member(options = {})
|
30
42
|
name = "SaveMember.idPass"
|
31
43
|
required = [:member_id]
|
@@ -64,7 +76,11 @@ module GMO
|
|
64
76
|
# 指定した会員にカード情報を登録します。尚、サイトに設定されたショップ ID を使用してカード会社と通信を行い有効性の確認を行います。
|
65
77
|
def save_card(options = {})
|
66
78
|
name = "SaveCard.idPass"
|
67
|
-
|
79
|
+
if options[:token].nil?
|
80
|
+
required = [:member_id, :card_no, :expire]
|
81
|
+
else
|
82
|
+
required = [:member_id, :token]
|
83
|
+
end
|
68
84
|
assert_required_options(required, options)
|
69
85
|
post_request name, options
|
70
86
|
end
|
@@ -88,6 +104,51 @@ module GMO
|
|
88
104
|
post_request name, options
|
89
105
|
end
|
90
106
|
|
107
|
+
### @params ###
|
108
|
+
# MemberID
|
109
|
+
# SeqMode
|
110
|
+
# TokenSeq
|
111
|
+
### @return ###
|
112
|
+
# TokenSeq
|
113
|
+
# DefaultFlag
|
114
|
+
# CardName
|
115
|
+
# CardNoToken
|
116
|
+
# Expire
|
117
|
+
# HolderName
|
118
|
+
# DeleteFlag
|
119
|
+
### example ###
|
120
|
+
# gmo.search_brandtoken({
|
121
|
+
# member_id: '598066176120b2235300020b',
|
122
|
+
# seq_mode: 0
|
123
|
+
# })
|
124
|
+
# => {"TokenSeq"=>"0", "DefaultFlag"=>"0", "CardName"=>"", "CardNoToken"=>"*************111", "Expire"=>"2212", "HolderName"=>"", "DeleteFlag"=>"0"}
|
125
|
+
def search_brandtoken(options = {})
|
126
|
+
name = "SearchBrandtoken.idPass"
|
127
|
+
required = [:member_id, :seq_mode]
|
128
|
+
assert_required_options(required, options)
|
129
|
+
post_request name, options
|
130
|
+
end
|
131
|
+
|
132
|
+
### @params ###
|
133
|
+
# MemberID
|
134
|
+
# SeqMode
|
135
|
+
# TokenSeq
|
136
|
+
### @return ###
|
137
|
+
# TokenSeq
|
138
|
+
### example ###
|
139
|
+
# gmo.delete_brandtoken({
|
140
|
+
# member_id: '598066176120b2235300020b',
|
141
|
+
# seq_mode: 0,
|
142
|
+
# token_seq: 0
|
143
|
+
# })
|
144
|
+
# => {"TokenSeq"=>"0"}
|
145
|
+
def delete_brandtoken(options = {})
|
146
|
+
name = "DeleteBrandtoken.idPass"
|
147
|
+
required = [:member_id, :seq_mode, :token_seq]
|
148
|
+
assert_required_options(required, options)
|
149
|
+
post_request name, options
|
150
|
+
end
|
151
|
+
|
91
152
|
## 2.11.2.3. 決済実行
|
92
153
|
# お客様が選択したカード登録連番のカード情報を取得します。
|
93
154
|
# カード情報が本人認証サービスに対応していない場合は、カード会社との通信を行い決済を実行します。その際の出力パラメータは「2.10.2.3決済実行」の出力パラメータと同じになります。
|
@@ -99,13 +160,23 @@ module GMO
|
|
99
160
|
post_request name, options
|
100
161
|
end
|
101
162
|
|
163
|
+
## 2.19.2.1.カード属性照会(サイトID+会員ID(+カード登録連番モード・カード登録連番)を指定して呼び出す場合)
|
164
|
+
# 指定したクレジットカードの属性情報を取得します。
|
165
|
+
# /payment/SearchCardDetail.idPass
|
166
|
+
def search_card_detail_by_member_id(options = {})
|
167
|
+
name = "SearchCardDetail.idPass"
|
168
|
+
required = [:member_id, :seq_mode]
|
169
|
+
assert_required_options(required, options)
|
170
|
+
post_request name, options
|
171
|
+
end
|
172
|
+
|
102
173
|
private
|
103
174
|
|
104
175
|
def api_call(name, args = {}, verb = "post", options = {})
|
105
176
|
args.merge!({ "SiteID" => @site_id, "SitePass" => @site_pass })
|
106
177
|
api(name, args, verb, options) do |response|
|
107
178
|
if response.is_a?(Hash) && !response["ErrInfo"].nil?
|
108
|
-
raise APIError.new(response)
|
179
|
+
raise APIError.new(response, locale)
|
109
180
|
end
|
110
181
|
end
|
111
182
|
end
|