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',
}.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



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

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



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

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



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

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_user(user_id:) ⇒ Object



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

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



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

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



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

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



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

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



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

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



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

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



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

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



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

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

  commit(PATHS[:void], params)
end