class Stripe::Charge

def capture(params = {}, opts = {})

def capture(params = {}, opts = {})
  resp, opts = request(:post, capture_url, params, opts)
  initialize_from(resp.data, opts)
end

def capture_url

def capture_url
ce_url + "/capture"

def close_dispute(params = {}, opts = {})

def close_dispute(params = {}, opts = {})
  resp, opts = request(:post, close_dispute_url, params, opts)
  initialize_from(resp.data, opts)
end

def close_dispute_url

def close_dispute_url
ce_url + "/dispute/close"

def dispute_url

def dispute_url
ce_url + "/dispute"

def mark_as_fraudulent

def mark_as_fraudulent
  params = {
    fraud_details: { user_report: "fraudulent" },
  }
  resp, opts = request(:post, resource_url, params)
  initialize_from(resp.data, opts)
end

def mark_as_safe

def mark_as_safe
  params = {
    fraud_details: { user_report: "safe" },
  }
  resp, opts = request(:post, resource_url, params)
  initialize_from(resp.data, opts)
end

def refund(params = {}, opts = {})

def refund(params = {}, opts = {})
  # Old versions of charge objects included a `refunds` field that was just
  # a vanilla array instead of a Stripe list object.
  #
  # Where possible, we'd still like to use the new refund endpoint (thus
  # `self.refunds.create`), but detect the old API version by looking for
  # an `Array` and fall back to the old refund URL if necessary so as to
  # maintain internal compatibility.
  if refunds.is_a?(Array)
    resp, opts = request(:post, refund_url, params, opts)
    initialize_from(resp.data, opts)
  else
    refunds.create(params, opts)
    # now that a refund has been created, we expect the state of this object
    # to change as well (i.e. `refunded` will now be `true`) so refresh it
    # from the server
    refresh
  end
end

def refund_url

preferred.
Note that this is actually the *old* refund URL and its use is no longer
def refund_url
ce_url + "/refund"

def update_dispute(params = {}, opts = {})

def update_dispute(params = {}, opts = {})
  resp, opts = request(:post, dispute_url, params, opts)
  initialize_from({ dispute: resp.data }, opts, true)
  dispute
end