infusionsoft 1.0.2 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +7 -2
- data/lib/infusionsoft.rb +0 -1
- data/lib/infusionsoft/client.rb +4 -2
- data/lib/infusionsoft/client/affiliate.rb +37 -27
- data/lib/infusionsoft/client/contact.rb +131 -87
- data/lib/infusionsoft/client/data.rb +98 -56
- data/lib/infusionsoft/client/email.rb +111 -61
- data/lib/infusionsoft/client/file.rb +0 -3
- data/lib/infusionsoft/client/invoice.rb +211 -85
- data/lib/infusionsoft/client/search.rb +64 -0
- data/lib/infusionsoft/client/ticket.rb +6 -6
- data/lib/infusionsoft/version.rb +1 -1
- metadata +5 -4
@@ -1,91 +1,141 @@
|
|
1
1
|
module Infusionsoft
|
2
2
|
class Client
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
# The Email service allows you to email your contacts as well as attaching emails sent
|
4
|
+
# elsewhere (this lets you send email from multiple services and still see all communications
|
5
|
+
# inside of Infusionsoft).
|
6
6
|
module Email
|
7
|
-
# Enables you to opt contacts in
|
8
|
-
#
|
9
|
-
# @email [String]
|
10
|
-
# @reason [String]
|
11
|
-
def email_optin(email, reason)
|
12
|
-
response = get('APIEmailService', 'optIn', email, reason)
|
13
|
-
end
|
14
7
|
|
15
|
-
#
|
8
|
+
# Create a new email template that can be used for future emails
|
16
9
|
#
|
17
|
-
# @
|
18
|
-
# @
|
19
|
-
|
20
|
-
|
10
|
+
# @param [String] title
|
11
|
+
# @param [String] categories a comma separated list of the categories
|
12
|
+
# you want this template in Infusionsoft
|
13
|
+
# @param [String] from the from address format use is 'FirstName LastName <email@domain.com>'
|
14
|
+
# @param [String] to the email address this template is sent to
|
15
|
+
# @param [String] cc a comma separated list of cc email addresses
|
16
|
+
# @param [String] bcc a comma separated list of bcc email addresses
|
17
|
+
# @param [String] subject
|
18
|
+
# @param [String] text_body
|
19
|
+
# @param [String] html_body
|
20
|
+
# @param [String] content_type can be Text, HTML, Multipart
|
21
|
+
# @param [String] merge_context can be Contact, ServiceCall, Opportunity, CreditCard
|
22
|
+
def email_add(title, categories, from, to, cc, bcc, subject, text_body, html_body,
|
23
|
+
content_type, merge_context)
|
24
|
+
response = get('APIEmailService.addEmailTemplate', title, categories, from, to,
|
25
|
+
cc, bcc, subject, text_body, html_body, content_type, merge_context)
|
21
26
|
end
|
22
27
|
|
23
|
-
#
|
28
|
+
# This will create an item in the email history for a contact. This does not actually
|
29
|
+
# send the email, it only places an item into the email history. Using the API to
|
30
|
+
# instruct Infusionsoft to send an email will handle this automatically.
|
24
31
|
#
|
25
|
-
# @
|
26
|
-
# @
|
27
|
-
# @
|
28
|
-
# @
|
29
|
-
# @
|
30
|
-
# @
|
31
|
-
# @
|
32
|
-
# @
|
33
|
-
# @
|
34
|
-
|
35
|
-
|
32
|
+
# @param [Integer] contact_id
|
33
|
+
# @param [String] from_name the name portion of the from address, not the email
|
34
|
+
# @param [String] from_address
|
35
|
+
# @param [String] to_address
|
36
|
+
# @param [String] cc_addresses
|
37
|
+
# @param [String] bcc_addresses
|
38
|
+
# @param [String] content_type can be Text, HTML, Multipart
|
39
|
+
# @param [String] subject
|
40
|
+
# @param [String] html_body
|
41
|
+
# @param [String] text_body
|
42
|
+
# @param [String] header the header info for this email (will be listed in history)
|
43
|
+
# @param [Date] receive_date
|
44
|
+
# @param [Date] sent_date
|
45
|
+
def email_attach(contact_id, from_name, from_address, to_address, cc_addresses,
|
46
|
+
bcc_addresses, content_type, subject, html_body, txt_body,
|
47
|
+
header, receive_date, send_date)
|
48
|
+
response = get('APIEmailService.attachEmail', contact_id, from_name, from_address,
|
49
|
+
to_address, cc_addresses, bcc_addresses, content_type, subject,
|
50
|
+
html_body, txt_body, header, receive_date, send_date)
|
36
51
|
end
|
37
52
|
|
38
|
-
#
|
53
|
+
# This retrieves all possible merge fields for the context provided.
|
39
54
|
#
|
40
|
-
# @
|
41
|
-
# @
|
42
|
-
|
43
|
-
|
44
|
-
# @html_body [Text]
|
45
|
-
# @merge_context [String] can be Contact, ServiceCall, Opportunity, CreditCard
|
46
|
-
def email_add(title, categories, from, to, cc, bcc, subject, text_body, html_body, content_type, merge_context)
|
47
|
-
response = get('APIEmailService', 'addEmailTemplate', title, categories, from, to, cc, bcc, subject, text_body, html_body, content_type, merge_context)
|
55
|
+
# @param [String] merge_context could include Contact, ServiceCall, Opportunity, or CreditCard
|
56
|
+
# @return [Array] returns the merge fields for the given context
|
57
|
+
def email_get_available_merge_fields(merge_context)
|
58
|
+
response = get('APIEmailService.getAvailableMergeFields', merge_context)
|
48
59
|
end
|
49
60
|
|
50
|
-
#
|
51
|
-
|
52
|
-
|
61
|
+
# Retrieves the details for a particular email template.
|
62
|
+
#
|
63
|
+
# @param [Integer] id
|
64
|
+
# @return [Hash] all data for the email template
|
65
|
+
def email_get_template(id)
|
66
|
+
response = get('APIEmailService.getEmailTemplate', id)
|
53
67
|
end
|
54
68
|
|
55
|
-
#
|
56
|
-
|
57
|
-
|
69
|
+
# Retrieves the status of the given email address.
|
70
|
+
#
|
71
|
+
# @param [String] email_address
|
72
|
+
# @return [Integer] 0 = opted out, 1 = single opt-in, 2 = double opt-in
|
73
|
+
def email_get_opt_status(email_address)
|
74
|
+
response = get('APIEmailService.getOptStatus', email_address)
|
58
75
|
end
|
59
76
|
|
60
|
-
#
|
77
|
+
# This method opts-in an email address. This method only works the first time
|
78
|
+
# an email address opts-in.
|
61
79
|
#
|
62
|
-
# @
|
63
|
-
# @
|
64
|
-
#
|
65
|
-
|
66
|
-
|
80
|
+
# @param [String] email_address
|
81
|
+
# @param [String] reason
|
82
|
+
# This is how you can note why/how this email was opted-in. If a blank
|
83
|
+
# reason is passed the system will default a reason of "API Opt In"
|
84
|
+
# @return [Boolean]
|
85
|
+
def email_optin(email_address, reason)
|
86
|
+
response = get('APIEmailService.optIn', email_address, reason)
|
67
87
|
end
|
68
88
|
|
69
|
-
#
|
70
|
-
|
71
|
-
|
89
|
+
# Opts-out an email address. Note that once an address is opt-out,
|
90
|
+
# the API cannot opt it back in.
|
91
|
+
#
|
92
|
+
# @param [String] email_address
|
93
|
+
# @param [String] reason
|
94
|
+
# @return [Boolean]
|
95
|
+
def email_optout(email_address, reason)
|
96
|
+
response = get('APIEmailService.optOut', email_address, reason)
|
72
97
|
end
|
73
98
|
|
74
|
-
#
|
99
|
+
# This will send an email to a list of contacts, as well as record the email
|
100
|
+
# in the contacts' email history.
|
75
101
|
#
|
76
|
-
#
|
77
|
-
# @
|
78
|
-
|
79
|
-
|
102
|
+
# @param [Array<Integer>] contact_list list of contact ids you want to send this email to
|
103
|
+
# @param [String] from_address
|
104
|
+
# @param [String] to_address
|
105
|
+
# @param [String] cc_address
|
106
|
+
# @param [String] bcc_address
|
107
|
+
# @param [String] content_type this must be one of the following Text, HTML, or Multipart
|
108
|
+
# @param [String] subject
|
109
|
+
# @param [String] html_body
|
110
|
+
# @param [String] text_body
|
111
|
+
# @return [Boolean] returns true/false if the email has been sent
|
112
|
+
def email_send(contact_list, from_address, to_address, cc_addresses,
|
113
|
+
bcc_addresses, content_type, subject, html_body, text_body)
|
114
|
+
response = get('APIEmailService.sendEmail', contact_list, from_address,
|
115
|
+
to_address, cc_addresses, bcc_addresses, content_type, subject,
|
116
|
+
html_body, text_body)
|
80
117
|
end
|
81
118
|
|
82
|
-
#
|
119
|
+
# This method is used to update an already existing email template.
|
83
120
|
#
|
84
|
-
# @
|
85
|
-
|
86
|
-
|
121
|
+
# @param [Integer] id
|
122
|
+
# @param [String] title
|
123
|
+
# @param [String] category
|
124
|
+
# @param [String] from
|
125
|
+
# @param [String] to
|
126
|
+
# @param [String] cc
|
127
|
+
# @param [String] bcc
|
128
|
+
# @param [String subject
|
129
|
+
# @param [String] text_body
|
130
|
+
# @param [String] html_body
|
131
|
+
# @param [String] content_type can be Text, HTML, Multipart
|
132
|
+
# @param [String] merge_context can be Contact, ServiceCall, Opportunity, CreditCard
|
133
|
+
# @return [Boolean] returns true/false if teamplate was updated successfully
|
134
|
+
def email_update_template(id, title, category, from, to, cc, bcc, subject,
|
135
|
+
text_body, html_body, content_type, merge_context)
|
136
|
+
response = get('APIEmailService.updateEmailTemplate', title, category, from,
|
137
|
+
to, cc, bcc, subject, text_body, html_body, content_type, merge_context)
|
87
138
|
end
|
88
|
-
|
89
139
|
end
|
90
140
|
end
|
91
141
|
end
|
@@ -1,8 +1,5 @@
|
|
1
1
|
module Infusionsoft
|
2
2
|
class Client
|
3
|
-
########################
|
4
|
-
### File Service ###
|
5
|
-
########################
|
6
3
|
module File
|
7
4
|
def file_upload(contact_id, file_name, encoded_file_base64)
|
8
5
|
response = get('FileService', 'uploadFile', contact_id, file_name, encoded_file_base64)
|
@@ -1,127 +1,253 @@
|
|
1
1
|
module Infusionsoft
|
2
2
|
class Client
|
3
|
-
|
4
|
-
### Invoice Service ###
|
5
|
-
########################
|
3
|
+
# The Invoice service allows you to manage eCommerce transactions.
|
6
4
|
module Invoice
|
7
|
-
|
8
|
-
|
5
|
+
# Creates a blank order with no items.
|
6
|
+
#
|
7
|
+
# @param [Integer] contact_id
|
8
|
+
# @param [String] description the name this order will display
|
9
|
+
# @param [Date] order_date
|
10
|
+
# @param [Integer] lead_affiliate_id 0 should be used if none
|
11
|
+
# @param [Integer] sale_affiliate_id 0 should be used if none
|
12
|
+
# @return [Integer] returns the invoice id
|
13
|
+
def invoice_create_blank_order(contact_id, description, order_date, lead_affiliate_id,
|
14
|
+
sale_affiliate_id)
|
15
|
+
response = get('InvoiceService.createBlankOrder', contact_id, description, order_date,
|
16
|
+
lead_affiliate_id, sale_affiliate_id)
|
9
17
|
end
|
10
18
|
|
11
|
-
# Adds a
|
19
|
+
# Adds a line item to an order. This used to add a Product to an order as well as
|
20
|
+
# any other sort of charge/discount.
|
12
21
|
#
|
13
|
-
# @
|
14
|
-
# @
|
15
|
-
# @
|
16
|
-
#
|
17
|
-
# @
|
18
|
-
# @
|
19
|
-
# @
|
20
|
-
|
21
|
-
|
22
|
-
|
22
|
+
# @param [Integer] invoice_id
|
23
|
+
# @param [Integer] product_id
|
24
|
+
# @param [Integer] type UNKNOWN = 0, SHIPPING = 1, TAX = 2, SERVICE = 3, PRODUCT = 4,
|
25
|
+
# UPSELL = 5, FINANCECHARGE = 6, SPECIAL = 7
|
26
|
+
# @param [Float] price
|
27
|
+
# @param [Integer] quantity
|
28
|
+
# @param [String] description a full description of the line item
|
29
|
+
# @param [String] notes
|
30
|
+
# @return [Boolean] returns true/false if it was added successfully or not
|
31
|
+
def invoice_add_order_item(invoice_id, product_id, type, price, quantity, description, notes)
|
32
|
+
response = get('InvoiceService.addOrderItem', invoice_id, product_id, type, price,
|
33
|
+
quantity, description, notes)
|
23
34
|
end
|
24
35
|
|
25
|
-
#
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
36
|
+
# This will cause a credit card to be charged for the amount currently due on an invoice.
|
37
|
+
#
|
38
|
+
# @param [Integer] invoice_id
|
39
|
+
# @param [String] notes a note about the payment
|
40
|
+
# @param [Integer] credit_card_id
|
41
|
+
# @param [Integer] merchant_account_id
|
42
|
+
# @param [Boolean] bypass_commission
|
43
|
+
# @return [Hash] containing the following keys {'Successful => [Boolean],
|
44
|
+
# 'Code' => [String], 'RefNum' => [String], 'Message' => [String]}
|
45
|
+
def invoice_charge_invoice(invoice_id, notes, credit_card_id, merchant_account_id,
|
46
|
+
bypass_commissions)
|
47
|
+
response = get('InvoiceService.chargeInvoice', invoice_id, notes, credit_card_id,
|
48
|
+
merchant_account_id, bypass_commissions)
|
30
49
|
end
|
31
50
|
|
32
|
-
#
|
51
|
+
# Deletes the specified subscription from the database, as well as all invoices
|
52
|
+
# tied to the subscription.
|
33
53
|
#
|
34
|
-
# @
|
35
|
-
# @
|
36
|
-
|
37
|
-
|
38
|
-
# @quantity [Integer]
|
39
|
-
# @description [String]
|
40
|
-
# @notes [String]
|
41
|
-
# @return [Boolean] returns true or false if it was added successfully or not
|
42
|
-
def invoice_add_order_item(order_id, product_id, type, price, quantity, description, notes)
|
43
|
-
response = get('InvoiceService', 'addOrderItem', order_id, product_id, type, price,
|
44
|
-
quantity, description, notes)
|
54
|
+
# @param [Integer] cprogram_id the id of the subscription being deleted
|
55
|
+
# @return [Boolean]
|
56
|
+
def invoice_delete_subscription(cprogram_id)
|
57
|
+
response = get('InvoiceService.deleteSubscription', cprogram_id)
|
45
58
|
end
|
46
59
|
|
47
|
-
#
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
60
|
+
# Creates a subscription for a contact. Subscriptions are billing automatically
|
61
|
+
# by infusionsoft within the next six hours. If you want to bill immediately you
|
62
|
+
# will need to utilize the create_invoice_for_recurring and then
|
63
|
+
# charge_invoice method to accomplish this.
|
64
|
+
#
|
65
|
+
# @param [Integer] contact_id
|
66
|
+
# @param [Boolean] allow_duplicate
|
67
|
+
# @param [Integer] cprogram_id the subscription id
|
68
|
+
# @param [Integer] merchant_account_id
|
69
|
+
# @param [Integer] credit_card_id
|
70
|
+
# @param [Integer] affiliate_id
|
71
|
+
# @param [Integer] days_till_charge number of days you want to wait till it's charged
|
72
|
+
def invoice_add_recurring_order(contact_id, allow_duplicate, cprogram_id,
|
73
|
+
merchant_account_id, credit_card_id, affiliate_id,
|
74
|
+
days_till_charge)
|
75
|
+
response = get('InvoiceService.addRecurringOrder', contact_id,
|
76
|
+
allow_duplicate, cprogram_id, merchant_account_id, credit_card_id,
|
77
|
+
affiliate_id, days_till_charge)
|
53
78
|
end
|
54
79
|
|
55
|
-
#
|
56
|
-
|
57
|
-
|
58
|
-
|
80
|
+
# This modifies the commissions being earned on a particular subscription.
|
81
|
+
# This does not affect previously generated invoices for this subscription.
|
82
|
+
#
|
83
|
+
# @param [Integer] recurring_order_id
|
84
|
+
# @param [Integer] affiliate_id
|
85
|
+
# @param [Float] amount
|
86
|
+
# @param [Integer] paryout_type how commissions will be earned (possible options are
|
87
|
+
# 4 - up front earning, 5 - upon customer payment) typically this is 5
|
88
|
+
# @return [Boolean]
|
89
|
+
def invoice_add_recurring_commission_override(recurring_order_id, affiliate_id,
|
90
|
+
amount, payout_type, description)
|
91
|
+
response = get('InvoiceService.addRecurringCommissionOverride', recurring_order_id,
|
92
|
+
affiliate_id, amount, payout_type, description)
|
59
93
|
end
|
60
94
|
|
61
|
-
# Adds a
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
95
|
+
# Adds a payment to an invoice without actually processing a charge through a merchant.
|
96
|
+
#
|
97
|
+
# @param [Integer] invoice_id
|
98
|
+
# @param [Float] amount
|
99
|
+
# @param [Date] date
|
100
|
+
# @param [String] type Cash, Check, Credit Card, Money Order, PayPal, etc.
|
101
|
+
# @param [String] description an area useful for noting payment details such as check number
|
102
|
+
# @param [Boolean] bypass_commissions
|
103
|
+
# @return [Boolean]
|
104
|
+
def invoice_add_manual_payment(invoice_id, amount, date, type, description, bypass_commissions)
|
105
|
+
response = get('InvoiceService', 'addManualPayment', invoice_id, amount, date, type,
|
106
|
+
description, bypass_commissions)
|
66
107
|
end
|
67
|
-
|
68
|
-
#
|
69
|
-
|
70
|
-
|
108
|
+
|
109
|
+
# This will create an invoice for all charges due on a Subscription. If the
|
110
|
+
# subscription has three billing cycles that are due, it will create one
|
111
|
+
# invoice with all three items attached.
|
112
|
+
#
|
113
|
+
# @param [Integer] recurring_order_id
|
114
|
+
# @return [Integer] returns the id of the invoice that was created
|
115
|
+
def invoice_create_invoice_for_recurring(recurring_order_id)
|
116
|
+
response = get('InvoiceService.createInvoiceForRecurring', recurring_order_id)
|
71
117
|
end
|
72
118
|
|
73
|
-
#
|
74
|
-
|
75
|
-
|
119
|
+
# Adds a payment plan to an existing invoice.
|
120
|
+
#
|
121
|
+
# @param [Integer] invoice_id
|
122
|
+
# @param [Boolean]
|
123
|
+
# @param [Integer] credit_card_id
|
124
|
+
# @param [Integer] merchant_account_id
|
125
|
+
# @param [Integer] days_between_retry the number of days Infusionsoft should wait
|
126
|
+
# before re-attempting to charge a failed payment
|
127
|
+
# @param [Integer] max_retry the maximum number of charge attempts
|
128
|
+
# @param [Float] initial_payment_ammount the amount of the very first charge
|
129
|
+
# @param [Date] initial_payment_date
|
130
|
+
# @param [Date] plan_start_date
|
131
|
+
# @param [Integer] number_of_payments the number of payments in this payplan (does not include
|
132
|
+
# initial payment)
|
133
|
+
# @param [Integer] days_between_payments the number of days between each payment
|
134
|
+
# @return [Boolean]
|
135
|
+
def invoice_add_payment_plan(invoice_id, auto_charge, credit_card_id,
|
136
|
+
merchant_account_id, days_between_retry, max_retry,
|
137
|
+
initial_payment_amount, initial_payment_date, plan_start_date,
|
138
|
+
number_of_payments, days_between_payments)
|
139
|
+
response = get('InvoiceService.addPaymentPlan', invoice_id, auto_charge,
|
140
|
+
credit_card_id, merchant_account_id, days_between_retry, max_retry,
|
141
|
+
initial_payment_amount, initial_payment_date, plan_start_date, number_of_payments,
|
142
|
+
days_between_payments)
|
76
143
|
end
|
77
144
|
|
78
|
-
#
|
145
|
+
# Calculates the amount owed for a given invoice.
|
79
146
|
#
|
80
|
-
# @
|
81
|
-
# @
|
82
|
-
|
83
|
-
|
84
|
-
# @bypass_commission [Boolean]
|
85
|
-
# @return [Hash] containing the following keys
|
86
|
-
# {'Successful => [Boolean], 'Code' => [String], 'RefNum' => [String], 'Message' => [String]}
|
87
|
-
def invoice_charge_invoice(invoice_id, notes, credit_card_id, merchant_account_id, bypass_commissions)
|
88
|
-
response = get('InvoiceService', 'chargeInvoice', invoice_id, notes, credit_card_id,
|
89
|
-
merchant_account_id, bypass_commissions)
|
147
|
+
# @param [Integer] invoice_id
|
148
|
+
# @return [Float]
|
149
|
+
def invoice_calculate_amount_owed(invoice_id)
|
150
|
+
response = get('InvoiceService.calculateAmountOwed', invoice_id)
|
90
151
|
end
|
91
152
|
|
92
|
-
#
|
93
|
-
|
94
|
-
|
153
|
+
# Retrieve all Payment Types currently setup under the Order Settings section of Infusionsoft.
|
154
|
+
#
|
155
|
+
# @return [Array]
|
156
|
+
def invoice_get_all_payment_otpions
|
157
|
+
response = get('InvoiceService.getAllPaymentOptions')
|
95
158
|
end
|
96
159
|
|
97
|
-
#
|
160
|
+
# Retrieves all payments for a given invoice.
|
98
161
|
#
|
99
|
-
# @
|
100
|
-
|
101
|
-
|
102
|
-
|
162
|
+
# @param [Integer] invoice_id
|
163
|
+
# @return [Array<Hash>] returns an array of payments
|
164
|
+
def invoice_get_payments(invoice_id)
|
165
|
+
response = get('Invoice.getPayments', invoice_id)
|
103
166
|
end
|
104
167
|
|
105
|
-
#
|
106
|
-
|
107
|
-
|
168
|
+
# Locates an existing card in the system for a contact, using the last 4 digits.
|
169
|
+
#
|
170
|
+
# @param [Integer] contact_id
|
171
|
+
# @param [Integer] last_four
|
172
|
+
# @return [Integer] returns the id of the credit card
|
173
|
+
def invoice_locate_existing_card(contact_id, last_four)
|
174
|
+
response = get('InvoiceService.locateExistingCard', contact_id, last_four)
|
108
175
|
end
|
109
176
|
|
110
|
-
#
|
111
|
-
|
112
|
-
|
113
|
-
|
177
|
+
# Calculates tax, and places it onto the given invoice.
|
178
|
+
#
|
179
|
+
# @param [Integer] invoice_id
|
180
|
+
# @return [Boolean]
|
181
|
+
def invoice_recalculate_tax(invoice_id)
|
182
|
+
response = get('InvoiceService.recalculateTax', invoice_id)
|
114
183
|
end
|
115
184
|
|
116
185
|
# This will validate a credit card in the system.
|
186
|
+
#
|
187
|
+
# @param [Integer] credit_card_id if the card is already in the system
|
188
|
+
# @return [Hash] returns a hash { 'Valid' => false, 'Message' => 'Card is expired' }
|
117
189
|
def invoice_validate_card(credit_card_id)
|
118
|
-
response = get('InvoiceService
|
190
|
+
response = get('InvoiceService.validateCreditCard', credit_card_id)
|
119
191
|
end
|
120
192
|
|
121
193
|
# This will validate a credit card by passing in values of the
|
122
|
-
# card directly (this card doesn't have to be added to the system)
|
123
|
-
|
124
|
-
|
194
|
+
# card directly (this card doesn't have to be added to the system).
|
195
|
+
#
|
196
|
+
# @param [Hash] data
|
197
|
+
# @return [Hash] returns a hash { 'Valid' => false, 'Message' => 'Card is expired' }
|
198
|
+
def invoice_validate_card(data)
|
199
|
+
response = get('InvoiceService.validateCreditCard', data)
|
200
|
+
end
|
201
|
+
|
202
|
+
# Retrieves the shipping options currently setup for the Infusionsoft shopping cart.
|
203
|
+
#
|
204
|
+
# @return [Array]
|
205
|
+
def invoice_get_all_shipping_options
|
206
|
+
response = get('Invoice.getAllShippingOptions')
|
207
|
+
end
|
208
|
+
|
209
|
+
# Changes the next bill date on a subscription.
|
210
|
+
#
|
211
|
+
# @param [Integer] job_recurring_id this is the subscription id on the contact
|
212
|
+
# @param [Date] next_bill_date
|
213
|
+
# @return [Boolean]
|
214
|
+
def invoice_update_recurring_next_bill_date(job_recurring_id, next_bill_date)
|
215
|
+
response = get('InvoiceService.updateJobRecurringNextBillDate', job_recurring_id, next_bill_date)
|
216
|
+
end
|
217
|
+
|
218
|
+
|
219
|
+
# Adds a commission override to a one time order, using a combination of percentage
|
220
|
+
# and hard-coded amounts.
|
221
|
+
#
|
222
|
+
# @param [Integer] invoice_id
|
223
|
+
# @param [Integer] affiliate_id
|
224
|
+
# @param [Integer] product_id
|
225
|
+
# @param [Integer] percentage
|
226
|
+
# @param [Float] amount
|
227
|
+
# @param [Integer] payout_type how commision should be earned (4 - up front in full, 5 - upon
|
228
|
+
# customer payment
|
229
|
+
# @param [String] description a note about this commission
|
230
|
+
# @param [Date] date the commission was generated, not necessarily earned
|
231
|
+
# @return [Boolean]
|
232
|
+
def invoice_add_order_commission_override(invoice_id, affiliate_id, product_id, percentage,
|
233
|
+
amount, payout_type, description, date)
|
234
|
+
response = get('InvoiceService.addOrderCommissionOverride', invoice_id, affiliate_id,
|
235
|
+
product_id, percentage, amount, payout_type, description, date)
|
236
|
+
end
|
237
|
+
|
238
|
+
|
239
|
+
# Deprecated - Adds a recurring order to the database.
|
240
|
+
def invoice_add_recurring_order_with_price(contact_id, allow_duplicate, cprogram_id, qty,
|
241
|
+
price, allow_tax, merchant_account_id,
|
242
|
+
credit_card_id, affiliate_id, days_till_charge)
|
243
|
+
response = get('InvoiceService.addRecurringOrder', contact_id, allow_duplicate,
|
244
|
+
cprogram_id, qty, price, allow_tax, merchant_account_id, credit_card_id,
|
245
|
+
affiliate_id, days_till_charge)
|
246
|
+
end
|
247
|
+
|
248
|
+
# Deprecated - returns the invoice id from a one time order.
|
249
|
+
def invoice_get_invoice_id(order_id)
|
250
|
+
response = get('InvoiceService.getinvoice_id', order_id)
|
125
251
|
end
|
126
252
|
end
|
127
253
|
end
|