farfromboring/crm-sdk

This package is abandoned and no longer maintained. No replacement package was suggested.
There is no license information available for the latest version (9.6.0) of this package.

Maintainers

Package info

github.com/farfromboring/CRM-SDK

pkg:composer/farfromboring/crm-sdk

Statistics

Installs: 298

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 0

9.6.0 2021-01-11 02:10 UTC

README

This SDK allows you to quickly get up and running with your WebWiseUSA CRM integration.

Dependencies

GuzzleHTTP, PHP 7.1+

Prerequisites

A crm.webwiseusa.com account and API Key

Installation

composer require farfromboring/crm-sdk

Create an environment variable for the API key and API version

WEBWISEUSA_CRM_API_KEY="enter_it_here"
WEBWISEUSA_CRM_API_VERSION=1

If you have multiple keys, you can switch between them either by providing them during instantiation of the Endpoint class, or by setting it globally:

$sdk = new UserEndpoint(); //uses default API key from the environment variables above
$sdk2 = new FormEndpoint(getenv('MY_SECOND_API_KEY'));
$sdk3 = new OrderEndpoint(getenv('MY_SECOND_API_KEY'));
//or
$sdk = new UserEndpoint();
Client::setAPIKeyGlobally(getenv('MY_SECOND_API_KEY'));
$sdk2 = new FormEndpoint(); //or FormEndpoint::create()
$sdk3 = new OrderEndpoint(); //or OrderEndpoint::create()

The same thing works for the API version

$sdk = new UserEndpoint(null, 2);
$sdk = new FormEndpoint(null, 2);
//or
Client::setAPIVersionGlobally(2);
$sdk = new UserEndpoint(); //or UserEndpoint::create()
$sdk = new FormEndpoint(); //or FormEndpoint::create()

You can also set both the key and the version at the same time globally

Client::setAPIKeyGlobally(getenv('MY_SECOND_API_KEY'), 2);

Development/Sandbox

Just prepend your API key with "dev_" in order to enable sandbox mode.

Example:

WEBWISEUSA_CRM_API_KEY="dev_[api_key_here]"

Client User

Each action taken stores a historical record of what was done. To accurately tie this change to the user making it, a client_user_id is automatically added to each request. This value is pulled from $_ENV['CLIENT_USER_ID']. On each request, you should set this value to the current Guest or User's ID.

Usage

A sample of the addUser method:

//instantiate the User and Company objects from the SharedObjects folder
$user = new User(); //or User::create()
$company = new Company(); //or Company::create()

//set values (generally from a user submitted form)
//it's a very good idea to perform your own validation on this data prior to setting it
$user->setFname($_POST['fname']);
$user->setLname($_POST['lname']);
$user->setEmail($_POST['email']);

$company->setName($_POST['company']);

$user->setCompany($company);

//instantiate the user endpoint 
$user_sdk = new UserEndpoint(); //or UserEndpoint::create()

//an exception will be thrown if anything other than a 200 is returned
//an updated User object is returned on success
$new_user = $user_sdk->addUser($user);

Users

Users come in 3 flavors:

  1. Guest: They do not officially have an account in the system, but they are treated the same. They are identified by a token to group their submissions and actions. Upon login, the guest account will be merged with the user.
  2. User: They are a full-fledged user with password.
  3. Employee: Essentially the same as a User, but with the ability to differentiate, you can display things like the cost of products or administration features.

Any endpoint method that accepts/requires a $user_id accepts the ID of any of these users. $guest->getId() for instance.

You can create a Guest using information they provided on your Contact Us form (or any other form), or as a totally blank anonymous Guest (like if someone adds a product to their cart)

$guest = new Guest();
$guest->setFname('Bob');
$guest->setLname('Jenkins');
$guest->setEmail('bob@jenkins.com');

$guest = (new GuestEndpoint())->addGuest($guest);

//or

$guest = (new GuestEndpoint())->addGuest();