class Paypal::Express::Request

Public Instance Methods

agree!(token, options = {}) click to toggle source

Reference Transaction Specific

# File lib/paypal/express/request.rb, line 124
def agree!(token, options = {})
  params = { TOKEN: token }
  if options[:max_amount]
    params[:MAXAMT] = Util.formatted_amount options[:max_amount]
  end
  response = self.request :CreateBillingAgreement, params
  Response.new response
end
agreement(reference_id) click to toggle source
# File lib/paypal/express/request.rb, line 133
def agreement(reference_id)
  params = { REFERENCEID: reference_id }
  response = self.request :BillAgreementUpdate, params
  Response.new response
end
cancel!(profile_id, options = {}) click to toggle source
# File lib/paypal/express/request.rb, line 113
def cancel!(profile_id, options = {})
  renew!(profile_id, :Cancel, options)
end
capture!(authorization_id, amount, currency_code, complete_type = 'Complete') click to toggle source
# File lib/paypal/express/request.rb, line 60
def capture!(authorization_id, amount, currency_code, complete_type = 'Complete')
  params = {
    :AUTHORIZATIONID => authorization_id,
    :COMPLETETYPE => complete_type,
    :AMT => amount,
    :CURRENCYCODE => currency_code
  }

  response = self.request :DoCapture, params
  Response.new response
end
charge!(reference_id, amount, options = {}) click to toggle source
# File lib/paypal/express/request.rb, line 139
def charge!(reference_id, amount, options = {})
  params = {
    :REFERENCEID => reference_id,
    :AMT => Util.formatted_amount(amount),
    :PAYMENTACTION => options[:payment_action] || :Sale
  }
  if options[:currency_code]
    params[:CURRENCYCODE] = options[:currency_code]
  end
  response = self.request :DoReferenceTransaction, params
  Response.new response
end
checkout!(token, payer_id, payment_requests) click to toggle source
# File lib/paypal/express/request.rb, line 48
def checkout!(token, payer_id, payment_requests)
  params = {
    TOKEN: token,
    PAYERID: payer_id
  }
  Array(payment_requests).each_with_index do |payment_request, index|
    params.merge! payment_request.to_params(index)
  end
  response = self.request :DoExpressCheckoutPayment, params
  Response.new response
end
details(token) click to toggle source
# File lib/paypal/express/request.rb, line 38
def details(token)
  response = self.request :GetExpressCheckoutDetails, { TOKEN: token }
  Response.new response
end
reactivate!(profile_id, options = {}) click to toggle source
# File lib/paypal/express/request.rb, line 117
def reactivate!(profile_id, options = {})
  renew!(profile_id, :Reactivate, options)
end
refund!(transaction_id, options = {}) click to toggle source

Refund Specific

# File lib/paypal/express/request.rb, line 164
def refund!(transaction_id, options = {})
  params = {
    :TRANSACTIONID => transaction_id,
    :REFUNDTYPE => :Full
  }
  if options[:invoice_id]
    params[:INVOICEID] = options[:invoice_id]
  end
  if options[:type]
    params[:REFUNDTYPE] = options[:type]
    params[:AMT] = options[:amount]
    params[:CURRENCYCODE] = options[:currency_code]
  end
  if options[:note]
    params[:NOTE] = options[:note]
  end
  response = self.request :RefundTransaction, params
  Response.new response
end
renew!(profile_id, action, options = {}) click to toggle source
# File lib/paypal/express/request.rb, line 97
def renew!(profile_id, action, options = {})
  params = {
    :PROFILEID => profile_id,
    :ACTION => action
  }
  if options[:note]
    params[:NOTE] = options[:note]
  end
  response = self.request :ManageRecurringPaymentsProfileStatus, params
  Response.new response
end
revoke!(reference_id) click to toggle source
# File lib/paypal/express/request.rb, line 152
def revoke!(reference_id)
  params = {
    :REFERENCEID => reference_id,
    :BillingAgreementStatus => :Canceled
  }
  response = self.request :BillAgreementUpdate, params
  Response.new response
end
setup(payment_requests, return_url, cancel_url, options = {}) click to toggle source

Common

# File lib/paypal/express/request.rb, line 7
def setup(payment_requests, return_url, cancel_url, options = {})
  params = {
    RETURNURL: return_url,
    CANCELURL: cancel_url
  }
  if options[:no_shipping]
    params[:REQCONFIRMSHIPPING] = 0
    params[:NOSHIPPING] = 1
  end

  params[:ALLOWNOTE] = 0 if options[:allow_note] == false

  {
    :solution_type => :SOLUTIONTYPE,
    :landing_page  => :LANDINGPAGE,
    :email         => :EMAIL,
    :brand         => :BRANDNAME,
    :locale        => :LOCALECODE,
    :logo          => :LOGOIMG,
    :cart_border_color => :CARTBORDERCOLOR,
    :payflow_color => :PAYFLOWCOLOR
  }.each do |option_key, param_key|
    params[param_key] = options[option_key] if options[option_key]
  end
  Array(payment_requests).each_with_index do |payment_request, index|
    params.merge! payment_request.to_params(index)
  end
  response = self.request :SetExpressCheckout, params
  Response.new response, options
end
subscribe!(token, recurring_profile) click to toggle source

Recurring Payment Specific

# File lib/paypal/express/request.rb, line 84
def subscribe!(token, recurring_profile)
  params = { TOKEN: token }
  params.merge! recurring_profile.to_params
  response = self.request :CreateRecurringPaymentsProfile, params
  Response.new response
end
subscription(profile_id) click to toggle source
# File lib/paypal/express/request.rb, line 91
def subscription(profile_id)
  params = { PROFILEID: profile_id }
  response = self.request :GetRecurringPaymentsProfileDetails, params
  Response.new response
end
suspend!(profile_id, options = {}) click to toggle source
# File lib/paypal/express/request.rb, line 109
def suspend!(profile_id, options = {})
  renew!(profile_id, :Suspend, options)
end
transaction_details(transaction_id) click to toggle source
# File lib/paypal/express/request.rb, line 43
def transaction_details(transaction_id)
  response = self.request :GetTransactionDetails, {:TRANSACTIONID=> transaction_id}
  Response.new response
end
void!(authorization_id, params={}) click to toggle source
# File lib/paypal/express/request.rb, line 72
def void!(authorization_id, params={})
  params = {
    :AUTHORIZATIONID => authorization_id,
    :NOTE => params[:note]
  }

  response = self.request :DoVoid, params
  Response.new response
end