Do not install this library. It is currently under active development and is in no way stable.
Most Shopify APIs appear to be thin wrappers around Guzzle that makes things slightly more convenient but still makes it feel like you are interacting with a REST API.
The goal of this project is to go one step beyond and provide something closer to a SDK whereby the library offers everything through PHP without the developer needing to think too much about the REST API.
The following examples show how CRUD works with the API. For full documentation, see the Yaspa Gitbook.
Please note that all examples utilise private authentication.
Credentials are stored in a POPO (Plain Old PHP Object) model.
All other examples assume the presence of the following code.
use Yaspa\Authentication\Factory\ApiCredentials;
use Yaspa\Factory;
$credentials = Factory::make(ApiCredentials::class)
->makePrivate(
'my-shop',
'4ac0000000000000000000000000035f',
'59c0000000000000000000000000007f'
);
use Yaspa\AdminApi\Customer\Builders\CreateNewCustomerRequest;
use Yaspa\AdminApi\Customer\CustomerService;
use Yaspa\AdminApi\Customer\Models\Customer;
use Yaspa\Factory;
// Prepare creation request
$customer = (new Customer())
->setFirstName('Steve')
->setLastName('Lastnameson')
->setEmail(uniqid('steve-').'@example.com')
->setTags(['foo', 'bar'])
->setVerifiedEmail(true)
->setAcceptsMarketing(true);
$request = Factory::make(CreateNewCustomerRequest::class)
->withCredentials($credentials)
->withCustomer($customer);
// Create new customer, $newCustomer is a Customer model
$service = Factory::make(CustomerService::class);
$newCustomer = $service->createNewCustomer($request);
var_dump($newCustomer);
use Yaspa\AdminApi\Customer\Builders\GetCustomersRequest;
use Yaspa\AdminApi\Customer\CustomerService;
use Yaspa\Factory;
// Create request
$request = Factory::make(GetCustomersRequest::class)
->withCredentials($credentials)
->withCreatedAtMin(new DateTime('-7 days'));
// Get customers, $customers is an iterator
$service = Factory::make(CustomerService::class);
$customers = $service->getCustomers($request);
// Loop through customers, each $customer is a Customer model
// paging is automated
foreach ($customers as $index => $customer) {
var_dump($customer);
}
use Yaspa\AdminApi\Customer\Builders\ModifyExistingCustomerRequest;
use Yaspa\AdminApi\Customer\CustomerService;
use Yaspa\Factory;
// Create request
$customerUpdates = (new Customer())
->setId(6820000675)
->setFirstName('Alice')
$request = Factory::make(ModifyExistingCustomerRequest::class)
->withCredentials($credentials)
->withCustomer($customerUpdates);
// Modify an existing customer, $modifiedCustomer is a Customer model
$service = Factory::make(CustomerService::class);
$modifiedCustomer = $service->modifyExistingCustomer($request);
var_dump($modifiedCustomer);
use Yaspa\AdminApi\Customer\CustomerService;
use Yaspa\Factory;
// Delete an existing customer
$service = Factory::make(CustomerService::class);
$service->deleteCustomerById($credentials, 6820000675);
For full documentation, please see https://paulchiu.gitbooks.io/yaspa/content/
See issue 10 for the project roadmap and to do list.