class NFGClient::Client
Public Class Methods
new(partner_id, partner_password, partner_source, partner_campaign, use_sandbox)
click to toggle source
# File lib/nfg-client/client.rb, line 10 def initialize(partner_id, partner_password, partner_source, partner_campaign, use_sandbox) @partner_id = partner_id @partner_password = partner_password @partner_source = partner_source @partner_campaign = partner_campaign @use_sandbox = use_sandbox end
Public Instance Methods
create_cof(params)
click to toggle source
Creates a card on file for the given donor token
Arguments:
params: (Hash)
# File lib/nfg-client/client.rb, line 22 def create_cof(params) requires!(params, :DonorToken, :DonorFirstName, :DonorLastName, :DonorEmail, :DonorAddress1, :DonorAddress2, :DonorCity, :DonorState, :DonorZip, :DonorCountry, :DonorPhone, :CardType, :NameOnCard, :CardNumber, :ExpMonth, :ExpYear, :CSC) call_params = add_credentials_to_params(params) response = nfg_soap_request('CreateCOF', call_params) if response.is_a? REXML::Element { 'StatusCode' => response.elements['StatusCode'].get_text.to_s, 'Message' => response.elements['Message'].get_text.to_s, 'ErrorDetails' => response.elements['ErrorDetails'].get_text.to_s, 'CallDuration' => response.elements['CallDuration'].get_text.to_s, 'DonorToken' => response.elements['DonorToken'].get_text.to_s, 'COFId' => response.elements['CofId'].get_text.to_s } else response end end
delete_donor_cof(params)
click to toggle source
Deletes a card on file for the given donor token
Arguments:
params: (Hash)
# File lib/nfg-client/client.rb, line 44 def delete_donor_cof(params) requires!(params, :DonorToken, :COFId) call_params = add_credentials_to_params(params) response = nfg_soap_request('DeleteDonorCOF', call_params) if response.is_a? REXML::Element if response.elements['StatusCode'].get_text.to_s == 'Success' { 'StatusCode' => response.elements['StatusCode'].get_text.to_s, 'Message' => response.elements['Message'].get_text.to_s, 'ErrorDetails' => response.elements['ErrorDetails'].get_text.to_s, 'CallDuration' => response.elements['CallDuration'].get_text.to_s } else { 'StatusCode' => response.elements['StatusCode'].get_text.to_s, 'Message' => response.elements['Message'].get_text.to_s, 'ErrorDetails' => { 'ErrorInfo' => { 'ErrCode' => response.elements['ErrorDetails'].andand.elements.andand['ErrorInfo'].andand.elements.andand['ErrCode'].andand.get_text.andand.to_s, 'ErrData' => response.elements['ErrorDetails'].andand.elements.andand['ErrorInfo'].andand.elements.andand['ErrData'].andand.get_text.andand.to_s } }, 'CallDuration' => response.elements['CallDuration'].get_text.to_s } end else response end end
get_donation_report(params)
click to toggle source
Retrieves the donation history by date
Arguments:
params: (Hash)
# File lib/nfg-client/client.rb, line 264 def get_donation_report(params) requires!(params, :StartDate, :EndDate, :DonationReportType) call_params = add_credentials_to_params(params) response = nfg_soap_request('GetDonationReport', call_params) if response.is_a? REXML::Element response_hash = { 'StatusCode' => response.elements['StatusCode'].get_text.to_s, 'Message' => response.elements['Message'].get_text.to_s, 'ErrorDetails' => response.elements['ErrorDetails'].get_text.to_s, 'CallDuration' => response.elements['CallDuration'].get_text.to_s, 'ReturnCount' => response.elements['ReturnCount'].get_text.to_s } response_hash['ReportResults'] = Array.new response.elements.each('ReportResults/DonationReportResult') do |donation| response_hash['ReportResults'] << { 'Source' => donation.elements['Source'].get_text.to_s, 'Campaign' => donation.elements['Campaign'].get_text.to_s, 'ChargeId' => donation.elements['ChargeId'].get_text.to_s, 'ShareWithCharity' => donation.elements['ShareWithCharity'].get_text.to_s, 'DonorEmail' => donation.elements['DonorEmail'].get_text.to_s, 'DonorFirstName' => donation.elements['DonorFirstName'].get_text.to_s, 'DonorLastName' => donation.elements['DonorLastName'].get_text.to_s, 'DonorAddress1' => donation.elements['DonorAddress1'].get_text.to_s, 'DonorAddress2' => donation.elements['DonorAddress2'].get_text.to_s, 'DonorCity' => donation.elements['DonorCity'].get_text.to_s, 'DonorState' => donation.elements['DonorState'].get_text.to_s, 'DonorZip' => donation.elements['DonorZip'].get_text.to_s, 'DonorCountry' => donation.elements['DonorCountry'].get_text.to_s, 'DonorPhone' => donation.elements['DonorPhone'].get_text.to_s, 'Designation' => donation.elements['Designation'].get_text.to_s, 'DonateInName' => donation.elements['DonateInName'].get_text.to_s, 'RecurringPeriod' => donation.elements['RecurringPeriod'].get_text.to_s, 'EventDate' => donation.elements['EventDate'].get_text.to_s, 'NpoEIN' => donation.elements['NpoEIN'].get_text.to_s, 'NpoName' => donation.elements['NpoName'].get_text.to_s, 'ChargeStatus' => donation.elements['ChargeStatus'].get_text.to_s, 'ChargeAmount' => donation.elements['ChargeAmount'].get_text.to_s, 'NpoTPC' => donation.elements['NpoTPC'].get_text.to_s, 'DonationItemAmount' => donation.elements['DonationItemAmount'].get_text.to_s, 'TotalDonationAmount' => donation.elements['TotalDonationAmount'].get_text.to_s, 'HistoryRecordId' => donation.elements['HistoryRecordId'].get_text.to_s } end response_hash else response end end
get_donor_cofs(params)
click to toggle source
Gets a list of the given donor token’s cards on file
Arguments:
params: (Hash)
# File lib/nfg-client/client.rb, line 78 def get_donor_cofs(params) requires!(params, :DonorToken) call_params = add_credentials_to_params(params) response = nfg_soap_request('GetDonorCOFs', call_params) if response.is_a? REXML::Element response_hash = { 'StatusCode' => response.elements['StatusCode'].get_text.to_s, 'Message' => response.elements['Message'].get_text.to_s, 'ErrorDetails' => response.elements['ErrorDetails'].get_text.to_s, 'CallDuration' => response.elements['CallDuration'].get_text.to_s, 'DonorToken' => response.elements['DonorToken'].get_text.to_s } response_hash['Cards'] = Array.new response.elements.each('Cards/COFRecord') do |card| response_hash['Cards'] << { 'COFId' => card.elements['COFId'].get_text.to_s, 'CardType' => card.elements['CardType'].get_text.to_s, 'CCSuffix' => card.elements['CCSuffix'].get_text.to_s, 'CCExpMonth' => card.elements['CCExpMonth'].get_text.to_s, 'CCExpYear' => card.elements['CCExpYear'].get_text.to_s, 'bInUseByLiveRD' => card.elements['bInUseByLiveRD'].get_text.to_s, 'COFEmailAddress' => card.elements['COFEmailAddress'].get_text.to_s } end response_hash else response end end
get_donor_donation_history(params)
click to toggle source
Retrieves the donation history for a specified donor token
Arguments:
params: (Hash)
# File lib/nfg-client/client.rb, line 229 def get_donor_donation_history(params) requires!(params, :DonorToken) call_params = add_credentials_to_params(params) response = nfg_soap_request('GetDonorDonationHistory', call_params) if response.is_a? REXML::Element response_hash = { 'StatusCode' => response.elements['StatusCode'].get_text.to_s, 'Message' => response.elements['Message'].get_text.to_s, 'ErrorDetails' => response.elements['ErrorDetails'].get_text.to_s, 'CallDuration' => response.elements['CallDuration'].get_text.to_s, 'DonorToken' => response.elements['DonorToken'].get_text.to_s } response_hash['Donations'] = Array.new response.elements.each('Donations/DonationItemData') do |donation| response_hash['Donations'] << { 'DonationDate' => donation.elements['DonationDate'].get_text.to_s, 'RecurType' => donation.elements['RecurType'].get_text.to_s, 'IsTpcAddOnFee' => donation.elements['IsTpcAddOnFee'].get_text.to_s, 'NpoName' => donation.elements['NpoName'].get_text.to_s, 'Designation' => donation.elements['Designation'].get_text.to_s, 'Dedication' => donation.elements['Dedication'].get_text.to_s, 'Amount' => donation.elements['Amount'].get_text.to_s, 'ChargeId' => donation.elements['ChargeId'].get_text.to_s, } end response_hash else response end end
get_fee(params)
click to toggle source
Calculates fee tied to transaction
Arguments:
params: (Hash)
# File lib/nfg-client/client.rb, line 112 def get_fee(params) requires!(params, :DonationLineItems, :TipAmount, :CardType) call_params = add_credentials_to_params(params) response = nfg_soap_request('GetFee', call_params) if response.is_a? REXML::Element if response.elements['ErrorDetails'].elements['ErrorInfo'].nil? { 'StatusCode' => 'Success', 'Message' => response.elements['Message'].get_text.to_s, 'ErrorDetails' => response.elements['ErrorDetails'].get_text.to_s, 'CallDuration' => response.elements['CallDuration'].get_text.to_s, 'TotalChargeAmount' => response.elements['TotalChargeAmount'].get_text.to_s, 'TotalAddFee' => response.elements['TotalAddFee'].get_text.to_s, 'TotalDeductFee' => response.elements['TotalDeductFee'].get_text.to_s, 'TipAmount' => response.elements['TipAmount'].get_text.to_s } else { 'StatusCode' => 'ValidationFailed', 'Message' => response.elements['Message'].get_text.to_s, 'ErrorDetails' => { 'ErrorInfo' => { 'ErrCode' => response.elements['ErrorDetails'].andand.elements.andand['ErrorInfo'].andand.elements.andand['ErrCode'].andand.get_text.andand.to_s, 'ErrData' => response.elements['ErrorDetails'].andand.elements.andand['ErrorInfo'].andand.elements.andand['ErrData'].andand.get_text.andand.to_s } }, 'CallDuration' => response.elements['CallDuration'].get_text.to_s, 'TotalChargeAmount' => response.elements['TotalChargeAmount'].get_text.to_s, 'TotalAddFee' => response.elements['TotalAddFee'].get_text.to_s, 'TotalDeductFee' => response.elements['TotalDeductFee'].get_text.to_s, 'TipAmount' => response.elements['TipAmount'].get_text.to_s } end else response end end
make_cof_donation(params)
click to toggle source
Makes a donation using the given COF
Arguments:
params: (Hash)
# File lib/nfg-client/client.rb, line 153 def make_cof_donation(params) requires!(params, :DonationLineItems, :TotalAmount, :TipAmount, :DonorIpAddress, :DonorToken, :COFId) call_params = add_credentials_to_params(params) response = nfg_soap_request('MakeCOFDonation', call_params) if response.is_a? REXML::Element if response.elements['StatusCode'].get_text.to_s == 'Success' { 'StatusCode' => response.elements['StatusCode'].get_text.to_s, 'Message' => response.elements['Message'].get_text.to_s, 'ErrorDetails' => response.elements['ErrorDetails'].get_text.to_s, 'CallDuration' => response.elements['CallDuration'].get_text.to_s, 'ChargeId' => response.elements['ChargeId'].get_text.to_s, 'COFId' => response.elements['CofId'].get_text.to_s } else { 'StatusCode' => response.elements['StatusCode'].get_text.to_s, 'Message' => response.elements['Message'].get_text.to_s, 'ErrorDetails' => { 'ErrorInfo' => { 'ErrCode' => response.elements['ErrorDetails'].andand.elements.andand['ErrorInfo'].andand.elements.andand['ErrCode'].andand.get_text.andand.to_s, 'ErrData' => response.elements['ErrorDetails'].andand.elements.andand['ErrorInfo'].andand.elements.andand['ErrData'].andand.get_text.andand.to_s } }, 'CallDuration' => response.elements['CallDuration'].get_text.to_s, 'ChargeId' => response.elements['ChargeId'].get_text.to_s, 'COFId' => response.elements['CofId'].get_text.to_s } end else response end end
make_donation_add_cof(params)
click to toggle source
Makes a donation and stores a COF for the given donor token
Arguments:
params: (Hash)
# File lib/nfg-client/client.rb, line 191 def make_donation_add_cof(params) requires!(params, :DonationLineItems, :TotalAmount, :TipAmount, :DonorIpAddress, :DonorToken, :DonorFirstName, :DonorLastName, :DonorEmail, :DonorAddress1, :DonorAddress2, :DonorCity, :DonorState, :DonorZip, :DonorCountry, :DonorPhone, :CardType, :NameOnCard, :CardNumber, :ExpMonth, :ExpYear, :CSC) call_params = add_credentials_to_params(params) response = nfg_soap_request('MakeDonationAddCOF', call_params) if response.is_a? REXML::Element if (response.elements['StatusCode'].get_text.to_s == 'Success') || ((response.elements['StatusCode'].get_text.to_s != 'Success') && response.elements['ErrorDetails'].elements['ErrorInfo'].nil?) { 'StatusCode' => response.elements['StatusCode'].get_text.to_s, 'Message' => response.elements['Message'].get_text.to_s, 'ErrorDetails' => response.elements['ErrorDetails'].get_text.to_s, 'CallDuration' => response.elements['CallDuration'].get_text.to_s, 'ChargeId' => response.elements['ChargeId'].get_text.to_s, 'COFId' => response.elements['CofId'].get_text.to_s } else { 'StatusCode' => response.elements['StatusCode'].get_text.to_s, 'Message' => response.elements['Message'].get_text.to_s, 'ErrorDetails' => { 'ErrorInfo' => { 'ErrCode' => response.elements['ErrorDetails'].andand.elements.andand['ErrorInfo'].andand.elements.andand['ErrCode'].andand.get_text.andand.to_s, 'ErrData' => response.elements['ErrorDetails'].andand.elements.andand['ErrorInfo'].andand.elements.andand['ErrData'].andand.get_text.andand.to_s } }, 'CallDuration' => response.elements['CallDuration'].get_text.to_s, 'ChargeId' => response.elements['ChargeId'].get_text.to_s, 'COFId' => response.elements['CofId'].get_text.to_s } end else response end end
Private Instance Methods
add_credentials_to_params(params)
click to toggle source
Adds client credentials to hash of parameters
Arguments:
params: (Hash)
# File lib/nfg-client/client.rb, line 319 def add_credentials_to_params(params) return params unless params.is_a? Hash credentials = { 'PartnerID' => @partner_id, 'PartnerPW' => @partner_password, 'PartnerSource' => @partner_source, 'PartnerCampaign' => @partner_campaign } credentials.merge(params) end