1. Go to this page and download the library: Download apsconnect/connect-sdk library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
apsconnect / connect-sdk example snippets
ProductRequests extends \Connect\FulfillmentAutomation
{
public function processRequest($request)
{
$this->logger->info("Processing Request: " . $request->id . " for asset: " . $request->asset->id);
switch ($request->type) {
case "purchase":
//Get value of a parameter with id "email"
$email = $request->asset->getParameterByID('email');
if($email->value == ""){
throw new \Connect\Inquire(array(
$request->asset->params['email']->error("Email address has not been provided, please provide one")
));
}
//Get value for a concrete item using MPN
$itemX = $request->asset->getItemByMPN('itemX');
foreach ($request->asset->items as $item) {
if ($item->quantity > 1000000) {
$this->logger->info("Is Not possible to purchase product " . $item->id . " more than 1000000 time, requested: " . $item->quantity);
throw new \Connect\Fail("Is Not possible to purchase product " . $item->id . " more than 1000000 time, requested: " . $item->quantity);
}
else {
//Do some provisioning operation
//Update the parameters to store data
$paramsUpdate[] = new \Connect\Param('ActivationKey', 'somevalue');
$request->requestProcessor->fulfillment->updateParameters($request, $paramsUpdate);
//Potential actions to be done with a request:
// Set a parameter that );
default:
throw new \Connect\Fail("Operation not supported:".$request->type);
}
}
public function processTierConfigRequest($tierConfigRequest){
//This method allows processing Tier Requests, in same manner as simple requests.
// Is
UploadUsage extends \Connect\UsageAutomation
{
public function processUsageForListing($listing)
{
//Detect concrete Provider Contract
if($listing->contract->id === 'CRD-41560-05399-123') {
//This is for Provider XYZ, also can be seen from $listing->provider->id and parametrized further via marketplace available at $listing->marketplace->id
date_default_timezone_set('UTC'); //reporting must be always based on UTC
$usages = [];
//Creating QT SCHEMA records, pplease check Connect\Usage\FileUsageRecord for further possible data to be passed
array_push($usages, new Connect\Usage\FileUsageRecord([
'record_id' => 'unique record value',
'item_search_criteria' => 'item.mpn', //Possible values are item.mpn or item.local_id
'item_search_value' => 'SKUA', //Value defined as MPN on vendor portal
'quantity' => 1, //Quantity to be reported
'start_time_utc' => date('d-m-Y H:i:s', strtotime("-1 days")), //From when to report
'end_time_utc' => date("Y-m-d H:i:s"), //Till when to report
'asset_search_criteria' => 'parameter.param_b', //How to find the asset on Connect, typical use case is to use a parameter provided by vendor, in this case called param_b, additionally can be used asset.id in case you want to use Connect identifiers
'asset_search_value' => 'tenant2'
]));
$usageFile = new \Connect\Usage\File([
"period" => [
"from"=> date('Y-m-d H:i:s', strtotime("-1 days")),
"to"=> date("Y-m-d H:i:s")
],
'product' => new \Connect\Product(
['id' => $listing->product->id]
),
'contract' => new \Connect\Contract(
['id' => $listing->contract->id]
)
]);
$this->usage->submitUsage($usageFile, $usages);
return "processing done"
}
else{
//Do Something different
}
}
}
//Main Code Block
try {
$usageAutomation = new UploadUsage();
$usageAutomation->process();
} catch (Exception $e) {
print "Error processing usage for active listing requests:" . $e->getMessage();
}
UsageFilesWorkflow extends \Connect\UsageFileAutomation
{
public function processUsageFiles($usageFile)
{
switch ($usageFile->status){
case 'invalid':
//vendor and provider may handle invalid cases different, probably notifying their staff
throw new \Connect\Usage\Delete("Not needed anymore");
break;
case 'ready':
//Vendor may move to file to provider
throw new \Connect\Usage\Submit("Ready for Provider");
case 'pending':
//Provider use case, needs to be reviewed and accept it
throw new \Connect\Usage\Accept("File looks good");
default:
throw new \Connect\Usage\Skip("not valid status");
}
}
}
//Main Code Block
try {
$usageWorkflow = new UsageFilesWorkflow();
// is possible to ask to process all via parsing true, only applicable for
// providers who automates own products
$usageWorkflow->process();
} catch (Exception $e) {
print "Error processing usage for active listing requests:" . $e->getMessage();
}
class ProcessTAR extends \Connect\TierAccountRequestsAutomation
{
public function processTierAccountRequest(\Connect\TierAccountRequest $request)
{
//$request is instance of \Connect\TierAccountRequest
try{
//Get changes
$changes = $request->account->diffWithPreviousVersion();
//Do something with external system to change TA data
throw new \Connect\TierAccountRequestAccept("Proocessed");
}
catch (Exception $e){
throw new \Connect\TierAccountRequestIgnore("Issue while processing, we ignore");
}
}
}
//Main Code Block
try{
$tarProcessor = new ProcessTar();
$tarProcessor->process();
} catch (Exception $e) {
print "error ".$e->getMessage();
}
te that in case of no Configuration passed to constructor, system will check if config.json exists
$connect = new Connect\ConnectClient(new \Connect\Config([
"apiKey" => "SU-677-956-738:ca95348138a3c122943ba968a9b69e42d30bde6c",
"apiEndpoint" => "https://api.cnct.info/public/v1",
"logLevel"=> 7,
"timeout" => 120,
"sslVerifyHost"=> false
]));
$connect->directory->listTierConfigs()
$connect = new Connect\ConnectClient();
$request = $connect->fulfillment->getRequest('PR-XXXX-XXXX-XXXXX');
$connect = new Connect\ConnectClient();
//List all tier accounts from a given marketplace
$tierAccounts = $connect->directory->listTierAccounts(['marketplace' => 'MP-XXXXXXX']);
$connect = new Connect\ConnectClient();
$tierAccounts = $connect->directory->getTierAccountById('TA-XXXXXX-XXXXX');
$connect = new Connect\ConnectClient();
$tar = $connect->directory->listTierAccountRequests(['status' => 'pending']);
$connect = new Connect\ConnectClient();
$billingAssets = $connect->subscriptions->listSubscriptionAssets();
$connect = new Connect\ConnectClient();
$billingAsset = $connect->subscriptions->getSubscriptionAssetById('AS-1234-1234');
$connect = new Connect\ConnectClient();
$billingRequests = $connect->subscriptions->listSubscriptionRequests();
$connect = new Connect\ConnectClient();
$billingAsset = $connect->subscriptions->getSubscriptionRequestById('PR-XXXXX-XXXXX-XXXXX');
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.