-
Notifications
You must be signed in to change notification settings - Fork 52
Examples
This project is production quality. It is being used in dozens of production applications.
This SDK is designed to run on PHP 5.1 or greater.
Copy the Infusionsoft directory to your project.
Copy the config.sample.php file to config.php and put in your Infusionsoft app hostname and api key.
Add any custom fields you are going to use via the API by adding a line to your config.php file. For example, to add the custom field LeadScore to Contact:
Infusionsoft_Contact::addCustomField('_LeadScore');include('Infusionsoft/infusionsoft.php');
$contact = new Infusionsoft_Contact();
$contact->FirstName = 'John';
$contact->LastName = 'Doe';
$contact->save();include('Infusionsoft/infusionsoft.php');
$contact = new Infusionsoft_Contact($id);
$contact->FirstName = 'John Boy';
$contact->LastName = 'Walton';
$contact->save();<form>
ContactId: <input type="text" name="ContactId" value="<?php if(isset($_REQUEST['ContactId'])) echo $_REQUEST['ContactId']; ?>" />
<input type="submit"/>
</form><br/>
<?php
include('../infusionsoft.php');
if(isset($_REQUEST['ContactId'])){
$contact = new Infusionsoft_Contact($_REQUEST['ContactId']);
$contact->_LeadScore = $contact->_LeadScore + 1;
$contact->save();
echo 'Lead Score for Contact: ' . $contact->FirstName . ' ' . $contact->LastName . ' is now: ' . $contact->_LeadScore;
}$customField = Infusionsoft_CustomFieldService::getCustomField(new Infusionsoft_Contact(), '_LeadScore');
$customField->addValue('New DropDown Option');
$customField->save();To search a table for records, you'll need to use Infusionsoft_DataService::query(), or DataService::findByField() (not recommended due to performance issues).
For example, if you wanted to pull the first 1,000 order items for a specific order you could do this:
// The ID for the specific order. This is passed as $_GET['orderId'] to
// shopping cart and order form thank you pages.
$orderId = 123;
$orderItems = Infusionsoft_DataService::query(new Infusionsoft_OrderItem(), array('OrderId' => $orderId));
foreach($orderItems as $orderItem) {
// Each $orderItem will be an Infusionsoft_OrderItem object
}Or to get a specific contact record:
$contacts = Infusionsoft_DataService::query(new Infusionsoft_Contact(), array('Id' => 2));
$contact = array_shift($contacts);$contact = new Infusionsoft_Contact();
$contact->FirstName = 'John';
$contact->LastName = 'Doe';
$contact->save();
$invoiceId = Infusionsoft_InvoiceService::createBlankOrder($contact->Id, "An Order", date("Y-m-d H:i:s"));
Infusionsoft_InvoiceService::addOrderItem($invoiceId, $productId, 4, 3.99, 1, 'Order Item', '');
Infusionsoft_InvoiceService::addManualPayment($invoiceId, 3.99, date("Y-m-d H:i:s"), 'API', 'A Manual Payment from the API');First, create a credit card
$creditCard = new Infusionsoft_CreditCard();
$creditCard->ContactId = $contact->Id;
$creditCard->BillName = $contact->FirstName . ' ' . $contact->LastName;
$creditCard->FirstName = $contact->FirstName;
$creditCard->LastName = $contact->LastName;
$creditCard->CardNumber = 1234567890123456;
$creditCard->CVV2 = 197;
$creditCard->CardType = 'Visa';
$creditCard->Status = 3; //0: Unknown, 1: Invalid, 2: Deleted, 3: Valid/Good, 4: Inactive
$creditCard->save();Second, create the Subscription Plan
$subscriptionPlan = new Infusionsoft_SubscriptionPlan();
$subscriptionPlan->ProductId = 5;
$subscriptionPlan->Cycle = 3;
$subscriptionPlan->Frequency = 1;
$subscriptionPlan->Prorate = 0;
$subscriptionPlan->Active = 1;
$subscriptionPlan->PlanPrice = 499.99;
$subscriptionPlan->save();Third, use addRecurringOrder to create an instance of the Subscription Plan
addReccuringOrder($contactId, $allowDuplicate, $cProgramId, $qty, $price, $allowTax, $merchantAccountId, $creditCardId, $affiliateId, $daysTillCharge, Infusionsoft_App $app = null)
// addReccuringOrder($contactId, $allowDuplicate, $cProgramId, $qty, $price, $allowTax, $merchantAccountId, $creditCardId, $affiliateId, $daysTillCharge, Infusionsoft_App $app = null)
$subscriptionId = Infusionsoft_InvoiceService::addRecurringOrder($contact->Id, false, $subscriptionPlan->Id, 1, 19.99, false, 3, $creditCard->Id, 0, 0);
// Create an invoice for the recurring order.
$invoiceId = Infusionsoft_InvoiceService::createInvoiceForRecurring($subscriptionId);
// Charge the invoice
// chargeInvoice($invoiceId, $notes, $creditCardId, $merchantAccountId, $bypassCommissions, Infusionsoft_App $app = null)
$charge = Infusionsoft_InvoiceService::chargeInvoice($invoiceId, 'Test payment', $creditCard->Id, 3, false);Infusionsoft_ContactService::runActionSequence($contactId, $actionSetId);Only certain custom field types have values. If you try to get the list of values for a custom field that doesn't have values, you will get an exception.
//$customField will be an instance of an Infusionsoft_DataFormField
$customField = Infusionsoft_CustomFieldService::getCustomField(new Infusionsoft_Contact(), '_SomeCustomField');
$fieldValues = $customField->getValues();Only certain custom field types have values. If you try to add a value to a custom field that doesn't have values, you will get an exception.
//$customField will be an instance of an Infusionsoft_DataFormField
$customField = Infusionsoft_CustomFieldService::getCustomField(new Infusionsoft_Contact(), '_SomeCustomField');
$customField->addValue('Some Value');
$customField->save();Only certain custom field types have values. If you try to add a value to a custom field that doesn't have values, you will get an exception.
//$customField will be an instance of an Infusionsoft_DataFormField
$customField = Infusionsoft_CustomFieldService::getCustomField(new Infusionsoft_Contact(), '_SomeCustomField');
$customField->removeValue('Some Value');
$customField->save();Get all Ids from a saved contact search.
$page = 0;
do{
$results = Infusionsoft_SearchService::getSavedSearchResults($saved_search_id, $saved_search_user_id, $page, array('Id'));
$all_ids = array_merge($results, $all_ids);
$page++;
}while(count($results) > 0);
var_dump($all_ids);Upload /www/picture.jpg to your filebox.
$filename = '/www/picture.jpg';
$data = base64_encode(file_get_contents($filename));
Infusionsoft_FileService::uploadFile(null, 'mysqltuner.pl', $data);To upload a file to a specific contact's filebox, specify the contact ID (in this example, 8):
$filename = '/www/picture.jpg';
$data = base64_encode(file_get_contents($filename));
Infusionsoft_FileService::uploadFile(8, 'mysqltuner.pl', $data);