Module: Veritrans::Api

Included in:
Veritrans
Defined in:
lib/veritrans/api.rb

Instance Method Summary collapse

Instance Method Details

#approve(payment_id, options = {}) ⇒ Object



91
92
93
94
95
96
97
# File 'lib/veritrans/api.rb', line 91

def approve(payment_id, options = {})
  if !payment_id || payment_id.to_s == ""
    raise ArgumentError, "parameter payment_id can not be blank (got #{payment_id.class} : #{payment_id.inspect})"
  end

  request_with_logging(:post, config.api_host + "/v2/#{ERB::Util.url_encode(payment_id)}/approve", options)
end

#cancel(payment_id, options = {}) ⇒ Object



81
82
83
84
85
86
87
# File 'lib/veritrans/api.rb', line 81

def cancel(payment_id, options = {})
  if !payment_id || payment_id.to_s == ""
    raise ArgumentError, "parameter payment_id can not be blank (got #{payment_id.class} : #{payment_id.inspect})"
  end

  request_with_logging(:post, config.api_host + "/v2/#{ERB::Util.url_encode(payment_id)}/cancel", options)
end

#capture(payment_id, gross_amount, options = {}) ⇒ Object



121
122
123
124
125
126
127
# File 'lib/veritrans/api.rb', line 121

def capture(payment_id, gross_amount, options = {})
  if !payment_id || payment_id.to_s == ""
    raise ArgumentError, "parameter payment_id can not be blank (got #{payment_id.class} : #{payment_id.inspect})"
  end

  post(config.api_host + "/v2/capture", options.merge(transaction_id: payment_id, gross_amount: gross_amount))
end

#charge(payment_type, data = nil) ⇒ Object

POST /v2/charge { payment_type: “credit_card” } Docs api-docs.midtrans.com/#charge-features

Example: Veritrans.charge(

payment_type: "credit_card",
credit_card: { token_id: "<token from client>" },
transaction_details: {
  order_id: "order_123",
  gross_amount: 100_000
}

)



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/veritrans/api.rb', line 20

def charge(payment_type, data = nil)
  if payment_type.kind_of?(Hash) && data.nil?
    data = payment_type
    payment_type = nil
  end

  data = data.deep_symbolize_keys if data.respond_to?(:deep_symbolize_keys)

  data[:payment_type] = payment_type if payment_type

  if data.has_key?(:payment_options)
    data[payment_type.to_sym] = data.delete(:payment_options)
  end

  # Rename keys:
  # payment     -> transaction_details
  # transaction -> transaction_details
  # items       -> item_details
  # customer    -> customer_details

  data[:transaction_details] = data.delete(:payment) if data[:payment]
  data[:transaction_details] = data.delete(:transaction) if data[:transaction]
  data[:item_details] = data.delete(:items) if data[:items]
  data[:customer_details] = data.delete(:customer) if data[:customer]

  request_with_logging(:post, config.api_host + "/v2/charge", data)
end

#create_snap_redirect_url_str(options = {}) ⇒ Object

POST app.sandbox.midtrans.com/snap/v1/transactions Create Snap payment page, with this version returning redirect url



74
75
76
77
# File 'lib/veritrans/api.rb', line 74

def create_snap_redirect_url_str(options = {})
  result = create_snap_token(options)
  result.redirect_url
end

#create_snap_token(options = {}) ⇒ Object Also known as: create_widget_token, create_snap_redirect_url

POST app.sandbox.midtrans.com/snap/v1/transactions Create Snap payment page, with this version returning full API response



57
58
59
60
# File 'lib/veritrans/api.rb', line 57

def create_snap_token(options = {})
  result = request_with_logging(:post, config.api_host.sub('//api.', '//app.') + "/snap/v1/transactions", options)
  Veritrans::SnapResult.new(result.response, result.url, result.request_options, result.time)
end

#create_snap_token_string(options = {}) ⇒ Object

POST app.sandbox.midtrans.com/snap/v1/transactions Create Snap payment page, with this version returning token



67
68
69
70
# File 'lib/veritrans/api.rb', line 67

def create_snap_token_string(options = {})
  result = create_snap_token(options)
  result.token
end

#create_subscription(param) ⇒ Object

