Class: ActiveMerchant::Billing::EpsilonGateway

Inherits:
EpsilonBaseGateway show all
Defined in:
lib/active_merchant/billing/gateways/epsilon.rb

Defined Under Namespace

Modules: CreditType

Constant Summary collapse

PATHS =
{
  purchase:                'direct_card_payment.cgi',
  registered_recurring:    'direct_card_payment.cgi',
  registered_purchase:     'direct_card_payment.cgi',
  cancel_recurring:        'receive_order3.cgi',
  terminate_recurring:     'receive_order3.cgi',
  void:                    'cancel_payment.cgi',
  find_user:               'get_user_info.cgi',
  change_recurring_amount: 'change_amount_payment.cgi',
  find_order:              'getsales2.cgi',
}.freeze

Constants inherited from EpsilonBaseGateway

ActiveMerchant::Billing::EpsilonBaseGateway::DEFAULT_RESPONSE_KEYS

Instance Method Summary collapse

Instance Method Details

#authenticate(order_number:, three_d_secure_pa_res:) ⇒ Object

Second request for 3D secure



136
137
138
139
140
141
142
143
144
145
# File 'lib/active_merchant/billing/gateways/epsilon.rb', line 136

def authenticate(order_number:, three_d_secure_pa_res:)
  params = {
    contract_code:  self.contract_code,
    order_number:   order_number,
    tds_check_code: 2,
    tds_pares:      three_d_secure_pa_res,
  }

  commit(PATHS[:purchase], params)
end

#cancel_recurring(user_id:, item_code:) ⇒ Object



90
91
92
93
94
95
96
97
98
99
100
# File 'lib/active_merchant/billing/gateways/epsilon.rb', line 90

def cancel_recurring(user_id:, item_code:)
  params = {
    contract_code: self.contract_code,
    user_id:       user_id,
    item_code:     item_code,
    xml:           1,
    process_code:  8,
  }

  commit(PATHS[:cancel_recurring], params)
end

#change_recurring_amount(new_item_price:, user_id:, item_code:) ⇒ Object



122
123
124
125
126
127
128
129
130
131
# File 'lib/active_merchant/billing/gateways/epsilon.rb', line 122

def change_recurring_amount(new_item_price:, user_id:, item_code:)
  params = {
    contract_code:  self.contract_code,
    mission_code:   2,
    user_id:        user_id,
    item_code:      item_code,
    new_item_price: new_item_price,
  }
  commit(PATHS[:change_recurring_amount], params)
end

#find_order(order_number) ⇒ Object



168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
# File 'lib/active_merchant/billing/gateways/epsilon.rb', line 168

def find_order(order_number)
  params = {
    contract_code: self.contract_code,
    order_number:  order_number,
  }

  response_keys = [
    :transaction_code,
    :state,
    :payment_code,
    :item_price,
  ]

  commit(PATHS[:find_order], params, response_keys)
end

#find_user(user_id:) ⇒ Object



113
114
115
116
117
118
119
120
# File 'lib/active_merchant/billing/gateways/epsilon.rb', line 113

def find_user(user_id:)
  params = {
    contract_code: self.contract_code,
    user_id:       user_id,
  }

  commit(PATHS[:find_user], params)
end

#purchase(amount, credit_card, detail = {}) ⇒ Object



26
27
28
29
30
31
32
# File 'lib/active_merchant/billing/gateways/epsilon.rb', line 26

def purchase(amount, credit_card, detail = {})
  detail[:mission_code] = EpsilonMissionCode::PURCHASE

  params = billing_params(amount, credit_card, detail)

  commit(PATHS[:purchase], params)
end

#recurring(amount, credit_card, detail = {}) ⇒ Object



58
59
60
61
62
63
64
65
66
# File 'lib/active_merchant/billing/gateways/epsilon.rb', line 58

def recurring(amount, credit_card, detail = {})
  detail[:mission_code] ||= EpsilonMissionCode::RECURRING_2

  requires!(detail, [:mission_code, *EpsilonMissionCode::RECURRINGS])

  params = billing_params(amount, credit_card, detail)

  commit(PATHS[:purchase], params)
end

#registered_purchase(amount, detail = {}) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/active_merchant/billing/gateways/epsilon.rb', line 34

def registered_purchase(amount, detail = {})
  params = {
    contract_code: self.contract_code,
    user_id:       detail[:user_id],
    user_name:     detail[:user_name],
    user_mail_add: detail[:user_email],
    item_code:     detail[:item_code],
    item_name:     detail[:item_name],
    order_number:  detail[:order_number],
    st_code:       '10000-0000-0000',
    mission_code:  EpsilonMissionCode::PURCHASE,
    item_price:    amount,
    process_code:  2,
    card_st_code:  detail[:credit_type],
    pay_time:      detail[:payment_time],
    xml:           1,
  }

  params[:memo1] = detail[:memo1] if detail.has_key?(:memo1)
  params[:memo2] = detail[:memo2] if detail.has_key?(:memo2)

  commit(PATHS[:registered_purchase], params)
end

#registered_recurring(amount, detail = {}) ⇒ Object



68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/active_merchant/billing/gateways/epsilon.rb', line 68

def registered_recurring(amount, detail = {})
  params = {
    contract_code: self.contract_code,
    user_id:       detail[:user_id],
    user_name:     detail[:user_name],
    user_mail_add: detail[:user_email],
    item_code:     detail[:item_code],
    item_name:     detail[:item_name],
    order_number:  detail[:order_number],
    st_code:       '10000-0000-0000',
    mission_code:  detail[:mission_code],
    item_price:    amount,
    process_code:  2,
    xml:           1,
  }

  params[:memo1] = detail[:memo1] if detail.has_key?(:memo1)
  params[:memo2] = detail[:memo2] if detail.has_key?(:memo2)

  commit(PATHS[:registered_recurring], params)
end

#terminate_recurring(user_id:) ⇒ Object



102
103
104
105
106
107
108
109
110
111
# File 'lib/active_merchant/billing/gateways/epsilon.rb', line 102

def terminate_recurring(user_id:)
  params = {
    contract_code: self.contract_code,
    user_id:       user_id,
    xml:           1,
    process_code:  9,
  }

  commit(PATHS[:terminate_recurring], params)
end

#verify(credit_card, options = {}) ⇒ Object



156
157
158
159
160
161
162
163
164
165
166
# File 'lib/active_merchant/billing/gateways/epsilon.rb', line 156

def verify(credit_card, options = {})
  o = options.dup
  o[:order_number] ||= "#{Time.now.to_i}#{options[:user_id]}".first(32)
  o[:item_code] = 'verifycreditcard'
  o[:item_name] = 'verify credit card'

  MultiResponse.run(:use_first_response) do |r|
    r.process { purchase(1, credit_card, o) }
    r.process(:ignore_result) { void(o[:order_number]) }
  end
end

#void(order_number) ⇒ Object



147
148
149
150
151
152
153
154
# File 'lib/active_merchant/billing/gateways/epsilon.rb', line 147

def void(order_number)
  params = {
    contract_code: self.contract_code,
    order_number:  order_number,
  }

  commit(PATHS[:void], params)
end