Silverstripe Vend API integration
This module is just a wrapper around the VendAPI
package by @brucealdridge for
Silverstripe., (*1)
This brings implementation for OAuth2 with token management., (*2)
Requires
Install
composer require heyday/silverstripe-vend
, (*3)
Setup
First you need to sign up for a Vend developer account and create an app:
https://developers.vendhq.com/, (*4)
When you have done so, set your details in a yml config file under VendAPI
., (*5)
eg:, (*6)
mysite/_config/vend.yml
:, (*7)
VendAPI\VendAPI:
clientID: g6ohGHJgJHKtuyfUTYfjVjhGhfTUYfTU
clientSecret: iyGFktyFKUYlguKHkjHUHUiGHKuHGKj
redirectURI: admin/vend/authorise
Also map the route you have setup as a redirectURI in your Vend app to the
Heyday\Vend\SilverStripe\Authorise_Controller
. This controller handles the
data returned by the Vend API when you first authorise the app to connect to
your store., (*8)
eg if I have setup http://mysite.com/admin/vend/authorise
as my RedirectURI on
my Vend app:, (*9)
mysite/_config/routing.yml
:, (*10)
---
Name: vendroutes
After: 'framework/routes#coreroutes'
---
Director:
rules:
'admin/vend/authorise': 'Heyday\Vend\SilverStripe\Authorise_Controller'
---
After a dev/build
and a flush
you should have a new Menu called Vend Admin
where the next steps of the setup are done., (*11)
You (or the owner of the shop) needd to fill in the shop name, after which a
link will appear. When the link is selected you'll be presented with a request
for the app to access your shop. Once it is authorised, the first token is
stored in the database along with the refresh token and the cycle starts., (*12)
Every time the connection is instantiated, a check is run to see if the token
has expired. A new one is issued if required. It does the same for the
refresh_token
., (*13)
Implementation
To use you just need to inject the Heyday\Vend\Connection
where you want to
use it and follow the docs of the VendAPI
package for the other methods., (*14)
eg:, (*15)
Injection config
SilverStripe\Core\Injector\Injector:
Your\Namespace\SomePageController:
properties:
VendConnection: '%$Heyday\Vend\Connection'
Implementation in SomePageController
protected $vendConnection;
public function setVendConnection($vendConnection)
{
$this->vendConnection = $vendConnection;
}
public function VendTest()
{
$products = $this->vendConnection->getProducts();
}