Class: GmoPayment::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/gmo_payment/client.rb,
lib/gmo_payment/client/options.rb,
lib/gmo_payment/client/request.rb,
lib/gmo_payment/client/response.rb

Defined Under Namespace

Classes: Options, Request, Response

Constant Summary collapse

NETWORK_ERRORS =

Network errors that may occur when sending a request.

Returns:

  • (Array)

See Also:

[
  ::SocketError, ::EOFError, ::Timeout::Error, ::OpenSSL::SSL::SSLError,
  ::Errno::ECONNABORTED, ::Errno::ECONNRESET, ::Errno::ECONNREFUSED,
  ::Errno::EINVAL, ::Errno::EPIPE, ::Errno::ETIMEDOUT,
  ::Net::ProtocolError, ::Net::HTTPHeaderSyntaxError, ::Net::HTTPBadResponse,
]

Instance Method Summary collapse

Constructor Details

#initialize(opts = {}) ⇒ Client

Returns a new instance of Client.

Parameters:

  • opts (Hash) (defaults to: {})

See Also:

  • GmoPayment::Client.{Options{Options#initialize}


24
25
26
# File 'lib/gmo_payment/client.rb', line 24

def initialize(opts = {})
  @options = Options.new(opts)
end

Instance Method Details

#auth_to_sales(args = {}) ⇒ Response

2.14.2.1 決済変更(実売上)

仮売上の決済に対して実売上を行います。尚、実行時に仮売上時との金額チェックを行います。

Parameters:

  • args (Hash) (defaults to: {})

Options Hash (args):

  • :shop_id (String)

    required

  • :shop_pass (String)

    required

  • :access_id (String)

    required

  • :access_pass (String)

    required

  • :amount (Integer)

    required

Returns:



370
371
372
373
# File 'lib/gmo_payment/client.rb', line 370

def auth_to_sales(args = {})
  args[:job_cd] = 'SALES'
  call(__method__, args)
end

#call(method, args) ⇒ Response

Call the GMO-PG API.

Parameters:

  • args (Hash)
  • method (Symbol)

Returns:

Raises:

  • (NetworkError)
  • (RequestMissingItemError)
  • (RequestInvalidItemError)
  • (ResponseHTTPError)
  • (ResponseHasErrCodeError)


38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/gmo_payment/client.rb', line 38

def call(method, args)
  request = Request.new(method, args)
  raise GmoPayment::Errors::RequestMissingItemError.new(method, request.missing_items) if request.missing?
  raise GmoPayment::Errors::RequestInvalidItemError.new(method, request.invalid_items) if request.invalid?

  http_request = ::Net::HTTP::Post.new(post_path(method), header)
  if request_body = request.body
    http_request.body           = request_body
    http_request.content_length = request_body.bytesize
    http_request.content_type   = 'application/x-www-form-urlencoded'
  end

  proxy = @options.proxy
  http = ::Net::HTTP.new(@options.api_endpoint, 443,
    proxy.host, proxy.port, proxy.user, proxy.password)
  http.use_ssl      = true
  http.ssl_version  = :TLSv1_2
  http.verify_mode  = @options.verify_mode
  http.ssl_timeout  = 120
  http.open_timeout = 15
  http.read_timeout = 90

  res = http.request(http_request)
rescue *NETWORK_ERRORS => error
  raise GmoPayment::Errors::NetworkError.new(method, request, error.message)
else
  response = Response.new(method, res)
  raise GmoPayment::Errors::ResponseHTTPError.new(method, request)        if response.http_error?
  raise GmoPayment::Errors::ResponseHasErrCodeError.new(method, response) if response.error?

  response
end

#change_tran(args = {}) ⇒ Response

2.15.2.1 金額変更

決済が完了した取引に対して金額の変更を行います。

Parameters:

  • args (Hash) (defaults to: {})

Options Hash (args):

  • :shop_id (String)

    required

  • :shop_pass (String)

    required

  • :access_id (String)

    required

  • :access_pass (String)

    required

  • :job_cd (String)

    required

  • :amount (Integer)

    required

  • :tax (Integer)

Returns:



387
388
389
# File 'lib/gmo_payment/client.rb', line 387

def change_tran(args = {})
  call(__method__, args)
end

#delete_card(args = {}) ⇒ Response

2.8.2.1 カード削除

指定した会員のカード情報を削除します。

Parameters:

  • args (Hash) (defaults to: {})

Options Hash (args):

  • :site_id (String)

    required

  • :site_pass (String)

    required

  • :member_id (String)

    required

  • :card_seq (Integer)

    required

  • :seq_mode (Integer) — default: 0

Returns:



253
254
255
# File 'lib/gmo_payment/client.rb', line 253

def delete_card(args = {})
  call(__method__, args)
end

#delete_member(args = {}) ⇒ Response

2.5.2.1 会員削除

指定したサイトから会員情報を削除します。

Parameters:

  • args (Hash) (defaults to: {})

Options Hash (args):

  • :site_id (String)

    required

  • :site_pass (String)

    required

  • :member_id (String)

    required

Returns:



186
187
188
# File 'lib/gmo_payment/client.rb', line 186

def delete_member(args = {})
  call(__method__, args)
end

#delete_tran(args = {}) ⇒ Response

2.12.2.1 決済変更(取消)

決済が完了した取引に対して決済内容の取り消しを行います。 指定された取引情報を使用してカード会社と通信を行い取り消しを実施します。

Parameters:

  • args (Hash) (defaults to: {})

Options Hash (args):

  • :shop_id (String)

    required

  • :shop_pass (String)

    required

  • :access_id (String)

    required

  • :access_pass (String)

    required

  • :job_cd (String)

    required

Returns:



338
339
340
# File 'lib/gmo_payment/client.rb', line 338

def delete_tran(args = {})
  call(__method__, args)
end

#entry_tran(args = {}) ⇒ Response

2.1.2.1 取引登録

これ以降の決済取引で必要となる取引IDと取引パスワードの発行を行い、取引を開始します。

Parameters:

  • args (Hash) (defaults to: {})

Options Hash (args):

  • :shop_id (String)

    required

  • :shop_pass (String)

    required

  • :order_id (String)

    required

  • :job_cd (String)

    required

  • :amount (Integer)

    required if :job_cd is not CHECK

  • :item_code (String)
  • :tax (Integer)
  • :td_flag (Integer) — default: 0
  • :td_tenant_name (String)

Returns:



85
86
87
88
89
90
91
# File 'lib/gmo_payment/client.rb', line 85

def entry_tran(args = {})
  if args[:job_cd] == 'CHECK'
    args.delete(:amount)
    args.delete(:tax)
  end
  call(__method__, args)
end

#entry_tran_btc(args = {}) ⇒ Response

18.1.2.1 取引登録 (BTC)

これ以降の決済取引で必要となる取引IDと取引パスワードの発行を行い、取引を開始します。

Parameters:

  • args (Hash) (defaults to: {})

Options Hash (args):

  • :shop_id (String)

    required

  • :shop_pass (String)

    required

  • :order_id (String)

    required

  • :amount (Integer)

    required

  • :tax (Integer)

Returns:



431
432
433
# File 'lib/gmo_payment/client.rb', line 431

def entry_tran_btc(args = {})
  call(__method__, args)
end

#exec_tran(args = {}) ⇒ Response

2.1.2.2 決済実行

お客様が入力したカード番号と有効期限の情報でカード会社と通信を行い決済を実施し、結果を返します。

Parameters:

  • args (Hash) (defaults to: {})

Options Hash (args):

  • :access_id (String)

    required

  • :access_pass (String)

    required

  • :order_id (String)

    required

  • :card_no (String)

    required

  • :expire (String)

    required

  • :method (Integer)

    required if :job_cd is not CHECK

  • :pay_times (Integer)

    required if :method is 2 or 4

  • :pin (String)

    required if you contracted to use this

  • :security_code (String)
  • :client_field_1 (String)
  • :client_field_2 (String)
  • :client_field_3 (String)

Returns:



110
111
112
113
# File 'lib/gmo_payment/client.rb', line 110

def exec_tran(args = {})
  args[:client_field_flag] = 1
  call(__method__, args)
end

#exec_tran_3d(args = {}) ⇒ Response

2.2.2.2 決済実行(本人認証サービス有)

お客様が入力したカード番号と有効期限の情報でカード会社と通信を行い決済を実施し、結果を返します。

カード情報が本人認証サービスに対応していない場合は、カード会社との通信を行い決済を実行します。
その際の出力パラメータは「2.1.2.2 決済実行」の出力パラメータと同じになります。

Parameters:

  • args (Hash) (defaults to: {})

Options Hash (args):

  • :access_id (String)

    required

  • :access_pass (String)

    required

  • :order_id (String)

    required

  • :card_no (String)

    required

  • :expire (String)

    required

  • :http_accept (String)

    required

  • :http_user_agent (String)

    required

  • :method (Integer)

    required if :job_cd is not CHECK

  • :pay_times (Integer)

    required if :method is 2 or 4

  • :security_code (String)
  • :client_field_1 (String)
  • :client_field_2 (String)
  • :client_field_3 (String)

Returns:



135
136
137
138
139
# File 'lib/gmo_payment/client.rb', line 135

def exec_tran_3d(args = {})
  args[:client_field_flag] = 1
  args[:device_category] = 0
  call(__method__, args)
end

#exec_tran_btc(args = {}) ⇒ Response

18.1.2.2 決済実行 (BTC)

契約情報を確認し、これ以降の処理に必要なトークンを返却します。

Parameters:

  • args (Hash) (defaults to: {})

Options Hash (args):

  • :shop_id (String)

    required

  • :access_id (String)

    required

  • :access_pass (String)

    required

  • :order_id (String)

    required

  • :ret_url (String)

    required

  • :item_name (String)

    required

  • :timeout (Integer)

    required

  • :item_memo (String)

    required

  • :client_field_1 (String)
  • :client_field_2 (String)
  • :client_field_3 (String)

Returns:



451
452
453
# File 'lib/gmo_payment/client.rb', line 451

def exec_tran_btc(args = {})
  call(__method__, args)
end

#exec_tran_member(args = {}) ⇒ Response

2.10.2.3 決済実行

お客様が選択したカード登録連番のカード情報を取得します。 取得したカード情報でカード会社と通信を行い決済を実施し、結果を返します。

Parameters:

  • args (Hash) (defaults to: {})

Options Hash (args):

  • :access_id (String)

    required

  • :access_pass (String)

    required

  • :order_id (String)

    required

  • :site_id (String)

    required

  • :site_pass (String)

    required

  • :member_id (String)

    required

  • :card_seq (Integer)

    required

  • :method (Integer)

    required if :job_cd is not CHECK

  • :pay_times (Integer)

    required if :method is 2 or 4

  • :card_pass (String)

    required if :card_pass is set

  • :seq_mode (Integer) — default: 0
  • :security_code (String)
  • :client_field_1 (String)
  • :client_field_2 (String)
  • :client_field_3 (String)

Returns:



292
293
294
295
# File 'lib/gmo_payment/client.rb', line 292

def exec_tran_member(args = {})
  args[:client_field_flag] = 1
  call(__method__, args)
end

#exec_tran_member_3d(args = {}) ⇒ Response

2.11.2.3 決済実行

お客様が選択したカード登録連番のカード情報を取得します。

カード情報が本人認証サービスに対応していない場合は、カード会社との通信を行い決済を実行します。
その際の出力パラメータは「2.10.2.3 決済実行」の出力パラメータと同じになります。

Parameters:

  • args (Hash) (defaults to: {})

Options Hash (args):

  • :access_id (String)

    required

  • :access_pass (String)

    required

  • :order_id (String)

    required

  • :site_id (String)

    required

  • :site_pass (String)

    required

  • :member_id (String)

    required

  • :card_seq (Integer)

    required

  • :http_accept (String)

    required

  • :http_user_agent (String)

    required

  • :method (Integer)

    required if :job_cd is not CHECK

  • :pay_times (Integer)

    required if :method is 2 or 4

  • :seq_mode (Integer) — default: 0
  • :card_pass (String)
  • :security_code (String)
  • :client_field_1 (String)
  • :client_field_2 (String)
  • :client_field_3 (String)

Returns:



321
322
323
324
325
# File 'lib/gmo_payment/client.rb', line 321

def exec_tran_member_3d(args = {})
  args[:client_field_flag] = 1
  args[:device_category] = 0
  call(__method__, args)
end

#get_rate_btc(args = {}) ⇒ Object

Note:

注意: このレートは、決済後の円換算レートを保証するものではございません。 エンドユーザーに表示する場合等、参考値としてご利用下さい。 また、レートはリクエストビットコインウォレット事業者から取得した値を返却しております。 レートの更新頻度は、ウォレット事業者に依存いたします。

18.1.2.5 決済実行 (BTC)

ビットコインのレート(参考値)を返却します。

Parameters:

  • args (Hash) (defaults to: {})

Options Hash (args):

  • :shop_id (String)

    required

  • :shop_pass (String)

    required



467
468
469
# File 'lib/gmo_payment/client.rb', line 467

def get_rate_btc(args = {})
  call(__method__, args)
end

#re_exec_tran(args = {}) ⇒ Response

2.13.2.1 決済変更(再オーソリ)

取り消されている決済に対して再オーソリを行います。指定された決済情報を使用してカード会社と通信を行い実施します。

Parameters:

  • args (Hash) (defaults to: {})

Options Hash (args):

  • :shop_id (String)

    required

  • :shop_pass (String)

    required

  • :access_id (String)

    required

  • :access_pass (String)

    required

  • :job_cd (String)

    required

  • :amount (Integer)

    required

  • :method (Integer)

    required

  • :pay_times (Integer)

    required if :method is 2 or 4

  • :tax (Integer)

Returns:



356
357
358
# File 'lib/gmo_payment/client.rb', line 356

def re_exec_tran(args = {})
  call(__method__, args)
end

#save_card(args = {}) ⇒ Response

2.7.2.1 カード登録

指定した会員にカード情報を登録します。 尚、サイトに設定されたショップIDを使用してカード会社と通信を行い、有効性の確認を行います。

Parameters:

  • args (Hash) (defaults to: {})

Options Hash (args):

  • :site_id (String)

    required

  • :site_pass (String)

    required

  • :member_id (String)

    required

  • :card_no (String)

    required

  • :expire (String)

    required

  • :seq_mode (Integer) — default: 0
  • :default_flag (Integer) — default: 0
  • :card_name (String)
  • :card_pass (String)
  • :holder_name (String)

Returns:



218
219
220
# File 'lib/gmo_payment/client.rb', line 218

def save_card(args = {})
  call(__method__, args)
end

#save_member(args = {}) ⇒ Response

2.3.2.1 会員登録

指定されたサイトに会員を登録します。

Parameters:

  • args (Hash) (defaults to: {})

Options Hash (args):

  • :site_id (String)

    required

  • :site_pass (String)

    required

  • :member_id (String)

    required

  • :member_name (String)

Returns:



161
162
163
# File 'lib/gmo_payment/client.rb', line 161

def save_member(args = {})
  call(__method__, args)
end

#save_traded_card(args = {}) ⇒ Response

2.17.2.1 決済後カード登録

指定されたオーダーIDの取引に使用したカードを登録します。

Parameters:

  • args (Hash) (defaults to: {})

Options Hash (args):

  • :shop_id (String)

    required

  • :shop_pass (String)

    required

  • :order_id (String)

    required

  • :site_id (String)

    required

  • :site_pass (String)

    required

  • :member_id (String)

    required

  • :seq_mode (Integer) — default: 0
  • :default_flag (Integer) — default: 0
  • :holder_name (String)

Returns:



417
418
419
# File 'lib/gmo_payment/client.rb', line 417

def save_traded_card(args = {})
  call(__method__, args)
end

#search_card(args = {}) ⇒ Response

2.9.2.1 カード参照

指定した会員のカード情報を参照します。

Parameters:

  • args (Hash) (defaults to: {})

Options Hash (args):

  • :site_id (String)

    required

  • :site_pass (String)

    required

  • :member_id (String)

    required

  • :seq_mode (Integer)

    required

  • :card_seq (Integer)

Returns:



267
268
269
# File 'lib/gmo_payment/client.rb', line 267

def search_card(args = {})
  call(__method__, args)
end

#search_member(args = {}) ⇒ Response

2.6.2.1 会員参照

指定したサイトの会員情報を参照します。

Parameters:

  • args (Hash) (defaults to: {})

Options Hash (args):

  • :site_id (String)

    required

  • :site_pass (String)

    required

  • :member_id (String)

    required

Returns:



198
199
200
# File 'lib/gmo_payment/client.rb', line 198

def search_member(args = {})
  call(__method__, args)
end

#search_trade(args = {}) ⇒ Response

2.16.2.1 取引状態参照

指定したオーダーIDの取引情報を取得します。

Parameters:

  • args (Hash) (defaults to: {})

Options Hash (args):

  • :shop_id (String)

    required

  • :shop_pass (String)

    required

  • :order_id (String)

    required

Returns:



399
400
401
# File 'lib/gmo_payment/client.rb', line 399

def search_trade(args = {})
  call(__method__, args)
end

#search_trade_btc(args = {}) ⇒ Response

21.1.2.1 取引状態参照 (BTC)

指定したオーダーIDの取引情報を取得します。

Parameters:

  • args (Hash) (defaults to: {})

Options Hash (args):

  • :shop_id (String)

    required

  • :shop_pass (String)

    required

  • :order_id (String)

    required

Returns:



479
480
481
482
# File 'lib/gmo_payment/client.rb', line 479

def search_trade_btc(args = {})
  args[:pay_type] = 17
  call(__method__, args)
end

#secure_tran(args = {}) ⇒ Response

2.2.2.4 認証後決済実行(本人認証サービス有)

本人認証サービスの結果を解析し、その情報を使用してカード会社と通信を行い決済を実施して結果を返します。

Parameters:

  • args (Hash) (defaults to: {})

Options Hash (args):

  • :pa_res (String)

    required

  • :md (String)

    required

Returns:



148
149
150
# File 'lib/gmo_payment/client.rb', line 148

def secure_tran(args = {})
  call(__method__, args)
end

#update_card(args = {}) ⇒ Response

2.7.2.1 カード更新

指定した会員のカード情報を更新します。 尚、サイトに設定されたショップIDを使用してカード会社と通信を行い、有効性の確認を行います。

Parameters:

  • args (Hash) (defaults to: {})

Options Hash (args):

  • :site_id (String)

    required

  • :site_pass (String)

    required

  • :member_id (String)

    required

  • :card_seq (Integer)

    required

  • :card_no (String)

    required

  • :expire (String)

    required

  • :seq_mode (Integer) — default: 0
  • :default_flag (Integer) — default: 0
  • :card_name (String)
  • :card_pass (String)
  • :holder_name (String)

Returns:



239
240
241
# File 'lib/gmo_payment/client.rb', line 239

def update_card(args = {})
  call(__method__, args)
end

#update_member(args = {}) ⇒ Response

2.4.2.1 会員更新

指定されたサイトに会員情報を更新します。

Parameters:

  • args (Hash) (defaults to: {})

Options Hash (args):

  • :site_id (String)

    required

  • :site_pass (String)

    required

  • :member_id (String)

    required

  • :member_name (String)

Returns:



174
175
176
# File 'lib/gmo_payment/client.rb', line 174

def update_member(args = {})
  call(__method__, args)
end