Module: Veritrans::Api

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

Instance Method Summary collapse

Instance Method Details

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



68
69
70
71
72
73
74
# File 'lib/veritrans/api.rb', line 68

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/#{URI.escape(payment_id)}/approve", options)
end

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



58
59
60
61
62
63
64
# File 'lib/veritrans/api.rb', line 58

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/#{URI.escape(payment_id)}/cancel", options)
end

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



88
89
90
91
92
93
94
# File 'lib/veritrans/api.rb', line 88

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_token(options = {}) ⇒ Object Also known as: create_widget_token



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

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

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



107
108
109
110
111
# File 'lib/veritrans/api.rb', line 107

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



114
115
116
# File 'lib/veritrans/api.rb', line 114

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

#expire(payment_id) ⇒ Object



98
99
100
101
102
103
104
# File 'lib/veritrans/api.rb', line 98

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/#{URI.escape(payment_id)}/expire", nil)
end

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

GET /v2/point_inquiry/token_id



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

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

#status(payment_id) ⇒ Object



78
79
80
81
82
83
84
# File 'lib/veritrans/api.rb', line 78

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/#{URI.escape(payment_id)}/status")
end