POST /v1/subscription param create subscription request (more params detail refer to: api-docs.midtrans.com/#create-subscription)



204
205
206
207
208
209
210
# File 'lib/veritrans/api.rb', line 204

def create_subscription(param)
  if param == nil
    raise ArgumentError, "parameter subscription cannot be blank"
  end

  request_with_logging(:post, config.api_host + "/v1/subscriptions", param)
end

POST /v2/charge { payment_type: “vtlink” }



150
151
152
153
154
# File 'lib/veritrans/api.rb', line 150

def create_vtlink(data)
  data = data.dup
  data[:payment_type] = "vtlink"
  request_with_logging(:post, config.api_host + "/v2/charge", data)
end

DELETE /v2/vtlink/id



157
158
159
# File 'lib/veritrans/api.rb', line 157

def delete_vtlink(id, options)
  request_with_logging(:delete, config.api_host + "/v2/vtlink/#{ERB::Util.url_encode(id)}", options)
end

#deny(payment_id, options = {}) ⇒ Object



131
132
133
134
135
136
137
# File 'lib/veritrans/api.rb', line 131

def deny(payment_id, options = {})
  if !payment_id || payment_id.to_s == ''
    raise ArgumentError, "parameter payment_id can not be blank (got #{payment_id.class} : #{payment_id.inspect})"
  end

  request_with_logging(:post, config.api_host + "/v2/#{ERB::Util.url_encode(payment_id)}/deny", options)
end

#disable_subscription(subscription_id) ⇒ Object

POST /v1/subscription/subscription_id/disable disable subscription request (more params detail refer to: api-docs.midtrans.com/#disable-subscription)



224
225
226
227
228
229
230
# File 'lib/veritrans/api.rb', line 224

def disable_subscription(subscription_id)
  if subscription_id == nil || subscription_id == ''
    raise ArgumentError, "subscription_id cannot be blank"
  end

  request_with_logging(:post, config.api_host + "/v1/subscriptions/#{subscription_id}/disable", {})
end

#enable_subscription(subscription_id) ⇒ Object

POST /v1/subscription/subscription_id/disable enable subscription request (more params detail refer to: api-docs.midtrans.com/#enable-subscription)



234
235
236
237
238
239
240
# File 'lib/veritrans/api.rb', line 234

def enable_subscription(subscription_id)
  if subscription_id == nil || subscription_id == ''
    raise ArgumentError, "subscription_id cannot be blank"
  end

  request_with_logging(:post, config.api_host + "/v1/subscriptions/#{subscription_id}/enable", {})
end

#expire(payment_id) ⇒ Object



141
142
143
144
145
146
147
# File 'lib/veritrans/api.rb', line 141

def expire(payment_id)
  if !payment_id || payment_id.to_s == ""
    raise ArgumentError, "parameter payment_id can not be blank (got #{payment_id.class} : #{payment_id.inspect})"
  end

  request_with_logging(:post, config.api_host + "/v2/#{ERB::Util.url_encode(payment_id)}/expire", nil)
end

#get_payment_account(account_id) ⇒ Object

GET /v2/pay/account/account_id account_id (more params detail refer to: api-docs.midtrans.com/#get-pay-account)



184
185
186
187
188
189
190
# File 'lib/veritrans/api.rb', line 184

def ()
  if  == nil ||  == ''
    raise ArgumentError, "account_id cannot be blank"
  end

  request_with_logging(:get, config.api_host + "/v2/pay/account/#{}", {})
end

#get_subscription(subscription_id) ⇒ Object

GET /v1/subscription/subscription_id get subscription request (more params detail refer to: api-docs.midtrans.com/#get-subscription)



214
215
216
217
218
219
220
# File 'lib/veritrans/api.rb', line 214

def get_subscription(subscription_id)
  if subscription_id == nil || subscription_id == ''
    raise ArgumentError, "subscription_id cannot be blank"
  end

  request_with_logging(:get, config.api_host + "/v1/subscriptions/#{subscription_id}", {})
end

#inquiry_points(token_id) ⇒ Object Also known as: point_inquiry

GET /v2/point_inquiry/token_id



162
163
164
165
166
167
168
# File 'lib/veritrans/api.rb', line 162

def inquiry_points(token_id)
  if token_id == nil || token_id.to_s == ""
    raise ArgumentError, "parameter token_id can not be bank"
  end

  request_with_logging(:get, config.api_host + "/v2/point_inquiry/#{token_id}", {})
end

POST /v2/pay/account param create pay account request (more params detail refer to: api-docs.midtrans.com/#create-pay-account)



174
175
176
177
178
179
180
# File 'lib/veritrans/api.rb', line 174

def (param)
  if param == nil
    raise ArgumentError, "parameter Payment_type gopay cannot be blank"
  end

  request_with_logging(:post, config.api_host + "/v2/pay/account", param)
end

#refund(payment_id, options = {}) ⇒ Object



101
102
103
104
105
106
107
# File 'lib/veritrans/api.rb', line 101

def refund(payment_id, options = {})
  if !payment_id || payment_id.to_s == ''
    raise ArgumentError, "parameter payment_id can not be blank (got #{payment_id.class} : #{payment_id.inspect})"
  end

  request_with_logging(:post, config.api_host + "/v2/#{ERB::Util.url_encode(payment_id)}/refund", options)
end

#status(payment_id) ⇒ Object



111
112
113
114
115
116
117
# File 'lib/veritrans/api.rb', line 111

def status(payment_id)
  if !payment_id || payment_id.to_s == ""
    raise ArgumentError, "parameter payment_id can not be blank (got #{payment_id.class} : #{payment_id.inspect})"
  end

  get(config.api_host + "/v2/#{ERB::Util.url_encode(payment_id)}/status")
end

#test_token(options = {}) ⇒ Object Also known as: create_card_token



48
49
50
51
# File 'lib/veritrans/api.rb', line 48

def test_token(options = {})
  options[:client_key] = config.client_key
  request_with_logging(:get, config.api_host + '/v2/token', options)
end

POST /v2/pay/account/account_id/unbind account_id (more params detail refer to: api-docs.midtrans.com/#unbind-pay-account)



194
195
196
197
198
199
200
# File 'lib/veritrans/api.rb', line 194

def ()
  if  == nil ||  == ''
    raise ArgumentError, "parameter account_id cannot be blank"
  end

  request_with_logging(:post, config.api_host + "/v2/pay/account/#{}/unbind", {})
end

#update_subscription(subscription_id, param) ⇒ Object

PATCH /v1/subscription/subscription_id update subscription request (more params detail refer to: api-docs.midtrans.com/#update-subscription)



244
245
246
247
248
249
250
# File 'lib/veritrans/api.rb', line 244

def update_subscription(subscription_id, param)
if subscription_id && param == nil || subscription_id && param == ''
  raise ArgumentError, "subscription_id and param cannot be blank"
end

request_with_logging(:patch, config.api_host + "/v1/subscriptions/#{subscription_id}", param)
end